The format is based on Keep a Changelog. The project uses semantic versioning (see semver), though templating versions are not perfect matches for semantic versions.
- Project now explicitly licensed under GPLv3 or later, as was always meant, but
not clearly delineated until now.
- The repository generated by use of this project is of course your own, with no claim from me. The GPLv3 or later license applies to the template itself, before expanding the boilerplate.
- Dynamic versioning feature defaults to Off, to reflect its experimental status
- Docstrings are again valid markdown, instead of reStructuredText. Regression was caused by the google-style docstrings parsing.
- Support for python 3.13
make docsnow renders google-style docstrings properly- Update
pre-committool version insideDockerfileused as base dev image
- Simplified
package_namevariable, removed the need to runcontext.pyto generate it. This should mean no need for unsafe calls - Properly ignore test folders from coverage measurement
- Fixed mismatching
poetryversion inrelease.Dockerfileto match mainDockerfile.
- Updated pre-commit hook versions
- No more duplicate label warnings during
make docs. Done by removing the (old) autodoc and using (new) autodoc2 exclusively, resolving the clash. - Typo in use of
dynamic_versioninginsidepyproject.tomlcausingdynamic_versioning=Trueto be ignored, effectively set as ifdynamic_versioning=False. - Ruff TOML config in pre-commit now set properly
package_namevariable is now derived from a python script. No functional change in the template, just how the value was computed.
- New parameter
dynamic_version, defaulting toTrue. Enable to use proximity to a git tag as package version. On git tags, package version is tag. On non-tagged commits, version is last tag + number of commits as post. Usespoetry-dynamic-versioning, usingdunamailibrary - New
make helpshows command help in repo Makefilenow loads.envcontents as variables, if file exists- Python 3.12 now supported, default version of the template
- Updated pre-commit hook versions
- Remove astroid pinning from v1.4.0, upstream updated, no longer breaks
- Test file name no longer mangled by templating engine (as
tests/test_.py) - Markdownlint pre-commit hook no longer fails with "punycode dependency warn"
- No longer asking
package_nameas question with a default that's overrideable, now derived fromproject_name(converted to lowercase_with_underscore) without asking, as it was always intended.
- Allow setting a container registry when building. Run
make DOCKER_REGISTRY=docker.io/example/ docker-build-releaseto automatically tag the image with a specific registry. - Gitignore's "Python files" section is now auto-fetched from latest
Github/gitignore repo, see
make python-gitignore. - Git/docker ignore files are now shared via jinja templating, clearly delineated from the rest of the file (which can be edited by hand afterwards)
- Project name validator now allows more than lowercase characters (validating
regex now
^[A-Z0-9].+$instead of old^[A-Z][a-zA-Z0-9\' ]+$). make releasenow uses annotated git tags instead of lightweight tags (perman git-tag(1), non-annotated tags are for "private or temporary object labels", and won't show up ingit describeby default).make releasenow more portable (previously relied on GNU date and GNU sed)- Git/docker ignore files now properly ignore text editor swap/backup files.
- Docker context (cache) no longer gets invalidated due to git operations.
- Internal
make lintno longer runspoetry-lockhook, useless for a template-orientedpyproject.toml. No change for template users!
- Release-oriented Dockerfile now uses the
poetry.lockcontents as deps. Via new impl ofmake export-requirements, copied into image. - New
make check-requirements, verifiesrequirements.txt==poetry.lock. - Release-oriented dockerfile uses built CLI as entrypoint.
Can now run
docker run {{ project-slug }}:0.1.0 --help.
make docsno longer crashes with exception: 'Module' object has no attribute 'doc'. Dep astroid v3.0.0 is breaking, pinned for the moment.
- Replaced
docs/source/index.rsttoindex.md. Docs all Markdown via myst.
- Unnecessary file
.flake8removed, not needed since move toruff
- New pre-commit hook
poetry-checkandpoetry-lock, validating poetry setup - Update
Dockerfile, used as base dev image- Debian version bookworm
poetryto1.6.1pre-committo3.3.3
- New project-name validator rules, enforcing 'Capitalized With Spaces' rule
make lockno longer updates dependencies, via--no-updateflag.
yamllintpre-commit hook: yaml validator already packed in default hooks, no need for yaml pretty-printer!
- Explicit choice of "Google" docstring style
- Git repo initialization feature restored via
_tasks make buildnow builds sdists (source.tar.gz) as well as bdist (wheels, binary package). This fixespoetry publishaftermake (build)uploading only a binary package without sourcerufflinter no longer yells about pydocstyle rules
- Faster linting via
ruff, replacingflake8andisortpre-commit hooks - Dash/Zeal docsets are now generated in
docs/build/docsetviamake docs - Markdown support in python docstrings, via myst-parser and sphinx-autodoc2
- Template self-tests now refer properly to current
HEADcommit, not last tagged - Fix pytest warnings via update of
pytest-coverageto4.*
- New python template using
copier>=7.1.0, validated by tests and teaching/explaining itself via design document.