🤖 AI-Generated Changelog
Added
pipenv sync --clean: New flag to automatically uninstall packages that are present in the environment but missing from the lockfile, keeping environments in sync with declared dependencies- Pure-Python resolver backend: New experimental
--backendCLI flag and[pipenv] resolver_backendPipfile setting to opt into an alternative pure-Python dependency resolver (Initiative G), featuring:- PEP 517 isolated environment builds for sdist metadata extraction
- PEP 658 metadata fetching with wheel-head fallback
- Parallel wheel pre-fetch before installation (~30% cold-install speedup)
- Transitive marker propagation via
Requirement.introducing_marker - Hash collection from all distfile siblings
- Yanked release support per PEP 592
- Per-package config settings:
pipenv installnow persists configuration settings on a per-package basis, isolating options between packages
Changed
- Pipfile package name recasing is now opt-in via
[pipenv] package_name_casePipfile setting (previously controlled byPIPENV_RECASE_PIPFILEenv var); recasing is disabled by default for performance - virtualenv minimum version raised to
>=21.14.6 - Resolver round cap raised to pip's
200_000to handle complex dependency graphs
Fixed
- Requirements export: PyPI mirror selection is now honored when exporting requirements, fixing cases where the configured mirror was ignored
- Dependency markers:
not inexclusions forpython_versionare no longer incorrectly collapsed; legacynot inexclusions are preserved exactly, and==version groups are version-sorted pipenv sync --dry-run: No longer uninstalls packages; all lockfile sections are preserved during dry runspipenv --envs: Fixed broken documentation URL to point to a valid page- Redundant
--upgradeflag dropped frompip installcalls during sync - sdist archive names are now sanitized and urllib3 timeouts are applied correctly
- Effective resolver backend is now included in the resolution cache key, preventing stale cache hits across backend switches
- Pure-Python resolver now correctly threads extras through
find_matches/get_dependenciesand applies pip's narrow requirement selection
Documentation
- Added note that
pipenv syncdoes not remove packages missing from the lockfile (addressed by new--cleanflag)
🔗 Full Changelog: v2026.8.0...v2026.9.0