From 979e71dd2d4780fc6b81dc4f8a44562d4b057588 Mon Sep 17 00:00:00 2001 From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com> Date: Sat, 21 Oct 2023 11:14:02 +0200 Subject: [PATCH 01/20] library: log parsed query to help with debugging queries that behave unexpectedly --- beets/dbcore/query.py | 26 ++++++++++++++------------ beets/library.py | 5 ++++- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/beets/dbcore/query.py b/beets/dbcore/query.py index 03f85ac77..9806d5226 100644 --- a/beets/dbcore/query.py +++ b/beets/dbcore/query.py @@ -166,8 +166,8 @@ class FieldQuery(Query, Generic[P]): def __repr__(self) -> str: return ( - "{0.__class__.__name__}({0.field!r}, {0.pattern!r}, " - "{0.fast})".format(self) + f"{self.__class__.__name__}({self.field!r}, {self.pattern!r}, " + f"fast={self.fast})" ) def __eq__(self, other) -> bool: @@ -205,7 +205,7 @@ class NoneQuery(FieldQuery[None]): return obj.get(self.field) is None def __repr__(self) -> str: - return "{0.__class__.__name__}({0.field!r}, {0.fast})".format(self) + return f"{self.__class__.__name__}({self.field!r}, {self.fast})" class StringFieldQuery(FieldQuery[P]): @@ -471,7 +471,7 @@ class CollectionQuery(Query): return clause, subvals def __repr__(self) -> str: - return "{0.__class__.__name__}({0.subqueries!r})".format(self) + return f"{self.__class__.__name__}({self.subqueries!r})" def __eq__(self, other) -> bool: return super().__eq__(other) and self.subqueries == other.subqueries @@ -511,8 +511,8 @@ class AnyFieldQuery(CollectionQuery): def __repr__(self) -> str: return ( - "{0.__class__.__name__}({0.pattern!r}, {0.fields!r}, " - "{0.query_class.__name__})".format(self) + f"{self.__class__.__name__}({self.pattern!r}, {self.fields!r}, " + f"{self.query_class.__name__})" ) def __eq__(self, other) -> bool: @@ -577,7 +577,7 @@ class NotQuery(Query): return not self.subquery.match(obj) def __repr__(self) -> str: - return "{0.__class__.__name__}({0.subquery!r})".format(self) + return f"{self.__class__.__name__}({self.subquery!r})" def __eq__(self, other) -> bool: return super().__eq__(other) and self.subquery == other.subquery @@ -883,6 +883,9 @@ class Sort: def __eq__(self, other) -> bool: return type(self) is type(other) + def __repr__(self): + return f"{self.__class__.__name__}()" + class MultipleSort(Sort): """Sort that encapsulates multiple sub-sorts.""" @@ -934,7 +937,7 @@ class MultipleSort(Sort): return items def __repr__(self): - return f"MultipleSort({self.sorts!r})" + return f"{self.__class__.__name__}({self.sorts!r})" def __hash__(self): return hash(tuple(self.sorts)) @@ -972,10 +975,9 @@ class FieldSort(Sort): return sorted(objs, key=key, reverse=not self.ascending) def __repr__(self) -> str: - return "<{}: {}{}>".format( - type(self).__name__, - self.field, - "+" if self.ascending else "-", + return ( + f"{self.__class__.__name__}" + f"({self.field!r}, ascending={self.ascending!r})" ) def __hash__(self) -> int: diff --git a/beets/library.py b/beets/library.py index d0019fb80..c70fb6724 100644 --- a/beets/library.py +++ b/beets/library.py @@ -1518,9 +1518,12 @@ def parse_query_parts(parts, model_cls): case_insensitive = beets.config["sort_case_insensitive"].get(bool) - return dbcore.parse_sorted_query( + query, sort = dbcore.parse_sorted_query( model_cls, parts, prefixes, case_insensitive ) + log.debug("Parsed query: {!r}", query) + log.debug("Parsed sort: {!r}", sort) + return query, sort def parse_query_string(s, model_cls): From 1c6113694d8492d72d58d81223f47ee72c807246 Mon Sep 17 00:00:00 2001 From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com> Date: Sun, 22 Oct 2023 10:22:09 +0200 Subject: [PATCH 02/20] fixup noqa after black auto-formatting --- test/plugins/test_edit.py | 8 ++++---- test/test_autotag.py | 4 ++-- test/test_datequery.py | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/plugins/test_edit.py b/test/plugins/test_edit.py index 04af56117..413db7cf6 100644 --- a/test/plugins/test_edit.py +++ b/test/plugins/test_edit.py @@ -72,8 +72,8 @@ class ModifyFileMocker: class EditMixin: """Helper containing some common functionality used for the Edit tests.""" - def assertItemFieldsModified( - self, library_items, items, fields=[], allowed=["path"] # noqa + def assertItemFieldsModified( # noqa + self, library_items, items, fields=[], allowed=["path"] ): """Assert that items in the library (`lib_items`) have different values on the specified `fields` (and *only* on those fields), compared to @@ -135,11 +135,11 @@ class EditCommandTest(unittest.TestCase, TestHelper, EditMixin): self.teardown_beets() self.unload_plugins() - def assertCounts( + def assertCounts( # noqa self, mock_write, album_count=ALBUM_COUNT, - track_count=TRACK_COUNT, # noqa + track_count=TRACK_COUNT, write_call_count=TRACK_COUNT, title_starts_with="", ): diff --git a/test/test_autotag.py b/test/test_autotag.py index c0268910d..130b69419 100644 --- a/test/test_autotag.py +++ b/test/test_autotag.py @@ -1078,9 +1078,9 @@ class EnumTest(_common.TestCase): """ def test_ordered_enum(self): - OrderedEnumClass = match.OrderedEnum( + OrderedEnumClass = match.OrderedEnum( # noqa "OrderedEnumTest", ["a", "b", "c"] - ) # noqa + ) self.assertLess(OrderedEnumClass.a, OrderedEnumClass.b) self.assertLess(OrderedEnumClass.a, OrderedEnumClass.c) self.assertLess(OrderedEnumClass.b, OrderedEnumClass.c) diff --git a/test/test_datequery.py b/test/test_datequery.py index 50066af66..73175f9ec 100644 --- a/test/test_datequery.py +++ b/test/test_datequery.py @@ -132,9 +132,9 @@ class DateIntervalTest(unittest.TestCase): self.assertContains("..", date=datetime.min) self.assertContains("..", "1000-01-01T00:00:00") - def assertContains( + def assertContains( # noqa self, interval_pattern, date_pattern=None, date=None - ): # noqa + ): if date is None: date = _date(date_pattern) (start, end) = _parse_periods(interval_pattern) From 0467bf867e3fe4527924b1a59325629245f8fc09 Mon Sep 17 00:00:00 2001 From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com> Date: Sun, 22 Oct 2023 10:54:08 +0200 Subject: [PATCH 03/20] fix formatting_check CI config --- .github/workflows/formatting_check.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/formatting_check.yml b/.github/workflows/formatting_check.yml index bd7f02b86..76154fe4d 100644 --- a/.github/workflows/formatting_check.yml +++ b/.github/workflows/formatting_check.yml @@ -6,7 +6,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Install dependencies - - uses: actions/checkout@v3 - - uses: paolorechia/pox@v1.0.1 + uses: actions/checkout@v3 + + - name: Run formatting check + uses: paolorechia/pox@v1.0.1 with: tox_env: "format_check" From 203dda6ac1b79b6db86b05897b7bbe96436965c6 Mon Sep 17 00:00:00 2001 From: wisp3rwind <17089248+wisp3rwind@users.noreply.github.com> Date: Sun, 22 Oct 2023 11:42:32 +0200 Subject: [PATCH 04/20] PathQuery: improve __repr__ by including case_sensitive --- beets/library.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/beets/library.py b/beets/library.py index c70fb6724..7507f5d34 100644 --- a/beets/library.py +++ b/beets/library.py @@ -151,6 +151,12 @@ class PathQuery(dbcore.FieldQuery): dir_blob, ) + def __repr__(self) -> str: + return ( + f"{self.__class__.__name__}({self.field!r}, {self.pattern!r}, " + f"fast={self.fast}, case_sensitive={self.case_sensitive})" + ) + # Library-specific field types. From c31146e3f529389259bdc47ab2e37804b83abdaa Mon Sep 17 00:00:00 2001 From: "U-LAPTOP-4EP3DB2K\\alexa" Date: Sun, 22 Oct 2023 20:42:45 +0800 Subject: [PATCH 05/20] Discogs <-> fetchart integration --- beetsplug/discogs.py | 7 +++++-- beetsplug/fetchart.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/beetsplug/discogs.py b/beetsplug/discogs.py index d804a3e15..f59869e68 100644 --- a/beetsplug/discogs.py +++ b/beetsplug/discogs.py @@ -399,7 +399,7 @@ class DiscogsPlugin(BeetsPlugin): # Extract information for the optional AlbumInfo fields that are # contained on nested discogs fields. - albumtype = media = label = catalogno = labelid = None + albumtype = media = label = catalogno = labelid = cover_art_url = None if result.data.get('formats'): albumtype = ', '.join( result.data['formats'][0].get('descriptions', [])) or None @@ -408,6 +408,8 @@ class DiscogsPlugin(BeetsPlugin): label = result.data['labels'][0].get('name') catalogno = result.data['labels'][0].get('catno') labelid = result.data['labels'][0].get('id') + if result.data.get('cover_image'): + cover_art_url = result.data.get('cover_image') # Additional cleanups (various artists name, catalog number, media). if va: @@ -444,7 +446,8 @@ class DiscogsPlugin(BeetsPlugin): media=media, original_year=original_year, data_source='Discogs', data_url=data_url, discogs_albumid=discogs_albumid, - discogs_labelid=labelid, discogs_artistid=artist_id) + discogs_labelid=labelid, discogs_artistid=artist_id, + cover_art_url=cover_art_url) def format(self, classification): if classification: diff --git a/beetsplug/fetchart.py b/beetsplug/fetchart.py index 732031227..5f21859ce 100644 --- a/beetsplug/fetchart.py +++ b/beetsplug/fetchart.py @@ -992,7 +992,7 @@ class CoverArtUrl(RemoteArtSource): image_url = None try: # look for cover_art_url on album or first track - if album.cover_art_url: + if album.get('cover_art_url', None): image_url = album.cover_art_url else: image_url = album.items().get().cover_art_url From e9574bdc21e7848e1f05d6e54f311335608372f0 Mon Sep 17 00:00:00 2001 From: "U-LAPTOP-4EP3DB2K\\alexa" Date: Sun, 22 Oct 2023 20:55:38 +0800 Subject: [PATCH 06/20] Add documentation --- docs/changelog.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 13e75a904..1cdef2575 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -17,6 +17,8 @@ Major new features: New features: +* :doc:`plugins/discogs`: supply a value for the `cover_art_url` attribute, for use by `fetchart`. + :bug: `429` * :ref:`update-cmd`: added ```-e``` flag for excluding fields from being updated. * :doc:`/plugins/deezer`: Import rank and other attributes from Deezer during import and add a function to update the rank of existing items. :bug:`4841` From 3e06ca2af467170a3a890ac6b58a68aed44925e3 Mon Sep 17 00:00:00 2001 From: "U-LAPTOP-4EP3DB2K\\alexa" Date: Sun, 22 Oct 2023 21:47:46 +0800 Subject: [PATCH 07/20] Use images attr over cover_image --- beetsplug/discogs.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/beetsplug/discogs.py b/beetsplug/discogs.py index 4628e666d..2063f188c 100644 --- a/beetsplug/discogs.py +++ b/beetsplug/discogs.py @@ -413,7 +413,7 @@ class DiscogsPlugin(BeetsPlugin): # Extract information for the optional AlbumInfo fields that are # contained on nested discogs fields. - albumtype = media = label = catalogno = labelid = cover_art_url = None + albumtype = media = label = catalogno = labelid = None if result.data.get("formats"): albumtype = ( ", ".join(result.data["formats"][0].get("descriptions", [])) @@ -424,8 +424,8 @@ class DiscogsPlugin(BeetsPlugin): label = result.data["labels"][0].get("name") catalogno = result.data["labels"][0].get("catno") labelid = result.data["labels"][0].get("id") - if result.data.get("cover_image"): - cover_art_url = result.data.get("cover_image") + + cover_art_url = self.select_cover_art(result) # Additional cleanups (various artists name, catalog number, media). if va: @@ -478,6 +478,16 @@ class DiscogsPlugin(BeetsPlugin): discogs_artistid=artist_id, cover_art_url=cover_art_url ) + + def select_cover_art(self, result): + """Returns the best candidate image, if any, from a Discogs `Release` object.""" + if result.data.get("images") and len(result.data.get("images")) > 0: + # The first image in this list appears to be the one displayed first + # on the release page - even if it is not flagged as `type: "primary"` - and + # so it is the best candidate for the cover art. + return result.data.get("images")[0].get("uri") + + return None def format(self, classification): if classification: From 5fe19c1d1d7cab62bfc9b5cd7b85d6e9d827c62f Mon Sep 17 00:00:00 2001 From: "U-LAPTOP-4EP3DB2K\\alexa" Date: Mon, 23 Oct 2023 09:47:19 +0800 Subject: [PATCH 08/20] PR feedback: fix formatting --- beetsplug/discogs.py | 10 +++++----- beetsplug/fetchart.py | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/beetsplug/discogs.py b/beetsplug/discogs.py index 2063f188c..3385e4221 100644 --- a/beetsplug/discogs.py +++ b/beetsplug/discogs.py @@ -476,17 +476,17 @@ class DiscogsPlugin(BeetsPlugin): discogs_albumid=discogs_albumid, discogs_labelid=labelid, discogs_artistid=artist_id, - cover_art_url=cover_art_url + cover_art_url=cover_art_url, ) - + def select_cover_art(self, result): """Returns the best candidate image, if any, from a Discogs `Release` object.""" if result.data.get("images") and len(result.data.get("images")) > 0: - # The first image in this list appears to be the one displayed first - # on the release page - even if it is not flagged as `type: "primary"` - and + # The first image in this list appears to be the one displayed first + # on the release page - even if it is not flagged as `type: "primary"` - and # so it is the best candidate for the cover art. return result.data.get("images")[0].get("uri") - + return None def format(self, classification): diff --git a/beetsplug/fetchart.py b/beetsplug/fetchart.py index e59a4ebf8..93d3f2c57 100644 --- a/beetsplug/fetchart.py +++ b/beetsplug/fetchart.py @@ -1098,7 +1098,7 @@ class CoverArtUrl(RemoteArtSource): image_url = None try: # look for cover_art_url on album or first track - if album.get('cover_art_url'): + if album.get("cover_art_url"): image_url = album.cover_art_url else: image_url = album.items().get().cover_art_url From a6032cdaa9289a12aaafa0d7c88a2bc21dd7bbec Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Mon, 23 Oct 2023 09:51:36 +0200 Subject: [PATCH 09/20] Add beets logo to docs and leave html_static_path commented out in conf.py as a reminder. We might need it if builds via readthedocs require it. --- docs/assets/beets_logo.png | Bin 0 -> 10205 bytes docs/conf.py | 6 +++++- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/assets/beets_logo.png diff --git a/docs/assets/beets_logo.png b/docs/assets/beets_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0359260adba7345ffe12083dbd6c28b7760bf5bb GIT binary patch literal 10205 zcmV<3CnDI1P) zUES4HT>rJ~3cm#u8>sC1gX_9BEP#TdpjbeZP9P*93F#pTr1$c_U+(vvJ6~`2yCuwh z@+9ZZojY^p+&5FsoO8ynr>95Y7nguD3HUq9z@Kvo7$m@f!g1h|1T+Mcs;a8)?rxX3 z=9v_ifF^*_+}!++fBa*}kRcB}^pN5b;1#+i0ZeAqy}teS+mw_PVs`!d_3HA&Yqu!@ z^?Q_nfPm7{QUc0tx81gT_ino7ghnLb2l%MV3K&RBOJlK;l$7+#FTb$ejJh21+93h; zdlWxEziY0!hW!{76%`8>ENE$IVG}v6t_0Kv3fljh-~7fx3VZkNz3HZ#EE4&xiW1NS zP^L_olA4-oA%%C}eRtWiWfqD2RxJr=0w@@Le*NoTTZ`atfBV~~pMGkc&Qp|^fF^)~ zW?PRwNW?t%+H0>pa^#5ea^W>vNI?BnkH`=(F?jIc;^JZp{&1U-k+Embo`i%1>qk6A zF$rj;N3k4z7`_S$3a~8d=;%;PD7+$T2{0eT`k}HZ?C9g?FGP%xs)zRWkAM85bk8Zp zC7>aooPYlLg9Z%}CD79;gry20$&x%?d+oJXUwu`&=ajM%&=62C`mmi!bAix*t`Ha{ z$>aX}@87Xwhjh;=1tp*%prF<4BDtkV@Cy+7&lCKDjPmI0>_mqA{CoxF!>ck%KwCh; z=!3P7$QnkUmXktooRBbE`dT$LHCJ7ARYOCAl*B1TB%m#zpvmm$)0AhBL3p|lGg%Tw zR#w*UfB$=K;v`8#5lYiQX)O}Edl$vg6NT_$k~}tT+Vtq7k4pD?plWMt7cXA?-FM&V zfmvHTLer(S3mP`!6ywg|I}JaBZWV(2Q?h~h&wu`-HO}qv169zdQKP_fU|=AYZ}zfj zIbCx-3Z%(SX`49fFAyL zzx&%vRF<-#zu4%W}x&Jut19(Bh>Aas=V{gJEc}g$vUGn z4HU?d?Npk3tqyDo82x-AOq>FZ4`GRot=huELYtXoNrX~(+O%m~wrru¨@$rC}Lg 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 XQGeCaF>#C~00000NkvXXu0mjf;(Aq~ literal 0 HcmV?d00001 diff --git a/docs/conf.py b/docs/conf.py index 4514bbe2b..144ad7a25 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -60,4 +60,8 @@ man_pages = [ ] # Options for Alabaster theme -html_theme_options = {"fixed_sidebar": True} +html_theme_options = { + "fixed_sidebar": True +} +# html_static_path = ['assets'] +html_logo = "assets/beets_logo.png" From 826042716856c121b85de577513e9efe20e713b4 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Fri, 20 Oct 2023 16:03:55 +0200 Subject: [PATCH 10/20] Fix all occurences of Discourse to GH-Discussions and rephrase a little if required. Often "our forums" was stated. Mostly I tried to use the wording "discussion board" throughout and (almost) never used the term "GitHub Discussions" --- CONTRIBUTING.rst | 13 +++++++------ README.rst | 3 +-- README_kr.rst | 2 +- docs/faq.rst | 2 +- docs/guides/tagger.rst | 2 +- docs/index.rst | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index d91966011..f5edb70f9 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -42,12 +42,12 @@ Non-Programming compiling a library of freely-licensed music files (preferably with incorrect metadata) for testing and measurement. - Think you have a nice config or cool use-case for beets? We’d love to - hear about it! Submit a post to our `our - forums `__ under the “Show and Tell” - category for a chance to get featured in `the + hear about it! Submit a post to our `discussion board + `__ + under the “Show and Tell” category for a chance to get featured in `the docs `__. -- Consider helping out in `our forums `__ - by responding to support requests or driving some new discussions. +- Consider helping out fellow users by by `responding to support requests + `__ . Programming ----------- @@ -119,7 +119,8 @@ If this is your first time contributing to an open source project, welcome! If you are confused at all about how to contribute or what to contribute, take a look at `this great tutorial `__, or stop by our -`forums `__ if you have any questions. +`discussion board `__ +if you have any questions. We maintain a list of issues we reserved for those new to open source labeled `“first timers diff --git a/README.rst b/README.rst index 42f770278..0813bd6cc 100644 --- a/README.rst +++ b/README.rst @@ -115,12 +115,11 @@ Contact you'd like to see prioritized over others. * Need help/support, would like to start a discussion, have an idea for a new feature, or would just like to introduce yourself to the team? Check out - `GitHub Discussions`_ or `Discourse`_! + `GitHub Discussions`_! .. _GitHub Discussions: https://github.com/beetbox/beets/discussions .. _issue tracker: https://github.com/beetbox/beets/issues .. _open a new ticket: https://github.com/beetbox/beets/issues/new/choose -.. _Discourse: https://discourse.beets.io/ Authors ------- diff --git a/README_kr.rst b/README_kr.rst index a6a95ec5a..c12fc8b71 100644 --- a/README_kr.rst +++ b/README_kr.rst @@ -104,5 +104,5 @@ Read More `Adrian Sampson`_ 와 많은 사람들의 지지를 받아 Beets를 만들었다. 돕고 싶다면 `forum`_.를 방문하면 된다. -.. _forum: https://discourse.beets.io +.. _forum: https://github.com/beetbox/beets/discussions/ .. _Adrian Sampson: https://www.cs.cornell.edu/~asampson/ diff --git a/docs/faq.rst b/docs/faq.rst index 814f87b7a..44c8fa25c 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -6,7 +6,7 @@ Got a question that isn't answered here? Try the `discussion board`_, or :ref:`filing an issue ` in the bug tracker. .. _mailing list: https://groups.google.com/group/beets-users -.. _discussion board: https://discourse.beets.io +.. _discussion board: https://github.com/beetbox/beets/discussions/ .. contents:: :local: diff --git a/docs/guides/tagger.rst b/docs/guides/tagger.rst index d47ee3c4a..68ad908e8 100644 --- a/docs/guides/tagger.rst +++ b/docs/guides/tagger.rst @@ -309,4 +309,4 @@ If we haven't made the process clear, please post on `the discussion board`_ and we'll try to improve this guide. .. _the mailing list: https://groups.google.com/group/beets-users -.. _the discussion board: https://discourse.beets.io +.. _the discussion board: https://github.com/beetbox/beets/discussions/ diff --git a/docs/index.rst b/docs/index.rst index 961c0f42d..2ad2fca06 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,7 +20,7 @@ where you think this documentation can be improved. .. _beets: https://beets.io/ .. _the mailing list: https://groups.google.com/group/beets-users .. _file a bug: https://github.com/beetbox/beets/issues -.. _the discussion board: https://discourse.beets.io +.. _the discussion board: https://github.com/beetbox/beets/discussions/ Contents -------- From 9e972fe8ae5a8c4117380a39b673f0cdb6ac9fe5 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Fri, 20 Oct 2023 15:43:01 +0200 Subject: [PATCH 11/20] Set and configure Sphinx theme "alabaster" - Fixed sidebar - Sidebar collapse (default but make sure) --- docs/conf.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 144ad7a25..22f69e1fc 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -60,8 +60,9 @@ man_pages = [ ] # Options for Alabaster theme +html_theme = 'alabaster' html_theme_options = { - "fixed_sidebar": True + "fixed_sidebar": True, + "sidebar_collapse": True, # only expands active chapter in sidebar } -# html_static_path = ['assets'] html_logo = "assets/beets_logo.png" From ff7d5f7c3a0a865a31ac827dad00799caae37b30 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Sat, 21 Oct 2023 09:44:20 +0200 Subject: [PATCH 12/20] Set and configure Sphinx theme "readthedocs" - Sticky Nnavigation (default but make sure) - Top left area white, to fit with beets logo background - Title "beets" - Logo only false, we want to see title - Version true, we want to see which beets version we are looking at - Issue: The latter two are invisible, would require custom CSS!!! --- docs/conf.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 22f69e1fc..d7c9858aa 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -59,10 +59,14 @@ man_pages = [ ), ] -# Options for Alabaster theme -html_theme = 'alabaster' +# Options for rtd theme +html_theme = 'sphinx_rtd_theme' html_theme_options = { - "fixed_sidebar": True, - "sidebar_collapse": True, # only expands active chapter in sidebar + 'sticky_navigation': True, + 'collapse_navigation': True, + "style_nav_header_background": "#ffffff", + 'logo_only': False, + 'display_version': True, } +html_title = "beets" html_logo = "assets/beets_logo.png" From 957a6e445ccc0121b77e1d3d203012fa929404f4 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Sat, 21 Oct 2023 10:39:56 +0200 Subject: [PATCH 13/20] Set and configure Sphinx theme "pydata" - Collapse nav - Add title "beets" next to small logo on top left --- docs/conf.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index d7c9858aa..c9b2280f1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -59,14 +59,13 @@ man_pages = [ ), ] -# Options for rtd theme -html_theme = 'sphinx_rtd_theme' +# Options for pydata theme +html_theme = 'pydata_sphinx_theme' html_theme_options = { - 'sticky_navigation': True, 'collapse_navigation': True, - "style_nav_header_background": "#ffffff", - 'logo_only': False, - 'display_version': True, + "logo": { + "text": "beets", + }, } html_title = "beets" html_logo = "assets/beets_logo.png" From 71873b66de4ccfc151bf87c0940c1c82409ec421 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Sat, 21 Oct 2023 11:01:21 +0200 Subject: [PATCH 14/20] Set and configure Sphinx theme book - Reduce base font a bit by custom.css - Collapse nav - Title "beets" below logo --- docs/_static/css/custom.css | 3 +++ docs/conf.py | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 docs/_static/css/custom.css diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 000000000..bc14758b3 --- /dev/null +++ b/docs/_static/css/custom.css @@ -0,0 +1,3 @@ +html { + --pst-font-size-base: 0.9rem; +} diff --git a/docs/conf.py b/docs/conf.py index c9b2280f1..8cb3e361b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -59,8 +59,8 @@ man_pages = [ ), ] -# Options for pydata theme -html_theme = 'pydata_sphinx_theme' +# Options for book theme +html_theme = 'sphinx_book_theme' html_theme_options = { 'collapse_navigation': True, "logo": { @@ -69,3 +69,7 @@ html_theme_options = { } html_title = "beets" html_logo = "assets/beets_logo.png" +html_static_path = ['_static'] +html_css_files = [ + 'css/custom.css', +] From 4dc1f251d76c3a97ab8916162451631ae8f7c864 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Mon, 23 Oct 2023 09:53:56 +0200 Subject: [PATCH 15/20] Revert "Set and configure Sphinx theme book" This reverts commit 71873b66de4ccfc151bf87c0940c1c82409ec421. Revert back to using "pydata" theme. Keep this in the history, just in case we reconsider to using "book". --- docs/_static/css/custom.css | 3 --- docs/conf.py | 8 ++------ 2 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 docs/_static/css/custom.css diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css deleted file mode 100644 index bc14758b3..000000000 --- a/docs/_static/css/custom.css +++ /dev/null @@ -1,3 +0,0 @@ -html { - --pst-font-size-base: 0.9rem; -} diff --git a/docs/conf.py b/docs/conf.py index 8cb3e361b..c9b2280f1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -59,8 +59,8 @@ man_pages = [ ), ] -# Options for book theme -html_theme = 'sphinx_book_theme' +# Options for pydata theme +html_theme = 'pydata_sphinx_theme' html_theme_options = { 'collapse_navigation': True, "logo": { @@ -69,7 +69,3 @@ html_theme_options = { } html_title = "beets" html_logo = "assets/beets_logo.png" -html_static_path = ['_static'] -html_css_files = [ - 'css/custom.css', -] From c1e2b34aa2c99709ded1cb8d9ae9fa1862156d7f Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Mon, 23 Oct 2023 10:00:16 +0200 Subject: [PATCH 16/20] Rename assets/ to _static/ (logo, css, custom Sphinx stuff) --- docs/{assets => _static}/beets_logo.png | Bin docs/conf.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename docs/{assets => _static}/beets_logo.png (100%) diff --git a/docs/assets/beets_logo.png b/docs/_static/beets_logo.png similarity index 100% rename from docs/assets/beets_logo.png rename to docs/_static/beets_logo.png diff --git a/docs/conf.py b/docs/conf.py index c9b2280f1..41dd784ec 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -68,4 +68,4 @@ html_theme_options = { }, } html_title = "beets" -html_logo = "assets/beets_logo.png" +html_logo = "_static/beets_logo.png" From af6258301c4ac241f3ecf9c20f60907f2299877f Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Mon, 23 Oct 2023 10:42:49 +0200 Subject: [PATCH 17/20] Add beets.css customizing Sphinx theme "pydata" - Set static path and css file in Sphinx config. - Codebox style to black/white - Secondary color to beetroot red - Inline code color to beetroot green - Leave primary color (pydata teal), difficult to read with beetroot green. Works well with beetroot red actually. - Leave some notes on colors in beets.css for reference. --- docs/_static/beets.css | 12 ++++++++++++ docs/conf.py | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 docs/_static/beets.css diff --git a/docs/_static/beets.css b/docs/_static/beets.css new file mode 100644 index 000000000..243ae74cc --- /dev/null +++ b/docs/_static/beets.css @@ -0,0 +1,12 @@ +html[data-theme="light"] { + --pst-color-secondary: #a23632; +} +html[data-theme="light"] { + --pst-color-inline-code: #a23632; +} + +/* beetroot red: #a23632 */ +/* beetroot green: #1B5801 */ +/* beetroot green light: rgb(27, 150, 50) */ +/* pydata teal (primary): #126A7E */ +/* pydata violet (secondary): #7D0E70 */ diff --git a/docs/conf.py b/docs/conf.py index 41dd784ec..0220ab48b 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -66,6 +66,9 @@ html_theme_options = { "logo": { "text": "beets", }, + "pygment_light_style": "bw", } html_title = "beets" html_logo = "_static/beets_logo.png" +html_static_path = ['_static'] +html_css_files = ['beets.css'] From df2b173029817335de047f4eed34e4d3a2decada Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Mon, 23 Oct 2023 12:23:25 +0200 Subject: [PATCH 18/20] Replace Sphinx theme requirement in setup.py and in add to deps in tox.ini. --- setup.py | 2 +- tox.ini | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index c96f1fe24..e55a48e17 100755 --- a/setup.py +++ b/setup.py @@ -132,7 +132,7 @@ setup( ], "docs": [ "sphinx", - "sphinx_rtd_theme", + "pydata_sphinx_theme", ], # Plugin (optional) dependencies: "absubmit": ["requests"], diff --git a/tox.ini b/tox.ini index 4fa8d897c..fb0027177 100644 --- a/tox.ini +++ b/tox.ini @@ -33,7 +33,9 @@ commands = [testenv:docs] basepython = python3.10 -deps = sphinx<4.4.0 +deps = + sphinx<4.4.0 + pydata_sphinx_theme commands = sphinx-build -W -q -b html docs {envtmpdir}/html {posargs} # checks all links in the docs From eea7c19abc00f3bfca61bc3e1945294510d553c8 Mon Sep 17 00:00:00 2001 From: Leet <36166244+leetfin@users.noreply.github.com> Date: Mon, 23 Oct 2023 17:41:38 -0400 Subject: [PATCH 19/20] Use gender-neutral language --- beets/importer.py | 2 +- beetsplug/edit.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/beets/importer.py b/beets/importer.py index f7c6232aa..55ee29226 100644 --- a/beets/importer.py +++ b/beets/importer.py @@ -412,7 +412,7 @@ class ImportSession: def ask_resume(self, toppath): """If import of `toppath` was aborted in an earlier session, ask - user if she wants to resume the import. + user if they want to resume the import. Determines the return value of `is_resuming(toppath)`. """ diff --git a/beetsplug/edit.py b/beetsplug/edit.py index 1e934317d..323dd9e41 100644 --- a/beetsplug/edit.py +++ b/beetsplug/edit.py @@ -220,7 +220,7 @@ class EditPlugin(plugins.BeetsPlugin): - `fields`: The set of field names to edit (or None to edit everything). """ - # Present the YAML to the user and let her change it. + # Present the YAML to the user and let them change it. success = self.edit_objects(objs, fields) # Save the new data. @@ -370,7 +370,7 @@ class EditPlugin(plugins.BeetsPlugin): if not obj._db or obj.id is None: obj.id = -i - # Present the YAML to the user and let her change it. + # Present the YAML to the user and let them change it. fields = self._get_fields(album=False, extra=[]) success = self.edit_objects(task.items, fields) From 6e11bb5267a1b1ed43f631811244fcad7704139e Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Wed, 25 Oct 2023 14:14:51 -0400 Subject: [PATCH 20/20] Remove an errant space --- docs/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 1cdef2575..a6ae89a7a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -18,7 +18,7 @@ Major new features: New features: * :doc:`plugins/discogs`: supply a value for the `cover_art_url` attribute, for use by `fetchart`. - :bug: `429` + :bug:`429` * :ref:`update-cmd`: added ```-e``` flag for excluding fields from being updated. * :doc:`/plugins/deezer`: Import rank and other attributes from Deezer during import and add a function to update the rank of existing items. :bug:`4841`