Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
8443c36
docs(adrs): Add the architecture decision record scaffold
tony Aug 2, 2026
a857a1c
docs(adrs[0001]): Record the doctest core architecture
tony Aug 2, 2026
d88f1de
notes(analyses): Add the structural research behind ADR 0001
tony Aug 2, 2026
5a79db1
docs(adrs[0001]): Correct the record against verified evidence
tony Aug 2, 2026
7394c73
docs(adrs[0003]): Recast per-block items as a rejected design
tony Aug 2, 2026
d86ecf6
docs(adrs[0005]): Raise the docutils floor instead
tony Aug 2, 2026
6fb5c6b
docs(adrs[0006]): Filter the collector instead of deselecting items
tony Aug 2, 2026
370deae
docs(adrs[0002]): Assert the result triple, not TestResults equality
tony Aug 2, 2026
0dc57a3
notes(analyses): Correct the claims review falsified
tony Aug 2, 2026
1f45fdb
docs(adrs[0001]): Repin the gated-drop anchor to v8.2.3
tony Aug 2, 2026
32ae549
docs(adrs[0001]): Fix the baseline, the Example model and purity
tony Aug 2, 2026
02efb1f
docs(adrs[0002]): Correct the SyntaxError claim and scope the matrix
tony Aug 2, 2026
9eb69cb
docs(adrs[0004]): Replace the mechanism that does not exist
tony Aug 2, 2026
cba2ec0
docs(adrs[0005,0006]): Settle the matrices these records depend on
tony Aug 2, 2026
647217f
notes(analyses): Correct the drift a second review found
tony Aug 2, 2026
1eb642a
docs(adrs[0001]): Take metadata off Example and design the seams
tony Aug 2, 2026
12ac9eb
notes(analyses): Correct a third round of drift
tony Aug 2, 2026
b23e1f2
docs(adrs[0001]): Make the plan a recipe and name the missing contracts
tony Aug 2, 2026
e042bad
docs,notes: Narrow 0002, reframe 0005, and fix a fourth round of drift
tony Aug 2, 2026
f4f8d4d
docs(adrs[0001]): Make the recipe reconstructible and the results honest
tony Aug 3, 2026
3fb8fd2
docs,notes: Close the registry, compatibility and diagnostics gaps
tony Aug 3, 2026
d7af005
doctest_core(docs[model]): Complete contracts
tony Aug 3, 2026
31b600c
doctest_core(docs[plugins]): Define lifecycle
tony Aug 3, 2026
a47d332
doctest_core(docs[analysis]): Correct evidence
tony Aug 3, 2026
19e2813
doctest_core(feat[core]): Add typed core
tony Aug 8, 2026
7b4d0a5
doctest_docutils(refactor): Use typed core
tony Aug 8, 2026
6116393
pytest_doctest_docutils(refactor): Compose core
tony Aug 8, 2026
774a1d2
ci(test[matrix]): Pin supported versions
tony Aug 8, 2026
ec20300
doctest_core(docs[adr]): Record spike evidence
tony Aug 8, 2026
36f1a1f
docs(doctest): Describe grouped adapters
tony Aug 8, 2026
d362ae3
ci(test[matrix]): Restore the docutils ceiling
tony Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 18 additions & 16 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,20 @@ jobs:
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository

runs-on: ubuntu-latest
env:
UV_PYTHON: ${{ matrix.python-version }}
strategy:
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
docutils-version: ['0.20', '0.22.4']
pytest-version: ['8', '9']
exclude:
# docutils 0.22 removed the bundled docutils.utils.roman. Sphinx 8.1
# imports it, so its latex builder fails to load. Sphinx 8.2 dropped
# that import but requires Python 3.11, and 8.1 is the newest release
# supporting 3.10, leaving no working pair on that interpreter.
- python-version: '3.10'
docutils-version: '0.22.4'
# Overrides the repo's .python-version so every uv command in this job
# uses the matrix interpreter. `uv python install` only downloads one;
# without this the environment is built against .python-version instead.
env:
UV_PYTHON: ${{ matrix.python-version }}
docutils-version: ['0.20.1', '0.21.2']
pytest-version: ['8.4.2', '9.1.1']
include:
- pytest-version: '8.4.2'
pytest-asyncio-version: '1.4.0'
pytest-rerunfailures-version: '16.4'
- pytest-version: '9.1.1'
pytest-asyncio-version: '1.4.0'
pytest-rerunfailures-version: '16.4'
steps:
- uses: actions/checkout@v7

Expand All @@ -41,11 +38,16 @@ jobs:
# Every step below runs --no-sync. A plain `uv run` re-syncs the
# environment to uv.lock first, which would undo these pins and run
# every matrix leg against the locked versions.
- name: Install matrix pytest and docutils
- name: Install matrix versions
run: >-
uv pip install
"pytest~=${{ matrix.pytest-version }}.0"
"docutils==${{ matrix.docutils-version }}"
"pytest==${{ matrix.pytest-version }}"
"pytest-asyncio==${{ matrix.pytest-asyncio-version }}"
"pytest-rerunfailures==${{ matrix.pytest-rerunfailures-version }}"

- name: Check dependency consistency
run: uv pip check

- name: Print python, pytest and docutils versions
run: |
Expand Down
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ git-pull projects, e.g. [cihai], [vcs-python], or [tmux-python].

Two components:

1. `doctest_docutils` module: Same specification as `doctest`, but can parse reStructuredText
and markdown
2. `pytest_doctest_docutils`: Pytest plugin, collects test items for pytest for reStructuredText and markdown files
1. `doctest_docutils`: a doctest-shaped direct API and CLI for reStructuredText
and Markdown
2. `pytest_doctest_docutils`: a pytest plugin that collects shared-state groups
from reStructuredText and Markdown files

This means you can do:

Expand All @@ -24,8 +25,8 @@ Two components:

### doctest module

This extends standard library `doctest` to support anything docutils can parse.
It can parse reStructuredText (.rst) and markdown (.md).
This uses standard-library `doctest` prompt and comparison conventions while
parsing reStructuredText (`.rst`) and Markdown (`.md`).

See more: <https://gp-libs.git-pull.com/modules/doctest_docutils/>

Expand Down Expand Up @@ -64,7 +65,7 @@ It supports two barebones directives:

#### Usage

The `doctest_docutils` module preserves standard library's usage conventions:
The `doctest_docutils` module preserves the standard library's command shape:

##### reStructuredText

Expand All @@ -84,10 +85,10 @@ $ python -m doctest_docutils README.md -v

### pytest plugin

_This plugin disables [pytest's standard `doctest` plugin]._

This plugin integrates `doctest_docutils` with pytest so documentation examples
run with the surrounding `conftest.py` setup.
This plugin runs documentation examples as pytest items. It composes with
[pytest's standard `doctest` plugin]: gp-libs owns matching documentation files,
while pytest continues to supply fixtures, checker and report options, and
Python-module doctest collection.

```console
$ pytest docs/
Expand Down Expand Up @@ -154,7 +155,7 @@ You can test the unpublished version of g before its released.
To lift the development burden of supporting legacy APIs, as this package is
lightly used, minimum constraints have been pinned:

- docutils: 0.20.1+
- docutils: >=0.20.1,<0.22
- myst-parser: 2.0.0+

If you have even passing interested in supporting legacy versions, file an
Expand Down
Loading
Loading