Release and Version History¶
2018.11.26 (2018-11-26)¶
Bug Fixes¶
Environment variables are expanded correctly before running scripts on POSIX.`#3178 <https://github.com/pypa/pipenv/issues/3178>`_
Pipenv will no longer disable user-mode installation when the
--system
flag is passed in.`#3222 <https://github.com/pypa/pipenv/issues/3222>`_Fixed an issue with attempting to render unicode output in non-unicode locales.`#3223 <https://github.com/pypa/pipenv/issues/3223>`_
Fixed a bug which could cause failures to occur when parsing python entries from global pyenv version files.`#3224 <https://github.com/pypa/pipenv/issues/3224>`_
Fixed an issue which prevented the parsing of named extras sections from certain
setup.py
files.`#3230 <https://github.com/pypa/pipenv/issues/3230>`_Correctly detect the virtualenv location inside an activated virtualenv.`#3231 <https://github.com/pypa/pipenv/issues/3231>`_
Fixed a bug which caused spinner frames to be written to stdout during locking operations which could cause redirection pipes to fail.`#3239 <https://github.com/pypa/pipenv/issues/3239>`_
Fixed a bug that editable pacakges can’t be uninstalled correctly.`#3240 <https://github.com/pypa/pipenv/issues/3240>`_
Corrected an issue with installation timeouts which caused dependency resolution to fail for longer duration resolution steps.`#3244 <https://github.com/pypa/pipenv/issues/3244>`_
Adding normal pep 508 compatible markers is now fully functional when using VCS dependencies.`#3249 <https://github.com/pypa/pipenv/issues/3249>`_
Updated
requirementslib
andpythonfinder
for multiple bugfixes.`#3254 <https://github.com/pypa/pipenv/issues/3254>`_Pipenv will now ignore hashes when installing with
--skip-lock
.`#3255 <https://github.com/pypa/pipenv/issues/3255>`_Fixed an issue where pipenv could crash when multiple pipenv processes attempted to create the same directory.`#3257 <https://github.com/pypa/pipenv/issues/3257>`_
Fixed an issue which sometimes prevented successful creation of project pipfiles.`#3260 <https://github.com/pypa/pipenv/issues/3260>`_
pipenv install
will now unset thePYTHONHOME
environment variable when not combined with--system
.`#3261 <https://github.com/pypa/pipenv/issues/3261>`_Pipenv will ensure that warnings do not interfere with the resolution process by suppressing warnings’ usage of standard output and writing to standard error instead.`#3273 <https://github.com/pypa/pipenv/issues/3273>`_
Fixed an issue which prevented variables from the environment, such as
PIPENV_DEV
orPIPENV_SYSTEM
, from being parsed and implemented correctly.`#3278 <https://github.com/pypa/pipenv/issues/3278>`_Clear pythonfinder cache after Python install`#3287 <https://github.com/pypa/pipenv/issues/3287>`_
Fixed a race condition in hash resolution for dependencies for certain dependencies with missing cache entries or fresh Pipenv installs.`#3289 <https://github.com/pypa/pipenv/issues/3289>`_
Pipenv will now respect top-level pins over VCS dependency locks.`#3296 <https://github.com/pypa/pipenv/issues/3296>`_
Vendored Libraries¶
Update vendored dependencies to resolve resolution output parsing and python finding: - pythonfinder 1.1.9 -> 1.1.10 - requirementslib 1.3.1 -> 1.3.3 - vistir 0.2.3 -> 0.2.5``#3280
2018.11.14 (2018-11-14)¶
Features & Improvements¶
Improved exceptions and error handling on failures. #1977
Added persistent settings for all CLI flags via
PIPENV_{FLAG_NAME}
environment variables by enablingauto_envvar_prefix=PIPENV
in click (implements PEEP-0002). #2200Added improved messaging about available but skipped updates due to dependency conflicts when running
pipenv update --outdated
. #2411Added environment variable PIPENV_PYUP_API_KEY to add ability to override the bundled pyup.io API key. #2825
Added additional output to
pipenv update --outdated
to indicate that the operation succeded and all packages were already up to date. #2828Updated
crayons
patch to enable colors on native powershell but swap native blue for magenta. #3020Added support for
--bare
topipenv clean
, and fixedpipenv sync --bare
to actually reduce output. #3041Added windows-compatible spinner via upgraded
vistir
dependency. #3089Added support for python installations managed by
asdf
. #3096
Improved runtime performance of no-op commands such as
pipenv --venv
by around 2/3. #3158Do not show error but success for running
pipenv uninstall --all
in a fresh virtual environment. #3170Improved asynchronous installation and error handling via queued subprocess paralleization. #3217
Bug Fixes¶
Remote non-PyPI artifacts and local wheels and artifacts will now include their own hashes rather than including hashes from
PyPI
. #2394Non-ascii characters will now be handled correctly when parsed by pipenv’s
ToML
parsers. #2737Updated
pipenv uninstall
to respect the--skip-lock
argument. #2848Fixed a bug which caused uninstallation to sometimes fail to successfullly remove packages from
Pipfiles
with comments on preceding or following lines. #2885, #3099Pipenv will no longer fail when encountering python versions on Windows that have been uninstalled. #2983
Fixed unnecessary extras are added when translating markers #3026
Fixed a virtualenv creation issue which could cause new virtualenvs to inadvertently attempt to read and write to global site packages. #3047
Fixed an issue with virtualenv path derivation which could cause errors, particularly for users on WSL bash. #3055
Fixed a bug which caused
Unexpected EOF
errors to be thrown whenpip
was waiting for input from users who had put login credentials in environment variables. #3088Fixed a bug in
requirementslib
which prevented successful installation from mercurial repositories. #3090Fixed random resource warnings when using pyenv or any other subprocess calls. #3094
Fixed a bug which sometimes prevented cloning and parsing
mercurial
requirements. #3096
Fixed an issue in
delegator.py
related to subprocess calls when usingPopenSpawn
to stream output, which sometimes threw unexpectedEOF
errors. #3102, #3114, #3117Fix the path casing issue that makes pipenv clean fail on Windows #3104
Pipenv will avoid leaving build artifacts in the current working directory. #3106
Fixed issues with broken subprocess calls leaking resource handles and causing random and sporadic failures. #3109
Fixed an issue which caused
pipenv clean
to sometimes clean packages from the basesite-packages
folder or fail entirely. #3113Updated
pythonfinder
to correct an issue with unnesting of nested paths when searching for python versions. #3121Added additional logic for ignoring and replacing non-ascii characters when formatting console output on non-UTF-8 systems. #3131
Fix virtual environment discovery when PIPENV_VENV_IN_PROJECT is set, but the in-project .venv is a file. #3134
Hashes for remote and local non-PyPI artifacts will now be included in
Pipfile.lock
during resolution. #3145Fix project path hashing logic in purpose to prevent collisions of virtual environments. #3151
Fix package installation when the virtual environment path contains parentheses. #3158
Azure Pipelines YAML files are updated to use the latest syntax and product name. #3164
Fixed new spinner success message to write only one success message during resolution. #3183
Pipenv will now correctly respect the
--pre
option when used withpipenv install
. #3185Fix a bug where exception is raised when run pipenv graph in a project without created virtualenv #3201
When sources are missing names, names will now be derived from the supplied URL. #3216
Vendored Libraries¶
Updated
pythonfinder
to correct an issue with unnesting of nested paths when searching for python versions. #3061, #3121- Updated vendored dependencies:
certifi 2018.08.24 => 2018.10.15
urllib3 1.23 => 1.24
requests 2.19.1 => 2.20.0
shellingham ``1.2.6 => 1.2.7
tomlkit 0.4.4. => 0.4.6
vistir 0.1.6 => 0.1.8
pythonfinder 0.1.2 => 0.1.3
requirementslib 1.1.9 => 1.1.10
backports.functools_lru_cache 1.5.0 (new)
cursor 1.2.0 (new)
#3089
- Updated vendored dependencies:
requests 2.19.1 => 2.20.1
tomlkit 0.4.46 => 0.5.2
vistir 0.1.6 => 0.2.4
pythonfinder 1.1.2 => 1.1.8
requirementslib 1.1.10 => 1.3.0
#3096
Switch to
tomlkit
for parsing and writing. Dropprettytoml
andcontoml
from vendors. #3191Updated
requirementslib
to aid in resolution of local and remote archives. #3196
2018.10.13 (2018-10-13)¶
Bug Fixes¶
Fixed a bug in
pipenv clean
which caused global packages to sometimes be inadvertently targeted for cleanup. #2849Fix broken backport imports for vendored vistir. #2950, #2955, #2961
Fixed a bug with importing local vendored dependencies when running
pipenv graph
. #2952Fixed a bug which caused executable discovery to fail when running inside a virtualenv. #2957
Fix parsing of outline tables. #2971
Fixed a bug which caused
verify_ssl
to fail to drop through topip install
correctly astrusted-host
. #2979Fixed a bug which caused canonicalized package names to fail to resolve against PyPI. #2989
Enhanced CI detection to detect Azure Devops builds. #2993
Fixed a bug which prevented installing pinned versions which used redirection symbols from the command line. #2998
Fixed a bug which prevented installing the local directory in non-editable mode. #3005
2018.10.9 (2018-10-09)¶
Features & Improvements¶
Added environment variables PIPENV_VERBOSE and PIPENV_QUIET to control output verbosity without needing to pass options. #2527
Updated test-pypi addon to better support json-api access (forward compatibility). Improved testing process for new contributors. #2568
Greatly enhanced python discovery functionality:
Added pep514 (windows launcher/finder) support for python discovery.
Introduced architecture discovery for python installations which support different architectures. #2582
Added support for
pipenv shell
on msys and cygwin/mingw/git bash for Windows. #2641Enhanced resolution of editable and VCS dependencies. #2643
Deduplicate and refactor CLI to use stateful arguments and object passing. See this issue for reference. #2814
Behavior Changes¶
Virtual environment activation for
run
is revised to improve interpolation with other Python discovery tools. #2503Improve terminal coloring to display better in Powershell. #2511
Invoke
virtualenv
directly for virtual environment creation, instead of depending onpew
. #2518pipenv --help
will now include short help descriptions. #2542Add
COMSPEC
to fallback option (along withSHELL
andPYENV_SHELL
) if shell detection fails, improving robustness on Windows. #2651Fallback to shell mode if run fails with Windows error 193 to handle non-executable commands. This should improve usability on Windows, where some users run non-executable files without specifying a command, relying on Windows file association to choose the current command. #2718
Bug Fixes¶
Fixed a bug which prevented installation of editable requirements using
ssh://
style urls #1393VCS Refs for locked local editable dependencies will now update appropriately to the latest hash when running
pipenv update
. #1690.tar.gz
and.zip
artifacts will now have dependencies installed even when they are missing from the lockfile. #2173The command line parser will now handle multiple
-e/--editable
dependencies properly via click’s option parser to help mitigate future parsing issues. #2279Fixed the ability of pipenv to parse
dependency_links
fromsetup.py
whenPIP_PROCESS_DEPENDENCY_LINKS
is enabled. #2434Fixed a bug which could cause
-i/--index
arguments to sometimes be incorrectly picked up in packages. This is now handled in the command line parser. #2494Fixed non-deterministic resolution issues related to changes to the internal package finder in
pip 10
. #2499, #2529, #2589, #2666, #2767, #2785, #2795, #2801, #2824, #2862, #2879, #2894, #2933Fix subshell invocation on Windows for Python 2. #2515
Fixed a bug which sometimes caused pipenv to throw a
TypeError
or to run into encoding issues when writing lockfiles on python 2. #2561Improve quoting logic for
pipenv run
so it works better with Windows built-in commands. #2563Fixed a bug related to parsing vcs requirements with both extras and subdirectory fragments. Corrected an issue in the
requirementslib
parser which led to some markers being discarded rather than evaluated. #2564Fixed multiple issues with finding the correct system python locations. #2582
Catch JSON decoding error to prevent exception when the lock file is of invalid format. #2607
Fixed a rare bug which could sometimes cause errors when installing packages with custom sources. #2610
Update requirementslib to fix a bug which could raise an
UnboundLocalError
when parsing malformed VCS URIs. #2617Fixed an issue which prevented passing multiple
--ignore
parameters topipenv check
. #2632Fixed a bug which caused attempted hashing of
ssh://
style URIs which could cause failures during installation of private ssh repositories. - Corrected path conversion issues which caused certain editable VCS paths to be converted tossh://
URIs improperly. #2639Fixed a bug which caused paths to be formatted incorrectly when using
pipenv shell
in bash for windows. #2641Dependency links to private repositories defined via
ssh://
schemes will now install correctly and skip hashing as long asPIP_PROCESS_DEPENDENCY_LINKS=1
. #2643Fixed a bug which sometimes caused pipenv to parse the
trusted_host
argument to pip incorrectly when parsing source URLs which specifyverify_ssl = false
. #2656Prevent crashing when a virtual environment in
WORKON_HOME
is faulty. #2676Fixed virtualenv creation failure when a .venv file is present in the project root. #2680
Fixed a bug which could cause the
-e/--editable
argument on a dependency to be accidentally parsed as a dependency itself. #2714Correctly pass verbose and debug flags to the resolver subprocess so it generates appropriate output. This also resolves a bug introduced by the fix to #2527. #2732
All markers are now included in
pipenv lock --requirements
output. #2748Fixed a bug in marker resolution which could cause duplicate and non-deterministic markers. #2760
Fixed a bug in the dependency resolver which caused regular issues when handling
setup.py
based dependency resolution. #2766- Updated vendored dependencies:
pip-tools
(updated and patched to latest w/pip 18.0
compatibilty)pip 10.0.1 => 18.0
click 6.7 => 7.0
toml 0.9.4 => 0.10.0
pyparsing 2.2.0 => 2.2.2
delegator 0.1.0 => 0.1.1
attrs 18.1.0 => 18.2.0
distlib 0.2.7 => 0.2.8
packaging 17.1.0 => 18.0
passa 0.2.0 => 0.3.1
pip_shims 0.1.2 => 0.3.1
plette 0.1.1 => 0.2.2
pythonfinder 1.0.2 => 1.1.0
pytoml 0.1.18 => 0.1.19
requirementslib 1.1.16 => 1.1.17
shellingham 1.2.4 => 1.2.6
tomlkit 0.4.2 => 0.4.4
vistir 0.1.4 => 0.1.6
#2802,
Fixed a bug where pipenv crashes when the WORKON_HOME directory does not exist. #2877
Fixed pip is not loaded from pipenv’s patched one but the system one #2912
Fixed various bugs related to
pip 18.1
release which prevented locking, installation, and syncing, and dumping to arequirements.txt
file. #2924
Vendored Libraries¶
Pew is no longer vendored. Entry point
pewtwo
, packagespipenv.pew
andpipenv.patched.pew
are removed. #2521Update
pythonfinder
to major release1.0.0
for integration. #2582Update requirementslib to fix a bug which could raise an
UnboundLocalError
when parsing malformed VCS URIs. #2617Vendored new libraries
vistir
andpip-shims
,tomlkit
,modutil
, andplette
.Update vendored libraries: -
scandir
to1.9.0
-click-completion
to0.4.1
-semver
to2.8.1
-shellingham
to1.2.4
-pytoml
to0.1.18
-certifi
to2018.8.24
-ptyprocess
to0.6.0
-requirementslib
to1.1.5
-pythonfinder
to1.0.2
-pipdeptree
to0.13.0
-python-dotenv
to0.9.1
#2639
- Updated vendored dependencies:
pip-tools
(updated and patched to latest w/pip 18.0
compatibilty)pip 10.0.1 => 18.0
click 6.7 => 7.0
toml 0.9.4 => 0.10.0
pyparsing 2.2.0 => 2.2.2
delegator 0.1.0 => 0.1.1
attrs 18.1.0 => 18.2.0
distlib 0.2.7 => 0.2.8
packaging 17.1.0 => 18.0
passa 0.2.0 => 0.3.1
pip_shims 0.1.2 => 0.3.1
plette 0.1.1 => 0.2.2
pythonfinder 1.0.2 => 1.1.0
pytoml 0.1.18 => 0.1.19
requirementslib 1.1.16 => 1.1.17
shellingham 1.2.4 => 1.2.6
tomlkit 0.4.2 => 0.4.4
vistir 0.1.4 => 0.1.6
#2902,
Improved Documentation¶
Simplified the test configuration process. #2568
Updated documentation to use working fortune cookie addon. #2644
Added additional information about troubleshooting
pipenv shell
by using the the$PIPENV_SHELL
environment variable. #2671Added a link to
PEP-440
version specifiers in the documentation for additional detail. #2674Added simple example to README.md for installing from git. #2685
Stopped recommending –system for Docker contexts. #2762
Fixed the example url for doing “pipenv install -e some-repo-url#egg=something”, it was missing the “egg=” in the fragment identifier. #2792
Fixed link to the “be cordial” essay in the contribution documentation. #2793
Clarify pipenv install documentation #2844
Replace reference to uservoice with PEEP-000 #2909
2018.7.1 (2018-07-01)¶
Features & Improvements¶
All calls to
pipenv shell
are now implemented from the ground up using shellingham, a custom library which was purpose built to handle edge cases and shell detection. #2371Added support for python 3.7 via a few small compatibility / bugfixes. #2427, #2434, #2436
Added new flag
pipenv --support
to replace the diagnostic commandpython -m pipenv.help
. #2477, #2478Improved import times and CLI runtimes with minor tweaks. #2485
Bug Fixes¶
Fixed an ongoing bug which sometimes resolved incompatible versions into lockfiles. #1901
Fixed a bug which caused errors when creating virtualenvs which contained leading dash characters. #2415
Fixed a logic error which caused
--deploy --system
to overwrite editable vcs packages in the pipfile before installing, which caused any installation to fail by default. #2417Updated requirementslib to fix an issue with properly quoting markers in VCS requirements. #2419
Installed new vendored jinja2 templates for
click-completion
which were causing template errors for users with completion enabled. #2422Added support for python 3.7 via a few small compatibility / bugfixes. #2427
Fixed an issue reading package names from
setup.py
files in projects which imported utilities such asversioneer
. #2433Pipenv will now ensure that its internal package names registry files are written with unicode strings. #2450
Fixed a bug causing requirements input as relative paths to be output as absolute paths or URIs. Fixed a bug affecting normalization of
git+git@host
uris. #2453Pipenv will now always use
pathlib2
forPath
based filesystem interactions by default onpython<3.5
. #2454Fixed a bug which prevented passing proxy PyPI indexes set with
--pypi-mirror
from being passed to pip during virtualenv creation, which could cause the creation to freeze in some cases. #2462Using the
python -m pipenv.help
command will now use proper encoding for the host filesystem to avoid encoding issues. #2466The new
jinja2
templates forclick_completion
will now be included in pipenv source distributions. #2479Resolved a long-standing issue with re-using previously generated
InstallRequirement
objects for resolution which could causePKG-INFO
file information to be deleted, raising aTypeError
. #2480Resolved an issue parsing usernames from private PyPI URIs in
Pipfiles
by updatingrequirementslib
. #2484
Vendored Libraries¶
All calls to
pipenv shell
are now implemented from the ground up using shellingham, a custom library which was purpose built to handle edge cases and shell detection. #2371Updated requirementslib to fix an issue with properly quoting markers in VCS requirements. #2419
Installed new vendored jinja2 templates for
click-completion
which were causing template errors for users with completion enabled. #2422Add patch to
prettytoml
to support Python 3.7. #2426Patched
prettytoml.AbstractTable._enumerate_items
to handleStopIteration
errors in preparation of release of python 3.7. #2427Fixed an issue reading package names from
setup.py
files in projects which imported utilities such asversioneer
. #2433Updated
requirementslib
to version1.0.9
#2453Unraveled a lot of old, unnecessary patches to
pip-tools
which were causing non-deterministic resolution errors. #2480Resolved an issue parsing usernames from private PyPI URIs in
Pipfiles
by updatingrequirementslib
. #2484
2018.6.25 (2018-06-25)¶
Features & Improvements¶
Pipenv-created virtualenvs will now be associated with a
.project
folder (features can be implemented on top of this later or users may choose to usepipenv-pipes
to take full advantage of this.) #1861Virtualenv names will now appear in prompts for most Windows users. #2167
Added support for cmder shell paths with spaces. #2168
Added nested JSON output to the
pipenv graph
command. #2199Dropped vendored pip 9 and vendored, patched, and migrated to pip 10. Updated patched piptools version. #2255
PyPI mirror URLs can now be set to override instances of PyPI urls by passing the
--pypi-mirror
argument from the command line or setting thePIPENV_PYPI_MIRROR
environment variable. #2281Virtualenv activation lines will now avoid being written to some shell history files. #2287
Pipenv will now only search for
requirements.txt
files when creating new projects, and during that time only if the user doesn’t specify packages to pass in. #2309Added support for mounted drives via UNC paths. #2331
Added support for Windows Subsystem for Linux bash shell detection. #2363
Pipenv will now generate hashes much more quickly by resolving them in a single pass during locking. #2384
pipenv run
will now avoid spawning additionalCOMSPEC
instances to run commands in when possible. #2385Massive internal improvements to requirements parsing codebase, resolver, and error messaging. #2388
pipenv check
now may take multiple of the additional argument--ignore
which takes a parametercve_id
for the purpose of ignoring specific CVEs. #2408
Behavior Changes¶
Pipenv will now parse & capitalize
platform_python_implementation
markers .. warning:: This could cause an issue if you have an out of datePipfile
which lowercases the comparison value (e.g.cpython
instead ofCPython
). #2123Pipenv will now only search for
requirements.txt
files when creating new projects, and during that time only if the user doesn’t specify packages to pass in. #2309
Bug Fixes¶
Massive internal improvements to requirements parsing codebase, resolver, and error messaging. #1962, #2186, #2263, #2312
Pipenv will now parse & capitalize
platform_python_implementation
markers. #2123Fixed a bug with parsing and grouping old-style
setup.py
extras during resolution #2142Fixed a bug causing pipenv graph to throw unhelpful exceptions when running against empty or non-existent environments. #2161
Fixed a bug which caused
--system
to incorrectly abort when users were in a virtualenv. #2181Removed vendored
cacert.pem
which could cause issues for some users with custom certificate settings. #2193Fixed a regression which led to direct invocations of
virtualenv
, rather than calling it by module. #2198Locking will now pin the correct VCS ref during
pipenv update
runs. Runningpipenv update
with a new vcs ref specified in thePipfile
will now properly obtain, resolve, and install the specified dependency at the specified ref. #2209pipenv clean
will now correctly ignore comments frompip freeze
when cleaning the environment. #2262Resolution bugs causing packages for incompatible python versions to be locked have been fixed. #2267
Fixed a bug causing pipenv graph to fail to display sometimes. #2268
Updated
requirementslib
to fix a bug in pipfile parsing affecting relative path conversions. #2269Windows executable discovery now leverages
os.pathext
. #2298Fixed a bug which caused
--deploy --system
to inadvertently create a virtualenv before failing. #2301Fixed an issue which led to a failure to unquote special characters in file and wheel paths. #2302
VCS dependencies are now manually obtained only if they do not match the requested ref. #2304
Added error handling functionality to properly cope with single-digit
Requires-Python
metatdata with no specifiers. #2377pipenv update
will now always run the resolver and lock before ensuring your dependencies are in sync with your lockfile. #2379Resolved a bug in our patched resolvers which could cause nondeterministic resolution failures in certain conditions. Running
pipenv install
with no arguments in a project with only aPipfile
will now correctly lock first for dependency resolution before installing. #2384Patched
python-dotenv
to ensure that environment variables always get encoded to the filesystem encoding. #2386
Improved Documentation¶
Vendored Libraries¶
Removed vendored
cacert.pem
which could cause issues for some users with custom certificate settings. #2193Dropped vendored pip 9 and vendored, patched, and migrated to pip 10. Updated patched piptools version. #2255
Updated
requirementslib
to fix a bug in pipfile parsing affecting relative path conversions. #2269Added custom shell detection library
shellingham
, a port of our changes topew
. #2363Patched
python-dotenv
to ensure that environment variables always get encoded to the filesystem encoding. #2386Updated vendored libraries. The following vendored libraries were updated:
distlib from version
0.2.6
to0.2.7
.jinja2 from version
2.9.5
to2.10
.pathlib2 from version
2.1.0
to2.3.2
.parse from version
2.8.0
to2.8.4
.pexpect from version
2.5.2
to2.6.0
.requests from version
2.18.4
to2.19.1
.idna from version
2.6
to2.7
.certifi from version
2018.1.16
to2018.4.16
.packaging from version
16.8
to17.1
.six from version
1.10.0
to1.11.0
.requirementslib from version
0.2.0
to1.0.1
.
In addition, scandir was vendored and patched to avoid importing host system binaries when falling back to pathlib2. #2368