Repository navigation
chore(deps): update dependency virtualenv to v21 [security] - #59
Open
renovate-coveo[bot] wants to merge 1 commit into
Open
renovate-coveo[bot] wants to merge 1 commit into
renovate-coveo[bot] wants to merge 1 commit into
Conversation
renovate-coveo
Bot
requested review from
alexprudhomme,
louis-bompart and
y-lakhdar
October 7, 2026 10:20
renovate-coveo
Bot
force-pushed
the
renovate/pypi-virtualenv-vulnerability
branch
from
October 8, 2026 14:59
03f13de to
02ab691
Compare
renovate-coveo
Bot
force-pushed
the
renovate/pypi-virtualenv-vulnerability
branch
4 times, most recently
from
October 21, 2026 08:24
4c53582 to
289efd8
Compare
renovate-coveo
Bot
force-pushed
the
renovate/pypi-virtualenv-vulnerability
branch
from
October 22, 2026 17:20
289efd8 to
75325bb
Compare
renovate-coveo
Bot
force-pushed
the
renovate/pypi-virtualenv-vulnerability
branch
from
October 22, 2026 20:19
75325bb to
c36f24c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
>=20.25,<21→>=21.14,<22virtualenv: Downloaded seed wheels (pip/setuptools) are not integrity-checked before use
CVE-2026-102930 / GHSA-94p9-xgh2-xp45
More information
Details
download_wheel()runspip downloadand hands the result straight to the seeder, with nothing checking the bytes it gets back. The embedded pip and setuptools wheels carry aBUNDLE_SHA256that virtualenv checks on every load, but a wheel fetched over the network for the periodic-update feature or the--downloadflag had no equivalent verification.A compromised index, a stale mirror, or a MITM'd download (when TLS is intercepted, e.g. via a misconfigured or malicious CA) could substitute a different wheel under the same distribution/version/filename, and virtualenv would cache and seed it into every environment created afterward with no warning.
Fixed by computing the downloaded wheel's sha256 and comparing it against the digest PyPI's public JSON API reports for that exact release, independent of which index actually served the file. The check is skipped, not treated as failure, when a custom index (
PIP_INDEX_URL,PIP_EXTRA_INDEX_URL,PIP_INDEX) is configured, since a private index can legitimately serve a different, intentionally rebuilt wheel. Fix: https://github.com/pypa/virtualenv/pull/3251Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
virtualenv writes prompt values into pyvenv.cfg without sanitizing line boundaries, allowing configuration injection
CVE-2026-102938 / GHSA-9h9j-4vrj-gf7g
More information
Details
Summary
pyvenv.cfgis a line-based format with no escape syntax.PyEnvCfg.write()wrote values verbatim, whilePyEnvCfg._read_values()parses the file withstr.splitlines(). A value containing a line boundary therefore became additional configuration lines, and because reading is last-wins, the injected keys replaced any key written earlier in the file.Impact
The
promptvalue is the reachable input: it is set by--prompt, by theVIRTUALENV_PROMPTenvironment variable, or from the config file, andwrite()emitspromptbeforehome. A crafted prompt can therefore sethomein the generatedpyvenv.cfg:homeis what tooling reads to locate the base interpreter, so a consumer that trusts it can be pointed elsewhere.implementation,version_info,version,executable,commandandvirtualenvare also written beforepromptand can be replaced the same way.This requires the prompt to come from somewhere other than the person running the command, for example a CI job templating a branch name into it, tooling deriving an environment name from user-supplied data, or an inherited
VIRTUALENV_PROMPT. Where the operator supplies the prompt directly they already control the command line, and the effect is corruption rather than privilege gain: the value is truncated at the boundary and read back with a dangling quote.Details
The boundary set is the one
str.splitlines()recognizes, which is wider than\n:\r,\v,\f, the file, group and record separators,U+0085,U+2028andU+2029were all written through unchanged and all split the line when read back.Patches
PyEnvCfg.write()now collapses those boundaries to spaces as it serializes each line, so it cannot emit a structurally invalid file regardless of what a caller places incontent.Workarounds
Do not pass externally influenced data as the virtualenv prompt. Strip line boundaries from any value before using it as
--promptorVIRTUALENV_PROMPT.Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
virtualenv: Command injection via --prompt in activate.bat (batch activator)
CVE-2026-102937 / GHSA-x78j-v8h9-3j2q
More information
Details
BatchActivator.quote()returned its input unchanged, the only activator with no escaping at all.--prompt, theVIRTUALENV_PROMPTenvironment variable, and the config file all set the prompt, andactivate.batwrites it straight into@set "VAR=value". A prompt containing a double quote closes that string early, and whatever follows runs as live cmd.exe syntax:runs
calcthe moment someone activates the environment. Confirmed on a real Windows runner. Anyone who templates a prompt from untrusted input (a CI job using a branch name, a wrapper script deriving an environment name from user input) hands an attacker code execution in the shell of anyone who activates the resulting venv on Windows.Fixed in 21.7.12 by escaping the characters cmd.exe treats as live syntax inside this construct. Fix: https://github.com/pypa/virtualenv/pull/3250
Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
virtualenv bash and fish activation scripts execute commands embedded in paths
CVE-2026-102925 / GHSA-p58f-9548-mpm2
More information
Details
Impact
The generated
activate(bash/zsh) andactivate.fishscripts interpolate ashlex.quote-ed value into a position that quotes it a second time. The extra quotes terminate the quoted run early and leave part of the value parsed as shell code, so a path containing shell metacharacters runs commands when a user sources the activation script.activateis affected through the virtual environment's own path, on the branch that reports a relocated environment:For a destination named
x'$(id)'y,shlex.quoteemits'x'"'"'$(id)'"'"'y'. The inner"closes the enclosing double quote and$(id)is left unquoted. Backtick and;payloads reach the same result. This branch runs whenever the recorded path is absent, which is the normal case for a virtual environment copied or distributed to another machine.activate.fishis affected through the interpreter's Tcl/Tk library paths:shlex.quotealready returns'/tcl/(cmd)/lib', so the rendered line is''/tcl/(cmd)/lib''. fish concatenates the adjacent quoted runs and expands the(cmd)left between them. The same doubling also splits a path containing a space into two list elements, corruptingTCL_LIBRARYandTK_LIBRARY.This is the same defect class as GHSA-x78j-v8h9-3j2q, which covered
activate.bat.Patches
Fixed in 21.7.13 by moving the placeholders outside the surrounding quotes, so each value keeps only the quoting
shlex.quoteapplied. Fix: https://github.com/pypa/virtualenv/pull/3252Workarounds
Avoid creating or distributing virtual environments whose path contains
',`,$,;,(or), and inspect the generated activation script before sourcing one you did not create.Severity
CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
pypa/virtualenv (virtualenv)
v21.14.13Compare Source
Bugfixes - 21.14.13
Stop bash running commands from
--promptor an environment name containing$(...), backticks or a backslashafter
shopt -s promptvars,set -o posix, or in a child shell that inherits an exportedPS1(GHSA-cx6f-vjhg-g3cc); reported by rozzkml. zsh now draws the prompt from
psvar[9], which is never parsedas shell syntax.
Write the
.venvredirect and the wheelRECORDwith exclusive create, so a link planted after the existencecheck cannot redirect the write. On POSIX, a read-only
.venvredirect that points at a virtualenv is replaced.(#3466)
PyPI release
Full Changelog: pypa/virtualenv@21.14.12...21.14.13
v21.14.12Compare Source
Bugfixes - 21.14.12
Upgrade embedded wheels:
84.2.1from84.0.026.2.2from26.2.1(#3452)Improved Documentation - 21.14.12
PyPI release
Full Changelog: pypa/virtualenv@21.14.11...21.14.12
v21.14.11Compare Source
Bugfixes - 21.14.11
--extra-search-diroptions instead of keeping only the last group.(#3440)
warning on every run. (#3441)
PyPI release
Full Changelog: pypa/virtualenv@21.14.10...21.14.11
v21.14.10Compare Source
Bugfixes - 21.14.10
variable or configuration file. Seeded packages remain available after temporary cache cleanup. (#3437)
PyPI release
Full Changelog: pypa/virtualenv@21.14.9...21.14.10
v21.14.9Compare Source
Bugfixes - 21.14.9
Parse
VIRTUALENV_PERIODIC_UPDATE_INSECUREas a boolean, so0,false,noandoffkeep certificateverification enabled. (#3398)
Reject destinations whose resolved path contains the platform's PATH separator, including separators inherited from
the working directory or a directory symlink. (#3399)
Preserve an existing
pyvenv.cfgwhen a prompt or configuration value cannot be encoded as UTF-8, instead ofleaving the file empty after a failed environment creation. The file now ends its lines with LF on every platform.
Debug logs show each configuration line as a Python string literal, so control characters are visible. (#3400)
Skip writing a
.venvredirect when the environment name contains a line boundary. The environment is stillcreated, and any existing redirect remains unchanged. (#3401)
Preserve non-ASCII values in
activate_this.pywhen applications read the script with a legacy text encoding beforeexecuting it. (#3402)
Reject malformed seed versions and requirements ending in archive suffixes before starting pip, with an error
identifying the invalid value instead of a misleading download or local-file error. (#3403)
Allow a literal percent sign as a csh prompt and preserve carets in tcsh prompt display instead of interpreting them
as control-character notation.
Separate csh history and prompt escapes from preceding non-ASCII text in legacy locales. (#3404)
Report an error when an existing
pyvenv.cfgis not a regular file, instead of trying to read or write directories,pipes, or devices as configuration files. (#3405)
Preserve percent-containing paths during batch reactivation and show dollar signs literally in command prompts. Skip
batch scripts for paths containing line boundaries, and remove stale batch scripts for unsupported paths even when
only other activators are selected. (#3406)
Compile shared seed-cache bytecode without loading site customizations from the destination environment or importing
modules from the current working directory. (#3407)
Keep the bundled seed version when a cached periodic update is older, and stop recording downloads below the bundled
version during update checks. (#3408)
Stop activating a moved environment, leaving
PATHunchanged, when the shell is not bash, the script is evaluatedor read from standard input, a path tool fails, the sourced file is not the environment's own activation script, or
the new location has no
pyvenv.cfg, instead of continuing with an incorrect environment path. (#3409)Reject built-in options with missing values before creating the application-data directory or starting interpreter
discovery, instead of reporting the argument error after those operations. (#3410)
Keep unset-variable bookkeeping out of exported xonsh variables, so child shells do not restore an internal sentinel
as
PYTHONHOME. Skip xonsh activation for destination names that its PATH handling would expand to a differentpath.
Restore unset Tcl/Tk library variables when switching between environments in one xonsh session.
Preserve non-ASCII paths and prompts when xonsh reads activation scripts with a legacy encoding. (#3411)
Skip default shell activators with a warning when a POSIX path encoding is incompatible with their UTF-8 scripts.
Explicitly requested incompatible shell activators still report an error. Environments created with
--activators=or
--activators=pythonremain supported in legacy locales. Undecodable parent paths are now caught before anyshell activation script is written. (#3412)
Keep apostrophes and backslashes in fish activation values separate from preceding non-ASCII characters, so fish 3
legacy locale decoders cannot consume their escapes as part of a multibyte character. (#3413)
Preserve backslashes and apostrophes in csh activation values when tcsh's
backslash_quoteoption is enabled.Assign prompt text before conditional branches so skipped prompt branches do not reinterpret its quoting.
Display literal backslashes once in bsd-csh prompts. Keep disabled prompts unchanged when generated values contain
quotes. (#3414)
Preserve backslashes in POSIX environment directory names during PowerShell activation, including configuration lookup
and the default prompt. Resolve relative, home-relative, PSDrive-qualified and filesystem provider-qualified
-VenvDirarguments to absolute paths, and stop activation when that resolution fails. (#3415)Keep helper processes for pip, symlink-seed compilation, stdlib venv creation, and periodic wheel updates from
importing modules through Python's implicit current-directory entry. Pip helpers retain the selected bootstrap wheel
on their import path.
Preserve Python environment-variable overrides for delegated stdlib venv creation while removing the implicit
working-directory import entry.
Retain explicit Python configuration when compiling symlink seed images, and report compilation failures.
(#3416)
Preserve spaces, quotes, and backslashes in interpreter paths when pip console scripts need a POSIX shell launcher.
Paths containing tabs also use the shell launcher so the kernel does not split the interpreter name.
Apply the same launcher quoting after pip seeding and refresh the installed file records. Later independent pip
installs or upgrades can overwrite these launchers; recreate affected environments after upgrading virtualenv.
(#3417)
Leave
PS1unchanged when sourcing the POSIX activation script in a shell other than bash or zsh, whose promptescaping rules virtualenv handles;
VIRTUAL_ENV_PROMPTstays available to custom prompts in other shells.In bash, keep the prompt literal under older compatibility levels, with
promptvarsdisabled and in posix mode, andavoid
nounseterrors afterVIRTUAL_ENV_PROMPTis unset. (#3418)Remove Python's implicit working-directory import entry before handling
python -m virtualenvcommands, reducingaccidental module shadowing during environment creation. Explicit import paths keep their existing order.
Keep the working-directory entry when virtualenv itself is installed there, and preserve explicit paths under Python
safe-path mode. (#3419)
Start periodic wheel updates with the same virtualenv installation or zipapp that scheduled them, even when the host
interpreter has another virtualenv version installed or no installed copy.
Keep standard-library precedence and explicit Python configuration in update processes, and drop only the implicit
working-directory import entry before importing anything. (#3420)
Create new default app-data directories with owner-only access where supported. For existing POSIX defaults owned by
the current user, remove group and other write access, preserving group write on setgid shared caches. Keep
permissions on directories owned by another user and on explicit app-data paths. Warn and use temporary app-data if
changing an owned default cache's permissions fails. (#3421)
Reject
--clearwhen the normalized destination is a symlink or Windows reparse point, including paths containing... Pass the target directory explicitly to clear it. Creating an environment through a symlink without--clearremains supported. (#3422)Detach seed-package and launcher symlinks before running the pip seeder. Reseeding an environment created with
--symlink-app-datano longer rewrites its shared wheel image. Unrelated launcher symlinks remain in place.Preserve case in console entry-point names and use the last value for duplicate entries when regenerating launchers.
Remove linked metadata from previous seed versions when reseeding with pip so package listings report the installed
version. (#3423)
Replace line-boundary characters in csh prompt text with spaces so activation remains valid.
When a filesystem path contains a newline, skip csh activation and remove any stale csh activation scripts. Keep
filesystem paths unchanged, including other control characters, and omit skipped activators from the creation summary.
(#3424)
Apply the current umask when copying interpreter and seed-package files instead of inheriting cached permission bits.
Executable sources remain executable within the permissions allowed by that umask. Copied files no longer grant group
or world write access, even with a permissive umask. Source modes are not preserved: data files start from 0644 and
executable files from 0755 before applying the umask. (#3425)
Reject destinations containing line boundaries when using the stdlib
venvcreator, before it writespyvenv.cfg. Other creators retain their existing destination support. Write the final configuration from theselected interpreter and virtualenv options instead of merging stdlib's intermediate configuration. GraalPy launcher
settings are derived from the selected interpreter. (#3426)
Preserve file permissions when deletion fails on POSIX. On Windows, clear read-only attributes through a handle that
opens the entry itself and prevents replacement, preserving other attributes and rejecting reparse points.
(#3427)
Limit seed-package cleanup to entries inside the environment. Ignore metadata entries that name the environment
itself, a directory holding the metadata (a blank
top_level.txtline namessite-packages), or resolve outsidethe environment, with a warning. Launcher entries inside the environment remain supported. (#3428)
Replace pre-existing directory symlinks and Windows junctions in the environment's executable and library paths before
creating files. Links within those paths are replaced even when they point inside the environment. Log replaced links
and junctions, and reject a non-directory encountered while creating their replacements. (#3429)
Verify downloads in a private staging directory before adding them to the reusable wheel cache. Select the downloaded
archive from that directory instead of pip's output. The pip seeder now uses the same download verification path and
installs pinned versions from a temporary directory containing only the selected wheels, without another index lookup.
Seeded packages retain version pins in pip freeze output. (#3430)
Replace existing symbolic and hard links when writing environment configuration, activation scripts, import hooks, and
seed launchers. Create generated text files exclusively so a replacement link cannot redirect the final file open.
Before recreating an environment with the stdlib venv creator, replace executable-directory symlinks and Windows
junctions with real directories. Remove symbolic and hard links inside that directory before creating interpreter
files, including when switching from symlinks to copies. (#3431)
Write xonsh prompt and path literals as ASCII escapes in every generated activation script. This preserves their
values when xonsh reads the script with a legacy encoding such as GBK or Big5. Regenerate existing scripts to apply
the fix. (#3432)
Keep existing redirects whose target has a non-regular configuration file, and allow
--clearto recreateenvironments with such configuration paths. (#3433)
Reject invalid and archive-like seed versions while parsing options for both seeders, before creating an environment
or looking up wheels, with an error naming the invalid value. Apply the same validation to versions obtained from
wheel filenames. (#3434)
Skip writing
.venvredirects for environment names with leading or trailing whitespace, which redirect readers maystrip. (#3435)
Improved Documentation - 21.14.9
VIRTUALENV_PERIODIC_UPDATE_INSECURE.(#3436)
PyPI release
Full Changelog: pypa/virtualenv@21.14.8...21.14.9
v21.14.8Compare Source
Bugfixes - 21.14.8
pyvenv.cfginstead of whichever file the path matches as a wildcard pattern - by repzakske. (#3396)
PyPI release
Full Changelog: pypa/virtualenv@21.14.7...21.14.8
v21.14.7Compare Source
Bugfixes - 21.14.7
PS1passes, so a name or--promptvaluewith a backslash before
$(...)or backticks no longer runs as a command each time bash draws the prompt - bygaborbernat. (#3390)
PyPI release
Full Changelog: pypa/virtualenv@21.14.6...21.14.7
v21.14.6Compare Source
Bugfixes - 21.14.6
wrong shape, instead of downloading the wheel or, offline, failing to create the environment - by darrenhuai.
(#3383)
PyPI release
Full Changelog: pypa/virtualenv@21.14.5...21.14.6
v21.14.5Compare Source
Bugfixes - 21.14.5
the wrong shape, instead of failing to create the environment - by pasmud. (#3376)
PyPI release
Full Changelog: pypa/virtualenv@21.14.4...21.14.5
v21.14.4Compare Source
Bugfixes - 21.14.4
activaterunning commands from a virtual environment name or--promptthat holds$(...), backticks or${...}when zsh hasPROMPT_SUBSTset, and show a%in the name as typed under zsh (GHSA-5vjq-rrrf-7h2q <https://github.com/pypa/virtualenv/security/advisories/GHSA-5vjq-rrrf-7h2q>_); reported by kemrec.(#3373)
PyPI release
Full Changelog: pypa/virtualenv@21.14.3...21.14.4
v21.14.3Compare Source
Bugfixes - 21.14.3
~=and every clause of a seed wheel'sRequires-Pythonwhen picking a wheel for the target Python, andskip a wheel whose
Requires-Pythonis not a valid specifier instead of failing - by pasmud.(#3369)
PyPI release
Full Changelog: pypa/virtualenv@21.14.2...21.14.3
v21.14.2Compare Source
Bugfixes - 21.14.2
pyvenv.cfggetting an absolute path inpython-version,include-system-site-packagesand the other keysthat hold no path when the working directory has an entry named like the value, such as
3.14forvirtualenv 3.14ortruewith--system-site-packages- by darrenhuai. (#3366)such as
__VIRTUAL_NAME__(GHSA-8rjx-v5ww-45pp <https://github.com/pypa/virtualenv/security/advisories/GHSA-8rjx-v5ww-45pp>), andactivate.fishrunningcommands from a path or
--promptthat holds a backslash before a single quote (GHSA-c947-3pg5-gm8q <https://github.com/pypa/virtualenv/security/advisories/GHSA-c947-3pg5-gm8q>); both reported by Kwstubbs ofGitHub Security Lab. (#3367)
PyPI release
Full Changelog: pypa/virtualenv@21.14.1...21.14.2
v21.14.1Compare Source
No significant changes.
PyPI release
Full Changelog: pypa/virtualenv@21.14.0...21.14.1
v21.14.0Compare Source
Features - 21.14.0
classifier, such as
distlibandpython-discovery, so license scanners can match them. (#3339)gaborbernat. (#3340)
Bugfixes - 21.14.0
tasks/release-requirements.txtpins by version and SHA-256, so a rebuild of the tag uses the same versions.(#3337)
resolve to the requested wheel. (#3361)
Improved Documentation - 21.14.0
ALLOWED_LICENSESintasks/license_policy.pyas the list of accepted licenses. (#3339)mainruleset requires before a mergea release - by gaborbernat. (#3342)
gaborbernat. (#3343)
gaborbernat. (#3344)
832support shipped, and838waits on the PEP - by gaborbernat.(#3345)
PyPI release
Full Changelog: pypa/virtualenv@21.13.0...21.14.0
v21.13.0Compare Source
Features - 21.13.0
ChangelogandFundinglinks to the PyPI project metadata, and replace the2020-202xplaceholder inLICENSEwith2020-presentso the copyright field of the wheel SBOM reads as a real range - bygaborbernat. (#3334)
Bugfixes - 21.13.0
U+2018-U+201Bin the PowerShell activator'squoteso a virtual environmentprompt, name or Tcl/Tk library path containing them can no longer close the string literal and run commands - by
gaborbernat. (#3325)
PS1, so a virtual environment name or--promptvalue containing
$(...), backticks or backslashes no longer runs as a command each time bash draws the prompt - bygaborbernat. (#3326)
Improved Documentation - 21.13.0
(#3323)
filelockreleases virtualenv installs on Python 3.9, and describe the dependency review check that enforces the policy.
(#3329)
gh release verifyandgh release verify-asset, and how to rebuild the zipappbyte for byte with the build tool versions its SBOMs list. Drop the claims that the zipapp build does not pin the
distributions it bundles and that wheels differ between build machines - by gaborbernat. (#3330)
PyPI release
Full Changelog: pypa/virtualenv@21.12.1...21.13.0
v21.12.1Compare Source
Bugfixes - 21.12.1
Limit the
832.venvredirect to folders holding apyproject.tomland no.venvyet, sovirtualenv fooin a scratch folder, and tools such as tox or nox building environments through virtualenv, no longer claim afolder's default environment - by gaborbernat.
--venv-redirectwrites the redirect in any folder and replaces an earlier virtualenv redirect.(#3316)
PyPI release
Full Changelog: pypa/virtualenv@21.12.0...21.12.1
v21.12.0Compare Source
Features - 21.12.0
Write the
PEP 838 <https://peps.python.org/pep-0838/>_python-versionkey intopyvenv.cfg, holding thetarget interpreter's feature release. The new
reference/filespage covers it alongside every other file acreated environment holds - by konstin. (#3193)
Point a
.venvredirect file in the parent folder at the created environment, perPEP 832 <https://peps.python.org/pep-0832/>_, so editors and type checkers can find it - by gaborbernat..venvfolder alone, and a redirect pointing at an environment it did not create.--no-venv-redirectto opt out.ways to follow the PEP. (#3204)
PyPI release
Full Changelog: pypa/virtualenv@21.11.1...21.12.0
v21.11.1Compare Source
Bugfixes - 21.11.1
run the test suite from it. (#3314)
PyPI release
Full Changelog: pypa/virtualenv@21.11.0...21.11.1
v21.11.0Compare Source
Features - 21.11.0
virtualenv.cdx.json,virtualenv.spdx.json) to eachGitHub release, and attest the SPDX document against the sdist and wheel. (#3299)
each bundled dependency with the Python versions that load it, down to a SHA-256 per file. The SBOM sits at the root
of
virtualenv.pyz, ships as thevirtualenv.pyz.cdx.jsonrelease asset, and GitHub attests it against thezipapp. (#3310)
Bugfixes - 21.11.0
retries, instead of seeding it unverified. Seeding falls back to the bundled wheel unless a specific version was
requested. (#3302)
pylock.zipapp.tomlpins by URL and sha256, so a release bundlesonly files matching the committed hashes. (#3306)
and architecture given the same source,
SOURCE_DATE_EPOCH, Python patch version and build backend versions. Zipappentries now carry the
SOURCE_DATE_EPOCHtimestamp and fixed permissions instead of the build time. (#3311)Improved Documentation - 21.11.0
(#3290)
gaborbernat. (#3304)
provenance, the CycloneDX and SPDX SBOMs of the wheel, the zipapp SBOM, and rebuilding the sdist from its tag.
(#3305)
PyPI release
Full Changelog: pypa/virtualenv@21.10.0...21.11.0
v21.10.0Compare Source
Features - 21.10.0
filelock4.x on Python 3.10+ by relaxing the upper bound from<4to<5- by r3wretrhy.(#3285)
Bugfixes - 21.10.0
^or!, since quoting changesthose paths. Other activation scripts remain available. (#3280)
PyPI release
Full Changelog: pypa/virtualenv@21.9.1...21.10.0
v21.9.1Compare Source
Bugfixes - 21.9.1
builds. (#3278)
PyPI release
Full Changelog: pypa/virtualenv@21.9.0...21.9.1
v21.9.0Compare Source
Features - 21.9.0
wheel from its own metadata, the declared runtime dependencies, and the full build environment (interpreter, OS and
every distribution in the isolated build environment with the dependency graph between them), plus the GitHub Actions
run when built there. (#3270)
Bugfixes - 21.9.0
metadata.timestamp(derived fromSOURCE_DATE_EPOCHfor reproducibility) andmetadata.toolsnaming thegenerator to the embedded SBOM, and validate both fields in the packaging checks that already run on every pull
request. (#3269)
vendorkey on the generator toolentry) and validate it against the schema in CI. (#3270)
PyPI release
Full Changelog: pypa/virtualenv@21.8.1...21.9.0
v21.8.1Compare Source
Bugfixes - 21.8.1
serialNumbera deterministic UUID derived from the package name, version and bundledwheel hashes, so the same source tree produces a byte-identical SBOM, and validate the SBOM's structure as part of the
packaging checks that already run on every pull request. (#3268)
PyPI release
Full Changelog: pypa/virtualenv@21.7.16...21.8.1
v21.7.16Compare Source
Bugfixes - 21.7.16
activate.cshrendering the venv's prompt text wrong when it contains!(csh and tcsh both expand it) or%(tcsh only, since plain csh has no%prompt escape at all). (#3263)PyPI release
Full Changelog: pypa/virtualenv@21.7.15...21.7.16
v21.7.15Compare Source
Bugfixes - 21.7.15
PATHondeactivatein the bash and fish activators, and stop bash leaving the prompt inPS1when it was unset before activation. (#3259)activate.cshfailing to restorePATHand other saved variables ondeactivatewhenPATHwas alreadyempty. (#3260)
PyPI release
Full Changelog: pypa/virtualenv@21.7.14...21.7.15
v21.7.14Compare Source
Bugfixes - 21.7.14
activate.cshfailing withEvent not foundwhen the virtual environment path contains!.(#3256)
PyPI release
Full Changelog: pypa/virtualenv@21.7.13...21.7.14
v21.7.13Compare Source
Bugfixes - 21.7.13
activateandactivate.fishrunning commands embedded in the virtual environment path or in theinterpreter's Tcl/Tk library paths. (#3252)
PyPI release
Full Changelog: pypa/virtualenv@21.7.12...21.7.13
v21.7.12Compare Source
Bugfixes - 21.7.12
activate.batrunning arbitrary commands from a crafted--prompt,VIRTUALENV_PROMPT, or config filevalue. (#3250)
custom pip index is configured. (#3251)
PyPI release
Full Changelog: pypa/virtualenv@21.7.11...21.7.12
v21.7.11Compare Source
Bugfixes - 21.7.11
activate.batagain beforedeactivateno longer makesdeactivateleave the environment'sPKG_CONFIG_PATH,TCL_LIBRARYandTK_LIBRARYbehind, or lose values the user had set before the firstactivation - by darrenhuai. (#3245)
pyvenv.cfgvalues on a single line, so a prompt carrying a line boundary can no longer inject configuration.--prompt, theVIRTUALENV_PROMPTenvironment variable and the config file all set the prompt, andpyvenv.cfghas no escape syntax, so a newline, a carriage return, or any other boundarystr.splitlinesrecognizes, such as
U+2028, started a new configuration line. Reading the file back picked up those lines as keys,and since the last value for a key wins, they replaced anything written earlier, including
home. (#3247)Improved Documentation - 21.7.11
Misc - 21.7.11
[PyPI release](https://pypi.org/project/virtualenv/
Configuration
📅 Schedule: (in timezone America/Toronto)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.