Skip to main content

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 list
  • decree generate toc
  • decree 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 validation
  • ADR_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

decree-0.2.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

decree-0.2.0-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

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

Hashes for decree-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f165fe4f9642c71dc401b903a9d523155f8d602b215fbe37dff2cffb7198b5ca
MD5 468b8b986592f10ecc91dd6a4bca3251
BLAKE2b-256 210520c8decb4bf6de22b3521b114d70b6fcd15d8f877ed5e62cb7c7aec69a18

See more details on using hashes here.

Provenance

The following attestation bundles were made for decree-0.2.0.tar.gz:

Publisher: python-publish.yml on steven-cutting/decree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for decree-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27ee28c466f8dca0d7cf0b4ef55cc656d6247e3df4dfb592e8716f0f47f8eee8
MD5 a8d3f2d96f3f02c10ea83063d7cef6c4
BLAKE2b-256 c31035b799e0a9816966dee4f1d833f840ad458aa5f12ad9025282253da031e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for decree-0.2.0-py3-none-any.whl:

Publisher: python-publish.yml on steven-cutting/decree

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page