summaryrefslogtreecommitdiffstats
path: root/docs/development
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:21:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-29 04:21:11 +0000
commitcdb4a4e19b096cdbf1356e28287238122fc3599c (patch)
treec5ed3b2b40e4725bbaaae0710d1cbec21b23f3b0 /docs/development
parentInitial commit. (diff)
downloadpython-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.md22
-rw-r--r--docs/development/index.md27
-rw-r--r--docs/development/workflow.md116
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/