🤖 AI-Generated Changelog
Added
- Added wall-clock timeout enforcement for the resolver subprocess via
PIPENV_RESOLVER_TIMEOUT_Senvironment variable, making hung resolver processes recoverable - Added structured diagnostic logging from the resolver subprocess, populating
Diagnostics.resolver_logwith resolve records for improved debugging - Added support for major-only Python version specifiers (e.g.,
python_version = "3") in environment markers
Changed
- Unified in-process and subprocess resolver paths into a single
resolve_for_pipenvfunction, simplifying the resolver architecture - Resolver subprocess now communicates using typed
ResolverRequest/ResolverResponseschemas, improving protocol stability and error surfacing - Improved resolver error reporting: subprocess errors are now surfaced via response file with structured messages
- PIPENV_PYPI_MIRROR credentials are now written to the resolver's netrc, fixing authentication in mirrored index scenarios
- Indexes without upload times are now tolerated by the resolver
- Marker-skipped dependency entries are now tolerated during resolution, and subprocess stderr is forwarded again
Fixed
- Fixed crash when locking for the first time or adding a new dependency category (
old_lock_datainitialization) - Fixed
do_initso thatignore_pipfile/skip_lockflags are only pinned during initialization, not propagated to dependency installation - Fixed
Sources.allto always return a list - Fixed
is_virtual_environmentto tolerate virtual environment directories without abin/Scriptssubdirectory - Fixed resolver to bootstrap pipenv on
sys.pathbefore importing the schema module - Fixed resolver subprocess to correctly rehydrate
resolved_default_depsas a dict rather than a list - Fixed
-rflag missing from READMErequirements.txtexample
Security
- Updated pip and cryptography dependencies to address security vulnerabilities
Deprecated
- Scheduled removal of legacy
checkcommand behaviors targeting the 2027 major release
🔗 Full Changelog: v2026.6.2...v2026.7.0