- Environment variables are expanded correctly before running scripts on POSIX. #3178
- Pipenv will no longer disable user-mode installation when the
--system
flag is passed in. #3222 - Fixed an issue with attempting to render unicode output in non-unicode locales. #3223
- Fixed a bug which could cause failures to occur when parsing python entries from global pyenv version files. #3224
- Fixed an issue which prevented the parsing of named extras sections from certain
setup.py
files. #3230 - Correctly detect the virtualenv location inside an activated virtualenv. #3231
- Fixed a bug which caused spinner frames to be written to stdout during locking operations which could cause redirection pipes to fail. #3239
- Fixed a bug that editable pacakges can't be uninstalled correctly. #3240
- Corrected an issue with installation timeouts which caused dependency resolution to fail for longer duration resolution steps. #3244
- Adding normal pep 508 compatible markers is now fully functional when using VCS dependencies. #3249
- Updated
requirementslib
andpythonfinder
for multiple bugfixes. #3254 - Pipenv will now ignore hashes when installing with
--skip-lock
. #3255 - Fixed an issue where pipenv could crash when multiple pipenv processes attempted to create the same directory. #3257
- Fixed an issue which sometimes prevented successful creation of project pipfiles. #3260
pipenv install
will now unset thePYTHONHOME
environment variable when not combined with--system
. #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
- Fixed an issue which prevented variables from the environment, such as
PIPENV_DEV
orPIPENV_SYSTEM
, from being parsed and implemented correctly. #3278 - Clear pythonfinder cache after Python install. #3287
- Fixed a race condition in hash resolution for dependencies for certain dependencies with missing cache entries or fresh Pipenv installs. #3289
- Pipenv will now respect top-level pins over VCS dependency locks. #3296
- 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
- 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). #2200 - Added improved messaging about available but skipped updates due to dependency conflicts when running
pipenv update --outdated
. #2411 - Added 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. #2828 - Updated
crayons
patch to enable colors on native powershell but swap native blue for magenta. #3020 - Added support for
--bare
topipenv clean
, and fixedpipenv sync --bare
to actually reduce output. #3041 - Added windows-compatible spinner via upgraded
vistir
dependency. #3089 - Added support for python installations managed by
asdf
. #3096
- Added support for python installations managed by
- Improved runtime performance of no-op commands such as
pipenv --venv
by around 2/3. #3158 - Do not show error but success for running
pipenv uninstall --all
in a fresh virtual environment. #3170 - Improved asynchronous installation and error handling via queued subprocess paralleization. #3217
- Remote non-PyPI artifacts and local wheels and artifacts will now include their own hashes rather than including hashes from
PyPI
. #2394 - Non-ascii characters will now be handled correctly when parsed by pipenv's
ToML
parsers. #2737 - Updated
pipenv uninstall
to respect the--skip-lock
argument. #2848 - Fixed a bug which caused uninstallation to sometimes fail to successfullly remove packages from
Pipfiles
with comments on preceding or following lines. #2885, #3099 - Pipenv 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. #3088 - Fixed a bug in
requirementslib
which prevented successful installation from mercurial repositories. #3090 - Fixed 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 a bug which sometimes prevented cloning and parsing
- Fixed an issue in
delegator.py
related to subprocess calls when usingPopenSpawn
to stream output, which sometimes threw unexpectedEOF
errors. #3102, #3114, #3117 - Fix 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. #3113 - Updated
pythonfinder
to correct an issue with unnesting of nested paths when searching for python versions. #3121 - Added 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. #3145 - Fix 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
. #3185 - Fix 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
- 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. #3191 - Updated
requirementslib
to aid in resolution of local and remote archives. #3196
- Expanded development and testing documentation for contributors to get started. #3074
- Fixed a bug in
pipenv clean
which caused global packages to sometimes be inadvertently targeted for cleanup. #2849 - Fix broken backport imports for vendored vistir. #2950, #2955, #2961
- Fixed a bug with importing local vendored dependencies when running
pipenv graph
. #2952 - Fixed 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
. #2979 - Fixed 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
- Updated
requirementslib
to version1.1.9
. #2989 - Upgraded
pythonfinder => 1.1.1
andvistir => 0.1.7
. #3007
- 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. #2641 - Enhanced resolution of editable and VCS dependencies. #2643
- Deduplicate and refactor CLI to use stateful arguments and object passing. See this issue for reference. #2814
- Virtual environment activation for
run
is revised to improve interpolation with other Python discovery tools. #2503 - Improve terminal coloring to display better in Powershell. #2511
- Invoke
virtualenv
directly for virtual environment creation, instead of depending onpew
. #2518 pipenv --help
will now include short help descriptions. #2542- Add
COMSPEC
to fallback option (along withSHELL
andPYENV_SHELL
) if shell detection fails, improving robustness on Windows. #2651 - Fallback 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
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
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. #2617- Vendored 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
- Vendored new libraries
- 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,
- 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. #2671 - Added a link to
PEP-440
version specifiers in the documentation for additional detail. #2674 - Added 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
- 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. #2371 - Added 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, #2478 - Improved import times and CLI runtimes with minor tweaks. #2485
- 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. #2417 - Updated 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. #2422 - Added 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
. #2433 - Pipenv 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. #2453 - Pipenv will now always use
pathlib2
forPath
based filesystem interactions by default onpython<3.5
. #2454 - Fixed 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. #2462 - Using the
python -m pipenv.help
command will now use proper encoding for the host filesystem to avoid encoding issues. #2466 - The new
jinja2
templates forclick_completion
will now be included in pipenv source distributions. #2479 - Resolved a long-standing issue with re-using previously generated
InstallRequirement
objects for resolution which could causePKG-INFO
file information to be deleted, raising aTypeError
. #2480 - Resolved an issue parsing usernames from private PyPI URIs in
Pipfiles
by updatingrequirementslib
. #2484
- 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. #2371 - Updated 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. #2422 - Add patch to
prettytoml
to support Python 3.7. #2426 - Patched
prettytoml.AbstractTable._enumerate_items
to handleStopIteration
errors in preparation of release of python 3.7. #2427 - Fixed an issue reading package names from
setup.py
files in projects which imported utilities such asversioneer
. #2433 - Updated
requirementslib
to version1.0.9
#2453 - Unraveled a lot of old, unnecessary patches to
pip-tools
which were causing non-deterministic resolution errors. #2480 - Resolved an issue parsing usernames from private PyPI URIs in
Pipfiles
by updatingrequirementslib
. #2484
- Added instructions for installing using Fedora's official repositories. #2404
- 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.) #1861 - Virtualenv 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. #2199 - Dropped 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. #2281 - Virtualenv 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. #2309 - Added 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. #2385- Massive 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
- 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
). #2123 - 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. #2309
- Massive internal improvements to requirements parsing codebase, resolver, and error messaging. #1962, #2186, #2263, #2312
- Pipenv will now parse & capitalize
platform_python_implementation
markers. #2123 - Fixed a bug with parsing and grouping old-style
setup.py
extras during resolution #2142 - Fixed 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. #2181 - Removed vendored
cacert.pem
which could cause issues for some users with custom certificate settings. #2193 - Fixed a regression which led to direct invocations of
virtualenv
, rather than calling it by module. #2198 - Locking 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. #2209 pipenv clean
will now correctly ignore comments frompip freeze
when cleaning the environment. #2262- Resolution 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. #2269 - Windows executable discovery now leverages
os.pathext
. #2298 - Fixed a bug which caused
--deploy --system
to inadvertently create a virtualenv before failing. #2301 - Fixed 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. #2377 pipenv update
will now always run the resolver and lock before ensuring your dependencies are in sync with your lockfile. #2379- Resolved 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. #2384 - Patched
python-dotenv
to ensure that environment variables always get encoded to the filesystem encoding. #2386
- Update documentation wording to clarify Pipenv's overall role in the packaging ecosystem. #2194
- Added contribution documentation and guidelines. #2205
- Added instructions for supervisord compatibility. #2215
- Fixed broken links to development philosophy and contribution documentation. #2248
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
- distlib from version