# Contributor handoff — pypa/virtualenv

> Canonical page: https://codevetter.com/unpack/virtualenv/agent-handoff

# Contributor handoff — pypa/virtualenv

Scanned commit 571bc2041dae5ecbd250d82ec7ef482cfd3c3b69 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Start with orchestration and the selected implementation rather than assuming the inventory reflects current ownership. Tests and CI were inspected, not executed, and the brief covers a bounded set of source paths. Preserve option provenance, cache/version boundaries, shell quoting, and platform-specific layout behavior when making changes. Execution, installation, and release commands require a later task that authorizes them.
- Read pyproject.toml, run/__init__.py, Session, and plugin selectors first: options are introduced through staged parsing, and creator, seeder, and activator objects are constructed only after final parsing. — [pyproject.toml#L69-L103](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/pyproject.toml#L69-L103) [src/virtualenv/run/__init__.py#L67-L118](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/run/__init__.py#L67-L118) [src/virtualenv/run/session.py#L70-L103](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/run/session.py#L70-L103)
- For discovery work, distinguish local adaptation from external implementation: Builtin forwards to python-discovery, and discovery/py_info.py only re-exports PythonInfo. — [src/virtualenv/discovery/builtin.py#L8-L28](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/discovery/builtin.py#L8-L28) [src/virtualenv/discovery/py_info.py#L1-L9](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/discovery/py_info.py#L1-L9) [pyproject.toml#L52-L60](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/pyproject.toml#L52-L60)
- Do not treat session_via_cli as side-effect-free: it calls build_parser, which constructs app-data defaults and handles reset/upgrade commands; make_app_data can create or migrate cache directories. — [src/virtualenv/run/__init__.py#L67-L69](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/run/__init__.py#L67-L69) [src/virtualenv/run/__init__.py#L100-L102](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/run/__init__.py#L100-L102) [src/virtualenv/run/__init__.py#L132-L162](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/run/__init__.py#L132-L162) [src/virtualenv/app_data/__init__.py#L32-L72](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/app_data/__init__.py#L32-L72)
- Preserve provenance-aware precedence when changing flags: CLI outranks env, env outranks INI, and copy wins same-level conflicts; negative tri-state flags have special default handling. — [src/virtualenv/config/cli/parser.py#L101-L124](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/config/cli/parser.py#L101-L124) [src/virtualenv/config/cli/parser.py#L160-L166](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/config/cli/parser.py#L160-L166) [src/virtualenv/create/via_global_ref/api.py#L54-L69](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/create/via_global_ref/api.py#L54-L69)
- For seeding edits, read BaseEmbed, acquisition, bundle selection, image installer, and embedded metadata together; preserve the >=3.12 setuptools default, wheel no-op deprecation, hash table, and target-version rejection. — [src/virtualenv/seed/embed/base_embed.py#L35-L89](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/seed/embed/base_embed.py#L35-L89) [src/virtualenv/seed/embed/base_embed.py#L117-L140](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/seed/embed/base_embed.py#L117-L140) [src/virtualenv/seed/wheels/embed/__init__.py#L56-L108](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/seed/wheels/embed/__init__.py#L56-L108) [src/virtualenv/seed/wheels/acquire.py#L80-L105](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/seed/wheels/acquire.py#L80-L105)
- For generated-file edits, preserve single-pass quoted template substitution and line-boundary collapse in pyvenv.cfg; retain the Python <3.10 import-hook gate and guarded foreign-redirect handling. — [src/virtualenv/activation/via_template.py#L84-L103](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/activation/via_template.py#L84-L103) [src/virtualenv/create/pyenv_cfg.py#L53-L68](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/create/pyenv_cfg.py#L53-L68) [src/virtualenv/create/via_global_ref/api.py#L113-L126](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/create/via_global_ref/api.py#L113-L126) [src/virtualenv/create/creator.py#L270-L288](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/src/virtualenv/create/creator.py#L270-L288)
- Tests and CI were inspected, not executed. In a later execution-authorized task, use an existing tox interpreter environment with a focused pytest path first, add --int for integration selection, and use separate property/tasks environments; configured CI jobs and thresholds are not passing results. — [tox.toml#L25-L55](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/tox.toml#L25-L55) [tox.toml#L151-L187](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/tox.toml#L151-L187) [tox.toml#L214-L228](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/tox.toml#L214-L228) [tests/conftest.py#L63-L77](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/tests/conftest.py#L63-L77)
- Follow complete parameter/return annotations and future annotations, Ruff's 120-column configuration, and allowed Towncrier fragment types; distinguish verification from tox fix, whose pre-commit hooks can modify files with unsafe fixes. — [docs/development.rst#L100-L125](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/docs/development.rst#L100-L125) [pyproject.toml#L215-L219](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/pyproject.toml#L215-L219) [pyproject.toml#L349-L356](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/pyproject.toml#L349-L356) [.pre-commit-config.yaml#L25-L52](https://github.com/pypa/virtualenv/blob/571bc2041dae5ecbd250d82ec7ef482cfd3c3b69/.pre-commit-config.yaml#L25-L52)

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)
