rekordbox-edit 0.6.0.dev12__tar.gz → 0.6.0.dev13__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 (64) hide show
  1. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/CHANGELOG.md +2 -1
  2. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/PKG-INFO +1 -1
  3. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/pyproject.toml +1 -1
  4. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/query.py +2 -0
  5. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/test_query.py +13 -0
  6. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/uv.lock +1 -1
  7. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.agent-style/RULES.md +0 -0
  8. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.agent-style/claude-code.md +0 -0
  9. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/build-release-notes/action.yml +0 -0
  10. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/commitizen-bump/action.yml +0 -0
  11. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/commitizen-bump/commitizen-bump.sh +0 -0
  12. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/install/action.yml +0 -0
  13. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/lint/action.yml +0 -0
  14. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/actions/test/action.yml +0 -0
  15. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/workflows/cd.yml +0 -0
  16. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/workflows/ci.yml +0 -0
  17. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/workflows/publish.yml +0 -0
  18. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.github/workflows/release.yml +0 -0
  19. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.gitignore +0 -0
  20. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.pre-commit-config.yaml +0 -0
  21. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/.python-version +0 -0
  22. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/AGENTS.md +0 -0
  23. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/CLAUDE.md +0 -0
  24. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/CONTRIBUTING.md +0 -0
  25. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/LICENSE +0 -0
  26. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/Makefile +0 -0
  27. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/README.md +0 -0
  28. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/codecov.yml +0 -0
  29. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/__init__.py +0 -0
  30. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/_click.py +0 -0
  31. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/api/__init__.py +0 -0
  32. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/api/_utils.py +0 -0
  33. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/api/convert.py +0 -0
  34. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/api/edit.py +0 -0
  35. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/api/search.py +0 -0
  36. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/__init__.py +0 -0
  37. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/_utils.py +0 -0
  38. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/convert.py +0 -0
  39. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/edit.py +0 -0
  40. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/main.py +0 -0
  41. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/cli/search.py +0 -0
  42. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/display.py +0 -0
  43. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/logger.py +0 -0
  44. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/models.py +0 -0
  45. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/rekordbox_edit/utils.py +0 -0
  46. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/renovate.json5 +0 -0
  47. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/ruff.toml +0 -0
  48. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/__init__.py +0 -0
  49. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/api/__init__.py +0 -0
  50. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/api/test_convert.py +0 -0
  51. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/api/test_edit.py +0 -0
  52. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/api/test_search.py +0 -0
  53. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/api/test_utils.py +0 -0
  54. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/__init__.py +0 -0
  55. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/test_convert.py +0 -0
  56. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/test_edit.py +0 -0
  57. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/test_main.py +0 -0
  58. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/test_search.py +0 -0
  59. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/cli/test_utils.py +0 -0
  60. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/conftest.py +0 -0
  61. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/test_display.py +0 -0
  62. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/test_logger.py +0 -0
  63. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/test_models.py +0 -0
  64. {rekordbox_edit-0.6.0.dev12 → rekordbox_edit-0.6.0.dev13}/tests/test_utils.py +0 -0
@@ -1,6 +1,7 @@
1
- ## v0.6.0.dev12 (2026-06-09)
1
+ ## v0.6.0.dev13 (2026-06-09)
2
2
 
3
3
 
4
+ - fix(query): order results by folder, then ID, for stable output
4
5
  - feat: adds global --database-path argument
5
6
  - chore(deps): update linters to v0.0.44 (#79)
6
7
  - 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.dev13
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.dev13"
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.dev13"
994
994
  source = { editable = "." }
995
995
  dependencies = [
996
996
  { name = "click" },