Decree: Python 3.11+ reimplementation of adr-tools with a typed API and Typer CLI.
Project description
decree
Python 3.11+ reimplementation of adr-tools with a typed API and a Typer CLI.
install
Decree is published on PyPI and can be installed on Linux, macOS, or Windows. We recommend using either pipx or uv for a clean, isolated installation.
Install with pipx
pipx installs Python CLI tools in their own virtual environments so they do
not interfere with system packages.
pipx ensurepath
pipx install decree
decree --help
Upgrade:
pipx upgrade decree
Uninstall:
pipx uninstall decree
Works on Ubuntu, Debian, macOS, and Windows. Uses your system Python (3.11 or newer). No sudo is required for the app itself.
Install with uv
uv is a Rust-based Python toolchain designed for speed and reproducibility.
Install uv: guide
Install decree:
uv tool install decree
decree --help
Upgrade:
uv tool upgrade decree
Uninstall:
uv tool uninstall decree
uv does not require system Python once installed.
quickstart
decree init
decree new Use beartype on public API
decree list
decree generate toc > doc/adr/README.md
decree generate graph # exits non-zero, not implemented
cli
decree init [DIR]decree new [--status STATUS] [--template PATH] [--dir DIR] [--date YYYY-MM-DD] TITLE...decree link SRC REL TGT [--reverse / --no-reverse]decree listdecree generate tocdecree generate graph(not implemented)decree upgrade-repository
exit codes
Decree follows sysexits where
available and falls back to portable numbers on platforms such as Windows. The
fallback values are listed below; on POSIX you will see the native os.EX_*
numbers (for example, usage errors exit with 64).
| Fallback | ExitCode member | Meaning |
|---|---|---|
| 0 | ExitCode.SUCCESS |
Successful run. |
| 1 | ExitCode.GENERAL_ERROR |
Unexpected runtime failure or abort. |
| 2 | ExitCode.USAGE_ERROR |
CLI usage error (missing/bad arguments). |
| 66 | ExitCode.INPUT_MISSING |
Required input was missing or unreadable. |
| 69 | ExitCode.UNAVAILABLE |
Service or dependency unavailable. |
| 78 | ExitCode.CONFIG_ERROR |
Configuration or environment problem. |
Examples:
decree new "Valid ADR" # -> 0
decree new --template missing.md foo # -> 66 (missing template)
ADR_DATE=bad-date decree new Foo # -> 78 (invalid config)
Contributors should raise click.UsageError for argument problems and
click.ClickException with ExitCode for domain failures. See the
Click exception guide
for details.
configuration
ADR_DATE: if set, used verbatim as the ADR date after validationADR_TEMPLATE: path to a custom template file
Template precedence is explicit CLI flag first, then the environment variable, then the built-in default:
ADR_TEMPLATE=/path/to/template.md decree new "Use beartype"
decree new --template /other/path.md "Use beartype" # CLI overrides env var
dependabot
Dependabot checks uv dependencies and GitHub Actions every Monday at 09:00 America/Los_Angeles.
Edit .github/dependabot.yml to change the schedule window,
and adjust the groups block if you want different buckets for runtime versus dev tooling updates.
Date handling and reproducibility
New ADRs always render Date: YYYY-MM-DD in their front matter. By default, the
current local date is used. Supply --date YYYY-MM-DD or set the ADR_DATE
environment variable to override the value (the CLI flag takes precedence). Any
override must already be in ISO format; otherwise, the command exits with an
error.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file decree-0.2.0.tar.gz.
File metadata
- Download URL: decree-0.2.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f165fe4f9642c71dc401b903a9d523155f8d602b215fbe37dff2cffb7198b5ca
|
|
| MD5 |
468b8b986592f10ecc91dd6a4bca3251
|
|
| BLAKE2b-256 |
210520c8decb4bf6de22b3521b114d70b6fcd15d8f877ed5e62cb7c7aec69a18
|
Provenance
The following attestation bundles were made for decree-0.2.0.tar.gz:
Publisher:
python-publish.yml on steven-cutting/decree
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
decree-0.2.0.tar.gz -
Subject digest:
f165fe4f9642c71dc401b903a9d523155f8d602b215fbe37dff2cffb7198b5ca - Sigstore transparency entry: 606811066
- Sigstore integration time:
-
Permalink:
steven-cutting/decree@a890aa14ea69c8315e709becc0113930d590f62e -
Branch / Tag:
refs/tags/0.2.0 - Owner: https://github.com/steven-cutting
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@a890aa14ea69c8315e709becc0113930d590f62e -
Trigger Event:
release
-
Statement type:
File details
Details for the file decree-0.2.0-py3-none-any.whl.
File metadata
- Download URL: decree-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27ee28c466f8dca0d7cf0b4ef55cc656d6247e3df4dfb592e8716f0f47f8eee8
|
|
| MD5 |
a8d3f2d96f3f02c10ea83063d7cef6c4
|
|
| BLAKE2b-256 |
c31035b799e0a9816966dee4f1d833f840ad458aa5f12ad9025282253da031e6
|
Provenance
The following attestation bundles were made for decree-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on steven-cutting/decree
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
decree-0.2.0-py3-none-any.whl -
Subject digest:
27ee28c466f8dca0d7cf0b4ef55cc656d6247e3df4dfb592e8716f0f47f8eee8 - Sigstore transparency entry: 606811087
- Sigstore integration time:
-
Permalink:
steven-cutting/decree@a890aa14ea69c8315e709becc0113930d590f62e -
Branch / Tag:
refs/tags/0.2.0 - Owner: https://github.com/steven-cutting
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@a890aa14ea69c8315e709becc0113930d590f62e -
Trigger Event:
release
-
Statement type: