Skip to main content

ADR-py

Shout to excellent adr-tools project on which ADR-py is based on

This Python script is designed to help software development teams document their architecture decisions using Architecture Decision Records (ADRs). ADRs are a lightweight and effective way to capture important decisions made during the design and development of a software system, and to keep track of their rationale and implications over time.

The script creates ADR files in a predefined format, following the principles of Michael Nygard's ADR template. Each ADR file is a Markdown document with a unique name that includes a sequential number and a title, which is automatically generated based on the information provided by the user.

Prerequisites

  • Python 3.11 installed on your system.
  • Basic knowledge of command-line interface (CLI) usage.

Installation

  • pip install adr

How to Use

Usage:

$ adr [OPTIONS] COMMAND [ARGS]...

Options:

  • --install-completion: Install completion for the current shell.
  • --show-completion: Show completion for the current shell, to copy it or customize the installation.
  • --help: Show this message and exit.

Commands:

  • init: Initialize ADR directory with first ADR in given PATH
  • new: Create new ADR with given NAME

Configuration and metadata

ADR-py works in ordinary documentation repositories. If no path is supplied and no configuration is found, ADRs are created in the current working directory.

The configuration search order is:

  1. An explicit path passed to adr init.
  2. An explicit TOML file passed with --config.
  3. .adrpy.toml in the current working directory.
  4. [tool.adrpy] in the current working directory's pyproject.toml.
  5. The current working directory.

For a non-Python documentation repository, create .adrpy.toml:

dir = "docs/adr"

The same file can be supplied to both commands:

$ adr init --config .adrpy.toml
$ adr init --config .adrpy.toml --status proposed --tag architecture --tag process
$ adr new --config .adrpy.toml "Use PostgreSQL" --status proposed --tag database --tag persistence

Generated ADRs start with YAML front matter containing an immutable UUID id, a numeric ordinal, title, status, ISO date, a list of tags, and UUID relationship fields supersedes and superseded_by. New ADRs default to proposed; pass --status to select another allowed status and repeat --tag for multiple tags. The front matter is intentionally machine-readable while the Markdown body remains editable in any text editor.

init

Initialize ADR directory with first ADR in given PATH

Usage:

$ adr init [OPTIONS] [PATH]

Arguments:

  • [PATH]: Path in where ADRs should reside. If not provided Path will be extracted from pyproject.toml

Options:

  • --help: Show this message and exit.

  • --status: Initial status; defaults to proposed.

  • --tag: Tag to add; repeat for multiple tags.

new

Create new ADR with given NAME

Usage:

$ adr new [OPTIONS] NAME

Arguments:

  • NAME: Name of new ADR. Longer names (with spaces) should be put in quotation marks. [required]

Options:

  • adr --help: Show this message and exit.

  • --status: Initial status; defaults to proposed.

  • --tag: Tag to add; repeat for multiple tags.

ADR Template

The generated ADR files follow the template proposed by Michael Nygard in his book "Documenting Architecture Decisions." The template consists of the following sections:

  • Title: The title of the ADR.
  • Status: The current status of the decision (e.g., proposed, accepted, rejected).
  • Context: The context and background information that led to the decision.
  • Decision: The decision made and its rationale.
  • Consequences: The potential consequences and trade-offs of the decision.

Benefits of ADRs

Using ADRs has several benefits for software development teams, including:

  • Documentation: ADRs provide a written record of important architectural decisions, making it easier for team members to understand the reasons behind past decisions.
  • Communication: ADRs serve as a communication tool for discussing and documenting design decisions, facilitating collaboration among team members.
  • Decision-making: ADRs encourage thoughtful decision-making by requiring the team to consider the context, rationale, and potential consequences of each decision.
  • Transparency: ADRs promote transparency by making architectural decisions visible and accessible to the entire team, fostering a culture of shared understanding and accountability.
  • Knowledge sharing: ADRs help capture the collective knowledge and experience of the team, enabling future team members to learn from past decisions and avoid repeating mistakes.

Metadata

Release files for adr 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for adr 0.5.0
File Size Uploaded Provenance
adr-0.5.0.tar.gz 10.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for adr 0.5.0
File Interpreter ABI Platform
adr-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.4 kB

Release files / adr-0.5.0.tar.gz

Download URL adr-0.5.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8d162be321e736989a145320057f7e76f734052ebf25d00711592bf993b7e54e
BLAKE2b-256 checksum
How to use checksums
b039efc3c06c443603464616aa680bd987600b6928aec152b5e8257e7cda7d60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / adr-0.5.0-py3-none-any.whl

Download URL adr-0.5.0-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87ace6cd1573b76543cec18b168e66bdd104bac25630f9ee146b7917049a25f8
BLAKE2b-256 checksum
How to use checksums
3220dc7f05aa8d0ed8bc84cf87bfa5c393e46ef0d15a79d19eceba123242e168
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for adr 0.5.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page