beets/beetsplug
Šarūnas Nejus 3be4a89aee
refactor: convert _types from class attributes to cached properties
Convert static _types dictionaries to dynamic cached class properties to
enable proper plugin type inheritance and avoid mutating shared state.

Key changes:
- Replace static _types dicts with @cached_classproperty decorators
- Update cached_classproperty to support proper caching with class names
- Remove manual _types mutation in plugin loading/unloading
- Add pluginload event and cache clearing for proper plugin integration
- Fix test to trigger type checking during item creation

This ensures plugin types are properly inherited through the class
hierarchy and eliminates issues with shared mutable state between
test runs.
2025-07-16 14:45:25 +01:00
..
bpd Fix types in test_player 2025-07-16 14:06:34 +01:00
lastgenre Fix plugin types 2025-07-16 14:06:34 +01:00
metasync Do not assign args to query 2025-07-08 11:37:34 +01:00
web Remove all Python 2 references 2025-07-08 11:37:34 +01:00
_typing.py Resurrect translation functionality 2025-02-20 03:47:04 +00:00
absubmit.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
acousticbrainz.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
advancedrewrite.py refactor: convert _types from class attributes to cached properties 2025-07-16 14:45:25 +01:00
albumtypes.py Move musicbrainz to beetsplug directory 2025-05-16 19:56:50 +01:00
aura.py Use Item.field_query for queries that receive user input 2025-01-19 01:09:11 +00:00
autobpm.py Fix plugin types 2025-07-16 14:06:34 +01:00
badfiles.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
bareasc.py Do not assign args to query 2025-07-08 11:37:34 +01:00
beatport.py Renamed class method to _extract_id. 2025-07-15 15:03:14 +02:00
bench.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
bpm.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
bpsync.py Do not assign args to query 2025-07-08 11:37:34 +01:00
bucket.py Reformat the codebase 2024-09-21 11:57:48 +01:00
chroma.py split imports 2025-07-16 12:07:49 +02:00
convert.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
deezer.py Renamed class method to _extract_id. 2025-07-15 15:03:14 +02:00
discogs.py Renamed class method to _extract_id. 2025-07-15 15:03:14 +02:00
duplicates.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
edit.py Do not assign args to query 2025-07-08 11:37:34 +01:00
embedart.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
embyupdate.py Redact sensitive fields 2025-05-07 20:39:32 +01:00
export.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
fetchart.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
filefilter.py Reformat the codebase 2024-09-21 11:57:48 +01:00
fish.py Reformat the codebase 2024-09-21 11:57:48 +01:00
freedesktop.py Reformat the codebase 2024-09-21 11:57:48 +01:00
fromfilename.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
ftintitle.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
fuzzy.py Reformat the codebase 2024-09-21 11:57:48 +01:00
gmusic.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
hook.py Remove all Python 2 references 2025-07-08 11:37:34 +01:00
ihate.py Renamed all action occurrences with Action. 2025-05-13 13:01:46 +02:00
importadded.py Fix formatting 2025-05-07 10:41:01 +01:00
importfeeds.py Reformat the codebase 2024-09-21 11:57:48 +01:00
info.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
inline.py Fix formatting 2025-05-07 10:41:01 +01:00
ipfs.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
keyfinder.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
kodiupdate.py Redact sensitive fields 2025-05-07 20:39:32 +01:00
lastimport.py Redact sensitive fields 2025-05-07 20:39:32 +01:00
limit.py Do not assign args to query 2025-07-08 11:37:34 +01:00
listenbrainz.py Fix formatting 2025-05-07 10:41:01 +01:00
loadext.py Reformat the codebase 2024-09-21 11:57:48 +01:00
lyrics.py Move distance to a separate module 2025-05-31 19:17:43 +01:00
mbcollection.py Only consider release collections in mbcollection plugin 2025-07-07 13:25:25 +02:00
mbsubmit.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
mbsync.py Renamed import in mbsync and missing plugins. 2025-07-15 15:03:14 +02:00
missing.py Renamed import in mbsync and missing plugins. 2025-07-15 15:03:14 +02:00
mpdstats.py feat: mpdstats: add config option for played ratio threshold to determine if a 2025-07-09 14:16:23 -06:00
mpdupdate.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
musicbrainz.py Renamed class method to _extract_id. 2025-07-15 15:03:14 +02:00
parentwork.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
permissions.py Apply formatting 2024-03-01 15:21:25 +10:00
play.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
playlist.py playlist: Use pathlib.Path and add types for is_m3u_file() 2025-07-07 08:05:47 +02:00
plexupdate.py Add timeout to all requests calls 2024-05-25 12:24:53 -03:00
random.py Do not assign args to query 2025-07-08 11:37:34 +01:00
replace.py Feat: Add replace plugin (#5644) 2025-05-27 00:17:52 +02:00
replaygain.py Fix plugin types 2025-07-16 14:06:34 +01:00
rewrite.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
scrub.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
smartplaylist.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
sonosupdate.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
spotify.py Fix a generic type error and warnings in spotify 2025-07-16 14:15:27 +01:00
subsonicplaylist.py Fix formatting 2025-05-07 10:41:01 +01:00
subsonicupdate.py Redact sensitive fields 2025-05-07 20:39:32 +01:00
substitute.py Apply substitute rules in sequence 2024-10-16 16:36:36 +02:00
the.py Fix formatting 2025-05-07 10:41:01 +01:00
thumbnails.py Remove no-op decargs 2025-07-08 11:37:33 +01:00
types.py Copy paste query, types from library to dbcore 2025-07-06 16:03:46 +01:00
unimported.py bugfix: ignore subdirectories of ignored 2024-03-22 18:20:47 -04:00
zero.py Remove no-op decargs 2025-07-08 11:37:33 +01:00