# System map — pytest-dev/pytest

> Canonical page: https://codevetter.com/unpack/pytest/system-map

# System map — pytest-dev/pytest

Scanned commit 2887015cade4757385308e7a7d8083557fc637e2 (2026-09-29). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The runtime is a Python library and command-line test runner distributed as a package. Public APIs are collected in pytest, while most implementation lives in _pytest modules registered as plugins. Config, Session, fixture definitions, and report consumers own different stages of a run. Packaging, documentation hosting, release automation, and maintenance jobs form separate operational boundaries.
- Both pytest and py.test console scripts target _pytest.config:_console_main; python -m pytest calls that same function and raises SystemExit with its result. — [pyproject.toml#L85-L86](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/pyproject.toml#L85-L86) [src/pytest/__main__.py#L5-L9](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/pytest/__main__.py#L5-L9) [src/_pytest/config/__init__.py#L277-L292](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/config/__init__.py#L277-L292)
- src/pytest/__init__.py exposes Config, Session, collectors, fixtures, assertion helpers, reports, and plugin decorators by importing their implementations from _pytest. — [src/pytest/__init__.py#L6-L81](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/pytest/__init__.py#L6-L81)
- get_config constructs a fresh PytestPluginManager and Config per invocation, processes plugin exclusions first, then imports default_plugins. — [src/_pytest/config/__init__.py#L382-L404](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/config/__init__.py#L382-L404)
- wrap_session owns session configuration, startup, exception-to-exit-status handling, working-directory restoration, sessionfinish, and unconfiguration. — [src/_pytest/main.py#L320-L376](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/main.py#L320-L376)
- Persistent state includes JSON Cache values, assertion-rewritten bytecode, and temporary directories; these have distinct formats and lifecycle owners. — [src/_pytest/cacheprovider.py#L198-L243](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/cacheprovider.py#L198-L243) [src/_pytest/assertion/rewrite.py#L147-L187](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/assertion/rewrite.py#L147-L187) [src/_pytest/tmpdir.py#L141-L158](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/src/_pytest/tmpdir.py#L141-L158)
- Packaging uses setuptools.build_meta and setuptools-scm, requires Python >=3.10, and declares pluggy, iniconfig, packaging, pygments, and conditional compatibility dependencies. — [pyproject.toml#L1-L6](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/pyproject.toml#L1-L6) [pyproject.toml#L27-L57](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/pyproject.toml#L27-L57) [pyproject.toml#L102-L106](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/pyproject.toml#L102-L106)
- tox defines wheel-based test environments, pre-commit linting, Sphinx documentation builds, and separate plugin integration checks; Read the Docs builds documentation with Python 3.14. — [tox.ini#L65-L111](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/tox.ini#L65-L111) [tox.ini#L113-L138](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/tox.ini#L113-L138) [tox.ini#L177-L201](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/tox.ini#L177-L201) [.readthedocs.yaml#L3-L20](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.readthedocs.yaml#L3-L20)
- Operational entrypoints include manual release-PR preparation and package deployment, weekly documentation link checking and plugin-list updates, and scheduled closure of needs-information issues. — [.github/workflows/prepare-release-pr.yml#L1-L27](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.github/workflows/prepare-release-pr.yml#L1-L27) [.github/workflows/deploy.yml#L68-L88](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.github/workflows/deploy.yml#L68-L88) [.github/workflows/doc-check-links.yml#L3-L31](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.github/workflows/doc-check-links.yml#L3-L31) [.github/workflows/update-plugin-list.yml#L3-L19](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.github/workflows/update-plugin-list.yml#L3-L19) [.github/workflows/stale.yml#L1-L23](https://github.com/pytest-dev/pytest/blob/2887015cade4757385308e7a7d8083557fc637e2/.github/workflows/stale.yml#L1-L23)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
