-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
We have a number of python repositories that use many common components, e.g.
pyproject.tomlmetadata- Github actions CI setup including dependabot
ruff&pyrightortyconfigurationpytest+ coverage configuration- Docs/sphinx boilerplate configuration
- Github releases
- Optional
pypipublishing - License
Examples include ibex_bluesky_core, genie, lewis, fastcs-secop, IBEX-device-generator (currently a bit different, can be made consistent), saluki, and others.
As a developer I would like it to be easier to:
- Set up a new python project, following modern best-practices - i.e. in approximately the shape of the repositories above, with GHA, docs, tests, linting, releases all configured
- Update to newer best-practices across all python repos, as and when we choose to use different tools for linting/ci/docs/building etc
- But still allow each project to make local modifications to it's local configuration as makes sense for that specific project
A common tool for this in python is copier, see the following repositories for Diamond and ESS example templates using this tool:
- https://github.com/diamondLightSource/python-copier-template
- https://github.com/scipp/copier_template
Our "template structure" should look roughly like this: ISISComputingGroup/kafka_dae_diagnostics@f716e5b (but don't just blindly copy that commit - there'll be a few things we want to adjust).
Copier "questions" to include:
- Repo/project name
- module name
- Whether to publish to pypi
- Docs theme colour
- CI (windows only / linux only / windows + linux)
- choice of
pyrightortyfor type-checking
Acceptance criteria
- "Copier" template set up for our repository shape and our team's current practices, to make it easier to create new python projects and update the repository setup of existing projects as and when best practices change
- Document how to use it, either in the copier template repo itself, and/or in the dev wiki
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status