rekordbox-edit 0.6.0.dev12__tar.gz → 0.6.0.dev14__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 (74) hide show
  1. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.pre-commit-config.yaml +1 -0
  2. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/CHANGELOG.md +12 -3
  3. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/PKG-INFO +1 -1
  4. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/pyproject.toml +1 -1
  5. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/query.py +2 -0
  6. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track01.flac +0 -0
  7. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track02.flac +0 -0
  8. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track03.m4a +0 -0
  9. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track04.m4a +0 -0
  10. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track05.aiff +0 -0
  11. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track06.wav +0 -0
  12. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track07.mp3 +0 -0
  13. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track08.mp3 +0 -0
  14. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track09.m4a +0 -0
  15. rekordbox_edit-0.6.0.dev14/tests/e2e/fixtures/audio/track10.flac +0 -0
  16. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/test_query.py +13 -0
  17. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/uv.lock +1 -1
  18. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.agent-style/RULES.md +0 -0
  19. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.agent-style/claude-code.md +0 -0
  20. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/build-release-notes/action.yml +0 -0
  21. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/commitizen-bump/action.yml +0 -0
  22. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/commitizen-bump/commitizen-bump.sh +0 -0
  23. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/install/action.yml +0 -0
  24. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/lint/action.yml +0 -0
  25. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/actions/test/action.yml +0 -0
  26. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/workflows/cd.yml +0 -0
  27. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/workflows/ci.yml +0 -0
  28. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/workflows/publish.yml +0 -0
  29. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.github/workflows/release.yml +0 -0
  30. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.gitignore +0 -0
  31. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/.python-version +0 -0
  32. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/AGENTS.md +0 -0
  33. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/CLAUDE.md +0 -0
  34. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/CONTRIBUTING.md +0 -0
  35. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/LICENSE +0 -0
  36. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/Makefile +0 -0
  37. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/README.md +0 -0
  38. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/codecov.yml +0 -0
  39. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/__init__.py +0 -0
  40. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/_click.py +0 -0
  41. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/api/__init__.py +0 -0
  42. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/api/_utils.py +0 -0
  43. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/api/convert.py +0 -0
  44. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/api/edit.py +0 -0
  45. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/api/search.py +0 -0
  46. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/__init__.py +0 -0
  47. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/_utils.py +0 -0
  48. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/convert.py +0 -0
  49. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/edit.py +0 -0
  50. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/main.py +0 -0
  51. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/cli/search.py +0 -0
  52. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/display.py +0 -0
  53. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/logger.py +0 -0
  54. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/models.py +0 -0
  55. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/rekordbox_edit/utils.py +0 -0
  56. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/renovate.json5 +0 -0
  57. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/ruff.toml +0 -0
  58. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/__init__.py +0 -0
  59. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/api/__init__.py +0 -0
  60. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/api/test_convert.py +0 -0
  61. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/api/test_edit.py +0 -0
  62. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/api/test_search.py +0 -0
  63. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/api/test_utils.py +0 -0
  64. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/__init__.py +0 -0
  65. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/test_convert.py +0 -0
  66. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/test_edit.py +0 -0
  67. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/test_main.py +0 -0
  68. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/test_search.py +0 -0
  69. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/cli/test_utils.py +0 -0
  70. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/conftest.py +0 -0
  71. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/test_display.py +0 -0
  72. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/test_logger.py +0 -0
  73. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/test_models.py +0 -0
  74. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev14}/tests/test_utils.py +0 -0
@@ -10,6 +10,7 @@ repos:
10
10
  - id: end-of-file-fixer
11
11
  - id: check-yaml
12
12
  - id: check-added-large-files
13
+ args: [--maxkb=1024]
13
14
  - id: check-merge-conflict
14
15
  - id: debug-statements
15
16
  - id: check-toml
@@ -1,6 +1,15 @@
1
- ## v0.6.0.dev12 (2026-06-09)
2
-
3
-
1
+ ## v0.6.0.dev14 (2026-06-09)
2
+
3
+
4
+ - test(e2e): add 10-track audio fixture for end-to-end suite
5
+ - Synthesized sine-wave audio covering FLAC (16/24-bit), ALAC, AIFF, WAV,
6
+ MP3 (CBR + VBR), AAC, and a unicode-tagged FLAC. Used by the e2e journey
7
+ suite (search/edit/convert) against the committed master.db fixtures.
8
+ - Bumps pre-commit's check-added-large-files threshold to 1 MB to admit the
9
+ WAV fixture (563 KB at 96 kHz / 24-bit / 2 s mono).
10
+ - Generator script and Phase 3 (Rekordbox import) instructions:
11
+ https://gist.github.com/jviall/18107ca35e0e7f38cf02ba50e3b9cc77
12
+ - fix(query): order results by folder, then ID, for stable output
4
13
  - feat: adds global --database-path argument
5
14
  - chore(deps): update linters to v0.0.44 (#79)
6
15
  - Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rekordbox-edit
3
- Version: 0.6.0.dev12
3
+ Version: 0.6.0.dev14
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.6.0.dev12"
7
+ version = "0.6.0.dev14"
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"
@@ -240,6 +240,8 @@ class CollectionQuery:
240
240
  combined_condition = or_(*self._conditions)
241
241
  stmt = stmt.where(combined_condition)
242
242
 
243
+ stmt = stmt.order_by(DjmdContent.FolderPath.asc(), DjmdContent.ID.asc())
244
+
243
245
  if self._limit_count is not None:
244
246
  logger.debug(f"Query limit: {self._limit_count}")
245
247
  stmt = stmt.limit(self._limit_count)
@@ -410,6 +410,19 @@ class TestCollectionQuery:
410
410
  stmt_str = str(query._get_full_statement()).lower()
411
411
  assert "where" not in stmt_str
412
412
 
413
+ def test_get_full_statement_orders_by_folder_then_id(self):
414
+ """Every statement orders by FolderPath then ID ascending. FolderPath
415
+ groups tracks by directory for readable search output; ID is the
416
+ tiebreaker that keeps results deterministic (snapshot/pipe contracts
417
+ depend on this)."""
418
+ unfiltered = str(CollectionQuery()._get_full_statement()).lower()
419
+ filtered = str(CollectionQuery().by_title("A")._get_full_statement()).lower()
420
+ for stmt_str in (unfiltered, filtered):
421
+ assert "order by" in stmt_str
422
+ assert '"djmdcontent"."folderpath" asc' in stmt_str
423
+ assert '"djmdcontent"."id" asc' in stmt_str
424
+ assert stmt_str.index('"folderpath"') < stmt_str.rindex('"id" asc')
425
+
413
426
  def test_get_full_statement_or_logic(self):
414
427
  """Multiple conditions with default OR logic produces OR in the WHERE clause."""
415
428
  query = CollectionQuery().by_title("A").by_title("B")
@@ -990,7 +990,7 @@ wheels = [
990
990
 
991
991
  [[package]]
992
992
  name = "rekordbox-edit"
993
- version = "0.6.0.dev12"
993
+ version = "0.6.0.dev14"
994
994
  source = { editable = "." }
995
995
  dependencies = [
996
996
  { name = "click" },