-
Install Uv
-
Install the project dependencies:
uv sync --locked --all-extras --dev -
To confirm that you can run Beets in its own isolated environment with Beets-audible from source:
uv run beet -v versionIf
audibleis not in the list of plugins shown, add it to the list of plugins in the Beets configuration file. See the readme for instructions.
Warning: installing the beets-copyartifacts3 plugin in development breaks the ability to run Beets-audible from source, I'm unsure why this only happens in development. I've seen this happening with other plugins, so this isn't specific to beets-audible.
Releases are automated from git tags and no longer use manual uv publish.
- Update
CHANGELOG.mdwith a new section whose heading matches the release tag, for example## v1.3.0 (2026-02-08). - Bump
versioninpyproject.tomlto the matching PEP 440 version, for example1.3.0. - Commit the version/changelog changes to
main. - Create and push an annotated tag from that commit:
git tag -a v1.3.0 -m "v1.3.0"git push origin v1.3.0
- The
ReleaseGitHub Actions workflow will:- run lint, tests, and build
- publish to PyPI using trusted publishing (OIDC)
- create a GitHub Release for the tag
- use the matching
CHANGELOG.mdsection as release narrative text - append GitHub autogenerated release notes (grouped by
.github/release.yml) - skip duplicate uploads if the version already exists on PyPI (useful for historical tags)
If a tag does not have a corresponding changelog section (for example, tag v1.3.2 without a ## v1.3.2 (...) section), the release workflow fails when generating notes.