Skip to content

Development#

Notes for developers. If you want to get involved, please do! We welcome all kinds of contributions, for example:

  • docs fixes/clarifications
  • bug reports
  • bug fixes
  • feature requests
  • pull requests
  • tutorials

Tools#

Copier template tester (ctt)#

We use copier template tester (ctt) to generate the output of using our template. This output is stored in the tests/regression/ctt folder which is tracked by git. This folder provides a way for us to easily see the impact that changes to our template have on generated repositories under different possible answers to our copier questions. Put another way, ctt provides a pure regression test of our template, making sure that any changes to the output generated with our copier template are immediately obvious and trackable over different commits.

Workflows#

We don't mind whether you use a branching or forking workflow. However, please only push to your own branches, pushing to other people's branches is often a recipe for disaster and is never required in our experience, so is best avoided.

Try and keep your merge requests as small as possible (focus on one thing if you can). This makes life much easier for reviewers which allows contributions to be accepted at a faster rate.

Language#

We use British English for our development. We do this for consistency with the broader work context of our lead developers.

Versioning#

This package follows the version format described in PEP440 and Semantic Versioning to describe how the version should change depending on the updates to the code base. Each pull request includes an entry in changelog which makes it relatively easy to know how the version should be incremented with the next release.

Releasing#

Releasing is semi-automated via a CI job. The CI job requires the type of version bump that will be performed to be manually specified. See the uv version docs (specifically the --bump flag) for the list of available bump rules.

Standard process#

The steps required are the following:

  1. Bump the version: manually trigger the "bump" stage from the latest commit in main (pipelines are here). A valid "bump_rule" (see uv's docs) will need to be specified via the "BUMP_RULE" CI variable (see https://docs.gitlab.com/ee/ci/variables/). This will then trigger a release.

  2. Update projects to use the new copier version

Read the Docs#

Our documentation is hosted by Read the Docs (RtD), a service for which we are very grateful. The RtD configuration can be found in the .readthedocs.yaml file in the root of this repository. The docs are automatically deployed at copier-core-python-repository.readthedocs.io.