Testing#
PyDPlus tests are located in the tests/ directory and split by scope:
tests/unit/: fast, isolated tests for individual units of functionalitytests/integration/: higher-level tests that validate behavior across modulestests/conftest.py: shared fixtures and pytest hooks used by both test suites
Run the Test Suite#
Install dependencies and run the default suite (unit tests) with Python 3.12 or newer:
poetry install
poetry run pytest -q
Warning
PyDPlus 2.0.0 and newer require Python 3.12 or newer.
PyDPlus 1.0.1 is the final release line that supports Python 3.9.
Integration tests are opt-in and skipped by default. To run them:
poetry run pytest --run-integration -m integration -q
Linting and Formatting#
This project uses Ruff for linting, import sorting, and formatting.
The repository line-length standard is 130 characters.
Use line-length overrides only for comments or special situations where wrapping harms readability.
Prefer targeted per-line # noqa: E501 over broad file-level or global ignores.
poetry run ruff check .
poetry run ruff check . --fix
poetry run ruff format .
poetry run ruff format . --check
Coverage#
Coverage is enabled via pytest defaults in pyproject.toml and generated on each run.
To run all tests (including integration) with coverage:
poetry run pytest --run-integration --cov=pydplus --cov-report=term-missing --cov-report=xml
Security Notes for Documentation Tooling#
pygments is used in this repository for documentation rendering via Sphinx, not
for pydplus runtime request/response processing.
For documentation-tooling security hygiene (including the ReDoS advisory patched in pygments>=2.20.0):
Keep
pygmentsat the newest available version in the lock file.Only build docs from trusted repository content.
Do not run ad-hoc syntax highlighting on untrusted input as part of local scripts or CI jobs.
If your CI platform supports it, run documentation builds with a job timeout and isolated resources.