python-installer/docs/development/workflow.md

2.9 KiB

Workflow

This page describes the tooling used during development of this project. It also serves as a reference for the various commands that you would use when working on this project.

Overview

This project uses the GitHub Flow for collaboration. The codebase is Python.

  • flit is used for automating development tasks.
  • nox is used for automating development tasks.
  • pre-commit is used for running the linters.
  • sphinx is used for generating this documentation.
  • pytest is used for running the automated tests.

Repository Layout

The repository layout is pretty standard for a modern pure-Python project.

  • CODE_OF_CONDUCT.md
  • LICENSE
  • README.md
  • .nox/ -- Generated by nox.
  • dist/ -- Generated as part of the release process.
  • docs/ -- Sources for the documentation.
  • src/
    • installer/ -- Actual source code for the package
  • tests/ -- Automated tests for the package.
  • noxfile.py -- for nox.
  • pyproject.toml -- for packaging and tooling configuration.

Initial Setup

To work on this project, you need to have git 2.17+ and Python 3.7+.

  • Clone this project using git:

    git clone https://github.com/pradyunsg/installer.git
    cd installer
    
  • Install the project's main development dependencies:

    pip install nox
    

You're all set for working on this project.

Commands

Code Linting

nox -s lint

Run the linters, as configured with pre-commit.

Testing

nox -s test

Run the tests against all supported Python versions, if an interpreter for that version is available locally.

nox -s test-3.9

Run the tests against Python 3.9. It is also possible to specify other supported Python versions (like 3.7 or pypy3).

Documentation

nox -s docs

Generate the documentation for installer into the build/docs folder. This (mostly) does the same thing as nox -s docs-live, except it invokes sphinx-build instead of sphinx-autobuild.

nox -s docs-live

Serve this project's documentation locally, using sphinx-autobuild. This will open the generated documentation page in your browser.

The server also watches for changes made to the documentation (docs/), which will trigger a rebuild. Once the build is completed, server will automagically reload any open pages using livereload.

Release process

  • Update the changelog.
  • Update the version number in __init__.py.
  • Commit these changes.
  • Create a signed git tag.
  • Run flit publish.
  • Update the version number in __init__.py.
  • Commit these changes.
  • Push tag and commits.