Skip to content

Latest commit

 

History

History
65 lines (33 loc) · 3.08 KB

CONTRIBUTING.md

File metadata and controls

65 lines (33 loc) · 3.08 KB

Contributing

This project uses the Git feature branch workflow. Please submit your changes for review as a GitHub pull request.

Development Environment

This project requires Python 3.10 or newer. To set up your development environment on Linux, run these commands from the project root directory:

  • sudo make build-deps—installs build dependencies (Debian/Ubuntu only)

  • make—creates a virtual environment named .venv in the current working directory and performs an editable installation of this project, including development and testing tools

  • make pre-commit—installs pre-commit hooks (requires the virtual environment to be active in your code editor or Git porcelain)

  • make test—performs comprehensive functional and integration testing of this project

  • make smoke—runs a shorter, faster subset of the test suite

  • make docker—builds a fully tested and release-ready container image

Additional make(1) targets are available. Review the Makefile for details.

Code Style

The following code styles are in use:

Commit Messages

This project implements Semantic Versioning 2.0.0 using Conventional Commits 1.0.0. Valid commit types are:

  • build—changes to the build system or external dependencies

  • ci—changes to the CI configuration files and scripts

  • docs—documentation-only changes

  • feat—a new feature

  • fix—a bug fix

  • perf—a code change that improves performance

  • refactor—a code change that neither fixes a bug nor adds a feature

  • test—new tests or corrections to existing tests

A commit's scope should be the second-level Python module name sans the stuart. prefix or any suffixes with a few exceptions. Valid commit scopes are:

  • stuart—for the corresponding top-level dunder module

  • app—the web application, using Flask

  • main—the main web page and related routes

  • wsgi—the WSGI adapter, for use with gunicorn

  • packaging—package layout or other metadata, e.g., the arrangement of src/, alterations to pyproject.toml or Dockerfile

  • no scope—for refactor or test changes covering multiple packages; or for build, ci, or doc changes not specific to one package