Development#
The initial supported interpreter is CPython 3.14 on Windows and Linux. Windows and Linux have separate qualification checks. Other Python versions are not qualified. Experimental CUDA has a separate Windows hardware qualification; Linux import/compiler checks do not establish real-device parity. See the CUDA guide.
Install Poetry 2.5.1 in a separate tool environment, then use it for all project commands. Keep Poetry separate from the project environment.
python -m venv .tools/poetry
.tools/poetry/Scripts/python -m pip install poetry==2.5.1
.tools/poetry/Scripts/poetry env use python
.tools/poetry/Scripts/poetry sync --with docs --extras cpu --extras cuda --extras enron
.tools/poetry/Scripts/poetry run python tools/quality.py
.tools/poetry/Scripts/poetry build
On Linux the tool executable is .tools/poetry/bin/poetry. poetry.toml selects
the project .venv; poetry.lock pins development tools. Production currently
has no runtime dependencies. Black formats owned Python; ty checks package,
tests and tooling; pytest unit tests run under Coverage.py. Both statement and
combined line/branch coverage must meet 95%. Unit coverage includes development
tools, documentation configuration and unimported source, with no exclusion of untested product modules.
uv_build>=0.13.6,<0.14 builds wheel and sdist. Only src/pipewhy belongs in
the wheel; tests and development tools stay in the repository. Package metadata
retains proprietary rights. Version 0.1.0.dev0 is published as a development
prerelease; source access and redistribution rights remain separate. Subsequent
releases require their own version and release checks.
See contributor requirements for the mandatory completion policy and the issue tracker for delivery status.