rekordbox-edit 0.4.0.dev46__tar.gz → 0.5.0.dev9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rekordbox_edit-0.5.0.dev9/.github/actions/build-release-notes/action.yml +88 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/actions/lint/action.yml +1 -1
- rekordbox_edit-0.5.0.dev9/.github/workflows/cd.yml +113 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/workflows/ci.yml +4 -4
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/workflows/publish.yml +4 -4
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/workflows/release.yml +17 -9
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.pre-commit-config.yaml +1 -1
- rekordbox_edit-0.5.0.dev9/.python-version +1 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/CHANGELOG.md +43 -1
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/PKG-INFO +2 -2
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/pyproject.toml +3 -3
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/__init__.py +4 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/api/__init__.py +11 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/api/_utils.py +18 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/api/convert.py +368 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/api/edit.py +88 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/api/search.py +10 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/__init__.py +1 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/_utils.py +102 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/convert.py +110 -0
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/edit.py +78 -0
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/cli.py → rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/main.py +6 -9
- rekordbox_edit-0.5.0.dev9/rekordbox_edit/cli/search.py +41 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/display.py +14 -12
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/args.py → rekordbox_edit-0.5.0.dev9/rekordbox_edit/models.py +44 -33
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/query.py +1 -1
- rekordbox_edit-0.5.0.dev9/tests/api/__init__.py +0 -0
- rekordbox_edit-0.5.0.dev9/tests/api/test_convert.py +755 -0
- rekordbox_edit-0.5.0.dev9/tests/api/test_edit.py +98 -0
- rekordbox_edit-0.5.0.dev9/tests/api/test_search.py +40 -0
- rekordbox_edit-0.5.0.dev9/tests/api/test_utils.py +23 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/__init__.py +0 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/test_convert.py +172 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/test_edit.py +111 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/test_main.py +38 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/test_search.py +86 -0
- rekordbox_edit-0.5.0.dev9/tests/cli/test_utils.py +218 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/conftest.py +26 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/test_display.py +19 -21
- rekordbox_edit-0.5.0.dev9/tests/test_models.py +149 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/test_query.py +1 -1
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/uv.lock +3 -203
- rekordbox_edit-0.4.0.dev46/.github/workflows/cd.yml +0 -83
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/commands/__init__.py +0 -1
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/commands/convert.py +0 -526
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/commands/edit.py +0 -153
- rekordbox_edit-0.4.0.dev46/rekordbox_edit/commands/search.py +0 -57
- rekordbox_edit-0.4.0.dev46/tests/commands/__init__.py +0 -1
- rekordbox_edit-0.4.0.dev46/tests/commands/test_convert.py +0 -2158
- rekordbox_edit-0.4.0.dev46/tests/commands/test_edit.py +0 -564
- rekordbox_edit-0.4.0.dev46/tests/commands/test_search.py +0 -249
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.agent-style/RULES.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.agent-style/claude-code.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/actions/commitizen-bump/action.yml +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/actions/commitizen-bump/commitizen-bump.sh +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/actions/install/action.yml +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.github/actions/test/action.yml +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/.gitignore +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/AGENTS.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/CLAUDE.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/CONTRIBUTING.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/LICENSE +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/Makefile +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/README.md +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/codecov.yml +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/_click.py +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/logger.py +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/rekordbox_edit/utils.py +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/renovate.json5 +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/ruff.toml +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/__init__.py +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/test_logger.py +0 -0
- {rekordbox_edit-0.4.0.dev46 → rekordbox_edit-0.5.0.dev9}/tests/test_utils.py +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
name: "Build Release Notes"
|
|
2
|
+
description: "Generate categorized release notes from conventional commits between two tags"
|
|
3
|
+
inputs:
|
|
4
|
+
from_tag:
|
|
5
|
+
description: "Tag to start the changelog range from (exclusive)"
|
|
6
|
+
required: true
|
|
7
|
+
to_tag:
|
|
8
|
+
description: "Tag to end the changelog range at (inclusive)"
|
|
9
|
+
required: true
|
|
10
|
+
github_token:
|
|
11
|
+
description: "GitHub token for API access"
|
|
12
|
+
required: true
|
|
13
|
+
runs:
|
|
14
|
+
using: "composite"
|
|
15
|
+
steps:
|
|
16
|
+
- uses: mikepenz/release-changelog-builder-action@348e88fab4c37338b1e803ceb2d4a7a5db6c0833 # v6.2.2
|
|
17
|
+
with:
|
|
18
|
+
outputFile: release-notes.md
|
|
19
|
+
configurationJson: |
|
|
20
|
+
{
|
|
21
|
+
"categories": [
|
|
22
|
+
{
|
|
23
|
+
"title": "## Breaking Changes",
|
|
24
|
+
"labels": [],
|
|
25
|
+
"rules": [
|
|
26
|
+
{
|
|
27
|
+
"pattern": "^(\\w+)?(\\(.*\\))?!:",
|
|
28
|
+
"on_property": "title"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "## Features",
|
|
34
|
+
"labels": [],
|
|
35
|
+
"rules": [
|
|
36
|
+
{
|
|
37
|
+
"pattern": "^feat(\\(.*\\))?:",
|
|
38
|
+
"on_property": "title"
|
|
39
|
+
}
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"title": "## Fixes",
|
|
44
|
+
"labels": [],
|
|
45
|
+
"rules": [
|
|
46
|
+
{
|
|
47
|
+
"pattern": "^fix(?!\\(deps\\))(\\(.*\\))?:",
|
|
48
|
+
"on_property": "title"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"title": "## Chores",
|
|
54
|
+
"labels": [],
|
|
55
|
+
"rules": [
|
|
56
|
+
{
|
|
57
|
+
"pattern": "^(chore(?!\\(deps\\))|refactor|ci|docs|style|perf|test|build)(\\(.*\\))?:",
|
|
58
|
+
"on_property": "title"
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"title": "## Dependency Updates",
|
|
64
|
+
"labels": [],
|
|
65
|
+
"rules": [
|
|
66
|
+
{
|
|
67
|
+
"pattern": "^(chore|fix)\\(deps\\):",
|
|
68
|
+
"on_property": "title"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
"exhaustive": true,
|
|
74
|
+
"sort": {
|
|
75
|
+
"order": "ASC",
|
|
76
|
+
"on_property": "title"
|
|
77
|
+
},
|
|
78
|
+
"template": "#{{CHANGELOG}}\n\n## Uncategorized\n#{{UNCATEGORIZED}}",
|
|
79
|
+
"pr_template": "- #{{TITLE}} (##{{NUMBER}} by @#{{AUTHOR}})",
|
|
80
|
+
"empty_template": "- No changes",
|
|
81
|
+
"tag_resolver": {
|
|
82
|
+
"method": "sort"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
fromTag: ${{ inputs.from_tag }}
|
|
86
|
+
toTag: ${{ inputs.to_tag }}
|
|
87
|
+
env:
|
|
88
|
+
GITHUB_TOKEN: ${{ inputs.github_token }}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: Canary Continuous Deployment
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- ".github/**"
|
|
9
|
+
- ".resources/**"
|
|
10
|
+
- ".agent-style"
|
|
11
|
+
- "logos/**"
|
|
12
|
+
- "**/*.md"
|
|
13
|
+
- ".pre-commit-config.yaml"
|
|
14
|
+
- ".readthedocs.yaml"
|
|
15
|
+
- "renovate.json5"
|
|
16
|
+
workflow_dispatch:
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
pre_job:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
permissions:
|
|
22
|
+
actions: write
|
|
23
|
+
outputs:
|
|
24
|
+
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
|
25
|
+
steps:
|
|
26
|
+
- id: skip_check
|
|
27
|
+
uses: fkirc/skip-duplicate-actions@f75f66ce1886f00957d99748a42c724f4330bdcf # v5
|
|
28
|
+
with:
|
|
29
|
+
concurrent_skipping: "same_content_newer"
|
|
30
|
+
cancel_others: "true"
|
|
31
|
+
|
|
32
|
+
ci:
|
|
33
|
+
needs: pre_job
|
|
34
|
+
if: needs.pre_job.outputs.should_skip != 'true'
|
|
35
|
+
uses: ./.github/workflows/ci.yml
|
|
36
|
+
secrets: inherit
|
|
37
|
+
|
|
38
|
+
canary-release:
|
|
39
|
+
name: 📦 Canary Release
|
|
40
|
+
needs: [pre_job, ci]
|
|
41
|
+
if: "needs.pre_job.outputs.should_skip != 'true' && !startsWith(github.event.head_commit.message, 'bump:')"
|
|
42
|
+
runs-on: ubuntu-latest
|
|
43
|
+
environment: canary-publish
|
|
44
|
+
permissions:
|
|
45
|
+
contents: write
|
|
46
|
+
id-token: write
|
|
47
|
+
env:
|
|
48
|
+
PYTHON: "3.14"
|
|
49
|
+
|
|
50
|
+
steps:
|
|
51
|
+
- name: Check out
|
|
52
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
53
|
+
with:
|
|
54
|
+
fetch-depth: 0
|
|
55
|
+
|
|
56
|
+
- name: Setup UV
|
|
57
|
+
uses: ./.github/actions/install
|
|
58
|
+
|
|
59
|
+
- name: Find last stable release
|
|
60
|
+
id: last_stable
|
|
61
|
+
run: |
|
|
62
|
+
echo "tag=$(gh release list --exclude-pre-releases --limit 1 --json tagName -q '.[0].tagName')" >> $GITHUB_OUTPUT
|
|
63
|
+
env:
|
|
64
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
65
|
+
|
|
66
|
+
- name: Compute canary increment
|
|
67
|
+
id: canary_increment
|
|
68
|
+
run: |
|
|
69
|
+
count=$(git rev-list ${{ steps.last_stable.outputs.tag }}..HEAD --count)
|
|
70
|
+
echo "increment=$count" >> $GITHUB_OUTPUT
|
|
71
|
+
|
|
72
|
+
- name: Bump to dev version
|
|
73
|
+
id: bump
|
|
74
|
+
uses: ./.github/actions/commitizen-bump
|
|
75
|
+
with:
|
|
76
|
+
devrelease: ${{ steps.canary_increment.outputs.increment }}
|
|
77
|
+
commit: false
|
|
78
|
+
push: false
|
|
79
|
+
changelog: false
|
|
80
|
+
|
|
81
|
+
- name: Get version
|
|
82
|
+
id: version
|
|
83
|
+
run: echo "version=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")" >> $GITHUB_OUTPUT
|
|
84
|
+
|
|
85
|
+
- name: Build distribution
|
|
86
|
+
run: |
|
|
87
|
+
uv build
|
|
88
|
+
|
|
89
|
+
- name: Create and push tag
|
|
90
|
+
run: |
|
|
91
|
+
git tag canary-v${{ steps.version.outputs.version }}
|
|
92
|
+
git push origin canary-v${{ steps.version.outputs.version }}
|
|
93
|
+
|
|
94
|
+
- name: Publish to PyPI
|
|
95
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
|
|
96
|
+
with:
|
|
97
|
+
skip-existing: true
|
|
98
|
+
|
|
99
|
+
- name: Build release notes
|
|
100
|
+
uses: ./.github/actions/build-release-notes
|
|
101
|
+
with:
|
|
102
|
+
from_tag: ${{ steps.last_stable.outputs.tag }}
|
|
103
|
+
to_tag: canary-v${{ steps.version.outputs.version }}
|
|
104
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
105
|
+
|
|
106
|
+
- name: Create GitHub Pre-Release
|
|
107
|
+
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3
|
|
108
|
+
with:
|
|
109
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
110
|
+
tag_name: canary-v${{ steps.version.outputs.version }}
|
|
111
|
+
name: v${{ steps.version.outputs.version }}
|
|
112
|
+
prerelease: true
|
|
113
|
+
body_path: release-notes.md
|
|
@@ -37,10 +37,10 @@ jobs:
|
|
|
37
37
|
needs: code-change
|
|
38
38
|
if: ${{ needs.code-change.outputs.should_skip != 'true' && !fromJSON(needs.code-change.outputs.paths_result || '{}').code.should_skip }}
|
|
39
39
|
env:
|
|
40
|
-
PYTHON: "3.
|
|
40
|
+
PYTHON: "3.14"
|
|
41
41
|
steps:
|
|
42
42
|
- name: Checkout code
|
|
43
|
-
uses: actions/checkout@
|
|
43
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
44
44
|
|
|
45
45
|
- name: Run lint tests
|
|
46
46
|
uses: ./.github/actions/lint
|
|
@@ -53,7 +53,7 @@ jobs:
|
|
|
53
53
|
fail-fast: false
|
|
54
54
|
matrix:
|
|
55
55
|
os: ["ubuntu-latest", "windows-latest", "macos-latest"]
|
|
56
|
-
python-version: ["3.
|
|
56
|
+
python-version: ["3.11", "3.14"] # oldest and latest
|
|
57
57
|
runs-on: ${{ matrix.os }}
|
|
58
58
|
env:
|
|
59
59
|
OS: ${{ matrix.os }}
|
|
@@ -62,7 +62,7 @@ jobs:
|
|
|
62
62
|
|
|
63
63
|
steps:
|
|
64
64
|
- name: Checkout code
|
|
65
|
-
uses: actions/checkout@
|
|
65
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
66
66
|
|
|
67
67
|
- name: Run unit tests
|
|
68
68
|
uses: ./.github/actions/test
|
|
@@ -13,7 +13,7 @@ jobs:
|
|
|
13
13
|
PYTHON: "3.14"
|
|
14
14
|
steps:
|
|
15
15
|
- name: checkout
|
|
16
|
-
uses: actions/checkout@
|
|
16
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
17
17
|
|
|
18
18
|
- name: Setup UV
|
|
19
19
|
uses: ./.github/actions/install
|
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
- name: Build distribution
|
|
22
22
|
run: |
|
|
23
23
|
uv build
|
|
24
|
-
- uses: actions/upload-artifact@
|
|
24
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
25
25
|
with:
|
|
26
26
|
name: dist
|
|
27
27
|
path: dist/
|
|
@@ -34,7 +34,7 @@ jobs:
|
|
|
34
34
|
permissions:
|
|
35
35
|
id-token: write
|
|
36
36
|
steps:
|
|
37
|
-
- uses: actions/download-artifact@
|
|
37
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
38
38
|
with:
|
|
39
39
|
name: dist
|
|
40
40
|
path: dist/
|
|
@@ -51,7 +51,7 @@ jobs:
|
|
|
51
51
|
permissions:
|
|
52
52
|
id-token: write
|
|
53
53
|
steps:
|
|
54
|
-
- uses: actions/download-artifact@
|
|
54
|
+
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
|
|
55
55
|
with:
|
|
56
56
|
pattern: dist
|
|
57
57
|
path: dist
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: Version Bump and Create a Release
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
@@ -17,13 +17,13 @@ jobs:
|
|
|
17
17
|
|
|
18
18
|
steps:
|
|
19
19
|
- name: Check out
|
|
20
|
-
uses: actions/checkout@
|
|
20
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
21
21
|
with:
|
|
22
22
|
token: "${{ secrets.WORKFLOW_TOKEN }}"
|
|
23
23
|
fetch-depth: 0
|
|
24
24
|
|
|
25
25
|
- name: Import GPG key
|
|
26
|
-
uses: crazy-max/ghaction-import-gpg@
|
|
26
|
+
uses: crazy-max/ghaction-import-gpg@2dc316deee8e90f13e1a351ab510b4d5bc0c82cd # v7
|
|
27
27
|
with:
|
|
28
28
|
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
|
29
29
|
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
|
@@ -32,17 +32,25 @@ jobs:
|
|
|
32
32
|
git_tag_gpgsign: true
|
|
33
33
|
git_push_gpgsign: false
|
|
34
34
|
|
|
35
|
+
- name: Remove canary dev tags
|
|
36
|
+
run: git tag -l '*dev*' | xargs --no-run-if-empty git tag -d
|
|
37
|
+
|
|
35
38
|
- name: Create bump and changelog
|
|
36
39
|
uses: ./.github/actions/commitizen-bump
|
|
37
40
|
with:
|
|
38
41
|
github_token: ${{ secrets.WORKFLOW_TOKEN }}
|
|
39
|
-
changelog_increment_filename: body.md
|
|
40
42
|
gpg_sign: true
|
|
41
43
|
|
|
44
|
+
- name: Build release notes
|
|
45
|
+
uses: ./.github/actions/build-release-notes
|
|
46
|
+
with:
|
|
47
|
+
from_tag: "v${{ env.PREVIOUS_REVISION }}"
|
|
48
|
+
to_tag: "v${{ env.REVISION }}"
|
|
49
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
50
|
+
|
|
42
51
|
- name: Release
|
|
43
|
-
uses: softprops/action-gh-release@
|
|
52
|
+
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda # v3
|
|
44
53
|
with:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
GITHUB_TOKEN: ${{ secrets.WORKFLOW_TOKEN }}
|
|
54
|
+
token: ${{ secrets.WORKFLOW_TOKEN }}
|
|
55
|
+
body_path: release-notes.md
|
|
56
|
+
tag_name: "v${{ env.REVISION }}"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|
|
@@ -1,6 +1,48 @@
|
|
|
1
|
-
## v0.
|
|
1
|
+
## v0.5.0.dev9 (2026-06-06)
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
- chore(deps): update github actions (#71)
|
|
5
|
+
- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
|
|
6
|
+
- ci: fix canary release increment
|
|
7
|
+
- test: add tests to cover new modules
|
|
8
|
+
- test: add back convert tests that got dropped
|
|
9
|
+
- refactor: rename args.py to models.py
|
|
10
|
+
- feat: wire public API and delete legacy commands/
|
|
11
|
+
- - feat: expose public API from rekordbox_edit.__init__
|
|
12
|
+
- chore: remove tests/commands/ (replaced by tests/cli/)
|
|
13
|
+
- chore: remove commands/ and cli.py (replaced by api/ and cli/)
|
|
14
|
+
- fix: resolve typecheck and lint errors in api layer and tests
|
|
15
|
+
- feat: add api/ and cli/ packages
|
|
16
|
+
- - feat: add api/_utils.py with _track_from_content
|
|
17
|
+
- feat: update display.py to accept Track instead of DjmdContent
|
|
18
|
+
- refactor(display): remove redundant setup comments in tests
|
|
19
|
+
- feat: add api/search.py
|
|
20
|
+
- feat: add api/edit.py with plan_edit and edit
|
|
21
|
+
- feat: add api/convert.py with plan_convert and convert
|
|
22
|
+
- fix(convert): remove unused get_file_type_name import
|
|
23
|
+
- feat: add api/__init__.py re-exports
|
|
24
|
+
- feat: add cli/main.py and cli/__init__.py
|
|
25
|
+
- feat: add cli/_utils.py with shared confirmation helpers
|
|
26
|
+
- feat: add cli/search.py
|
|
27
|
+
- feat: add cli/edit.py
|
|
28
|
+
- feat: add cli/convert.py
|
|
29
|
+
- refactor: restructure args.py with Track model and API arg types
|
|
30
|
+
- - refactor: add Track model and EditPlanArgs/ConvertPlanArgs to args.py
|
|
31
|
+
- refactor: correct docstring layer count and strengthen test assertions
|
|
32
|
+
- feat!: drop support for python 3.10
|
|
33
|
+
|
|
34
|
+
## v0.4.0 (2026-06-05)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
- Revert "bump: version 0.3.1 → 0.4.0"
|
|
38
|
+
- This reverts commit c353b3ae6b24793c6911a153b021267a16473d87.
|
|
39
|
+
- ci: improve canary release naming and skip duplicates
|
|
40
|
+
- ci: use same changelog config in both release types
|
|
41
|
+
- ci: fix releases
|
|
42
|
+
- bump: version 0.3.1 → 0.4.0
|
|
43
|
+
- chore(deps): update crazy-max/ghaction-import-gpg action to v7
|
|
44
|
+
- chore(deps): update github artifact actions
|
|
45
|
+
- chore(deps): update softprops/action-gh-release action to v3
|
|
4
46
|
- chore(deps): update testing
|
|
5
47
|
- fix(deps): update dependency rich to v15
|
|
6
48
|
- fix(display): Add min-width to print columns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rekordbox-edit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0.dev9
|
|
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
|
|
@@ -9,7 +9,7 @@ Author-email: James Viall <jamesviall@pm.me>
|
|
|
9
9
|
License-Expression: MIT
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
Keywords: bulk,convert,database,dj,edit,music,rekordbox
|
|
12
|
-
Requires-Python: >=3.
|
|
12
|
+
Requires-Python: >=3.11
|
|
13
13
|
Requires-Dist: click<=9.0.0,>=8.0.0
|
|
14
14
|
Requires-Dist: ffmpeg-python>=0.2.0
|
|
15
15
|
Requires-Dist: platformdirs<5.0.0,>=4.3.8
|
|
@@ -4,12 +4,12 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rekordbox-edit"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.0.dev9"
|
|
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
11
|
readme = "README.md"
|
|
12
|
-
requires-python = ">=3.
|
|
12
|
+
requires-python = ">=3.11"
|
|
13
13
|
keywords = ["rekordbox", "dj", "music", "database", "bulk", "edit", "convert"]
|
|
14
14
|
dependencies = [
|
|
15
15
|
"pyrekordbox==0.4.4",
|
|
@@ -59,7 +59,7 @@ output = ".coverage/coverage.json"
|
|
|
59
59
|
output = ".coverage/coverage.lcov"
|
|
60
60
|
|
|
61
61
|
[tool.ty.environment]
|
|
62
|
-
python-version = "3.
|
|
62
|
+
python-version = "3.11"
|
|
63
63
|
|
|
64
64
|
[tool.ty.analysis]
|
|
65
65
|
allowed-unresolved-imports = ["pyrekordbox", "ffmpeg"]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Public API for rekordbox-edit.
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
from rekordbox_edit.api import search, plan_edit, edit, plan_convert, convert
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from rekordbox_edit.api.convert import convert, plan_convert
|
|
8
|
+
from rekordbox_edit.api.edit import edit, plan_edit
|
|
9
|
+
from rekordbox_edit.api.search import search
|
|
10
|
+
|
|
11
|
+
__all__ = ["search", "plan_edit", "edit", "plan_convert", "convert"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from pyrekordbox.db6 import DjmdContent
|
|
2
|
+
|
|
3
|
+
from rekordbox_edit.models import Track
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def _track_from_content(content: DjmdContent) -> Track:
|
|
7
|
+
return Track(
|
|
8
|
+
ID=str(content.ID),
|
|
9
|
+
Title=content.Title,
|
|
10
|
+
ArtistName=content.ArtistName,
|
|
11
|
+
AlbumName=content.AlbumName,
|
|
12
|
+
FileNameL=content.FileNameL,
|
|
13
|
+
FolderPath=content.FolderPath,
|
|
14
|
+
FileType=content.FileType,
|
|
15
|
+
SampleRate=content.SampleRate,
|
|
16
|
+
BitDepth=content.BitDepth,
|
|
17
|
+
BitRate=content.BitRate,
|
|
18
|
+
)
|