Skip to main content

pytest-digline

The digline comparison, as rows in pytest's own report.

pip install pytest-digline
pytest --digline-suite eval/suite.py
digline: comparing 1 suite(s) against the committed baseline

eval/suite.py::alpha::contains          .
eval/suite.py::alpha::llm_rubric        F
eval/suite.py::beta::contains           .
eval/suite.py::gamma                    s

=================================== FAILURES ===================================
digline: alpha · llm_rubric
  dropped from 0.910000 to 0.640000, below its threshold of 0.700000,
  and beyond the 0.880000–0.950000 this check measured across 5 samples
  reason: signed=True, concise=False

==================================== digline ===================================
1 check got worse; every case could be judged; 1 case is suspended; the rules
are unchanged.

One row per check — one assertion on one case — because that is digline's unit of verdict. -k and --last-failed select them like any other test.

What it does, and what it costs

By default it compares and never runs: it reads the latest stored run of each suite, holds it against the baseline committed in your repository, and makes no network call at all. Producing a run stays a separate act — digline run, the official image, the GitHub Action.

--digline-run runs each suite first. That calls your provider and spends money, so it is a flag on the command line where the cost is visible, it prints the planned call count before the first call, and it refuses under --collect-only: a command whose job is to list test names must never be able to spend a hundred model calls.

The four states

digline pytest
fine passed
got worse FAILED
could not be judged ERROR — an error is neither green nor a regression
suspended SKIPPED, with the reason the suite declared

The suspension is the one digline state an exit code cannot express: it never fails, so it disappears into 0. pytest has had a state for a decision rather than an outcome since it was written, and this is it.

What pytest cannot carry: the process exit code. digline compare exits 1 for a regression and 2 for a run it could not judge; a pytest run exits 1 for either. The distinction survives in the report — F and E are counted separately, -rE lists the errored rows — and in --junit-xml. A job that needs 1 versus 2 runs digline compare, which is one command away.

Naming a suite

Nothing is discovered by convention: a suite is a file that executes, and a file found by convention is a file that runs by accident. Name it, either way:

pytest --digline-suite eval/suite.py --digline-suite eval/billing.toml
# pyproject.toml
[tool.pytest.ini_options]
digline_suites = ["eval/suite.py"]

The command line replaces the ini list rather than adding to it, so narrowing a run to one suite is expressible. --digline-root names the perimeter holding .digline/ and defaults to pytest's rootdir.

Select rows with -k; a node id passed as an argument is not supported.

What it will not do

It does not promote. There is no flag, no fixture and no marker that makes a run the new baseline — not refused, absent, and a test in this package sweeps the sources to keep it that way. A baseline is an approved reference; the approval is a person's, and a green pytest run is the single most likely place for a promotion to happen by accident.

It has no thresholds of its own. Every bar it reports against was declared in your suite and frozen in the baseline somebody promoted and committed.

It depends on digline and pytest, and nothing else.

Turn it off for one run with -p no:digline. With no suite named it collects nothing, prints nothing and adds no header.

The reasoning is ADR 0013.

Release files for pytest-digline 0.1.3

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

Source distribution (sdist)

Source distribution for pytest-digline 0.1.3
File Size Uploaded
pytest_digline-0.1.3.tar.gz 23.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-digline 0.1.3
File Interpreter ABI Platform
pytest_digline-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 36.7 kB

Release files / pytest_digline-0.1.3.tar.gz

Download URL pytest_digline-0.1.3.tar.gz
Size 23.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6cd1f783396c1350ddd8fa2013889d70db049324843338745c6a6080598b9727
BLAKE2b-256 checksum
How to use checksums
c30b396224c6d8ce019192b3fcdb2c8fc18472857a76813ae9b4f4072936be34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / pytest_digline-0.1.3-py3-none-any.whl

Download URL pytest_digline-0.1.3-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d4bc770ac17c7d7b616169cf7e9a31b0bf3b5cee4fcb7afa425af03f720cdc2a
BLAKE2b-256 checksum
How to use checksums
fbe9a584c054f7e204a756f036a1a17036f2f305ab7b5b1180cbc96975d48d63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

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