Repository navigation
Update dependency tox to v4.67.11 - #135
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
December 15, 2025 18:35
2e4e3cf to
1d5dd47
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
January 8, 2026 18:25
313a5ac to
97deca8
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
January 9, 2026 20:56
97deca8 to
e917caf
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
February 15, 2026 20:57
9e439b5 to
a53197d
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
February 17, 2026 06:37
a53197d to
8a3047b
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
February 17, 2026 23:36
98a4246 to
4bf4f25
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
February 18, 2026 21:12
4bf4f25 to
071c2d9
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
February 19, 2026 09:56
071c2d9 to
ed057d9
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
February 20, 2026 09:37
8929a00 to
81d0056
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
February 21, 2026 01:43
e46af5c to
7425ec4
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
February 23, 2026 22:16
7425ec4 to
0158327
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 4, 2026 04:47
0671d8b to
3fdc2af
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 6, 2026 01:20
3fdc2af to
7d7491b
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 6, 2026 06:33
7d7491b to
ee9f32c
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 6, 2026 22:47
ee9f32c to
7ed6d8c
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 10, 2026 01:10
7ed6d8c to
10483e1
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 17, 2026 21:38
10483e1 to
bd60b7c
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 19, 2026 04:55
bd60b7c to
15918d1
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
2 times, most recently
from
March 20, 2026 05:34
ada3bf2 to
3b10ea8
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 27, 2026 17:56
3b10ea8 to
d6377d7
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
March 30, 2026 21:06
d6377d7 to
d130610
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
April 9, 2026 18:18
d130610 to
03912a1
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
April 14, 2026 17:01
03912a1 to
a245871
Compare
renovate
Bot
force-pushed
the
renovate/tox-4.x
branch
from
May 2, 2026 09:30
a245871 to
82e4a60
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:
==4.25.0→==4.67.11Release Notes
tox-dev/tox (tox)
v4.67.11Compare Source
Bug fixes
.toxthat only the project's own writers can change, such as one owned by the workspace owner while root runs tox, or a777build directory on Bitbucket. A work directory that other accounts could change, such as a777.toxleft by an older tox under umask000or restored from a CI cache, is made private and emptied once at the start of a run, so tox recreates its environments instead of failing. When staging still refuses a path, the error names its owner and mode (#4386) by @gaborbernat. (#4376)🐍 PyPI release
📜 Full Changelog
v4.67.10Compare Source
Bug fixes
-is no longer read as a range, sopy-django-4-2keeps its name instead of splitting intopy-django-4,3and2. Braced ranges such aspy-django-{4-5}still expand (#4380) by @ericdelorefice and @gaborbernat.deps, such as-r "sub dir/base.txt", now have their quotes removed as they do on other platforms and in pip; before, the quotes stayed in the path and the file could not be opened. On every platform, a quoted-r,-cor-fvalue indepskeeps its spaces as written instead of gaining literal backslashes (#4381) by @abo3losh1 and @gaborbernat.New Contributors
🐍 PyPI release
📜 Full Changelog
v4.67.9Compare Source
🐍 PyPI release
📜 Full Changelog
v4.67.8Compare Source
Bug fixes
.toxcreated under umask002no longer fails the package staging check. When the current user owns a group-writable work directory left by an older tox, tox makes it owner-only and removes group write from the staging directories inside it. Provisioning runs the same repair before starting the provisioned tox, which may be a release without it, and creates a missing work directory owner-only. Previously, such checkouts failed until.toxwas deleted, and a fresh.toxalso failed when tox provisioned itself (#4377) by @gaborbernat. (#4376)🐍 PyPI release
📜 Full Changelog
v4.67.7Compare Source
Bug fixes
#. Empty blocks count when detecting duplicates, and invalidrequires-pythonvalues report a configuration error. Previously, malformed content lines could make tox read metadata that other script runners ignored (#4371) by @abhishekcpp007 and @gaborbernat.New Contributors
🐍 PyPI release
📜 Full Changelog
v4.67.6Compare Source
Bug fixes
0002because tox creates new staging directories and missing parents with owner-only access. Existing directories keep their permissions (#4360) by @stephenfin and @gaborbernat.tox configno longer fails with anAssertionErrorwhen an environment uses a runner whose plugin is not installed. It skips that environment, astox runandtox listalready do (#4361) by @nk-batman21 and @gaborbernat.set_envmarkers now report the key. For INI values, the error explains how to write a literal semicolon as\;(#4364) by @faresrafat3 and @gaborbernat.--runnerso--runner virtualenvdoes not fail with an empty choices list (#4365) (#4367) by @gaborbernat.base_pythonagainst environment names (#4369) by @mayankdhingra02 and @gaborbernat.--config-settings(-C) on requirement lines in requirements files, which pip supports, instead of failing withunrecognized arguments; it is still rejected when written indepsdirectly, like--hash(#4366) by @mmporong and @gaborbernat.New Contributors
PyPI release
Full Changelog
v4.67.5Compare Source
Bug fixes
base_python(ordefault_base_python) is not installed no longer crashes withKeyError: 'skip_missing_interpreters'. It now fails with the missing interpreter, or skips the run environment whenskip_missing_interpretersis true, as tox did before 4.36.0 (#4213) by @gaborbernat. (#4212)demo[dev]; python_version < '3.10'keeps the version condition on dependencies fromdev(#4216) by @ericdelorefice and @gaborbernat.pylock.tomlor a tox user configuration file (TOX_USER_CONFIG_FILE) saved with a UTF-8 byte order mark, as some Windows editors do, is now read instead of failing with a TOML decode error or being ignored withfailed to read config file(#4217) by @pcbeingused333.args_are_pathsenabled, a positional argument naming an existing file whose rewritten path relative tochange_dirstarts with-(for exampletests/--config=evil.cfg) is now prefixed with./so the command still receives a path instead of an option (#4317) by @rahuldevikar and @gaborbernat. (#4218)replacetable with a nonemptymarkernow raises an error instead of adding its internalvalueandmarkerkeys todepsorrequires. Markers onset_envvalues remain supported (#4320) by @rahuldevikar and @gaborbernat. (#4220)commandssetting with{env:...}reports its type instead of the substituted text (#4327) by @rahuldevikar and @gaborbernat. (#4221)--installpkgout of tox's provisioning environment while installing them in the requested test environments (#4304) by @Pratham2511 and @gaborbernat. (#4222)file:URI passed to--installpkgis now percent-decoded once instead of twice, so a path containing a literal%sequence, such as a directory namedfeature%2Flogin, selects the package the user named (#4300) by @pcbeingused333 and @gaborbernat. (#4223)TOX_INSTALL_PKGor user configurationinstall_pkgpath is now resolved against the invocation directory, as--installpkgalready was, so tox inspects and installs from the same path (#4333) by @rahuldevikar and @gaborbernat. (#4224)meta_dirbecause the build frontend empties that directory during metadata preparation (#4332) by @rahuldevikar and @gaborbernat. (#4225)base_python(for example{env:TOXPYTHON:python3.11}withTOXPYTHONempty) now fails during configuration withbase_python for env <name> is empty. Blank entries in abase_pythonlist are ignored (#4326) by @rahuldevikar and @gaborbernat. (#4226)env_tmp_dir = {env:SCRATCH_DIR}withSCRATCH_DIRunset, now fails with a configuration error instead of resolving to the current directory, which tox could then clear (#4330) by @rahuldevikar and @gaborbernat. (#4227)-f py legacy, with that flag. The command scanner took a later value matching a subcommand as the command, causing environments without that factor to run (#4319) by @rahuldevikar and @gaborbernat. (#4228)--installpkgnow produce errors that name the artifact instead of internal error tracebacks (#4287) by @santhiprakash and @gaborbernat. (#4230)set_envfile assignments with a handled input error instead of a subprocess traceback (#4279) by @Doomguy-BFG9000 and @gaborbernat. (#4231)dependenciesas requirements before installing them. An invalid entry such as a pip option fails before tox passes the dependencies to pip (#4306) by @santhiprakash and @gaborbernat. (#4233)editable-legacyinstall path from the packaging environment'spackage_rootinstead of the core one, so apackage_rootset in[testenv:.pkg]no longer pairs the built package with the dependencies declared next totox.ini(#4321) by @rahuldevikar and @gaborbernat. (#4234)tox listto createfile.lockunder the link target (#4311) by @rahuldevikar and @gaborbernat. (#4235)${VAR}in requirements and constraints files using the environment running pip, includingpass_envandset_env, instead of the tox process. A variable absent from that environment stays literal, so tox cannot put its host value in a fetched URL. To retain expansion, add it topass_envor define it withset_env(#4323) by @rahuldevikar and @gaborbernat. (#4236)tox -hno longer prints secret-looking--key=valuevalues fromTOX_OVERRIDE. Conversion warnings also mask those values in invalidTOX_options (#4303) by @faresrafat3 and @gaborbernat. (#4238)tox.tomlorpyproject.tomlstring with literal braces around text containing a colon, such as a JSON argument holding a URL or a time, is now kept as written, as intox.ini, instead of being read as a{key:default}reference. Positional arguments such asset_env:xpassed into such braces through{posargs}no longer expand into the value of that setting (#4269) by @Anandb71 and @gaborbernat. (#4239).tox-info.jsoncontains a non-mapping value for a section that requires a mapping (#4258) by @haigou-web and @gaborbernat. (#4241)change_dir(#4256) by @Fire162 and @gaborbernat. (#4242)base_python_filerejects non-regular files, undecodable content, and version lines over 1024 characters with a handled error naming the file. It reads comments in bounded chunks, so a long comment can still precede the version (#4325) by @rahuldevikar and @gaborbernat. (#4243)base_python_filenow accepts only a Python version specifier (such as3.13orpypy3.10) from the version file. A path or program name there no longer makes tox start that program during interpreter discovery, and the rejected line is not echoed in the error message (#4324) by @rahuldevikar and @gaborbernat. (#4244)depsorconstraintsentry that directly substitutes a host variable via{env:NAME}or a TOMLreplace = "env"table now passes${OTHER}text in that value to pip unchanged. A TOML reference to the loaded entry keeps the same behavior. A${NAME}reference written in the configuration or a substitution default still expands (#4329) by @rahuldevikar and @gaborbernat. (#4245)pylocknow evaluates Python and platform markers using a complete environment from the target interpreter. Previously, missing values such asimplementation_versioncame from the Python running tox, which could select a package locked for the wrong interpreter (#4331) by @rahuldevikar and @gaborbernat. (#4246)pylock.toml, reject whitespace or control characters in hash tokens, archive or VCS URLs, commit IDs, and subdirectories before writing pip requirements. A line break in one of these fields could add a pip option such as--index-url. The check also covers values pip expands from${VAR}references. Changing a referenced value reinstalls the locked packages (#4315) by @rahuldevikar and @gaborbernat. (#4247)requires(such astox @ file:///path/to/tox.whl) now triggers provisioning unless the installed distribution'sdirect_url.jsonrecords the requested source, including a supported archive hash, subdirectory, or VCS revision. pip discards fragment fields such asegg; these no longer trigger repeat provisioning. When the installer omits credentials from the origin record, a credentialed direct URL without a requested archive hash fails with an explanation instead of hanging during provisioning (#4314) by @rahuldevikar and @gaborbernat. (#4248)tarfiledata filter, tox checks each member as it extracts the archive (#4316) by @rahuldevikar and @gaborbernat. (#4249)set_envfile line, since its content may contain a secret (#4298) by @r3wretrhy and @gaborbernat. (#4250)tox configINI, JSON, and TOML output when a configuration key reads non-UTF-8 data (#4302) by @ducanhnguyen223, ducanhnguyen223 and @gaborbernat. (#4251).tox-info.jsonno longer supplies cached state. When tox writes state, it replaces the link and leaves its target untouched (#4322) by @rahuldevikar and @gaborbernat. (#4253)virtualenv_spec, tox removes a link at the cache path and creates the replacement withoutvenv'sclearoption. A link placed there after cleanup and before directory creation stops the rebuild without emptying its target (#4313) by @rahuldevikar and @gaborbernat. (#4254)UnicodeEncodeError. The stream keeps its encoding (#4257) by @haigou-web and @gaborbernat. (#4255)tox-uv(#4337) by @gaborbernat. (#4336)set_envintodepsorconstraintsnow keeps${NAME}text literal for pip. A${NAME}written in the configuration still expands (#4342) by @gaborbernat. (#4338)virtualenv_specbootstrap environment no longer writes through a junction swapped into its cache entry. A linked project work directory still works; the work directory must allow temporary subdirectories (#4341) by @gaborbernat. (#4339)test_parallel_generaluses an absolute missing-interpreter path to avoid Windows registry probes in CI (#4346) by @gaborbernat. (#4344)set_envline with a substituted key keeps its value in one variable, even when the input contains a line break. A key that expands to=or a line separator raises an error (#4265) by @gaborbernat.{env:NAME}that references itself twice could stall tox during recursive expansion. tox now stops expansion at the first depth-limit hit, logs one warning, and leaves the remaining text unexpanded (#4272) by @gaborbernat.set_envkeeps{env:...}values intact when the source environment inherits the setting, usessetenvor comes from a generative section. The TOML string form"{[env.name]set_env}"does the same. Line breaks,;andfile|text inside values no longer becomeset_envsyntax (#4268) by @gaborbernat.pylock.toml, including malformed TOML or non-UTF-8 bytes, now reportsinvalid pylock filewith the filename and the parser or decoder error instead of an internal traceback (#4215) by @PRINCE2-AI, Prince and @gaborbernat.-cconfiguration now looks for an inline plugin in the requested file's parent directory or inside the selected directory (#4267) by @gaborbernat.{tox_root},{env_tmp_dir}or{env_python}within one argument, including when the path contains spaces, quotes or backslashes. The same applies to tox-provided values such as{host_python}and{tox_root_name}, entries of a list such as{base_python}, and file names matched by{glob:PATTERN}. Command values set with-xorTOX_OVERRIDEfollow the same rule (#4290) by @gaborbernat.depsnow preserve each pip option operand as one argument. A substituted--find-linkspath containing spaces can no longer add options to the command. Thetox configdisplay escapes spaces, quotes and backslashes in those operands (#4276) by @gaborbernat."--title={env:TITLE}"is one argument even when the value ofTITLEholds quotes or whitespace, as it is for a TOML argument array. tox used to paste the value into the command text before splitting it, so a quote in the value ended the argument and the rest of the value arrived as further arguments of the command.install_commandandlist_dependencies_commandget the same handling (#4283) by @gaborbernat.requiresdirect URLs in missing-requirement messages and echoed provisioning commands (#4334) by @gaborbernat.ExecuteRequestrepresentations (#4264) by @gaborbernat..venvredirect. A concurrent path swap can no longer redirect removal or replacement into another directory (#4308) by @gaborbernat.PATHentries from the command's working directory. Theallowlist_externalscheck andTOX_LIMITED_SHEBANGinterpreter selection use the file that the child executes (#4275) by @gaborbernat.{[testenv:a]commands}now preserve argument boundaries when a positional argument contains an apostrophe or backslash.tox configdisplays the command with the same quoting tox uses to parse a reference (#4277) by @gaborbernat..venvredirect. A concurrent directory rename or junction added to an empty project directory cannot redirect a write or removal into another project. Redirect writes replace.venvwith a temporary file, leaving the target of a swapped.venvsymlink or hard link unchanged (#4335) by @gaborbernat..batand.cmdcommands forcmd.exe. Values containing shell operators or percent signs reach the batch file without starting another command or expanding environment variables. Batch scripts that inspect raw%1may now see surrounding quotes for arguments that need them (#4288) by @gaborbernat.base_pythonentry to virtualenv as a separate--pythonargument. virtualenv split the oldVIRTUALENV_PYTHONvalue on commas andos.pathsep, then tried the first candidate last; that could start an unintended program (#4292) by @gaborbernat.-using./on POSIX or.\on Windows. The resulting pip argument no longer starts with-(#4266) by @gaborbernat.#in INI references to paths, sochange_dir,env_dirandset_env = file|...use the checkout directory when its name contains#. On POSIX, requirement-file paths with a space before#remain readable (#4285) by @gaborbernat.--no-captureor setting up an environment withtox exec(#4301) by @Pratham2511 and @gaborbernat.depsorconstraintsentry, and a backslash ending a substituted requirement line. Also reject line breaks and trailing backslashes in globbed requirement paths and provisioning requirements. These values can no longer add pip options or consume the following entry (#4295) by @gaborbernat.env_listentry. This prevents a value inside onerequiresentry from adding a requirement, and a value inside oneenv_listentry from selecting another environment. A substitution that occupies a whole entry can still expand to several entries. The same check applies to text overrides supplied with-xorTOX_OVERRIDE(#4284) by @gaborbernat.{posargs}and INI command references. This prevents a line break in one argument from starting another command (#4294) by @gaborbernat.-c/--confpath from the typed line when loadingtoxfile.pyand offering environments. While that path is incomplete, completion loads no inline plugin (#4278) by @gaborbernat.-m toxre-exec, Python no longer puts the start directory first onsys.path, where an unrelated file could replace tox or a dependency (#4270) by @gaborbernat.-c/--confor--rootbefore options defined by an inline plugin (#4281) by @gaborbernat.tox execorcommands = {posargs}, tox now leaves a bare program name such aspythonunchanged. It also leaves a bare executable first positional value unchanged, including when a command uses that value as data, because wrappers can run it as a program. A same-named file in the start directory no longer replaces the environment's program. An explicit path such as./pythonstill followsargs_are_paths(#4289) by @gaborbernat.TOX_LIMITED_SHEBANGenabled, tox now keeps quote and backslash characters in an unquoted shebang interpreter path. They no longer change the executable tox starts. The existing double-quoted form for paths with spaces remains supported (#4274) by @gaborbernat.args_are_pathson POSIX, tox now rewrites positional paths from the resolvedchange_dir. A linked.toxcan no longer redirect a positional path to a file beside the link target (#4273) by @gaborbernat.pylockanddependency_groupsnow usepackage_rootwhen a run has no package environment. They previously usedtox_rootin that case (#4299) by @pcbeingused333 and @gaborbernat.env_list, label or package environment name from selecting a directory outsidework_dir(#4271) by @gaborbernat.env_dir,env_tmp_dir,env_log_dir,work_dir,temp_dir,package_root,meta_dir,pkg_dirandpackage_globvalues againsttox_root. Withtox -c path/to/tox.inistarted elsewhere, it no longer clears or reuses those directories in the start directory or selects a package from there (#4291) by @gaborbernat.{glob:PATTERN}matches andTOX_FACTOR_<label>overrides literally in INI configuration: a{...}or[]in them is no longer substituted again, sotox run -- '{env:SECRET}'hands the command{env:SECRET}instead of the variable's value andtox run -- '{posargs} -x'stays one argument. TheDEFAULTSof{posargs:DEFAULTS}and referenced keys still expand their own substitutions (#4286) by @gaborbernat.Security
depsorconstraintssubstitutions, including${VAR}expansion. tox still accepts options written on the same line in either setting (#4297) by @gaborbernat.virtualenv_specas avirtualenvrequirement with optional version specifiers before invoking pip (#4261) by @gaborbernat.rmtreeandO_DIRECTORY/O_NOFOLLOWare available, clean environment, log, and temporary directories relative to an open directory descriptor so a symlink swap cannot redirect deletions outside tox's work directory. Replace a link already at the cleanup path without emptying its target (#4296) by @gaborbernat.set_envenvironment files now split entries only at LF or CR line endings. Embedded Unicode separators no longer start a new variable (#4260) by @gaborbernat.New Contributors
PyPI release
Full Changelog
v4.67.4Compare Source
Bug fixes
demo[dev]; python_version < "3.10", now keeps that marker on the extra's requirements instead of installing them on every interpreter (#4211) by @ericdelorefice and @gaborbernat.PyPI release
Full Changelog
v4.67.3Compare Source
Bug fixes
env_listsuch aspy3{16-}used to fail withValueError: py3{}, and a TOML range dict expanded to an empty axis, dropping that dimension from the matrix (#4176) by @HyperionBurn and @gaborbernat.replace = "glob"table now substitutes itspatternanddefault, matching the INI{glob:PATTERN:DEFAULT}form, sopattern = "{env_name}/*.whl"matches files instead of a literal{env_name}directory (#4180) by @ag3ntsc4rn and @gaborbernat. (#4178)--force-depnow matches dependency names after PEP 503 normalization, so--force-dep typing-extensions==4.9.0replacesTyping_Extensions==4.12.2indepsinstead of passing both pins to pip, and replaces aTyping_Extensionsrequirement from the package metadata, where tox used to drop the forced pin (#4181) by @ag3ntsc4rn and @gaborbernat. (#4179){glob:PATTERN:DEFAULT}with a single-letter pattern and an absolute default, such as{glob:z:/fallback}, no longer expands to an empty string on POSIX: tox now looks for a Windows drive letter in the pattern only on Windows (#4183) by @JingHao-Leon and @gaborbernat. (#4182){ replace = "env" }table inset_envwhosedefaultends in a backslash now resolves to the variable or the default, instead of the literal{env:...}text (#4185) by @JingHao-Leon and @gaborbernat. (#4184)--no-indexin a requirements file ordepsnow wins over--index-urland--extra-index-urlon the same or a later line, as in pip. Previously tox dropped it and installed from those indexes, and from PyPI too when given an--extra-index-url(#4187) by @syahra712 and @gaborbernat.pyproject.tomlno longer breaksdependency_groupsor reading the package's static dependencies from[project], and one in abase_python_filesuch as.python-versionis no longer read as part of the Python version (#4188) by @pcbeingused333 and @gaborbernat.--parallel autonow counts the CPUs tox may run on instead of every CPU in the machine, so it respects the CPU affinity mask set bytasksetor a container's cpuset (andPYTHON_CPU_COUNTon Python 3.13+) (#4190) by @mehdimirzafaruk and @gaborbernat.{ replace = "ref", env = ..., key = ... }now takes a path (change_dir,env_dir), set (extras,labels,dependency_groups) or environment list (depends) value from another environment, instead of failing validation of the referencing key (#4192) by @pcbeingused333 and @gaborbernat.--result-jsonis now always written as UTF-8 instead of the locale's preferred encoding. Captured output that a legacy Windows code page cannot represent, or that holds bytes which are not valid UTF-8, no longer crashes the run at the end with a truncated file; the invalid bytes are stored as\uXXXXescapes (#4194) by @mehdimirzafaruk and @gaborbernat.lint-[ab]andlint-[!a]in an inidependsnow load, as thedependsreference documents, instead of failing to load the configuration (#4195) by @nk-batman21 and @gaborbernat.tox run-paralleldoes (#4196) by @Rodrigo-Palma and @gaborbernat.constrain_package_depsconstraints file, so pip no longer rejects it (#4203) by @ericdelorefice and @gaborbernat.PYTHONHASHSEEDno longer makes every tox command fail withValueError. tox treats it as unset, as Python does, and picks a random seed (#4205) by @devYRPauli and @gaborbernat.Documentation
[vars]values that contain spaces, and how quotes stored in those values pair with the quotes around them (#4197) by @Blues-berry and @gaborbernat. (#4191)New Contributors
PyPI release
Full Changelog
v4.67.2Compare Source
Packaging
🐍 PyPI release
📜 Full Changelog
v4.67.1Compare Source
Bug fixes
-) and invert (!) exit code prefixes on commands when referenced via TOML{ replace = "ref", ... }. (#4169)pylock.tomlwith nodependency_groupsselected now uses the lock file'sdefault-groups, as PEP 751 specifies. Previously packages marked'default' in dependency_groups(as written bypdm export -f pylock) were skipped by @pcbeingused333. (#4173){factor:N}label in anenv_basenow resolves against that table's ownfactors, so with severalenv_basetables or anenv_listproductit no longer expands to an empty string. (#4174)New Contributors
🐍 PyPI release
[📜 Full Changelog](https:
Configuration
📅 Schedule: (UTC)
* 0-3 1 * *)🚦 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 was generated by Mend Renovate. View the repository job log.