# 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](../user_guide/cuda.md).

Install Poetry 2.5.1 in a separate tool environment, then use it for all project
commands. Keep Poetry separate from the project environment.

```powershell
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](https://github.com/oakplume/pipewhy/blob/main/CONTRIBUTING.md) for the mandatory completion policy
and the [issue tracker](https://github.com/oakplume/pipewhy/issues) for delivery status.
