diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:21:11 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-29 04:21:11 +0000 |
commit | cdb4a4e19b096cdbf1356e28287238122fc3599c (patch) | |
tree | c5ed3b2b40e4725bbaaae0710d1cbec21b23f3b0 /docs/development | |
parent | Initial commit. (diff) | |
download | python-installer-upstream.tar.xz python-installer-upstream.zip |
Adding upstream version 0.6.0+dfsg1.upstream/0.6.0+dfsg1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs/development')
-rw-r--r-- | docs/development/design.md | 22 | ||||
-rw-r--r-- | docs/development/index.md | 27 | ||||
-rw-r--r-- | docs/development/workflow.md | 116 |
3 files changed, 165 insertions, 0 deletions
diff --git a/docs/development/design.md b/docs/development/design.md new file mode 100644 index 0000000..cb67cc3 --- /dev/null +++ b/docs/development/design.md @@ -0,0 +1,22 @@ +# Design and Scope + +## What this is for + +This project is born out of [this discussion][1]. Effectively, the volunteers +who maintain the Python packaging toolchain identified a need for a library in +the ecology that handles the details of "wheel -> installed package". This is +that library. + +There's also a need for “a fast tool to populate a package into an environment” +and this library can be used to build that. This package itself might also +"grow" a CLI, to provide just that functionality. + +[1]: https://discuss.python.org/t/3869/ + +## What is provided + +- Abstractions for installation of a wheel distribution. +- Utilities for writing concrete implementations of these abstractions. +- Concrete implementations of these abstraction, for the most common usecase. +- Utilities for handling wheel RECORD files. +- Utilities for generating Python script launchers. diff --git a/docs/development/index.md b/docs/development/index.md new file mode 100644 index 0000000..22d1611 --- /dev/null +++ b/docs/development/index.md @@ -0,0 +1,27 @@ +# Development + +Thank you for your interest in installer! ✨ + +installer is a volunteer maintained open source project, and we welcome +contributions of all forms. This section of installer's documentation serves as +a resource to help you to contribute to the project. + +```{toctree} +:hidden: + +workflow +design +``` + +<!-- prettier-ignore-start --> +[Code of Conduct] +: Applies within all community spaces. If you are not familiar with our Code of Conduct, take a minute to read it before starting with your first contribution. + +[Workflow](./workflow) +: Describes how to work on this project. Start here if you're a new contributor. + +[Design and Scope](./design) +: Describes what this project is for, and how that informs the design decisions made. +<!-- prettier-ignore-end --> + +[code of conduct]: https://github.com/pypa/.github/blob/main/CODE_OF_CONDUCT.md diff --git a/docs/development/workflow.md b/docs/development/workflow.md new file mode 100644 index 0000000..0c4f9e7 --- /dev/null +++ b/docs/development/workflow.md @@ -0,0 +1,116 @@ +# 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: + + ```sh + git clone https://github.com/pradyunsg/installer.git + cd installer + ``` + +- Install the project's main development dependencies: + + ```sh + pip install nox + ``` + +You're all set for working on this project. + +## Commands + +### Code Linting + +```sh +nox -s lint +``` + +Run the linters, as configured with [pre-commit]. + +### Testing + +```sh +nox -s test +``` + +Run the tests against all supported Python versions, if an interpreter for that +version is available locally. + +```sh +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 + +```sh +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]. + +```sh +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. + +[github flow]: https://guides.github.com/introduction/flow/ +[flit]: https://flit.readthedocs.io/en/stable/ +[nox]: https://nox.readthedocs.io/en/stable/ +[pytest]: https://docs.pytest.org/en/stable/ +[sphinx]: https://www.sphinx-doc.org/en/master/ +[sphinx-autobuild]: https://github.com/executablebooks/sphinx-autobuild +[pre-commit]: https://pre-commit.com/ |