Recent Releases of moe
moe - Release v2.4.0
New Features
- Import: Add max_candidates config option (7646d2b)
- Log a warning if an enabled plugin could not be loaded (2c38c20)
- Move: Introduce overrideextrapath_config hook for dynamic extra path customization (b8e80e7)
Bug Fixes
- Album: Multi-disc albums not correctly setting the album\'s path (dc7e1d3)
- Python
Published by github-actions[bot] 12 months ago
moe - Release v2.3.0
New Features
- Move: Add [overridealbumpath_config]{.title-ref} hook (b062fc5)
Bug Fixes
- Move: Prevent duplicate copying of tracks and extras when processing albums (cc54a8f)
- Python
Published by github-actions[bot] 12 months ago
moe - Release v2.2.2
Build Changes
- Move alembic to be within moe source directory (3f3a0d2)
- Python
Published by github-actions[bot] about 1 year ago
moe - Release v2.2.1
Build Changes
- Fix alembic config getting overwritten on build (7f1e9fc)
- Python
Published by github-actions[bot] about 1 year ago
moe - Release v2.2.0
New Features
- Edit: Editing fields now allows for creation of new custom fields (6fd538d)
- Python
Published by github-actions[bot] about 1 year ago
moe - Release v2.1.3
Bug Fixes
- Metatracks always failing equality (89e25d2)
- Python
Published by github-actions[bot] about 2 years ago
moe - Release v2.1.1
Build Changes
- Upgrade sqlalchemy to v2.0.0 (4e568e5)
- Upgrade lint dependencies (8a9047d)
- Upgrade docs dependencies (8d95017)
- Upgrade test dependencies (0b5b384)
- Upgrade pytest to v7.0.0 (50eb061)
- Upgrade rich to v13.0.0 (3ee7ef0)
- Upgrade pluggy to v1.0.0 (88c0384)
- Python
Published by github-actions[bot] about 3 years ago
moe - Release v2.1.0
New Features
- Add [-d]{.title-ref} option to [rm]{.title-ref} command to delete files (8246eb8)
- Query: Added support for numeric range queries (fac29a1)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v2.0.0
I\'m not particularly happy about how little time as passed between v1.0.0 and this release and I don\'t expect this timeframe to be the norm. In a perfect world, I\'m releasing at most 1-2 major versions per year of Moe. I justified this timeframe as I still don\'t think there\'s many people using Moe and the list of breaking changes I wanted to implement had settled at a good number.
With that said, I recommend reading through the following notes before upgrading.
Breaking Changes
Use mediafile dependency over moe_mediafile fork (bcda77d)
Now that our changes have been merged into mediafile, there\'s no longer a need to use our fork.
You may experience issues if you have both moe_mediafile and mediafile installed together. All users upgrading should explicitly uninstall moe_mediafile by running ``pip uninstall moe_mediafile``.
DB sessions are now explicitly passed as arguments (228a017)
This helps clarify exactly which functions require the database to be initialized. Also, it helps avoid any potential future issues with relying entirely on a global/thread-local session factory.
The following functions/hooks are affected by this change:
-
add.add_item- newsessionparameter -
cli.Hooks.add_command- the sub-command functions are now passed asessionparameter -
config.Hooks.register_sa_event_listeners-sessionparameter removed -
duplicate.resolve_dup_items- newsessionparameter -
duplicate.Hooks.resolve_dup_items- newsessionparameter -
duplicate.resolve_duplicates- newsessionparameter -
duplicate.get_duplicates- newsessionparameter -
library.lib_item.Hooks.edit_changed_items- newsessionparameter -
library.lib_item.Hooks.edit_new_items- newsessionparameter -
library.lib_item.Hooks.process_removed_items- newsessionparameter -
library.lib_item.Hooks.process_changed_items- newsessionparameter -
library.lib_item.Hooks.process_new_items- newsessionparameter -
query.query- newsessionparameter -
remove.remove_item- newsessionparameter -
util.cli.query.cli_query- newsessionparameter
config.MoeSessionhas also been replaced withconfig.moe_sessionmaker. Sessions should no longer be created by importingMoeSession, and instead should use a session parameter that is created at the top-level of an application. Refer to theconfig.pydocstring as well ascli.pyfor more information on how to handle sessions now.-
Changed CandidateAlbum attributes (9cc69db)
-
source_stris now split into two fields:plugin_sourceandsource_id. This is so in the future we can check against theplugin_sourceand apply different handling criteria per plugin e.g. import weight values. -
sub_header_inforenamed todisambigs. The \"sub-header\" is specific to the cli, so it was renamed to be more generalized.
-
Replaced
lib_patharg forfmt_item_pathwith optionalparentarg (cc267d5)This is more flexible as it allows specifying the direct parent for albums, extras and tracks instead of just albums.
Removed sync plugin (ae0889d)
The original idea of the sync plugin to sync multiple metadata sources with one command has some implementation barriers that were not fully fleshed out. Instead, each plugin should just implement their own sync commands.
Removed musicbrainz plugin (d171be0)
Musicbrainz is now a third-party plugin to be consistent with Moe\'s policy that any external source plugins should not be in the core repository.
If you\'d like to continue to use musicbrainz as an import source, you can install the new plugin with
pip install moe_musicbrainz. Also, ensure to enable it in your configuration. You can find more information on the [Thid-Pary Plugins]{.title-ref} documentation page.Removed
pluginsub-directory and package (d3d756d)Now, rather than having to import an api function as
moe.plugins.add.add_item, it\'s justmoe.add.add_item. I felt the extrapluginsimport level was unnecessarily verbose.Custom fields now require dictionary access (1df625c)
Custom fields must now be accessed via
item.custom["my_custom_field"]i.e. normal dictionary access.I changed this from normal attribute access as overriding
__getattr__and__setattr__(required for transparent attribute access) had some finicky conflicts with sqlalchemy. Also, it prevented type hinting the custom attribute dictionary as well as integration with data serializers such as pydantic.Overall, the more I used them, the more issues I found, and the more it felt like a hack. I believe the new explicit dictionary access for custom attributes will prove to be more bulletproof. It also explicitly delineates normal and custom attributes which can be useful in some cases.
Renamed
album_objreference toalbumin tracks and extras (51ff9a9)track.albumnow refers to the actual album object (renamed fromtrack.album_obj) andtrack.albumartisthas been removed. Similarly,extra.album_objhas been renamed toextra.album.The original idea was that
track.albumwas a string that referred to an album\'s title, whiletrack.album_objwas the actual album object itself.track.albumandtrack.albumartistwere \"mapped\" attributes of an album directly exposed in the track API due to convention. However, these mapped attributes are not first-class attributes as far as sqlalchemy is concerned, and thus have additional issues and considerations compared to normal attributes. Ultimately, I decided these mapped attributes are not worth the headache.
Performance Enhancements
- Slightly improved start-up time by importing default plugins (0ffd10a)
Build Changes
- Removed pyyaml dependency (2519817)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.5.1
Bug Fixes
- Ensure tracks created from files contain required tags (bf215ed)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.5.0
New Features
- Add new
lib_pathargument tofmt_item_path(5ed5dc4) - Add sample rate and bit depth as track properties (f9c3384)
Bug Fixes
- [none] catalog number from musicbrainz now properly set (25d73e1)
- Albumartist overwriting track artist (6bbf445)
Build Changes
- Support python 3.11 (de6ebd2)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.4.0
New Features
- Show catalog number after label during import (84f8067)
Bug Fixes
- Musicbrainz error if release does not have a date or format (d0fe109)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.3.2
Bug Fixes
- Track audio_format is now a property and not a field (c2aeda7)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.3.1
Bug Fixes
- Use fork of mediafile (53d8333)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.2.0
New Features
- CLI prompts now allow arrow keys to navigate choices (78344f9)
- New album field - track_total (eb947b9)
- Improve musicbrainz search accuracy (891b995)
Bug Fixes
- Tags now written to tracks if album fields changed (48f7076)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.1.0
New Features
- New read plugin for updating items in moe with any file changes (adbbdd4)
- New album field - barcode (72d07d3)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v1.0.0
First stable release! From this point on, the API is considered stable and breaking changes will result in a new major version per semantic versioning.
Breaking Changes
- Update docs for stable release (07fec3e)
Bug Fixes
- Import wrong dataclass (ee6959a)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.16.0
New Features
- Support for external third-party plugins (b0c736c)
- Users can now create custom plugins in their configuration dir (84347f6)
- Add command can now handle adding extras (ab83e63)
- Candidate prompt to select an album to import (c5ff9a5)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.15.3
Bug Fixes
- Musicbrainz error if a release has no label (6991a41)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.15.2
Bug Fixes
- Musicbrainz error if release does not have a country specified (1c0f844)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.15.1
Bug Fixes
- Sync_item not called with keyword arguments (7c4b65a)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.15.0
New Features
- New config option
original_date(3894fa7) - New field - original_date (416d202)
- Add media, label, country, and year to import header (ce9cc9a)
- New album field - label (80e8348)
- New album field - country (5a51d71)
- New album field - media (256a3a6)
- New track field - artists (7701d9e)
- New path template function to get a unique extra filename (8a0c3a3)
- Allow plugins to create custom path template functions (195ea9c)
- Add [mbcol]{.title-ref} cli argument to sync music to a musicbrainz collection (4f00136)
- List cli output is now sorted (fbb11d0)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.14.0
New Features
- Add: New import option to skip a single item (3d3027c)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.13.0
New Features
- Adjusted track match values to be more lenient (9b90803)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.12.2
Bug Fixes
- Relative path error if album and file use non-relative hardlinks (8574e38)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.12.0
New Features
- New sync plugin to sync music metadata (6ad78f2)
- Duplicate prompt ui improvements (fd24944)
- Import prompt ui improvements (2bbff8c)
- New global config option to explicitly disable plugins (88d6bab)
Bug Fixes
- Albums were not querying properly if they didn\'t contain tracks (094257d)
- Duplicate genres now persist in the database (6a655b0)
- Custom fields now populate when loaded from the database (911d0f7)
Build Changes
- Add rich as a dependency (626b20c)
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.11.0
Some big changes here, notably requiring python3.9 to take get the json1 extension in sqlite. This is what allows us to now support custom fields in plugins. This version introduces a non-backwards-compatible database change, and thus will require a deletion of any current library.
New Features
- Read and write musicbrainz ids (ef82c67)
- New hook to allow plugins to write custom tags to a track (8ee8fcb)
- New hook to allow plugins to read/set custom track tags (b5069ba)
- Custom fields can be set by plugins for all library items (9606c1d)
- MB: New api call to update an album from musicbrainz (2a972de)
- MB: Added new api call to set a mb collection to a set of releases (aad7959)
- MB: Ability to auto update a musicbrainz collection (6e1cec1)
Build Changes
- Python
Published by github-actions[bot] over 3 years ago
moe - Release v0.10.0
New Features
- Add: Guess a track\'s disc number if not given or presumed wrong (d71afd9)
- Fuzzy match title when matching tracks (37b9f02)
- Python
Published by github-actions[bot] over 3 years ago