A Django webapp for hosting the RSE Competencies Toolkit
This is a Python application that uses pip-tools
for packaging and dependency management. It also provides pre-commit
hooks (for for ruff and mypy
) and automated tests using pytest
and GitHub Actions. Pre-commit hooks are automatically kept updated with a dedicated GitHub Action, this can be removed and replace with pre-commit.ci if using an public repo. It was developed by the Imperial College Research Computing Service.
pip-tools
is chosen as a lightweight dependency manager that adheres to the latest standards using pyproject.toml
.
To get started:
Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # with Powershell on Windows: `.venv\Scripts\Activate.ps1`
Install development requirements and the package in editable mode:
pip install -r dev-requirements.txt
pip install -e .
(Optionally) install tools for building documentation:
pip install -r doc-requirements.txt
Install the git hooks:
pre-commit install
Run the main app:
python -m rse_competencies_toolkit
Run the tests:
pytest
To add or remove dependencies:
dependencies
variables in the pyproject.toml
file (aim to keep development tools separate from the project requirements).pip-compile
for requirements.txt
- the project requirements.pip-compile --extra dev -o dev-requirements.txt
for the development requirements.pip-compile --extra doc -o doc-requirements.txt
for the documentation tools.pip-sync *requirements.txt
To upgrade pinned versions, use the --upgrade
flag with pip-compile
.
Versions can be restricted from updating within the pyproject.toml
using standard python package version specifiers, i.e. "black<23"
or "pip-tools!=6.12.2"
All configuration can be customised to your preferences. The key places to make changes for this are:
pyproject.toml
file, where you can edit:
.pre-commit-config.yaml
for pre-commit settings..github
directory for all the CI configuration.