rekordbox-edit 0.13.1.dev4__tar.gz → 0.13.1.dev7__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.
Files changed (384) hide show
  1. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.pre-commit-config.yaml +1 -1
  2. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/CHANGELOG.md +21 -1
  3. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/PKG-INFO +1 -1
  4. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/pyproject.toml +1 -1
  5. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_import.py +36 -7
  6. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_utils.py +5 -1
  7. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/tags.py +14 -1
  8. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/utils.py +2 -1
  9. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_import.py +23 -1
  10. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/test_import.py +10 -4
  11. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_tag_fields.py +2 -2
  12. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_tags.py +23 -0
  13. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/uv.lock +52 -52
  14. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.agent-style/RULES.md +0 -0
  15. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.agent-style/claude-code.md +0 -0
  16. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/build-release-notes/action.yml +0 -0
  17. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/build-release-notes/build_release_notes.py +0 -0
  18. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/commit-check/action.yml +0 -0
  19. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/commitizen-bump/action.yml +0 -0
  20. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/commitizen-bump/commitizen-bump.sh +0 -0
  21. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/e2e/action.yml +0 -0
  22. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/install/action.yml +0 -0
  23. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/lint/action.yml +0 -0
  24. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/actions/test/action.yml +0 -0
  25. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/workflows/cd.yml +0 -0
  26. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/workflows/ci.yml +0 -0
  27. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/workflows/publish.yml +0 -0
  28. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.github/workflows/release.yml +0 -0
  29. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.gitignore +0 -0
  30. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.python-version +0 -0
  31. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/.readthedocs.yaml +0 -0
  32. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/AGENTS.md +0 -0
  33. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/CLAUDE.md +0 -0
  34. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/CONTRIBUTING.md +0 -0
  35. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/LICENSE +0 -0
  36. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/Makefile +0 -0
  37. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/README.md +0 -0
  38. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/codecov.yml +0 -0
  39. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docker-compose.yml +0 -0
  40. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/api.md +0 -0
  41. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/commands/convert.md +0 -0
  42. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/commands/edit.md +0 -0
  43. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/commands/import.md +0 -0
  44. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/commands/remove.md +0 -0
  45. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/commands/search.md +0 -0
  46. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/faqs.md +0 -0
  47. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/filtering.md +0 -0
  48. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/index.md +0 -0
  49. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/docs/stylesheets/extra.css +0 -0
  50. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/mkdocs.yml +0 -0
  51. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/__init__.py +0 -0
  52. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/_tag_fields.py +0 -0
  53. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/__init__.py +0 -0
  54. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_anlz.py +0 -0
  55. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_convert.py +0 -0
  56. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_edit.py +0 -0
  57. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_field_handlers.py +0 -0
  58. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_relations.py +0 -0
  59. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_remove.py +0 -0
  60. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/api/_search.py +0 -0
  61. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/__init__.py +0 -0
  62. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/_click.py +0 -0
  63. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/_progress.py +0 -0
  64. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/_utils.py +0 -0
  65. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/convert.py +0 -0
  66. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/edit.py +0 -0
  67. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/import_.py +0 -0
  68. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/main.py +0 -0
  69. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/remove.py +0 -0
  70. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/cli/search.py +0 -0
  71. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/display.py +0 -0
  72. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/errors.py +0 -0
  73. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/locking.py +0 -0
  74. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/logger.py +0 -0
  75. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/models.py +0 -0
  76. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/rekordbox_edit/query.py +0 -0
  77. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/renovate.json5 +0 -0
  78. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/README.md +0 -0
  79. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/beets-plugin-integration.md +0 -0
  80. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/decisions/converted-original-disposition.md +0 -0
  81. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/evidence/convert-repoint.txt +0 -0
  82. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/evidence/event-order.txt +0 -0
  83. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/evidence/file-level-encode.txt +0 -0
  84. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/evidence/id-stability.txt +0 -0
  85. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/evidence/media-field-roundtrip.txt +0 -0
  86. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/scripts/convert_repoint.py +0 -0
  87. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/scripts/event_probe.py +0 -0
  88. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/scripts/file_level_encode.py +0 -0
  89. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/scripts/id_stability.py +0 -0
  90. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/beets-plugin-integration/scripts/media_field_roundtrip.py +0 -0
  91. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/convert-export-impact-test-plan.md +0 -0
  92. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/convert-export-impact.md +0 -0
  93. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r1-00-baseline.json +0 -0
  94. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r1-10-postconvert.json +0 -0
  95. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r1-20-postexport.json +0 -0
  96. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r1-21-postexport-full.json +0 -0
  97. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r2-00-baseline.json +0 -0
  98. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r2b-00-baseline.json +0 -0
  99. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r2b-10-deviceedit.json +0 -0
  100. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r2b-30-postsync.json +0 -0
  101. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r3-00-baseline.json +0 -0
  102. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r3-10-deviceedit.json +0 -0
  103. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r3-40-resync.json +0 -0
  104. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/export-r3-41-reexport-full.json +0 -0
  105. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-11317782-r3-20-postconvert.json +0 -0
  106. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-11317782-r3-30-postsync.json +0 -0
  107. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r1-00-baseline.json +0 -0
  108. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r1-10-postconvert.json +0 -0
  109. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r1-20-postexport.json +0 -0
  110. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r2-00-baseline.json +0 -0
  111. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r2b-00-baseline.json +0 -0
  112. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r2b-00-lib.json +0 -0
  113. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r2b-20-postconvert.json +0 -0
  114. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-121715696-r2b-30-postsync.json +0 -0
  115. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-140193439-r3-20-postconvert.json +0 -0
  116. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-140193439-r3-30-postsync.json +0 -0
  117. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r1-00-baseline.json +0 -0
  118. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r1-10-postconvert.json +0 -0
  119. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r1-20-postexport.json +0 -0
  120. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r2-00-baseline.json +0 -0
  121. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r2b-00-baseline.json +0 -0
  122. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r2b-00-lib.json +0 -0
  123. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r2b-20-postconvert.json +0 -0
  124. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-258421826-r2b-30-postsync.json +0 -0
  125. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-268012584-r3-20-postconvert.json +0 -0
  126. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-268012584-r3-30-postsync.json +0 -0
  127. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r1-00-baseline.json +0 -0
  128. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r1-10-postconvert.json +0 -0
  129. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r1-20-postexport.json +0 -0
  130. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r2-00-baseline.json +0 -0
  131. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r2b-00-baseline.json +0 -0
  132. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r2b-00-lib.json +0 -0
  133. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r2b-20-postconvert.json +0 -0
  134. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-53013048-r2b-30-postsync.json +0 -0
  135. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r1-00-baseline.json +0 -0
  136. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r1-10-postconvert.json +0 -0
  137. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r1-20-postexport.json +0 -0
  138. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r2-00-baseline.json +0 -0
  139. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r2b-00-baseline.json +0 -0
  140. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r2b-20-postconvert.json +0 -0
  141. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/evidence/subject-54793376-r2b-30-postsync.json +0 -0
  142. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/scripts/export_diff.py +0 -0
  143. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-export-impact/scripts/export_snapshot.py +0 -0
  144. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/convert-anlz-cue-impact-experiment2-plan.md +0 -0
  145. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/convert-anlz-cue-impact-experiment2.md +0 -0
  146. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/convert-anlz-cue-impact-test-plan.md +0 -0
  147. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/convert-anlz-cue-impact-verification.md +0 -0
  148. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/convert-anlz-cue-impact.md +0 -0
  149. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/decisions/convert-and-reanalysis-impact.md +0 -0
  150. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/decisions/convert-helper-structure.md +0 -0
  151. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/01-inventory.txt +0 -0
  152. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/02-cue-schema.txt +0 -0
  153. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/03-cue-fields-by-format.txt +0 -0
  154. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/04-anlz-deep.txt +0 -0
  155. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/05-census.txt +0 -0
  156. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/06-content-columns.txt +0 -0
  157. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/07-analysis-flags.txt +0 -0
  158. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/exp2-00-pvb2-origin.txt +0 -0
  159. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-00-zero.json +0 -0
  160. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-01.json +0 -0
  161. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-02.json +0 -0
  162. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-high-03.json +0 -0
  163. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-01.json +0 -0
  164. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-02.json +0 -0
  165. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-dyn-normal-03.json +0 -0
  166. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-01.json +0 -0
  167. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-02.json +0 -0
  168. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-03.json +0 -0
  169. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-04.json +0 -0
  170. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-05.json +0 -0
  171. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-01.json +0 -0
  172. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-02.json +0 -0
  173. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-high-auto-03.json +0 -0
  174. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-01.json +0 -0
  175. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-02.json +0 -0
  176. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-03.json +0 -0
  177. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-04.json +0 -0
  178. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-05.json +0 -0
  179. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-06.json +0 -0
  180. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-then-high.json +0 -0
  181. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-normal-unlocked-ref.json +0 -0
  182. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-174954387-nth-mid-normal.json +0 -0
  183. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-00-baseline.json +0 -0
  184. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-aiff-postanalyze.json +0 -0
  185. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-aiff-postconv.json +0 -0
  186. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-baseline.json +0 -0
  187. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-postanalyze.json +0 -0
  188. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205157376-combined-ctrl-postanalyze2.json +0 -0
  189. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-00-baseline.json +0 -0
  190. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postanalyze.json +0 -0
  191. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postconv.json +0 -0
  192. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-aiff-postopen.json +0 -0
  193. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-baseline.json +0 -0
  194. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-postanalyze.json +0 -0
  195. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-ctrl-postanalyze2.json +0 -0
  196. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-flac-postconv.json +0 -0
  197. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-mp3-postanalyze.json +0 -0
  198. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-205795680-mp3-postconv.json +0 -0
  199. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-00-baseline.json +0 -0
  200. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-locked.json +0 -0
  201. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-postconv.json +0 -0
  202. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-mp3-unlocked-reanalyze.json +0 -0
  203. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-postlock.json +0 -0
  204. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-230928195-prelock.json +0 -0
  205. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-baseline.json +0 -0
  206. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-postanalyze.json +0 -0
  207. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-231283665-iso-rate-postconv.json +0 -0
  208. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-00-zero.json +0 -0
  209. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-01.json +0 -0
  210. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-02.json +0 -0
  211. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-high-03.json +0 -0
  212. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-01.json +0 -0
  213. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-02.json +0 -0
  214. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-dyn-normal-03.json +0 -0
  215. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-01.json +0 -0
  216. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-02.json +0 -0
  217. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-03.json +0 -0
  218. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-04.json +0 -0
  219. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-05.json +0 -0
  220. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-01.json +0 -0
  221. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-02.json +0 -0
  222. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-high-auto-03.json +0 -0
  223. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-01.json +0 -0
  224. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-02.json +0 -0
  225. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-03.json +0 -0
  226. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-04.json +0 -0
  227. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-05.json +0 -0
  228. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-06.json +0 -0
  229. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-locked.json +0 -0
  230. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-normal-then-high.json +0 -0
  231. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-27790898-nth-mid-normal.json +0 -0
  232. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-baseline.json +0 -0
  233. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-postanalyze.json +0 -0
  234. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-34178159-iso-depth-postconv.json +0 -0
  235. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-baseline.json +0 -0
  236. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-postanalyze.json +0 -0
  237. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/evidence/subject-7691309-pvb2-postconv.json +0 -0
  238. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/README.md +0 -0
  239. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/analysis_flags.py +0 -0
  240. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/anlz_census.py +0 -0
  241. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/anlz_deep.py +0 -0
  242. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/content_columns.py +0 -0
  243. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/cue_fields_by_format.py +0 -0
  244. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/cue_schema.py +0 -0
  245. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/grid_drift.py +0 -0
  246. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/inventory.py +0 -0
  247. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/pvb2_origin.py +0 -0
  248. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/reset_fresh_to_zero.py +0 -0
  249. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/restore_fixtures.sh +0 -0
  250. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-reanalysis-impact/scripts/row_snapshot.py +0 -0
  251. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/convert-thread-scaling.md +0 -0
  252. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/evidence/thread-scaling.txt +0 -0
  253. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/scripts/_sources.py +0 -0
  254. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/scripts/format_scaling.py +0 -0
  255. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/scripts/shipped_path_scaling.py +0 -0
  256. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/convert-thread-scaling/scripts/write_cost.py +0 -0
  257. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/database-concurrency.md +0 -0
  258. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/evidence/plan-apply-probes.txt +0 -0
  259. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/evidence/usn-spikes.txt +0 -0
  260. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/plan-apply-window.md +0 -0
  261. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/block_reservation.py +0 -0
  262. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/concurrent_increment.py +0 -0
  263. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/identity_probe.py +0 -0
  264. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/membership_probe.py +0 -0
  265. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/snapshot_probe.py +0 -0
  266. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/scripts/wal_snapshot.py +0 -0
  267. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/database-concurrency/usn-maintenance.md +0 -0
  268. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/decisions/edit-field-handlers.md +0 -0
  269. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/edit-relational-fields-test-plan.md +0 -0
  270. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/edit-relational-fields.md +0 -0
  271. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-112264610-e2-00-baseline.json +0 -0
  272. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-112264610-e2-10-reuse.json +0 -0
  273. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-141833798-e3b-00-baseline.json +0 -0
  274. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-141833798-e3b-10-newalbum.json +0 -0
  275. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-145166719-e0-census.json +0 -0
  276. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-176388182-e1-00-baseline.json +0 -0
  277. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-176388182-e1-10-reuse.json +0 -0
  278. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-183309432-e4-00-baseline.json +0 -0
  279. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-183309432-e4-10-orphaned.json +0 -0
  280. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-47413782-v-00-baseline.json +0 -0
  281. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-47413782-v-10-reuse.json +0 -0
  282. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-50395296-v-00-baseline.json +0 -0
  283. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-50395296-v-10-reuse.json +0 -0
  284. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-57701453-e3-00-baseline.json +0 -0
  285. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-57701453-e3-10-diffartist.json +0 -0
  286. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-71974950-v-00-baseline.json +0 -0
  287. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/evidence/rel-71974950-v-10-reuse.json +0 -0
  288. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/scripts/relational_diff.py +0 -0
  289. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/edit-relational-fields/scripts/relational_snapshot.py +0 -0
  290. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/file-types/README.md +0 -0
  291. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/file-types/decisions/unknown-file-types.md +0 -0
  292. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/decisions/commit-semantics-and-usn.md +0 -0
  293. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/column-coverage-gig.json +0 -0
  294. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/datecreated-source-gig.json +0 -0
  295. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/filetype-searchstr-gig.json +0 -0
  296. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/filetype-searchstr-local.json +0 -0
  297. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/import-row-shape-gig.json +0 -0
  298. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/evidence/tag-key-mapping-gig.json +0 -0
  299. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/import-track-row-shape.md +0 -0
  300. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/scripts/column_coverage.py +0 -0
  301. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/scripts/datecreated_source.py +0 -0
  302. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/scripts/filetype_and_searchstr.py +0 -0
  303. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/scripts/import_row_shape.py +0 -0
  304. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/import-track-row-shape/scripts/tag_key_mapping.py +0 -0
  305. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/decisions/remove-command-behavior.md +0 -0
  306. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-109570093-r8-00-imported.json +0 -0
  307. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-109570093-r8-10-analyzed.json +0 -0
  308. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-114745319-r1-00-baseline.json +0 -0
  309. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-114745319-r1-10-removed.json +0 -0
  310. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-120331280-f6-00-baseline.json +0 -0
  311. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-120331280-f6-10-control.json +0 -0
  312. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-137975518-f3-00-baseline.json +0 -0
  313. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-137975518-f3-10-control.json +0 -0
  314. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-139425629-r6-00-baseline.json +0 -0
  315. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-139425629-r6-10-removed.json +0 -0
  316. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-14241481-r5-00-baseline.json +0 -0
  317. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-14241481-r5-10-removed.json +0 -0
  318. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-143461275-r7-01-folder-art.json +0 -0
  319. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-265892207-r3-00-baseline.json +0 -0
  320. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-265892207-r3-10-removed.json +0 -0
  321. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-265892207-r4-10-playlist-only.json +0 -0
  322. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-36337051-r7-00-folder-art.json +0 -0
  323. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-74039842-r8-00-imported.json +0 -0
  324. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/evidence/rm-74039842-r8-10-analyzed.json +0 -0
  325. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/remove-track-impact-test-plan.md +0 -0
  326. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/remove-track-impact.md +0 -0
  327. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/scripts/build_fixtures.py +0 -0
  328. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/scripts/removal_diff.py +0 -0
  329. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/scripts/removal_snapshot.py +0 -0
  330. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/remove-track-impact/scripts/restore.sh +0 -0
  331. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/shared/scripts/subject_diff.py +0 -0
  332. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/research/shared/scripts/subject_snapshot.py +0 -0
  333. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/ruff.toml +0 -0
  334. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/__init__.py +0 -0
  335. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/anlz_helpers.py +0 -0
  336. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/__init__.py +0 -0
  337. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/conftest.py +0 -0
  338. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_anlz.py +0 -0
  339. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_convert.py +0 -0
  340. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_edit.py +0 -0
  341. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_field_handlers.py +0 -0
  342. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_package.py +0 -0
  343. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_relations.py +0 -0
  344. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_remove.py +0 -0
  345. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_search.py +0 -0
  346. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/api/test_utils.py +0 -0
  347. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/__init__.py +0 -0
  348. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_convert.py +0 -0
  349. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_edit.py +0 -0
  350. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_import.py +0 -0
  351. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_locking.py +0 -0
  352. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_main.py +0 -0
  353. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_progress.py +0 -0
  354. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_remove.py +0 -0
  355. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_search.py +0 -0
  356. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/cli/test_utils.py +0 -0
  357. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/conftest.py +0 -0
  358. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/Dockerfile +0 -0
  359. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/__init__.py +0 -0
  360. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/__snapshots__/test_journey/test_search_full_json_snapshot[macos].json +0 -0
  361. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/__snapshots__/test_journey/test_search_full_json_snapshot[windows].json +0 -0
  362. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/__snapshots__/test_journey.ambr +0 -0
  363. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/conftest.py +0 -0
  364. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/01-flac-44_1k-16b.flac +0 -0
  365. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/02-flac-96k-24b.flac +0 -0
  366. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/03-alac-44_1k-16b.m4a +0 -0
  367. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/04-alac-48k-24b.m4a +0 -0
  368. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/05-aiff-44_1k-16b.aiff +0 -0
  369. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/06-wav-96k-24b.wav +0 -0
  370. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/07-mp3-44_1k-320cbr.mp3 +0 -0
  371. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/08-mp3-44_1k-v0vbr.mp3 +0 -0
  372. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/09-aac-44_1k-256kbps.m4a +0 -0
  373. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/audio/10-/303/274/303/261/303/256c/303/266d/303/251-flac-44_1k-16b.flac" +0 -0
  374. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/macos/master.6.8.6.db +0 -0
  375. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/fixtures/windows/master.6.8.6.db +0 -0
  376. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/test_edit_fields.py +0 -0
  377. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/test_journey.py +0 -0
  378. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/e2e/test_remove.py +0 -0
  379. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_display.py +0 -0
  380. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_locking.py +0 -0
  381. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_logger.py +0 -0
  382. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_models.py +0 -0
  383. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_query.py +0 -0
  384. {rekordbox_edit-0.13.1.dev4 → rekordbox_edit-0.13.1.dev7}/tests/test_utils.py +0 -0
@@ -32,7 +32,7 @@ repos:
32
32
  files: pyproject\.toml$
33
33
  pass_filenames: false
34
34
  - repo: https://github.com/astral-sh/ruff-pre-commit
35
- rev: v0.16.6
35
+ rev: v0.16.7
36
36
  hooks:
37
37
  - id: ruff-check
38
38
  args: [--fix]
@@ -1,6 +1,26 @@
1
- ## v0.13.1.dev4 (2026-09-10)
1
+ ## v0.13.1.dev7 (2026-09-19)
2
2
 
3
3
 
4
+ - chore(deps): update dependency commitizen to v4.18.1 (#235)
5
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
6
+ - chore(deps): update dependency ruff to v0.16.7 (#233)
7
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
8
+ - chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.16.7 (#234)
9
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
10
+ - chore(deps): update dependency ty to v0.0.80 (#232)
11
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
12
+ - chore(deps): update dependency ty to v0.0.79 (#230)
13
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
14
+ - chore(deps): update dependency platformdirs to v4.11.8 (#229)
15
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
16
+ - chore(deps): update dependency filelock to v3.32.6 (#228)
17
+ - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
18
+
19
+ ## v0.13.1 (2026-09-10)
20
+
21
+
22
+ - fix(import): fill the audio columns from the file's stream header
23
+ - fix(edit): tell the user how to repair a stale analysis path
4
24
  - fix(rating): use rekordbox's 0-5 scale, not the XML x51 encoding
5
25
  - fix(display): keep the new value visible in a change preview
6
26
  - The changed column rendered the old and new values into one cell that was
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rekordbox-edit
3
- Version: 0.13.1.dev4
3
+ Version: 0.13.1.dev7
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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "rekordbox-edit"
7
- version = "0.13.1.dev4"
7
+ version = "0.13.1.dev7"
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"
@@ -11,7 +11,12 @@ from pyrekordbox.db6 import tables as tb
11
11
 
12
12
  from rekordbox_edit._tag_fields import TAG_FIELDS
13
13
  from rekordbox_edit.api._relations import RELATIONS, find_by_name, get_or_create
14
- from rekordbox_edit.api._utils import stamp_usns, track_from_content, writing
14
+ from rekordbox_edit.api._utils import (
15
+ _sync_audio_columns,
16
+ stamp_usns,
17
+ track_from_content,
18
+ writing,
19
+ )
15
20
  from rekordbox_edit.errors import (
16
21
  DirectoryConfirmationRequired,
17
22
  ImportInputError,
@@ -31,7 +36,7 @@ from rekordbox_edit.query import (
31
36
  require_session,
32
37
  )
33
38
  from rekordbox_edit.tags import TrackTags, UnreadableFile, read_tags
34
- from rekordbox_edit.utils import FILE_TYPES
39
+ from rekordbox_edit.utils import FILE_TYPES, AudioInfo
35
40
 
36
41
  _logger = logging.getLogger(__name__)
37
42
 
@@ -155,10 +160,8 @@ IMPORT_DEFAULTS: dict[str, object] = {
155
160
  "rb_local_data_status": 0,
156
161
  "rb_local_deleted": 0,
157
162
  "rb_local_synced": 0,
158
- # Analysis fills these; an import leaves them zero.
159
- "SampleRate": 0,
160
- "BitRate": 0,
161
- "BitDepth": 0,
163
+ # Analysis fills these; an import leaves them zero. SampleRate, BitDepth,
164
+ # and BitRate are absent because _build_content reads them from the file.
162
165
  "BPM": 0,
163
166
  "Analysed": 0,
164
167
  }
@@ -196,6 +199,27 @@ def _scalar_columns(tags: TrackTags) -> dict[str, str | int]:
196
199
  }
197
200
 
198
201
 
202
+ def _stream_audio_info(tags: TrackTags) -> AudioInfo:
203
+ """A track's stream header in the shape `_sync_audio_columns` reads.
204
+
205
+ Only the three audio columns are taken from this. The probe-only fields
206
+ describe nothing an import row records, so they carry no value.
207
+
208
+ rekordbox's own import leaves these columns at zero and lets analysis fill
209
+ them. Reading them here diverges from that deliberately, so that a row an
210
+ import creates already describes its file the way a repointed `edit` does.
211
+ """
212
+ return {
213
+ "sample_rate": tags["sample_rate"] or 0,
214
+ "bit_depth": tags["bit_depth"],
215
+ "bitrate": tags["bitrate"],
216
+ "channels": 0,
217
+ "codec": None,
218
+ "container": None,
219
+ "duration": None,
220
+ }
221
+
222
+
199
223
  def _created_date(path: str) -> str:
200
224
  """The file's creation date, as Rekordbox records DateCreated.
201
225
 
@@ -230,7 +254,12 @@ def _build_content(
230
254
  # add_content types by extension, mapping every .m4a to AAC, and stamps
231
255
  # DateCreated with today rather than the file's own date.
232
256
  if tags["file_type"] is not None:
233
- content.FileType = tags["file_type"]
257
+ _sync_audio_columns(
258
+ content,
259
+ _stream_audio_info(tags),
260
+ tags["file_type"],
261
+ content.FileSize,
262
+ )
234
263
  content.DateCreated = _created_date(candidate.path)
235
264
  # add_content stores str(Path(path)), which is backslashed on Windows.
236
265
  # Rekordbox forward-slashes FolderPath on every platform.
@@ -111,7 +111,11 @@ def _update_anlz_paths(
111
111
  with open(anlz_path, "wb") as fh:
112
112
  fh.write(updated)
113
113
  except (AnlzFormatError, OSError) as e:
114
- _logger.warning(f"Could not rewrite the path tag in {anlz_path}: {e}")
114
+ _logger.warning(
115
+ f"Could not rewrite the path tag in {anlz_path}: {e}. It still "
116
+ "names the previous file; re-analyze the track in Rekordbox to "
117
+ "rebuild the analysis."
118
+ )
115
119
  continue
116
120
  _logger.debug(f"Updated PPTH of {anlz_path} to {new_ppth}")
117
121
 
@@ -37,6 +37,9 @@ class TrackTags(TypedDict):
37
37
  release_year: int | None
38
38
  length: int | None
39
39
  file_type: int | None
40
+ sample_rate: int | None
41
+ bit_depth: int | None
42
+ bitrate: int | None
40
43
 
41
44
 
42
45
  # Rekordbox FileType by mutagen's file class. MP4 splits on the codec because
@@ -158,6 +161,11 @@ def _file_type(audio) -> int | None:
158
161
  return file_type.code if file_type else None
159
162
 
160
163
 
164
+ def _kbps(bitrate: int | None) -> int | None:
165
+ """A stream header's bits per second in the whole kilobits rekordbox stores."""
166
+ return bitrate // 1000 if bitrate else None
167
+
168
+
161
169
  def read_tags(path: str) -> TrackTags:
162
170
  """Read one file's tags and stream header.
163
171
 
@@ -184,7 +192,8 @@ def read_tags(path: str) -> TrackTags:
184
192
  read = {field: _first(tags, tag_keys) for field, tag_keys in keys.items()}
185
193
 
186
194
  isrc = _mp4_isrc(tags) if name == "MP4" else read.get("isrc")
187
- length = getattr(audio.info, "length", None)
195
+ info = audio.info
196
+ length = getattr(info, "length", None)
188
197
 
189
198
  result: TrackTags = {
190
199
  "title": read.get("title") or os.path.splitext(os.path.basename(path))[0],
@@ -201,6 +210,10 @@ def read_tags(path: str) -> TrackTags:
201
210
  "release_year": _leading_int(read.get("release_year")),
202
211
  "length": int(length) if length is not None else None,
203
212
  "file_type": _file_type(audio),
213
+ "sample_rate": getattr(info, "sample_rate", None),
214
+ # MP3 and some MP4 headers report no depth; the caller supplies one.
215
+ "bit_depth": getattr(info, "bits_per_sample", None) or None,
216
+ "bitrate": _kbps(getattr(info, "bitrate", None)),
204
217
  }
205
218
  _logger.debug(f"read tags for {path}: file_type={result['file_type']}")
206
219
  return result
@@ -237,7 +237,8 @@ Install it with `brew install ffmpeg`, or from https://ffmpeg.org/download.html
237
237
 
238
238
 
239
239
  class AudioInfo(TypedDict):
240
- """Fields extracted from an ffmpeg probe of one audio file."""
240
+ """One audio file's stream characteristics, from an ffmpeg probe or from
241
+ the header mutagen reads."""
241
242
 
242
243
  bit_depth: int | None
243
244
  sample_rate: int
@@ -182,6 +182,9 @@ def tags() -> TrackTags:
182
182
  "release_year": 2022,
183
183
  "length": 254,
184
184
  "file_type": 5,
185
+ "sample_rate": 44100,
186
+ "bit_depth": 16,
187
+ "bitrate": 96,
185
188
  }
186
189
 
187
190
 
@@ -193,10 +196,16 @@ class TestImportDefaults:
193
196
  assert IMPORT_DEFAULTS["ExtInfo"] == "null"
194
197
 
195
198
  def test_leaves_the_analysis_columns_at_zero(self):
196
- for column in ("SampleRate", "BitRate", "BitDepth", "BPM", "Analysed"):
199
+ for column in ("BPM", "Analysed"):
197
200
  assert IMPORT_DEFAULTS[column] == 0
198
201
  assert IMPORT_DEFAULTS["AnalysisDataPath"] == ""
199
202
 
203
+ def test_omits_the_columns_read_from_the_stream_header(self):
204
+ # _build_content writes these from the file, so a default here would
205
+ # be overwritten anyway and reads as though an import left them zero.
206
+ for column in ("SampleRate", "BitRate", "BitDepth"):
207
+ assert column not in IMPORT_DEFAULTS
208
+
200
209
  def test_omits_searchstr_so_it_stays_null(self):
201
210
  # NULL on all 924 content rows sampled; no observed value to imitate.
202
211
  assert "SearchStr" not in IMPORT_DEFAULTS
@@ -309,6 +318,19 @@ class TestBuildContent:
309
318
  assert kwargs["ReleaseYear"] == tags["release_year"]
310
319
  assert kwargs["Length"] == tags["length"]
311
320
 
321
+ def test_writes_the_audio_columns_from_the_stream_header(
322
+ self, mock_db, tags, tmp_path, stale_content
323
+ ):
324
+ track = tmp_path / "a.flac"
325
+ track.write_bytes(b"")
326
+
327
+ content = _build_content(mock_db, _candidate(str(track), tags))
328
+
329
+ assert content.SampleRate == tags["sample_rate"]
330
+ assert content.BitDepth == tags["bit_depth"]
331
+ # FLAC bitrate is stored as 0, the same convention edit applies.
332
+ assert content.BitRate == 0
333
+
312
334
  def test_overrides_file_type_and_date_created_after_add_content(
313
335
  self, mock_db, tags, tmp_path, stale_content
314
336
  ):
@@ -55,10 +55,10 @@ EXPECTED_EMPTY = {
55
55
  "rb_local_synced": 0,
56
56
  }
57
57
 
58
- # Analysis fills SampleRate, BitDepth, BPM, and Analysed; an import leaves
59
- # them at zero. BitRate is not analysis-filled: rekordbox stores it as 0 for
60
- # variable-rate audio, and it stays 0 through analysis on this FLAC fixture.
61
- EXPECTED_ZERO = ("SampleRate", "BitRate", "BitDepth", "BPM", "Analysed")
58
+ # Analysis fills BPM and Analysed, so an import leaves them at zero.
59
+ # SampleRate, BitDepth, and BitRate are read from the file instead: rekordbox
60
+ # waits for analysis to fill them, and this tool deliberately does not.
61
+ EXPECTED_ZERO = ("BPM", "Analysed")
62
62
 
63
63
 
64
64
  @pytest.fixture
@@ -98,6 +98,12 @@ def test_imported_row_matches_the_rekordbox_import_shape(
98
98
  assert row.Length == 2
99
99
  assert row.FileSize == track.stat().st_size
100
100
 
101
+ # Read from the stream header at import, following the same conventions
102
+ # `edit` applies. FLAC bitrate is stored as 0 for variable-rate audio.
103
+ assert row.SampleRate == 44100
104
+ assert row.BitDepth == 16
105
+ assert row.BitRate == 0
106
+
101
107
  for column, expected in EXPECTED_EMPTY.items():
102
108
  assert getattr(row, column) == expected, f"{column} diverges from Rekordbox"
103
109
  for column in EXPECTED_ZERO:
@@ -16,8 +16,8 @@ from rekordbox_edit.display import PrintableField
16
16
  from rekordbox_edit.tags import TrackTags
17
17
 
18
18
  #: TrackTags keys read off the audio stream rather than a tag, so they have no
19
- #: registry row: `import` derives both and neither is editable.
20
- _STREAM_KEYS = {"length", "file_type"}
19
+ #: registry row: `import` derives them all and none is editable.
20
+ _STREAM_KEYS = {"length", "file_type", "sample_rate", "bit_depth", "bitrate"}
21
21
 
22
22
  #: Fields `edit` offers that are not audio tags at all.
23
23
  _NON_TAG_FIELDS = {"Rating", "FolderPath"}
@@ -52,6 +52,29 @@ class TestScalarTags:
52
52
  assert tags["title"] == "05-aiff-44_1k-16b"
53
53
  assert tags["artist"] is None
54
54
 
55
+ @pytest.mark.parametrize(
56
+ "name,sample_rate,bit_depth,bitrate",
57
+ [
58
+ ("01-flac-44_1k-16b.flac", 44100, 16, 96),
59
+ ("05-aiff-44_1k-16b.aiff", 44100, 16, 705),
60
+ ("06-wav-96k-24b.wav", 96000, 24, 2304),
61
+ # MP3 carries no bit depth; the import conventions supply one.
62
+ ("07-mp3-44_1k-320cbr.mp3", 44100, None, 320),
63
+ # ALAC reports the PCM-equivalent rate, which is what Rekordbox
64
+ # stores. An ffmpeg probe reports the compressed rate instead.
65
+ ("03-alac-44_1k-16b.m4a", 44100, 16, 705),
66
+ ("09-aac-44_1k-256kbps.m4a", 44100, 16, 132),
67
+ ],
68
+ )
69
+ def test_reads_the_stream_header_numbers(
70
+ self, name, sample_rate, bit_depth, bitrate
71
+ ):
72
+ tags = read_tags(str(FIXTURES / name))
73
+
74
+ assert tags["sample_rate"] == sample_rate
75
+ assert tags["bit_depth"] == bit_depth
76
+ assert tags["bitrate"] == bitrate
77
+
55
78
  def test_reads_length_as_whole_seconds(self):
56
79
  assert read_tags(str(FIXTURES / "01-flac-44_1k-16b.flac"))["length"] == 2
57
80
 
@@ -188,7 +188,7 @@ wheels = [
188
188
 
189
189
  [[package]]
190
190
  name = "commitizen"
191
- version = "4.18.0"
191
+ version = "4.18.1"
192
192
  source = { registry = "https://pypi.org/simple" }
193
193
  dependencies = [
194
194
  { name = "argcomplete" },
@@ -204,9 +204,9 @@ dependencies = [
204
204
  { name = "termcolor" },
205
205
  { name = "tomlkit" },
206
206
  ]
207
- sdist = { url = "https://files.pythonhosted.org/packages/b0/1e/4918352e4b89ffd7b50cea166c834a28d046af8c7326351f873b2cc8d7b5/commitizen-4.18.0.tar.gz", hash = "sha256:9fab436e99420c97ee020bfeea17fe29903fb320a9cdd6e30c2c63bfbac4cb3b", size = 68288, upload-time = "2026-08-19T14:47:01.136Z" }
207
+ sdist = { url = "https://files.pythonhosted.org/packages/0a/05/5740bfcd2e89e8be97757294335b5c480bcf60b134ef7bc84428c3a15884/commitizen-4.18.1.tar.gz", hash = "sha256:27379caedd00553344e44cc8cef039598b6d3e65f9b598e31d355489c481563d", size = 68482, upload-time = "2026-09-13T21:37:43.008Z" }
208
208
  wheels = [
209
- { url = "https://files.pythonhosted.org/packages/eb/7d/f50f8c478977d4aed0902e1ca558a8b457fc985937ee751304abd6f45a1f/commitizen-4.18.0-py3-none-any.whl", hash = "sha256:3e11153209a9d9e05fd6b21761099ad22e131a5410f5b89b847d83baa1909661", size = 90324, upload-time = "2026-08-19T14:46:59.58Z" },
209
+ { url = "https://files.pythonhosted.org/packages/eb/3e/c15f31a04a3432bce3312cde554ba73e8c5232a3615f08f39264a447c427/commitizen-4.18.1-py3-none-any.whl", hash = "sha256:16ed052ff775bf42cad85bc09075db110ca7ba84f49233fc642629a0da65862b", size = 90476, upload-time = "2026-09-13T21:37:41.152Z" },
210
210
  ]
211
211
 
212
212
  [[package]]
@@ -366,11 +366,11 @@ wheels = [
366
366
 
367
367
  [[package]]
368
368
  name = "filelock"
369
- version = "3.32.5"
369
+ version = "3.32.6"
370
370
  source = { registry = "https://pypi.org/simple" }
371
- sdist = { url = "https://files.pythonhosted.org/packages/0a/a0/50c2c0ce5e74d7721bbb1b19a26ebd339aac5878553a6e35308c2f31f935/filelock-3.32.5.tar.gz", hash = "sha256:f6a6a28f743f9b95ce19db5abe0f376f75eb56517dff21e1a4751e2657d3e83d", size = 222838, upload-time = "2026-08-31T18:56:34.729Z" }
371
+ sdist = { url = "https://files.pythonhosted.org/packages/38/46/126b1831dca12060d4a8296bf9c4fe5c93c4f22197fa239cb0cc82042bba/filelock-3.32.6.tar.gz", hash = "sha256:a3f55a18af3652a94d8f47d6055df434f254ca1d02ef2524850c6d249ca2512c", size = 225172, upload-time = "2026-09-08T22:57:11.528Z" }
372
372
  wheels = [
373
- { url = "https://files.pythonhosted.org/packages/36/d2/b70a31e13d04456d28493f31d2aa087e99eeb2767ef0293b2625727ccb8c/filelock-3.32.5-py3-none-any.whl", hash = "sha256:142cd9fa77a872c5e78c62329a0d15278fadc686eb89e760017968961a4fd6b2", size = 100003, upload-time = "2026-08-31T18:56:33.078Z" },
373
+ { url = "https://files.pythonhosted.org/packages/cc/06/4f138f618dbea66803291274f228f01daf29f306fe8b96bc30dab765df75/filelock-3.32.6-py3-none-any.whl", hash = "sha256:3f16ecd0117feae0dfc147e8c62eb5daeccd8bd800378c3ddf416de9b4feb6b1", size = 100189, upload-time = "2026-09-08T22:57:10.182Z" },
374
374
  ]
375
375
 
376
376
  [[package]]
@@ -884,11 +884,11 @@ wheels = [
884
884
 
885
885
  [[package]]
886
886
  name = "platformdirs"
887
- version = "4.11.7"
887
+ version = "4.11.8"
888
888
  source = { registry = "https://pypi.org/simple" }
889
- sdist = { url = "https://files.pythonhosted.org/packages/69/b7/802a56eca9f2fac455b8bab5375a2647b0f0e14a2cd63ef077de3c4a7658/platformdirs-4.11.7.tar.gz", hash = "sha256:4f41487eeeeeb07f3a6625e61d9bc0ae6809f92d3386dbd74392fbb76108104d", size = 35127, upload-time = "2026-09-01T13:35:10.502Z" }
889
+ sdist = { url = "https://files.pythonhosted.org/packages/53/18/f3bb8ef0d3b930692343da8aa4d3cbcd6749477c053959395ac81965a6e9/platformdirs-4.11.8.tar.gz", hash = "sha256:f23abafea7dd4276d1f29104b83598d7dcc567cafd07c9c951e66665645437fc", size = 37182, upload-time = "2026-09-08T22:20:42.866Z" }
890
890
  wheels = [
891
- { url = "https://files.pythonhosted.org/packages/27/6e/80993e10a0482f630cef528635789233224f36b1ffd11592aa15d13ff9ce/platformdirs-4.11.7-py3-none-any.whl", hash = "sha256:8a02cb259042c79d1cd0450facc2fe6dc9d303ae7901afbe33bf8ea0b188cef6", size = 23938, upload-time = "2026-09-01T13:35:09.02Z" },
891
+ { url = "https://files.pythonhosted.org/packages/f4/e1/5b7b8bbb55084d1425bcb9bc823ff519e1b2be05f6ebb0089e2eacc38413/platformdirs-4.11.8-py3-none-any.whl", hash = "sha256:52f2f181bbfde907966932cc8312d967d02976422d66d537ea16092b8e291081", size = 24027, upload-time = "2026-09-08T22:20:41.537Z" },
892
892
  ]
893
893
 
894
894
  [[package]]
@@ -1274,7 +1274,7 @@ wheels = [
1274
1274
 
1275
1275
  [[package]]
1276
1276
  name = "rekordbox-edit"
1277
- version = "0.13.1.dev4"
1277
+ version = "0.13.1.dev7"
1278
1278
  source = { editable = "." }
1279
1279
  dependencies = [
1280
1280
  { name = "click" },
@@ -1371,27 +1371,27 @@ wheels = [
1371
1371
 
1372
1372
  [[package]]
1373
1373
  name = "ruff"
1374
- version = "0.16.6"
1375
- source = { registry = "https://pypi.org/simple" }
1376
- sdist = { url = "https://files.pythonhosted.org/packages/a4/7c/6adb35d70e7c027e308274557901c7e00fb3407750faf3620c184ae058cb/ruff-0.16.6.tar.gz", hash = "sha256:dcf8a73d2ff77e99dde91244b4da16feba7f14e6beeb4015dee7c5a909e99050", size = 4921251, upload-time = "2026-09-03T16:57:29.037Z" }
1377
- wheels = [
1378
- { url = "https://files.pythonhosted.org/packages/a4/28/9cc1b79639e284ec103f43c88c644db4eb58cbd0ea1ca11f1193435369ac/ruff-0.16.6-py3-none-linux_armv6l.whl", hash = "sha256:61c368c26bf8e973e5ab14a2772de587bc068ea3f9a277f673380749b4898fb8", size = 10015638, upload-time = "2026-09-03T16:56:40.986Z" },
1379
- { url = "https://files.pythonhosted.org/packages/71/11/627d342ef727ea7794edf74fe23d60a074b02c3acc2e9436684e782286ca/ruff-0.16.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ecf4f068e2e123e43a26e9db4e19524cc56563912404e83bbfca375757e45a32", size = 10220762, upload-time = "2026-09-03T16:56:44.681Z" },
1380
- { url = "https://files.pythonhosted.org/packages/43/d9/b75668ce41e4c8d073d18d6d08672ba6906ce45d5c06ea4fdb2e84ce3853/ruff-0.16.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:99b62ea33baf130f50368798d841f0d95527b6d817bf31817b65dd058f1d314c", size = 9835082, upload-time = "2026-09-03T16:56:47.142Z" },
1381
- { url = "https://files.pythonhosted.org/packages/99/97/123ab10b05cde889c107c20f5a9774955104b5552796a2a8584b089ae8eb/ruff-0.16.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fbf89013f2bb3f6835a6038ff658dc8a1b38c98dc8e724b964168ad4e881876", size = 9949304, upload-time = "2026-09-03T16:56:49.813Z" },
1382
- { url = "https://files.pythonhosted.org/packages/3e/58/a4a2c59dd2e5b85929c912d9cac3056eb9ee8c7e75e9b9fe3e109174966b/ruff-0.16.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56a67065e22efa6bc4d498299d3bb06c0c90aace8fac2068b5a12f9dc4d8d51d", size = 9840612, upload-time = "2026-09-03T16:56:52.368Z" },
1383
- { url = "https://files.pythonhosted.org/packages/61/6a/ff8c8626a786c4f49d48ced4a752dadbca65f5263005f9c2416578194694/ruff-0.16.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e25cc89174874b176a157e4428d66761c2c0c006654419bf384f967f361ff1b1", size = 10543465, upload-time = "2026-09-03T16:56:55.089Z" },
1384
- { url = "https://files.pythonhosted.org/packages/ad/bb/c47535923365f337b82e28192e4e9eef2176511007cfd99a62fc22df5dad/ruff-0.16.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700580ed5303723cb3c11c2f1d2a8913ce77b7ea86646dddb887f5417a9ba70", size = 11267576, upload-time = "2026-09-03T16:56:57.791Z" },
1385
- { url = "https://files.pythonhosted.org/packages/ba/50/e5119a5212b5cd63b51e1f4b25e7bd636a6668fc069a3160b108ad7e3c16/ruff-0.16.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15f1d0b6e165a6e56567befb6629f8209271311d990bae0f37e6d065035ef5f3", size = 10781993, upload-time = "2026-09-03T16:57:00.666Z" },
1386
- { url = "https://files.pythonhosted.org/packages/8b/98/083d8b4ef3c51a0d19db84367791cbe9f44e4b53343d19dfa83556e1cd9a/ruff-0.16.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d72c591a96986ee4268860e2b7235082129ca5e4cb9cbba653a4b57c11893757", size = 10317748, upload-time = "2026-09-03T16:57:03.428Z" },
1387
- { url = "https://files.pythonhosted.org/packages/9a/29/68f7ff2c5ad95f19f00627ac2de95644e25fe47371ea60b2db1fd952315e/ruff-0.16.6-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:65a006baa18f33324325814c864daef03541d51564b98c517610ea756ab7003e", size = 10540096, upload-time = "2026-09-03T16:57:06.182Z" },
1388
- { url = "https://files.pythonhosted.org/packages/c4/f9/79a8f6de85968641d68a7863aeec577551924ef066a990a48ff93167beab/ruff-0.16.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cd02a7bf1a21a8735228a3e8c95a9dc5cf86bd2a52194f4aaae2a5755b4de0f4", size = 10100494, upload-time = "2026-09-03T16:57:09.194Z" },
1389
- { url = "https://files.pythonhosted.org/packages/d9/e8/b81a22d9b90c00b892ccf2fa2ac36fa95de4c13ab85aea3e73795cfe4651/ruff-0.16.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:31b36f1e5ad85e0737f09d2be4e512e2e283583c14015da3b9dc07359ac0fc88", size = 9843663, upload-time = "2026-09-03T16:57:12.168Z" },
1390
- { url = "https://files.pythonhosted.org/packages/39/aa/54f516ec5e5a11c4afdceb1c454ebb054ffb96e4f4a1705580b4346abd35/ruff-0.16.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:61029b4ab4aa723fd3064fab96b1d814492596bf0c792679fffcbde1e1679953", size = 10282461, upload-time = "2026-09-03T16:57:15.077Z" },
1391
- { url = "https://files.pythonhosted.org/packages/52/0b/38d0aa8aa32372b96dc44f97b22e576c4147808271aab7b2cb1e353d4445/ruff-0.16.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:9ac8998457832c2061709d900856b7ad271dace0cb41f346588d540162bfa718", size = 10728808, upload-time = "2026-09-03T16:57:17.797Z" },
1392
- { url = "https://files.pythonhosted.org/packages/5e/e5/9e274e24eeb027640ffc7442f21239f16d17f47acec15ae34f32e03a5c79/ruff-0.16.6-py3-none-win32.whl", hash = "sha256:0b87d9d16fcb63e8018423ca1d50b7260f15cb2da33e30db4baad4183a948c25", size = 10049212, upload-time = "2026-09-03T16:57:20.55Z" },
1393
- { url = "https://files.pythonhosted.org/packages/22/31/72472449414223ed1a2da236b992adbb1a2ae59e34794574810f60ce068e/ruff-0.16.6-py3-none-win_amd64.whl", hash = "sha256:10d21c51c3495d8eaea7b703a16592117ea6eb1d649e36335aa965ff1173eb39", size = 10556402, upload-time = "2026-09-03T16:57:23.501Z" },
1394
- { url = "https://files.pythonhosted.org/packages/fc/07/d781f8f8e1ac24bef9f3269cf62ffb1407ca24c3a8f12e5e22874f90528c/ruff-0.16.6-py3-none-win_arm64.whl", hash = "sha256:7a976c79b958f94e50a022a19f0f8c87387448020935ec14fc74331bd0a7f2c5", size = 10412850, upload-time = "2026-09-03T16:57:26.416Z" },
1374
+ version = "0.16.7"
1375
+ source = { registry = "https://pypi.org/simple" }
1376
+ sdist = { url = "https://files.pythonhosted.org/packages/82/bb/5a449b9162e49b139d72f61672bd3ac1d790221f796d3304e2241fff4c58/ruff-0.16.7.tar.gz", hash = "sha256:5f71d004ac1263b22fa39462ac5ae618a4b77d58981af2cc79bf79a29c12b1a6", size = 4924184, upload-time = "2026-09-10T18:04:06.336Z" }
1377
+ wheels = [
1378
+ { url = "https://files.pythonhosted.org/packages/e3/b2/c80aeeb7f9e469c0d63a85d2f1ab6e1ebfbe10ea7a8d2438b7e09e3ff09e/ruff-0.16.7-py3-none-linux_armv6l.whl", hash = "sha256:727307773e7c7f9181d3ed3a2484186e56c1fa1874255911c74585eb2c7c19f9", size = 10048917, upload-time = "2026-09-10T18:03:30.28Z" },
1379
+ { url = "https://files.pythonhosted.org/packages/7b/96/20bb7bcae008004df52afcb7ac83432d4a467f2c17b672fe46d26be231c5/ruff-0.16.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9d61c258deabf58f34c67bd4bb4d939c7f2e6b5f0e59c1cdd1cf771b11cde929", size = 10242929, upload-time = "2026-09-10T18:03:32.706Z" },
1380
+ { url = "https://files.pythonhosted.org/packages/90/b2/f184b0d5abec02db69cfd7e49b688ae0237554528ca777136c613bf36bee/ruff-0.16.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7ab81118df8945e0193d0240712aa4496573595b75185c3636ed825592a0f728", size = 9847245, upload-time = "2026-09-10T18:03:34.509Z" },
1381
+ { url = "https://files.pythonhosted.org/packages/eb/2d/db1633a641866ed801e34cc6b60ef236c5e16f9b2124ab1d49cc24a5fe4f/ruff-0.16.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c196c968874fc8019da8e7163de7a1a370f111e2309b4b7dfea0fce950198d0", size = 9961780, upload-time = "2026-09-10T18:03:36.618Z" },
1382
+ { url = "https://files.pythonhosted.org/packages/4d/98/edea21e1a3e38dbbc3bf6bb068b863b3b06184cf8533a4c7dbbe208a89d5/ruff-0.16.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac8c3bd0a7e10ad31e6ce51e7a99f3cb772e69aecdd6b9ea7e99b362f62a62c0", size = 9866337, upload-time = "2026-09-10T18:03:38.805Z" },
1383
+ { url = "https://files.pythonhosted.org/packages/0b/11/a15e60d4c87b214646f116ca9d204475bf993ee1047459bc9a360fd4d6d1/ruff-0.16.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398d3988edde000b5c75dc1b3f584708da9bc990de069c18909142580fec1af9", size = 10562512, upload-time = "2026-09-10T18:03:40.71Z" },
1384
+ { url = "https://files.pythonhosted.org/packages/29/42/eaff4c9b6d0c7cdf56df313a17e89ae854f5bbc0b0c8f9cce19be0ab7a8f/ruff-0.16.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce05b62b770a8217c4646a9c4139fca00efe8fe5d71f87df2b243ff20d4584d1", size = 11302938, upload-time = "2026-09-10T18:03:42.607Z" },
1385
+ { url = "https://files.pythonhosted.org/packages/5d/43/c75aa59a4ec181fe2ec06cab30e198c1c6d107229a9f008ae3a7c16cabd8/ruff-0.16.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af1b576fddb9d9ef2ececfb5fadcd6a624b25070ed85e3cfcfe449fc3ff6a7b9", size = 10840857, upload-time = "2026-09-10T18:03:44.604Z" },
1386
+ { url = "https://files.pythonhosted.org/packages/21/33/81f3da371942ea031105ba679d8d6e28ec1660ccd690a45f42d381161356/ruff-0.16.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce7f8f22df67c93ed96c717f9128eadb797144ac2bad475cf536f31d6100c55", size = 10370001, upload-time = "2026-09-10T18:03:46.706Z" },
1387
+ { url = "https://files.pythonhosted.org/packages/fa/0b/6345fb4dbf6dd0ed1cfe5d18391dc9c3f59cc81622a7b0a65b84b3e730ba/ruff-0.16.7-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:06d0e93d04f392996435ebd600c153f65b47d73fbec2415aa99c5ee5756b3a5f", size = 10548735, upload-time = "2026-09-10T18:03:48.658Z" },
1388
+ { url = "https://files.pythonhosted.org/packages/3f/4d/c5576adf511f92a328e5569dda190ecdd430da51f1a649f3a4a2fd73e21e/ruff-0.16.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:142151a5e7b93c1b11111337142f89dd2fbfee92161225c99a97222f22e32656", size = 10108496, upload-time = "2026-09-10T18:03:50.563Z" },
1389
+ { url = "https://files.pythonhosted.org/packages/ff/8c/667d83c16199a17a56adc6b0bd4c3beb5b767a2babcd16a56f76f9be7fd6/ruff-0.16.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e6651f97a342d8b35d54d8991544ca22169b86dc54111cb604666940c431b750", size = 9860136, upload-time = "2026-09-10T18:03:52.621Z" },
1390
+ { url = "https://files.pythonhosted.org/packages/99/75/78d401106731999a1dd20cc5a6961e37e1eb9397a3b589f73f3a5ce146a3/ruff-0.16.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:ef140c6eb935fa9a84c9c607dfb2cb1b85843c192e79265b0c54f35f557ea8e5", size = 10286290, upload-time = "2026-09-10T18:03:55.207Z" },
1391
+ { url = "https://files.pythonhosted.org/packages/68/49/56f9c3a8b755df93a0ad318b2147bf4ef5dae9a7e5ec61c460109c67957f/ruff-0.16.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:53e39506a730fadeee0d998ed5946f30671f0db240c6c7c73bdabbe33604bb6f", size = 10745048, upload-time = "2026-09-10T18:03:57.299Z" },
1392
+ { url = "https://files.pythonhosted.org/packages/5f/ea/7f9b938a63ece4bec677ad7f9f7fa02df3383db1949ed93a382441c09a87/ruff-0.16.7-py3-none-win32.whl", hash = "sha256:2ea3470fcebcbc5df2fb0c6f3b90333fa9084c534e0111c038fa4a6ab9f1c4b7", size = 10059082, upload-time = "2026-09-10T18:03:59.632Z" },
1393
+ { url = "https://files.pythonhosted.org/packages/39/11/480a6973a927aa653e1cead6a6416008640e03a99d05b34c0434b8c6c366/ruff-0.16.7-py3-none-win_amd64.whl", hash = "sha256:7ac26aca826e9e21d0f1cb25b54ac660760a9fdd094d3e4df9848232be98cfc6", size = 10593368, upload-time = "2026-09-10T18:04:01.999Z" },
1394
+ { url = "https://files.pythonhosted.org/packages/8b/4b/51327018d056f0dad2c2238f26d1fb0f53707a9d91b75dea6d1b3039f136/ruff-0.16.7-py3-none-win_arm64.whl", hash = "sha256:aab7f39e2c9df6c596216070f98eef1207b94f8516cca20c808826974971855b", size = 10412401, upload-time = "2026-09-10T18:04:04.098Z" },
1395
1395
  ]
1396
1396
 
1397
1397
  [[package]]
@@ -1630,27 +1630,27 @@ wheels = [
1630
1630
 
1631
1631
  [[package]]
1632
1632
  name = "ty"
1633
- version = "0.0.78"
1634
- source = { registry = "https://pypi.org/simple" }
1635
- sdist = { url = "https://files.pythonhosted.org/packages/d8/c7/2ba0861384c5b5097ac354383abb98188112cb330208c21d5197e98a29e5/ty-0.0.78.tar.gz", hash = "sha256:770b45854f85fa11595208f08c0f28df80943164d10a2832d86be6ac29f135b2", size = 7050609, upload-time = "2026-09-02T22:41:33.92Z" }
1636
- wheels = [
1637
- { url = "https://files.pythonhosted.org/packages/ea/ed/f34cfc06a9ba72979df219e48dae1a0b6a6c74a340763ccd30a547edf913/ty-0.0.78-py3-none-linux_armv6l.whl", hash = "sha256:122700b98f9d45785c1ce91a9418154562e7f64f4bf34679f6f7b38c5b97453f", size = 13304624, upload-time = "2026-09-02T22:40:56.649Z" },
1638
- { url = "https://files.pythonhosted.org/packages/1c/28/5576e2a08b57676d9b2a736d528f077a6c6e32c3d1de2d75dbbe28346966/ty-0.0.78-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:cbe7e3709ccf29ef3d9f58f5914cc30ec36fb647008a5a4ff8483abe401bfe8d", size = 12928383, upload-time = "2026-09-02T22:40:59.162Z" },
1639
- { url = "https://files.pythonhosted.org/packages/8e/e0/027d49c3da5235e634da3d3fc52c4874ec89f50830388c9c259f8fb71e0e/ty-0.0.78-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c3528897b3ab9d3589561bc2b5e61a4d5d686de527a4400bb09a439b922a6c70", size = 12730058, upload-time = "2026-09-02T22:41:01.235Z" },
1640
- { url = "https://files.pythonhosted.org/packages/bb/bc/6bf8ffefd8063730a70ae889cf85def72bc155fd1453135ebf8a09c2f1c2/ty-0.0.78-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bfba4c44a06484093f527b8ef43a317abcf91395b49396170266629eedf74aa", size = 12813321, upload-time = "2026-09-02T22:41:03.251Z" },
1641
- { url = "https://files.pythonhosted.org/packages/6d/c0/b3cdf26f82108908d92fdb7ddb741019c446ceb666cf204d4dbf611bde33/ty-0.0.78-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f903c06fdee17baf8373173039ab28f1bce28e66b1c734929a5f50b37eb54d9", size = 13072219, upload-time = "2026-09-02T22:41:05.225Z" },
1642
- { url = "https://files.pythonhosted.org/packages/4d/36/16bfb0abdd178dae11dbc4b57b9a86c2b62642a18c1103fd2c2930aa5879/ty-0.0.78-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd83e5fe3f07291d1bd4e591f8d2607c204f3eab53bcb1b8060c40e876e1aa61", size = 13903958, upload-time = "2026-09-02T22:41:07.333Z" },
1643
- { url = "https://files.pythonhosted.org/packages/0f/0c/74d3b1f0344b13156c719dd68a7edf7e48c2051718c9f326ba3cbf45ea53/ty-0.0.78-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:325285377319cf7168a2b8b771ae5027f411530e3c7eab1faf4583cdd72fd7c9", size = 14355581, upload-time = "2026-09-02T22:41:09.56Z" },
1644
- { url = "https://files.pythonhosted.org/packages/8d/d7/7ca0359e1e61b15b8b02328c8d120db3c507876b9b7c6bd9f26935353e0e/ty-0.0.78-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:54b7846a404da6492697b524a769755ee9bee157d67674063ecd9c5f69dc52ff", size = 14044749, upload-time = "2026-09-02T22:41:11.678Z" },
1645
- { url = "https://files.pythonhosted.org/packages/3b/6a/731f16ff42c5fc96e742c2f4e0a6915356bae114ae02ae4af6f33502175f/ty-0.0.78-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:169d3b9d134c0b48fe1af8a844142d374655552054a9d6c15a4b6e51bb0382ea", size = 13391647, upload-time = "2026-09-02T22:41:13.928Z" },
1646
- { url = "https://files.pythonhosted.org/packages/0c/af/250cc29daf310e837188509ea4d78460c495d8a74c4fb84b4152d9ef2d4f/ty-0.0.78-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6108cb3b2d28dac5981d4e25008a0a5547d8c877a67f6da9e8c38e7e946be44f", size = 13945020, upload-time = "2026-09-02T22:41:15.968Z" },
1647
- { url = "https://files.pythonhosted.org/packages/b8/f9/96aab1dee4535e66554e8dc7657c69f6c61c181d8e70b9c3527908e93ef4/ty-0.0.78-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:589ad03608d9d2975ef4b23c41c4f847e325bcc7686f51d4c66066b8dbc18a2a", size = 12851149, upload-time = "2026-09-02T22:41:18.06Z" },
1648
- { url = "https://files.pythonhosted.org/packages/85/b0/53d8fe9a847534ef5fe2165c7d5292cb853b29dfd7011cbfb1cdb90a8012/ty-0.0.78-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b3fa0786edc1af06030f872d83499c0cea7c261dbbb651e0aee8306bf2c8a869", size = 13091464, upload-time = "2026-09-02T22:41:20.227Z" },
1649
- { url = "https://files.pythonhosted.org/packages/21/65/94a4e5a02de559f6c6c0ee7a14b88660b4eee058ec6fec5c0ff6ecfbf5cc/ty-0.0.78-py3-none-musllinux_1_2_i686.whl", hash = "sha256:92c5639befc577578c8abd4e5a7fccf98d828db98b09e8d4dd81605dc0e54aef", size = 13389389, upload-time = "2026-09-02T22:41:22.27Z" },
1650
- { url = "https://files.pythonhosted.org/packages/2e/b6/d0c7fe6be64ca5a15100c4b1f0e39c19660d53bc544f609fa117b346e661/ty-0.0.78-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0dce70bc51652b2775debd1d1e422fb0179f5207c73deb4d5d0aca37e5f61695", size = 13691928, upload-time = "2026-09-02T22:41:24.292Z" },
1651
- { url = "https://files.pythonhosted.org/packages/0a/5d/36081205611ba3fa802efc4ad63e4b1e949bda2f7bb37b34ac9bb6c00db0/ty-0.0.78-py3-none-win32.whl", hash = "sha256:1c80976ca9185d7a9d1baab1fb57240331b8dac58d3b11e46200284086a6de8d", size = 12647346, upload-time = "2026-09-02T22:41:26.699Z" },
1652
- { url = "https://files.pythonhosted.org/packages/f1/89/b925fe1ea1bc56fc7f11d2496e29072fdd2ceb7b389884fc7b2d07cf0c41/ty-0.0.78-py3-none-win_amd64.whl", hash = "sha256:32e82b704471eab34f67b51c151660ca8a00815977b28278905d76fba54f7415", size = 13241810, upload-time = "2026-09-02T22:41:28.857Z" },
1653
- { url = "https://files.pythonhosted.org/packages/91/f1/090ef7b52355bcedfbfbff6ce70fa81ba5bd5f6ed3f8d99ae05e6f2fe75b/ty-0.0.78-py3-none-win_arm64.whl", hash = "sha256:3a14d641a3c04fa9a80f2a46be1531d915f60d4fb79d4b894627bbe46bb35d64", size = 13077433, upload-time = "2026-09-02T22:41:31.525Z" },
1633
+ version = "0.0.80"
1634
+ source = { registry = "https://pypi.org/simple" }
1635
+ sdist = { url = "https://files.pythonhosted.org/packages/54/b0/6d1b10e0d422736a3c439e487c950ae785f401d71ff879d5be68bccb6d90/ty-0.0.80.tar.gz", hash = "sha256:fe86bc91327e45ff5e3593b7e306e7f57a44bc0608f38d647b8d97bd99c96013", size = 7183998, upload-time = "2026-09-09T21:18:47.547Z" }
1636
+ wheels = [
1637
+ { url = "https://files.pythonhosted.org/packages/29/c8/3c93195eca282936ebb574d0ba98843e4b147ee324006f88464777012a92/ty-0.0.80-py3-none-linux_armv6l.whl", hash = "sha256:738d1cfca466c577aea24547c348629c00c63548cf7da2c46b497b3840f85dee", size = 13606509, upload-time = "2026-09-09T21:18:10.476Z" },
1638
+ { url = "https://files.pythonhosted.org/packages/e7/48/bbb47f7001c97262a5109bcd92a45bcc8a2fbb21e994c214a9897630bfb7/ty-0.0.80-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:56060164bb8ee43770fa367524fbdba2611fc90f8923a02cc91f80eb37d5a1b0", size = 13203812, upload-time = "2026-09-09T21:18:12.796Z" },
1639
+ { url = "https://files.pythonhosted.org/packages/db/8d/fd141160567047b742e466be8ed09a4c4ed80fa045d37f946eb4f4532fee/ty-0.0.80-py3-none-macosx_11_0_arm64.whl", hash = "sha256:da4062e0fbf3923d9b71688157c5753394f243348f00732e9edbb27498397169", size = 13021896, upload-time = "2026-09-09T21:18:15.186Z" },
1640
+ { url = "https://files.pythonhosted.org/packages/1e/10/b4177faf9e71bc37bc4d08f512042269660a1ce0ec457c48f96e51fc91d7/ty-0.0.80-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9eb94b2659f506a3a07a9ea1415d5c18aaa1e554adc1612614d617a0ed320e1", size = 13083881, upload-time = "2026-09-09T21:18:17.616Z" },
1641
+ { url = "https://files.pythonhosted.org/packages/7f/c2/192d48b9a9acbbe030fc9a4bd73af75671a5566e731949f77e912a68ce68/ty-0.0.80-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2f5e39a87da48c1af1a3b3135f02be7a83a93da30b0d6a5f5d27806e7c747ce", size = 13354874, upload-time = "2026-09-09T21:18:19.744Z" },
1642
+ { url = "https://files.pythonhosted.org/packages/0a/5b/736dfd31efd98bed9dbe018ff91676e5ea83485b1e24afb635fd0247728f/ty-0.0.80-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e00149e7779c6b98f3ba12e10a631a861bd7ca1a42bbf064e2677ada7d2c0c2", size = 14204805, upload-time = "2026-09-09T21:18:21.999Z" },
1643
+ { url = "https://files.pythonhosted.org/packages/fd/6f/557c726cb53401998e3589bb632c963a6887a70240e0a4386024f3731c81/ty-0.0.80-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a377268f359fb6e7a2cc9026a09223c764f58d020dec8e6baeaba9caba6ff829", size = 14630014, upload-time = "2026-09-09T21:18:24Z" },
1644
+ { url = "https://files.pythonhosted.org/packages/e9/19/7a4b18fe27f6b6bd4ffa56b67c8b09ecb76bb4312d1c64b73f65417b4dbd/ty-0.0.80-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4511dbf1b266b9ce5b73e9b28d94468096c2b6da00e2fe205168c32d3b352ca7", size = 14326946, upload-time = "2026-09-09T21:18:26.679Z" },
1645
+ { url = "https://files.pythonhosted.org/packages/f8/95/16dd90805fc7e53ec54ae9fdb1a8b74753fb159a55a170f60f49b9417824/ty-0.0.80-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe95feffa7156800c6f804195acb9fb5846a39671c7192c30fff23351aaf7c31", size = 13705988, upload-time = "2026-09-09T21:18:28.681Z" },
1646
+ { url = "https://files.pythonhosted.org/packages/b1/09/4e87992c23ab8a742c7d4914ac5fe66fb9301c8464a69fd2ecbc0be3fbcd/ty-0.0.80-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:ba26b39f06bc8c3c2c5acd3a147239482b36620cdbca1b9d02e915294854f2cc", size = 14233729, upload-time = "2026-09-09T21:18:30.961Z" },
1647
+ { url = "https://files.pythonhosted.org/packages/36/e9/b8c11fda8e66a1d1cc1a7160ed719a33f4dc0107b1cef6a14e2673965763/ty-0.0.80-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2e6167320888c115a6fbe69893b63fd1c848f9121a454e75e5f612674528e3f3", size = 13173523, upload-time = "2026-09-09T21:18:33.266Z" },
1648
+ { url = "https://files.pythonhosted.org/packages/73/a7/512083fa540c5be1ac8642658f03bfb5bfa6fd168ea4f55e3c0aabe04166/ty-0.0.80-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7aecb62b4de70b479eab07d1779ea66da26dd8b068f50a9330867157312f103c", size = 13373014, upload-time = "2026-09-09T21:18:35.339Z" },
1649
+ { url = "https://files.pythonhosted.org/packages/5e/63/cd2f0ca81fd9b8cafef93bbcf022bf636bc4de8ee7465c6aafeec1d4d52b/ty-0.0.80-py3-none-musllinux_1_2_i686.whl", hash = "sha256:4fed06adacd16b7e2d722f37449021b1419598d0440769701c0f4827faddde63", size = 13667827, upload-time = "2026-09-09T21:18:37.241Z" },
1650
+ { url = "https://files.pythonhosted.org/packages/0d/5d/ebdfdcb2dc099ae74dc4b75511eef0dd398b2fa27006c543543974b4567f/ty-0.0.80-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:09329af6303ce611ec2cfffc995dc1ddf76c9f47194fc1a4d64a984759c25f5b", size = 13963866, upload-time = "2026-09-09T21:18:39.386Z" },
1651
+ { url = "https://files.pythonhosted.org/packages/c4/f6/c286d5e1b560cfd16d6e91fdab683718aacf09fc88938ca06dcc9d1c8502/ty-0.0.80-py3-none-win32.whl", hash = "sha256:a81b3b512f7b4c68e42fbd1835633de658809666e9aafd5defa52bbc5197698d", size = 12881806, upload-time = "2026-09-09T21:18:41.507Z" },
1652
+ { url = "https://files.pythonhosted.org/packages/fd/c8/3b3a8ac16d47a23ff34bf57c0d99a491860748aea96e0e886b4bfed54f9b/ty-0.0.80-py3-none-win_amd64.whl", hash = "sha256:8043f99878a2ae434781cb881c8a3840dff70c4a5b60bdc5ae84251f35ee063f", size = 13528883, upload-time = "2026-09-09T21:18:43.687Z" },
1653
+ { url = "https://files.pythonhosted.org/packages/2e/71/a6c697930fca76596d7d17f8853120f41a298fd9ea632c901cfca8ca869b/ty-0.0.80-py3-none-win_arm64.whl", hash = "sha256:e277ef034331da5319efc839c064968d24f35715b71c70369cf97d36fe4dcbdb", size = 13370135, upload-time = "2026-09-09T21:18:45.758Z" },
1654
1654
  ]
1655
1655
 
1656
1656
  [[package]]