rekordbox-edit 0.13.1.dev23__tar.gz → 0.13.2.dev24__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/CHANGELOG.md +2 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/PKG-INFO +1 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/commands/edit.md +2 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/pyproject.toml +1 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_field_handlers.py +7 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/query.py +34 -3
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_field_handlers.py +30 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_query.py +58 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/uv.lock +1 -1
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.agent-style/RULES.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.agent-style/claude-code.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/build-release-notes/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/build-release-notes/build_release_notes.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/commit-check/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/commitizen-bump/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/commitizen-bump/commitizen-bump.sh +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/e2e/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/install/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/lint/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/test/action.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/workflows/cd.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/workflows/ci.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/workflows/publish.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/workflows/release.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.gitignore +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.pre-commit-config.yaml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.python-version +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.readthedocs.yaml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/AGENTS.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/CLAUDE.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/CONTRIBUTING.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/LICENSE +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/Makefile +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/README.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/codecov.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docker-compose.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/api.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/commands/convert.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/commands/import.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/commands/remove.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/commands/search.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/faqs.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/filtering.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/index.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/docs/stylesheets/extra.css +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/mkdocs.yml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/_tag_fields.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_anlz.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_convert.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_edit.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_import.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_relations.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_remove.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_search.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_utils.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/_click.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/_progress.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/_utils.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/convert.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/edit.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/import_.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/main.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/remove.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/cli/search.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/display.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/errors.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/locking.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/logger.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/models.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/tags.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/utils.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/renovate.json5 +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/README.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/beets-plugin-integration.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/decisions/converted-original-disposition.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/evidence/convert-repoint.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/evidence/event-order.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/evidence/file-level-encode.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/evidence/id-stability.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/evidence/media-field-roundtrip.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/scripts/convert_repoint.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/scripts/event_probe.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/scripts/file_level_encode.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/scripts/id_stability.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/beets-plugin-integration/scripts/media_field_roundtrip.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/convert-export-impact-test-plan.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/convert-export-impact.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r1-10-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r1-20-postexport.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r1-21-postexport-full.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r2b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r2b-10-deviceedit.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r2b-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r3-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r3-10-deviceedit.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r3-40-resync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/export-r3-41-reexport-full.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-11317782-r3-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-11317782-r3-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r1-10-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r1-20-postexport.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r2b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r2b-00-lib.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r2b-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-121715696-r2b-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-140193439-r3-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-140193439-r3-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r1-10-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r1-20-postexport.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r2b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r2b-00-lib.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r2b-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-258421826-r2b-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-268012584-r3-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-268012584-r3-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r1-10-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r1-20-postexport.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r2b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r2b-00-lib.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r2b-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-53013048-r2b-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r1-10-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r1-20-postexport.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r2b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r2b-20-postconvert.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/evidence/subject-54793376-r2b-30-postsync.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/scripts/export_diff.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-export-impact/scripts/export_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/convert-anlz-cue-impact-experiment2-plan.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/convert-anlz-cue-impact-experiment2.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/convert-anlz-cue-impact-test-plan.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/convert-anlz-cue-impact-verification.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/convert-anlz-cue-impact.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/decisions/convert-and-reanalysis-impact.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/decisions/convert-helper-structure.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/01-inventory.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/02-cue-schema.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/03-cue-fields-by-format.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/04-anlz-deep.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/05-census.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/06-content-columns.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/07-analysis-flags.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/exp2-00-pvb2-origin.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-00-zero.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-04.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-05.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-04.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-05.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-06.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-then-high.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-unlocked-ref.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-174954387-nth-mid-normal.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-aiff-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-aiff-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-postanalyze2.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postopen.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-postanalyze2.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-mp3-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-205795680-mp3-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-locked.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-unlocked-reanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-postlock.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-230928195-prelock.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-00-zero.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-04.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-05.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-01.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-02.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-03.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-04.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-05.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-06.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-locked.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-then-high.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-27790898-nth-mid-normal.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-postanalyze.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-postconv.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/README.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/analysis_flags.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/anlz_census.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/anlz_deep.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/content_columns.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/cue_fields_by_format.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/cue_schema.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/grid_drift.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/inventory.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/pvb2_origin.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/reset_fresh_to_zero.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/restore_fixtures.sh +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-reanalysis-impact/scripts/row_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/convert-thread-scaling.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/evidence/thread-scaling.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/scripts/_sources.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/scripts/format_scaling.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/scripts/shipped_path_scaling.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/convert-thread-scaling/scripts/write_cost.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/database-concurrency.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/evidence/plan-apply-probes.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/evidence/usn-spikes.txt +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/plan-apply-window.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/block_reservation.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/concurrent_increment.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/identity_probe.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/membership_probe.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/snapshot_probe.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/scripts/wal_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/database-concurrency/usn-maintenance.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/decisions/edit-field-handlers.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/edit-relational-fields-test-plan.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/edit-relational-fields.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-112264610-e2-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-112264610-e2-10-reuse.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-141833798-e3b-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-141833798-e3b-10-newalbum.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-145166719-e0-census.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-176388182-e1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-176388182-e1-10-reuse.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-183309432-e4-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-183309432-e4-10-orphaned.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-47413782-v-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-47413782-v-10-reuse.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-50395296-v-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-50395296-v-10-reuse.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-57701453-e3-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-57701453-e3-10-diffartist.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-71974950-v-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/evidence/rel-71974950-v-10-reuse.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/scripts/relational_diff.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/edit-relational-fields/scripts/relational_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/file-types/README.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/file-types/decisions/unknown-file-types.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/decisions/commit-semantics-and-usn.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/column-coverage-gig.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/datecreated-source-gig.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/filetype-searchstr-gig.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/filetype-searchstr-local.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/import-row-shape-gig.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/evidence/tag-key-mapping-gig.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/import-track-row-shape.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/scripts/column_coverage.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/scripts/datecreated_source.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/scripts/filetype_and_searchstr.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/scripts/import_row_shape.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/import-track-row-shape/scripts/tag_key_mapping.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/decisions/remove-command-behavior.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-109570093-r8-00-imported.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-109570093-r8-10-analyzed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-114745319-r1-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-114745319-r1-10-removed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-120331280-f6-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-120331280-f6-10-control.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-137975518-f3-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-137975518-f3-10-control.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-139425629-r6-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-139425629-r6-10-removed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-14241481-r5-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-14241481-r5-10-removed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-143461275-r7-01-folder-art.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-265892207-r3-00-baseline.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-265892207-r3-10-removed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-265892207-r4-10-playlist-only.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-36337051-r7-00-folder-art.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-74039842-r8-00-imported.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/evidence/rm-74039842-r8-10-analyzed.json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/remove-track-impact-test-plan.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/remove-track-impact.md +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/scripts/build_fixtures.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/scripts/removal_diff.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/scripts/removal_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/remove-track-impact/scripts/restore.sh +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/shared/scripts/subject_diff.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/research/shared/scripts/subject_snapshot.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/ruff.toml +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/anlz_helpers.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/conftest.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_anlz.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_convert.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_edit.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_import.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_package.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_relations.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_remove.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_search.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_utils.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_convert.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_edit.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_import.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_locking.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_main.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_progress.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_remove.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_search.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/cli/test_utils.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/conftest.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/Dockerfile +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/__init__.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/__snapshots__/test_journey/test_search_full_json_snapshot[macos].json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/__snapshots__/test_journey/test_search_full_json_snapshot[windows].json +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/__snapshots__/test_journey.ambr +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/conftest.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/01-flac-44_1k-16b.flac +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/02-flac-96k-24b.flac +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/03-alac-44_1k-16b.m4a +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/04-alac-48k-24b.m4a +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/05-aiff-44_1k-16b.aiff +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/06-wav-96k-24b.wav +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/07-mp3-44_1k-320cbr.mp3 +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/08-mp3-44_1k-v0vbr.mp3 +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/09-aac-44_1k-256kbps.m4a +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/audio/10-/303/274/303/261/303/256c/303/266d/303/251-flac-44_1k-16b.flac" +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/macos/master.6.8.6.db +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/fixtures/windows/master.6.8.6.db +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/test_edit_fields.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/test_import.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/test_journey.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/e2e/test_remove.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_display.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_locking.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_logger.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_models.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_tag_fields.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_tags.py +0 -0
- {rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
## v0.13.
|
|
1
|
+
## v0.13.2.dev24 (2026-09-29)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
- fix(import): don't resolve mapped/symlinked drives to their UNC paths
|
|
4
5
|
- chore(deps): update dependency ruff to v0.16.9 (#251)
|
|
5
6
|
- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
|
6
7
|
- chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.9 (#252)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rekordbox-edit
|
|
3
|
-
Version: 0.13.
|
|
3
|
+
Version: 0.13.2.dev24
|
|
4
4
|
Summary: Tools for managing and modifying a RekordBox library en-masse
|
|
5
5
|
Project-URL: Homepage, https://github.com/jviall/rekordbox-edit
|
|
6
6
|
Project-URL: Repository, https://github.com/jviall/rekordbox-edit
|
|
@@ -52,6 +52,8 @@ rbe edit --title "Teh" Title --match "Teh" --replace "The"
|
|
|
52
52
|
- When the new file's size differs from the recorded `FileSize`, the file is probed and all of `FileType`, `SampleRate`, `BitDepth`, `BitRate`, `FileSize`, and `Length` are rewritten to match it.
|
|
53
53
|
- When the file name changes, the `PPTH` path tag inside the track's analysis (ANLZ) files is rewritten to match. All other analysis data is left alone.
|
|
54
54
|
|
|
55
|
+
A `--replace` path is resolved just like [`import`](import.md) does. It resolves to an absolute path, follows any symlinks, and normalizes to forward-slashes.
|
|
56
|
+
|
|
55
57
|
By default edits will be skipped in the following cases:
|
|
56
58
|
|
|
57
59
|
- The new path's file does not exist.
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rekordbox-edit"
|
|
7
|
-
version = "0.13.
|
|
7
|
+
version = "0.13.2.dev24"
|
|
8
8
|
description = "Tools for managing and modifying a RekordBox library en-masse"
|
|
9
9
|
authors = [{ name = "James Viall", email= "jamesviall@pm.me"}]
|
|
10
10
|
license = "MIT"
|
{rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_field_handlers.py
RENAMED
|
@@ -22,6 +22,7 @@ from rekordbox_edit.api._relations import (
|
|
|
22
22
|
from rekordbox_edit.api._utils import _sync_audio_columns, _update_anlz_paths
|
|
23
23
|
from rekordbox_edit.errors import DependencyMissingError
|
|
24
24
|
from rekordbox_edit.models import EditRequest, SkipReason
|
|
25
|
+
from rekordbox_edit.query import normalize_path
|
|
25
26
|
from rekordbox_edit.utils import (
|
|
26
27
|
AudioInfo,
|
|
27
28
|
get_audio_info,
|
|
@@ -265,7 +266,12 @@ class FolderPathField(FieldHandler):
|
|
|
265
266
|
new_value = _replace(current, args)
|
|
266
267
|
if new_value is None:
|
|
267
268
|
return None
|
|
268
|
-
|
|
269
|
+
if args.match_pattern is not None:
|
|
270
|
+
# --match rewrites stored paths in bulk, routinely onto a drive
|
|
271
|
+
# this machine has not mounted. Resolving those against the local
|
|
272
|
+
# filesystem would rewrite the very prefix the caller just set.
|
|
273
|
+
return new_value.replace("\\", "/")
|
|
274
|
+
return normalize_path(new_value)
|
|
269
275
|
|
|
270
276
|
def validate_track(self, db, content, new_value, args):
|
|
271
277
|
if not os.path.exists(new_value):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
-
from pathlib import Path
|
|
3
|
+
from pathlib import Path, PurePath, PureWindowsPath
|
|
4
4
|
from collections.abc import Collection
|
|
5
5
|
from typing import List, Literal, Tuple, Union
|
|
6
6
|
|
|
@@ -342,8 +342,39 @@ def get_filtered_content(
|
|
|
342
342
|
def normalize_path(path: str) -> str:
|
|
343
343
|
"""A path in the form Rekordbox stores: absolute, symlinks resolved,
|
|
344
344
|
forward-slashed. Rekordbox records the resolved form, so /tmp becomes
|
|
345
|
-
/private/tmp on macOS.
|
|
346
|
-
|
|
345
|
+
/private/tmp on macOS. A Windows drive letter survives resolution, since
|
|
346
|
+
Rekordbox cannot open the UNC share behind a mapped network drive.
|
|
347
|
+
"""
|
|
348
|
+
resolved = Path(path).resolve()
|
|
349
|
+
# splitdrive over abspath, not over `resolved`: abspath makes a relative
|
|
350
|
+
# path absolute without following the mapping, so the drive letter the
|
|
351
|
+
# caller meant is still there to compare against. It is always "" off
|
|
352
|
+
# Windows, which short-circuits everything below.
|
|
353
|
+
drive = os.path.splitdrive(os.path.abspath(path))[0]
|
|
354
|
+
if not drive or drive == resolved.drive or drive.startswith("\\\\"):
|
|
355
|
+
return resolved.as_posix()
|
|
356
|
+
try:
|
|
357
|
+
target = Path(drive + os.sep).resolve()
|
|
358
|
+
except OSError as e:
|
|
359
|
+
_logger.debug(f"could not resolve what drive {drive} points at: {e}")
|
|
360
|
+
return resolved.as_posix()
|
|
361
|
+
return _restore_drive_letter(resolved, drive, target)
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
def _restore_drive_letter(resolved: PurePath, drive: str, target: PurePath) -> str:
|
|
365
|
+
"""`resolved` moved back onto `drive`, which is mapped to `target`.
|
|
366
|
+
|
|
367
|
+
Path.resolve() follows a mapped network drive (M: -> //host/share) and a
|
|
368
|
+
subst drive the way it follows a symlink. Rekordbox stores and plays the
|
|
369
|
+
drive-letter form and cannot open the UNC share, so only the mapping is
|
|
370
|
+
undone; a symlink resolved deeper in the path stays resolved.
|
|
371
|
+
"""
|
|
372
|
+
try:
|
|
373
|
+
tail = resolved.relative_to(target)
|
|
374
|
+
except ValueError:
|
|
375
|
+
_logger.debug(f"{resolved} does not sit under {target}, the target of {drive}")
|
|
376
|
+
return resolved.as_posix()
|
|
377
|
+
return PureWindowsPath(drive + "\\", tail).as_posix()
|
|
347
378
|
|
|
348
379
|
|
|
349
380
|
def find_content_by_key(
|
{rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/tests/api/test_field_handlers.py
RENAMED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import platform
|
|
1
3
|
from typing import get_args
|
|
2
4
|
from unittest.mock import MagicMock, patch
|
|
3
5
|
|
|
@@ -13,6 +15,7 @@ from rekordbox_edit.api._field_handlers import (
|
|
|
13
15
|
from rekordbox_edit.api._relations import RELATIONS, find_by_name, get_or_create
|
|
14
16
|
from rekordbox_edit.errors import DependencyMissingError
|
|
15
17
|
from rekordbox_edit.models import EditRequest, SkipReason
|
|
18
|
+
from rekordbox_edit.query import normalize_path
|
|
16
19
|
|
|
17
20
|
|
|
18
21
|
def _artist_handler():
|
|
@@ -403,6 +406,9 @@ class TestFolderPathField:
|
|
|
403
406
|
content = make_djmd_content_item(ID="1", FolderPath="/old/song.wav")
|
|
404
407
|
assert _folder_handler().current_value(content) == "/old/song.wav"
|
|
405
408
|
|
|
409
|
+
@pytest.mark.skipif(
|
|
410
|
+
platform.system() != "Windows", reason="a backslash path is a Windows path"
|
|
411
|
+
)
|
|
406
412
|
def test_compute_normalizes_backslashes(self):
|
|
407
413
|
args = EditRequest(
|
|
408
414
|
title=["x"], field="FolderPath", replace_value=r"C:\Music\song.wav"
|
|
@@ -412,6 +418,30 @@ class TestFolderPathField:
|
|
|
412
418
|
== "C:/Music/song.wav"
|
|
413
419
|
)
|
|
414
420
|
|
|
421
|
+
def test_compute_makes_a_wholesale_replacement_absolute(self):
|
|
422
|
+
"""Rekordbox resolves a stored path against nothing, so a relative one
|
|
423
|
+
never finds its file."""
|
|
424
|
+
args = EditRequest(
|
|
425
|
+
title=["x"], field="FolderPath", replace_value="music/song.wav"
|
|
426
|
+
)
|
|
427
|
+
new_value = _folder_handler().compute_new_value("/old/song.wav", args)
|
|
428
|
+
assert new_value == normalize_path("music/song.wav")
|
|
429
|
+
assert os.path.isabs(new_value)
|
|
430
|
+
|
|
431
|
+
def test_compute_match_leaves_the_replacement_unresolved(self):
|
|
432
|
+
"""--match retargets stored paths in bulk, often onto a drive this
|
|
433
|
+
machine has not mounted, so the substitution stands as written."""
|
|
434
|
+
args = EditRequest(
|
|
435
|
+
title=["x"],
|
|
436
|
+
field="FolderPath",
|
|
437
|
+
match_pattern="/old/music",
|
|
438
|
+
replace_value="relative/dir",
|
|
439
|
+
)
|
|
440
|
+
assert (
|
|
441
|
+
_folder_handler().compute_new_value("/old/music/song.wav", args)
|
|
442
|
+
== "relative/dir/song.wav"
|
|
443
|
+
)
|
|
444
|
+
|
|
415
445
|
def test_compute_match_skips_none(self):
|
|
416
446
|
# --match has no text to search when the field is empty.
|
|
417
447
|
args = EditRequest(
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
import os
|
|
5
5
|
import platform
|
|
6
|
-
|
|
6
|
+
import subprocess
|
|
7
|
+
from contextlib import contextmanager
|
|
8
|
+
from pathlib import Path, PureWindowsPath
|
|
7
9
|
from unittest.mock import MagicMock
|
|
8
10
|
|
|
9
11
|
import pytest
|
|
@@ -17,6 +19,7 @@ from rekordbox_edit.query import (
|
|
|
17
19
|
find_playlists_by_name,
|
|
18
20
|
get_filtered_content,
|
|
19
21
|
normalize_path,
|
|
22
|
+
_restore_drive_letter,
|
|
20
23
|
)
|
|
21
24
|
|
|
22
25
|
|
|
@@ -24,6 +27,24 @@ def _compile(condition: ColumnElement[bool]) -> str:
|
|
|
24
27
|
return str(condition.compile(compile_kwargs={"literal_binds": True}))
|
|
25
28
|
|
|
26
29
|
|
|
30
|
+
@contextmanager
|
|
31
|
+
def _subst_drive(target: Path):
|
|
32
|
+
"""Map the first free drive letter to `target` for the duration of the
|
|
33
|
+
block. subst is a per-session mapping: it creates no files and leaves
|
|
34
|
+
nothing behind once detached."""
|
|
35
|
+
drive = next(
|
|
36
|
+
(f"{letter}:" for letter in "ZYXWV" if not os.path.exists(f"{letter}:/")),
|
|
37
|
+
None,
|
|
38
|
+
)
|
|
39
|
+
if drive is None:
|
|
40
|
+
pytest.skip("no free drive letter to map")
|
|
41
|
+
subprocess.run(["subst", drive, str(target)], check=True)
|
|
42
|
+
try:
|
|
43
|
+
yield drive
|
|
44
|
+
finally:
|
|
45
|
+
subprocess.run(["subst", drive, "/D"], check=True)
|
|
46
|
+
|
|
47
|
+
|
|
27
48
|
class TestCollectionQuery:
|
|
28
49
|
"""Test the CollectionQuery class."""
|
|
29
50
|
|
|
@@ -885,6 +906,42 @@ class TestNormalizePath:
|
|
|
885
906
|
def test_makes_relative_paths_absolute(self):
|
|
886
907
|
assert os.path.isabs(normalize_path("song.flac"))
|
|
887
908
|
|
|
909
|
+
@pytest.mark.skipif(
|
|
910
|
+
platform.system() != "Windows", reason="drive letters are Windows-only"
|
|
911
|
+
)
|
|
912
|
+
def test_keeps_the_drive_letter_a_subst_drive_resolves_away(self, tmp_path):
|
|
913
|
+
"""A mapped drive is what this guards in the field; subst stands in for
|
|
914
|
+
one, since Path.resolve() expands both the same way."""
|
|
915
|
+
track = tmp_path / "song.flac"
|
|
916
|
+
track.write_bytes(b"")
|
|
917
|
+
with _subst_drive(tmp_path) as drive:
|
|
918
|
+
assert normalize_path(f"{drive}/song.flac") == f"{drive}/song.flac"
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
class TestRestoreDriveLetter:
|
|
922
|
+
"""The drive-letter half of normalize_path, fed the paths Windows would
|
|
923
|
+
produce so the assertions run on every platform."""
|
|
924
|
+
|
|
925
|
+
UNC = PureWindowsPath("//192.168.68.10/music")
|
|
926
|
+
|
|
927
|
+
def test_rewrites_a_unc_share_back_onto_the_drive(self):
|
|
928
|
+
resolved = self.UNC / "DJ Music/song.flac"
|
|
929
|
+
assert (
|
|
930
|
+
_restore_drive_letter(resolved, "M:", self.UNC) == "M:/DJ Music/song.flac"
|
|
931
|
+
)
|
|
932
|
+
|
|
933
|
+
def test_rewrites_the_share_root_itself(self):
|
|
934
|
+
assert _restore_drive_letter(self.UNC, "M:", self.UNC) == "M:/"
|
|
935
|
+
|
|
936
|
+
def test_keeps_a_path_outside_the_drive_target(self):
|
|
937
|
+
"""A symlink deeper in the path can land outside the share; the
|
|
938
|
+
resolved form is then the only one that points at the file."""
|
|
939
|
+
resolved = PureWindowsPath("//other-host/backup/song.flac")
|
|
940
|
+
assert (
|
|
941
|
+
_restore_drive_letter(resolved, "M:", self.UNC)
|
|
942
|
+
== "//other-host/backup/song.flac"
|
|
943
|
+
)
|
|
944
|
+
|
|
888
945
|
|
|
889
946
|
class TestFindContentByKey:
|
|
890
947
|
@staticmethod
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/commit-check/action.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/.github/actions/install/action.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rekordbox_edit-0.13.1.dev23 → rekordbox_edit-0.13.2.dev24}/rekordbox_edit/api/_relations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|