pytest_pep723.plugin

Pytest plugin for PEP 723 inline script dependency validation.

Automatically discovers Python files containing PEP 723 # /// script metadata blocks and verifies that every import is covered by the declared inline dependencies.

Configuration (pyproject.toml):

[tool.pytest-pep723]
paths = ["src/mypkg"]          # directories to scan (required)
ignore_imports = ["mypkg"]     # imports to skip (internal packages, conda-only)
extra_mappings = {"gi" = "pygobject"}  # additional import->pkg mappings

Or via CLI:

pytest --pep723-check --pep723-paths src/mypkg

Exceptions

PEP723DepError

Raised when a PEP 723 script has uncovered imports.

Classes

PEP723File

Collector for a single PEP 723 script file.

PEP723Item

Test item that checks one PEP 723 script for uncovered imports.

Functions

pytest_addoption(→ None)

_get_config_paths(→ list[pathlib.Path])

Resolve scan paths from CLI options or ini config.

_get_ignore_imports(→ frozenset[str])

Resolve ignore set from CLI options or ini config.

_apply_extra_mappings(→ None)

Register extra import->package mappings from ini config.

pytest_configure(→ None)

pytest_collect_file(→ PEP723File | None)

Module Contents

pytest_pep723.plugin.pytest_addoption(parser: pytest.Parser) None[source]
pytest_pep723.plugin._get_config_paths(config: pytest.Config) list[pathlib.Path][source]

Resolve scan paths from CLI options or ini config.

pytest_pep723.plugin._get_ignore_imports(config: pytest.Config) frozenset[str][source]

Resolve ignore set from CLI options or ini config.

pytest_pep723.plugin._apply_extra_mappings(config: pytest.Config) None[source]

Register extra import->package mappings from ini config.

pytest_pep723.plugin.pytest_configure(config: pytest.Config) None[source]
class pytest_pep723.plugin.PEP723File(*, ignore_imports: frozenset[str], **kwargs)[source]

Bases: pytest.File

Collector for a single PEP 723 script file.

_ignore_imports[source]
collect()[source]

Collect children (items and collectors) for this collector.

class pytest_pep723.plugin.PEP723Item(*, ignore_imports: frozenset[str], **kwargs)[source]

Bases: pytest.Item

Test item that checks one PEP 723 script for uncovered imports.

_ignore_imports[source]
runtest() None[source]

Run the test case for this item.

Must be implemented by subclasses.

repr_failure(excinfo, style=None)[source]

Return a representation of a collection or test failure.

Parameters:

excinfo – Exception information for the failure.

reportinfo()[source]

Get location information for this item for test reports.

Returns a tuple with three elements:

  • The path of the test (default self.path)

  • The 0-based line number of the test (default None)

  • A name of the test to be shown (default "")

exception pytest_pep723.plugin.PEP723DepError(path: pathlib.Path, missing: list[str])[source]

Bases: Exception

Raised when a PEP 723 script has uncovered imports.

path[source]
missing[source]
__str__() str[source]

Return str(self).

pytest_pep723.plugin.pytest_collect_file(file_path: pathlib.Path, parent: pytest.Collector) PEP723File | None[source]