Repository navigation
Releases
Releases Β· pypa/pipenv
Release v2026.10.6
π€ AI-Generated Changelog
Fixed
- Exit with a non-zero status code when
safetycannot be installed or run duringcheck/scan, ensuring failures are properly signaled to calling processes - Read
Pipfileas UTF-8 incheck,scan, and--supportcommands, preventing errors with non-ASCII characters in Pipfile content - Render dependency graph using only characters supported by the terminal's stdout encoding, avoiding display errors in non-UTF-8 environments
Removed
- Cleaned up unused internal code with no user-facing impact
π Full Changelog: v2026.10.5...v2026.10.6
Release v2026.10.5
π€ AI-Generated Changelog
Fixed
- Fixed
--trusted-hostarguments being flagged as secrets in CodeQL security scanning - Fixed package name parsing in
pipenv updateto correctly handle requirement specifiers as arguments - Fixed
requirementscommand to emit--trusted-hostfor sources withverify_ssl = false - Fixed
requirementscommand to correctly joinos_markersandmarkerswithand - Fixed
requirementscommand to preserve markers for git/VCS entries - Fixed
uninstallcommand to exit with a non-zero code when pip uninstall fails - Fixed
uninstallcommand to report why it exits 1 when no virtualenv exists - Fixed pylock group name normalization and added rejection of category name collisions
- Fixed pylock to preserve all categories when reading from
pylock.toml - Fixed pylock to keep custom dependency groups in
developandrequires-pythonaspython_version - Fixed pylock to classify packages correctly based on whether they install for default groups
- Fixed docs search by replacing stale Algolia search with Sphinx search
- Fixed integration tests to fail fast when a different
pipenvversion would be tested than the checked-out one
Changed
- Refactored
--trusted-hostlogic to be shared betweenrequirementsandinstall, preserving environment-variable-defined hosts - Raised dependency security version floors and extended Python version support to 3.11β3.15
- Dropped Python 3.10 support and addressed related code quality findings
Security
- Raised minimum versions of dependencies to address known security vulnerabilities
π Full Changelog: v2026.10.4...v2026.10.5
Release v2026.10.4
π€ AI-Generated Changelog
Added
- Added interactive
pipenv initcommand for creating a Pipfile with guided prompts
Fixed
- Fixed
pipenv install -rto decode requirements files using the same encoding detection as pip - Fixed
pipenv auditto exit with a non-zero status code whenpip-auditcannot be run - Fixed
pipenv graphto print the missing virtualenv warning to stderr instead of stdout - Fixed
pipenv outdatedto correctly interpolate the required version in skipped-update messages - Fixed lockfile replacement to be atomic, preventing corruption on interrupted writes
- Fixed
pipenv installto restore the Pipfile byte-for-byte when installation fails, including rolling back changes made bypipenv init - Fixed Pipfile to be read and written as UTF-8 consistently across all operations
π Full Changelog: v2026.10.3...v2026.10.4
Release v2026.10.3
π€ AI-Generated Changelog
Fixed
- Forward extra keyword arguments in the Windows
rmtreetest shim to ensure compatibility with Python 3.14.9
Security
- Bump
pipdependency to latest version (includes 3 updates) - Bump
certifiin the/examplesdirectory to address potential security vulnerabilities
π Full Changelog: v2026.10.2...v2026.10.3
Release v2026.10.2
π€ AI-Generated Changelog
Fixed
- Read
Pipfile,Pipfile.lock,pylock.toml, andpyproject.tomlas UTF-8 with BOM support (utf-8-sig) to handle files with byte order marks - Include the
taskspackage in the sdist distribution - Resolve security quality alerts in pipenv's non-vendored code
Changed
- Vendor pip 26.2.2
- Update certifi to 2026.10.19
- Enable mypy type checking for pipenv's own code
- Record runner hardware in benchmark results
π Full Changelog: v2026.10.1...v2026.10.2
Release v2026.10.1
π€ AI-Generated Changelog
Fixed
- Skip
*(wildcard) versions when pinning resolved default dependencies as constraints, preventing invalid constraint generation - Write a single
pylock.tomlentry for packages that are locked in both default and develop groups, avoiding duplicate entries - Brace bare
$VARreferences in source URLs when generating requirements with--no-lock, ensuring proper shell variable expansion - Preserve non-group conditions in
pylock.tomlmarkers for dependencies that reference a dependency group - Correct artifact metadata (hashes) in
pylock.tomloutput from locked package data
Changed
- Prefetch pure-Python index manifests in parallel to speed up cold resolver performance
- Reuse resolver manifests when prefetching installable wheels, reducing redundant network requests
- Avoid redundant cold index refetches during wheel prefetch operations
π Full Changelog: v2026.10.0...v2026.10.1
Release v2026.10.0
π€ AI-Generated Changelog
Added
- Support
file://URLs as package index and mirror sources - Support non-Git local VCS schemes in URL unpacking
- Accept newer minor
pylock.tomllock versions with a warning instead of failing
Fixed
- Correctly check
pylock.tomlrequires-pythonandenvironmentsfields before installing - Pick the correct matching entry for packages listed more than once in
pylock.toml - Preserve local, VCS, and file sources when generating
pylock.toml - Convert
file://requirements.txt URLs to paths before resolving - Fix malformed pip line for file URL extras on
--skip-lockpath - Fix
file://Pipfile entries being mis-handled as filesystem paths on Windows - Fix VCS Pipfile entries collapsing when the name also resolves via the index
- Fix broken pip line when building
file=...+extras=[...]dependencies - Preserve existing Pipfile sources during requirements import
- Preserve requirements-file source order during deduplication
- Make requirements.txt
-i <url>replace the default index rather than add to it - Skip
--trusted-hostfor hostless source URLs regardless ofverify_ssl - Fix insecure
verify_ssl=falsehandling on hardcodedfile://source blocks - Recalculate lock hash after writing temporary Pipfile source
Changed
- Vendor bumps:
packagingto 26.3,pletteto 2.4.0,buildto 1.6.1,pyproject_hooksto 1.3.3,dotenvto 1.2.4 - Vendor
tomlifor hatchling's build isolation on Python < 3.11 - Consolidate
VCS_SCHEMESintopipenv.utils.constants - Migrate integration tests off real network dependencies to offline
file://-based fixtures
π Full Changelog: v2026.9.1...v2026.10.0
Release v2026.9.1
π€ AI-Generated Changelog
Fixed
- Fixed a crash in the pure-Python resolver backend when checking hashes for sdist packages
- Resolved incorrect resolver backend precedence when
resolver_backendis set in[pipenv]configuration outside of a lock operation
Changed
- The
resolver_backendsetting in[pipenv]is now honored consistently outside of lock operations - Improved resolver performance by memoizing pure-Python
find_matchesresults during backtracking and caching parsed package manifests - Both resolver backends are now benchmarked for better performance comparison and selection
π Full Changelog: v2026.9.0...v2026.9.1
Release v2026.9.0
π€ 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
Release v2026.8.0
π€ AI-Generated Changelog
Added
- Parallel index manifest prefetching (
PIPENV_PREFETCH_INDEX_MANIFESTS): New experimental feature that fetches package index manifests concurrently during lock operations, significantly reducing resolution time for large dependency sets - PEP 691 JSON Simple API support: Native parsing of PEP 691 JSON responses from package indexes alongside existing PEP 503 HTML parsing
- Disk-based manifest cache (
ParsedManifestCache): JSON-on-disk cache with TTL and atomic writes to avoid redundant index fetches across lock operations - Pluggable resolver backend scaffolding: Foundation for swappable resolver backends, enabling future customization of dependency resolution strategies
- Per-source
verify_sslfan-out for prefetcher: Each index source now independently respects its SSL verification and certificate settings during parallel prefetch peek_etagstale-cache short-circuit: Resolver can now skip full manifest fetches when ETags indicate cached data is still freshprefetch_index_manifestssetting: New boolean configuration option to enable/disable the parallel prefetch feature- Reject Pipfile entries with unrecognized keys, providing clearer errors on misconfiguration
Changed
- Pipfile subsystem extracted from
Project: Internal refactor completing Initiative D;project.build_scriptand related attributes now live onproject.pipfile - Lockfile subsystem extracted from
Project: Lockfile state management is now a dedicated subsystem unpack_url/get_http_urlmoved topipenv/utils/unpack.py; legacyrequirementslib.pyremoved- Resolver backend selection is now stamped onto resolver requests for improved traceability
- Prior
Pipfile.lockpins are fed as pip constraints on warm relock to speed up re-locking (reverted and re-landed with fixes) - Resolver subprocess skipped entirely for empty Pipfile categories, reducing unnecessary process overhead
- Vendor pip updated to 26.2.1
Fixed
- Corrupt lockfile recovery: Fixed return path when recovering from a corrupt lockfile
- Editable VCS extras now resolve correctly with pip 26.2
- netrc login handling: Quote-only netrc credentials are now treated as empty on Python 3.10+, preventing auth failures
- Manifest cache retry on Windows:
os.replaceis retried onERROR_ACCESS_DENIEDwith a wall-clock budget, fixing cache write failures on Windows - Missing Pipfile hashes are now handled gracefully instead of raising an error
- Plette Pipfile attribute delegation fixed after subsystem refactor
resolver_backendis now correctly plumbed through thevenv_resolve_depscall chain- Prerelease versions are now allowed as a fallback at final lower bounds
- Stale
project.build_scriptcall sites migrated toproject.pipfile.build_script - Test for Pipfile version warning updated after subsystem extraction
test_lockfile_location_is_pipfile_plus_lockmade OS-portable- Fixed latest hash and virtualenv guidance in documentation/output
- Fixed first-party CodeQL reliability errors
- Deferred pip-internal imports (
InstallCommand,unpack,Downloader, network imports) to improve startup performance
Security
- CodeQL reliability improvements to reduce false negatives in static analysis
π Full Changelog: v2026.7.1...v2026.8.0