Commit graph

12988 commits

Author SHA1 Message Date
Sebastian Mohr
5c7d49e24e Quick docfmt. 2025-08-22 11:30:47 +02:00
Hendrik Boll
6dfde732b0 readme: add void linux 2025-08-22 11:29:35 +02:00
Šarūnas Nejus
b7091bf120
Convert flexible field values to SQL before storing them (#5833)
## Description

This is required to support list values in flexible fields.
See #5698 for more details.
2025-08-19 13:44:27 +01:00
Šarūnas Nejus
c0675fefb8
Merge branch 'master' into multivalued-flexible-fields 2025-08-19 13:39:34 +01:00
Šarūnas Nejus
fcc9341360
Tighten up docs CI checks (#5913)
This PR adds `sphinx-lint` check for docs which catches issues like line
length.
2025-08-11 17:04:49 +01:00
Rebecca Turner
1786adfff1 chroma: set a default timeout of 10 seconds
TODO: Configurable timeouts :)
2025-08-10 23:14:20 -07:00
Šarūnas Nejus
cff56fbc08
Add docs adjustments to git blame ignore revs 2025-08-10 16:25:35 +01:00
Šarūnas Nejus
2447d000bc
Include a note about docs formatting/linting to CONTRIBUTING.rst 2025-08-10 16:25:05 +01:00
Šarūnas Nejus
13080c17a3
Update release conversion logic accordingly 2025-08-10 16:25:05 +01:00
Šarūnas Nejus
ab5acaabb3
Reformat all docs using docstrfmt 2025-08-10 16:25:05 +01:00
Šarūnas Nejus
1129170ddc
Configure docstrfmt 2025-08-10 16:25:04 +01:00
Šarūnas Nejus
769dcdc88a
Docs: fix linting issues 2025-08-10 16:16:02 +01:00
Šarūnas Nejus
c2043dad7f
Reorganize problem matchers 2025-08-10 14:05:56 +01:00
Šarūnas Nejus
61755ada9b
CI: cancel previous workflow runs when new commit is pushed 2025-08-10 14:05:56 +01:00
Šarūnas Nejus
15b0c052b6
Add sphinx-lint and run it in CI 2025-08-10 14:04:42 +01:00
Šarūnas Nejus
52cf74125e
Simplify plugin loading (#5887)
This PR centralises plugin loading logic inside `beets.plugins` module.


- Removed intermediatery `_classes` variable by initialising plugins
immediately.
- Simplified listeners registration by defining listener variables in
the base
`BeetsPlugin` class, and making the `register_listener` method a
`@classmethod`.
- Simplified plugin test setup accordingly.
2025-08-10 13:46:53 +01:00
Šarūnas Nejus
2059a3a802
Move EventType definition to plugins.py and fix test_hook types 2025-08-09 15:44:35 +01:00
Šarūnas Nejus
84df87c665
Upload test results to codecov 2025-08-09 15:27:17 +01:00
Šarūnas Nejus
24ae1a765b
Make cov setup a bit more useful and upgrade cov upload action 2025-08-09 15:11:59 +01:00
Šarūnas Nejus
54b31d01e9
Use only plugins/disabled_plugins config in plugin loading 2025-08-09 15:11:58 +01:00
Šarūnas Nejus
e9feb41709
Refactor plugin registration tests 2025-08-09 15:06:07 +01:00
Šarūnas Nejus
52bdb58a46
Simplify plugin loading mechanism
Centralise plugin loading in `beets.plugins` and refactor the plugin
loading system to be more straightforward and eliminate complex mocking
in tests. Replace the two-stage class collection and instantiation
process with direct instance creation and storage.

Add plugins.PluginImportError and adjust plugin import tests to only
complain about plugin import issues.
2025-08-09 15:06:06 +01:00
Šarūnas Nejus
788e31b619
Slightly simplify listener registration 2025-08-09 15:04:01 +01:00
Sebastian Mohr
c2d1bc3aaf
Add py.typed marker file to support PEP 561 typing (#5906)
Add `py.typed` marker file to support PEP 561 typing

This PR adds a `py.typed` marker file to the package directory to
indicate that the package includes inline type hints and is PEP 561
compliant.
2025-08-09 13:31:55 +02:00
Šarūnas Nejus
78c361154f
Added a load all plugins test. (#5878)
Adds a test that loads all available plugins in the beetsplug namespace.
This came up during #5876.
2025-08-09 12:21:53 +01:00
Sebastian Mohr
3f23f35353 Removed duplicate importlib import. 2025-08-09 13:17:27 +02:00
Sebastian Mohr
84ae11657e Added a check for gstream plugin issues on windows. 2025-08-09 13:17:27 +02:00
Sebastian Mohr
73dda4f7f8 Added dependencies for all failed plugins 2025-08-09 13:17:27 +02:00
Sebastian Mohr
6c3f93df2c Replaced find_executable with shutil.which for python 3.12
compatibility as distutils was deprecated.
2025-08-09 13:17:27 +02:00
Sebastian Mohr
1696789cbe Removed re and added brackets 2025-08-09 13:17:27 +02:00
Sebastian Mohr
a2136e1100 Removed now unused _is_spec_avilable function 2025-08-09 13:17:27 +02:00
Sebastian Mohr
8d134d1389 Skip module not found checks in favor for only running the test in
the ci.
2025-08-09 13:17:27 +02:00
Sebastian Mohr
586b89016b Using fixture to unload plugins. Enhance comment. Simplified get available
plugins function.
2025-08-09 13:17:27 +02:00
Sebastian Mohr
8b0af15b83 Use load_plugins directly as the plugin mixin version wants
to create an instance which is not wanted here.
2025-08-09 13:17:27 +02:00
Sebastian Mohr
3a2b6d85a4 Using plugin mixin to unload plugins. 2025-08-09 13:17:27 +02:00
Sebastian Mohr
8aa298d646 Added module cleanup, might fix errors. 2025-08-09 13:17:27 +02:00
Sebastian Mohr
4723f3de7d Instead of trying to import all plugins together, opted to test
one plugin at a time.
2025-08-09 13:17:27 +02:00
Sebastian Mohr
cfab2eb56e Some typos 2025-08-09 13:17:27 +02:00
Sebastian Mohr
3c6dab57e9 Changelog update. 2025-08-09 13:17:27 +02:00
Sebastian Mohr
355e4d3fed Added a load all plugins test. 2025-08-09 13:17:27 +02:00
Šarūnas Nejus
d8d227eee1
discogs: don't crash if a release is deleted (#5893)
Before:

```
Traceback (most recent call last):
  File "/nix/store/yk2m7a9wdmh8fz8ywca0c73sc5ad2zm6-beets-2.3.1/lib/python3.13/site-packages/beetsplug/discogs.py", line 312, in get_album_info
    result.refresh()
    ~~~~~~~~~~~~~~^^
  File "/nix/store/007cfg4f295dz064bl9a2cjw10vlpc83-python3.13-discogs-client-2.8/lib/python3.13/site-packages/discogs_client/models.py", line 204, in refresh
    data = self.client._get(self.data['resource_url'])
  File "/nix/store/007cfg4f295dz064bl9a2cjw10vlpc83-python3.13-discogs-client-2.8/lib/python3.13/site-packages/discogs_client/client.py", line 114, in _get
    return self._request('GET', url)
           ~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/nix/store/007cfg4f295dz064bl9a2cjw10vlpc83-python3.13-discogs-client-2.8/lib/python3.13/site-packages/discogs_client/client.py", line 111, in _request
    raise HTTPError(body['message'], status_code)
discogs_client.exceptions.HTTPError: 404: That release does not exist or may have been deleted.
```

After:

```
Discogs release not found: <Release 20919814 'Kumi Tanioka, Yae - Final Fantasy Crystal Chronicles Original Soundtrack'>: 404: That release does not exist or may have been deleted.
```

Here's the link to the relevant release, which [shows up in search
results](https://www.discogs.com/search?q=Kumi+Tanioka%2C+Yae+-+Final+Fantasy+Crystal+Chronicles+Original+Soundtrack&type=all)
but 404s if you click on it:
https://www.discogs.com/release/20919814-Kumi-Tanioka-Yae-Final-Fantasy-Crystal-Chronicles-Original-Soundtrack
2025-08-08 22:02:37 +01:00
Šarūnas Nejus
9e4559b8e9
Merge branch 'master' into discogs-404 2025-08-08 21:57:46 +01:00
Rebecca Turner
0430bd383a discogs: don't crash if a release is deleted 2025-08-07 20:25:09 -07:00
Sebastian Mohr
e3574a7287
Remove version dependency for typing_extensions (#5879)
Removes the python version dependency for typing_extensions, for more
information see also #5869
2025-08-04 11:25:28 +02:00
Sebastian Mohr
63eefa61b3 Update changelog. 2025-08-04 11:20:33 +02:00
Sebastian Mohr
dc6f07d705 Added typing_extensions to all python version. Removed sys.version checks 2025-08-04 11:19:14 +02:00
Šarūnas Nejus
5beb3d1c81
Add artist, album to item entry template in the web plugin (#5753)
Add the artist and album information to the item template in the web
plugin.

When searching for an item, Instead of 

`` Doo Woop (That Thing)``

the interface now shows

``Lauryn Hill - The Miseducation of Lauryn Hill - Doo Wop (That Thing)``

which is arguably clearer, and matches the default output of `beet ls`
in the cli.
2025-08-02 22:44:47 +01:00
Šarūnas Nejus
44af7b24e5
Merge branch 'master' into feature/add-artist-to-item-entry-template 2025-08-02 22:39:59 +01:00
Martin Atukunda
034e608a4f
Update changelog.rst
remove duplicate changelog entry
2025-08-02 14:21:37 +03:00
Šarūnas Nejus
619589dde0
Deprecate imports, decargs (#5892)
## Summary

See https://github.com/beetbox/beets/discussions/5891 for context.

This PR introduces a deprecation system for module structure changes and
deprecated functionality in the beets codebase:

### Key Changes

**New deprecation infrastructure:**
- Add `deprecate_imports()` utility function to handle deprecated module
imports with warnings
- Implement `__getattr__` hooks in modules to intercept and redirect
deprecated imports
- Deprecate previously removed imports in `beets.library` and
`beets.autotag`
- Deprecate `decargs` function.
2025-08-02 10:48:25 +01:00