Requires:
- https://docs.astral.sh/uv/ or (deprecated) https://github.com/pyenv/pyenv
See https://www.conventionalcommits.org/en/v1.0.0/. You can use this git commit message format in many different ways, but the easiest is:
- Use commitizen: https://commitizen-tools.github.io/commitizen/commit/
- Use an editor extension, like https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits for VScode.
- Just learn to write the format by hand (can be error prone to begin with, but it is fairly easy to learn).
NOTE: You only need hatch if you need to build releases, and you only need commitizen for releases OR to make it easy to follow conventional commits for your commit messages (see Use conventional commits for GIT commit messages above).
First install pipx with:
brew install pipx
pipx ensurepathThen install hatch and commitizen:
pipx install hatch
pipx install commitizenSee https://github.com/pypa/pipx, https://hatch.pypa.io/latest/install/ and https://commitizen-tools.github.io/commitizen/ for more install alternatives if needed, but we really recommend using pipx since that is isolated.
pyenv install $(pyenv latest -k 3.12)
pyenv local 3.12Alternatively, create virtualenv manually (this does the same as recreate-virtualenv.sh):
# With UV:
uv venv
# With pip:
python -m venv .venv# with uv:
uv pip install -e ".[dev,test]"
# with pip:
source .venv/bin/activate # enable virtualenv
.venv/bin/pip install -e ".[dev,test]"This will upgrade all local packages according to the constraints set in pyproject.toml:
# with uv:
uv venv --clear && uv pip install -e ".[dev,test]"
# with pip:
.venv/bin/pip install --upgrade --upgrade-strategy=eager ".[dev,test]"rm devdb.sqlite3
python manage.py migrate
python manage.py createsuperusersource .venv/bin/activate # enable virtualenv
python manage.py runserverThe devserver is now running at 127.0.0.1:8000
source .venv/bin/activate # enable virtualenvbash
pytest cradmin_legacyIf you have not configured your editor to autoformat with ruff, you can run the following command to autoformat all code in the repo:
source .venv/bin/activate # enable virtualenvbash
ruff format .First make sure you have NO UNCOMITTED CHANGES!
Release (create changelog, increment version, commit and tag the change) with:
cz bump
git push && git push --tagscz bumpautomatically updates CHANGELOG.md, updates version file(s), commits the change and tags the release commit.- If you are unsure about what
cz bumpwill do, run it with--dry-run. You can use options to force a specific version instead of the one it automatically selects from the git log if needed, BUT if this is needed, it is a sign that someone has messed up with their conventional commits. cz bumponly works if conventional commits (see section about that above) is used.cz bumpcan take a specific version etc, but it automatically select the correct version if conventional commits has been used correctly. See https://commitizen-tools.github.io/commitizen/.- If you need to add more to CHANGELOG.md (migration guide, etc), you can just edit
CHANGELOG.md after the release, and commit the change with a
docs: some useful messagecommit. - The
czcommand comes fromcommitizen(install documented above).
See How to revert a bump in the commitizen FAQ.
hatch build -t sdist
hatch publish -u __token__
# optional cleanup
rm dist/*