CodeVetter · Repo Unpack · Contributor handoff
pypa/virtualenv
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.
- For discovery work, distinguish local adaptation from external implementation: Builtin forwards to python-discovery, and discovery/py_info.py only re-exports PythonInfo.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.