-
-
Notifications
You must be signed in to change notification settings - Fork 31k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
importlib.metadata.metadata("package") fails with email.errors.HeaderParseError when README contains valid markdown link #119650
Comments
Today I encountered this error as well on a file with RST in the description: ~ @ pip-run build -- -c "import build.util; print(build.util.project_wheel_metadata('~/code/jaraco/jaraco.packaging'))"
Traceback (most recent call last):
File "<string>", line 1, in <module>
import build.util; print(build.util.project_wheel_metadata('~/code/jaraco/jaraco.packaging'))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-u6naqgo3/build/util.py", line 43, in project_wheel_metadata
builder = ProjectBuilder.from_isolated_env(
env,
source_dir,
runner=runner,
)
File "/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-u6naqgo3/build/_builder.py", line 179, in from_isolated_env
return cls(
source_dir=source_dir,
python_executable=env.python_executable,
runner=_wrap_subprocess_runner(runner, env),
)
File "/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-u6naqgo3/build/_builder.py", line 154, in __init__
_validate_source_directory(source_dir)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/var/folders/f2/2plv6q2n7l932m2x004jlw340000gn/T/pip-run-u6naqgo3/build/_builder.py", line 52, in _validate_source_directory
raise BuildException(msg)
build._exceptions.BuildException: Source ~/code/jaraco/jaraco.packaging is not a directory
~ [1] @ pip-run build -- -c "import build.util; print(build.util.project_wheel_metadata('code/jaraco/jaraco.packaging'))"
Traceback (most recent call last):
File "<string>", line 1, in <module>
import build.util; print(build.util.project_wheel_metadata('code/jaraco/jaraco.packaging'))
~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/python/lib/python3.13/email/message.py", line 165, in __str__
return self.as_string()
~~~~~~~~~~~~~~^^
File "/opt/python/lib/python3.13/email/message.py", line 188, in as_string
g.flatten(self, unixfrom=unixfrom)
~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/python/lib/python3.13/email/generator.py", line 115, in flatten
self._write(msg)
~~~~~~~~~~~^^^^^
File "/opt/python/lib/python3.13/email/generator.py", line 198, in _write
self._write_headers(msg)
~~~~~~~~~~~~~~~~~~~^^^^^
File "/opt/python/lib/python3.13/email/generator.py", line 225, in _write_headers
self.write(self.policy.fold(h, v))
~~~~~~~~~~~~~~~~^^^^^^
File "/opt/python/lib/python3.13/email/_policybase.py", line 326, in fold
return self._fold(name, value, sanitize=True)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/python/lib/python3.13/email/_policybase.py", line 369, in _fold
parts.append(h.encode(linesep=self.linesep, maxlinelen=maxlinelen))
~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/python/lib/python3.13/email/header.py", line 385, in encode
raise HeaderParseError("header value appears to contain "
"an embedded header: {!r}".format(value))
email.errors.HeaderParseError: header value appears to contain an embedded header: ".. image:: https://img.shields.io/pypi/v/jaraco.packaging.svg\n :target: https://pypi.org/project/jaraco.packaging\n.. image:: https://img.shields.io/pypi/pyversions/jaraco.packaging.svg\n.. image:: https://github.com/jaraco/jaraco.packaging/actions/workflows/main.yml/badge.svg\n :target: https://github.com/jaraco/jaraco.packaging/actions?query=workflow%3A%22tests%22\n :alt: tests\n.. image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json\n :target: https://github.com/astral-sh/ruff\n :alt: Ruff\n.. image:: https://readthedocs.org/projects/jaracopackaging/badge/?version=latest\n :target: https://jaracopackaging.readthedocs.io/en/latest/?badge=latest\n.. image:: https://img.shields.io/badge/skeleton-2024-informational\n :target: https://blog.jaraco.com/skeleton\nTools for packaging.\nsphinx\n======\nThis package provides a Sphinx extension that will inject into the config\nthe following values from the project's package metadata (as presented by\ndistutils):\n - project (from name)\n - author\n - copyright (same as author)\n - version\n - release (same as version)\n - package_url (from url)\nTo enable, include 'jaraco.packaging' in the requirements and add\n'jaraco.packaging.sphinx' to the list of extensions in a Sphinx config\nfile::\n extensions=['jaraco.packaging.sphinx']\nThe extension by default builds the project in an isolated environment in\norder to extract the metadata. For offline builds, set\n``BUILD_ENVIRONMENT=current`` and ensure the build dependencies are\nmet in the current environment.\nDeprecated: To build the documentation offline,\nprovide an already built wheel by setting the environment variable\n``JARACO_PACKAGING_SPHINX_WHEEL`` to the path of an existing wheel.\nmake-tree\n=========\nA utility for taking output from ``pipdeptree --json`` and producing a tree\nrooted at a given package.\nUsage::\n pipdeptree --json | python -m jaraco.packaging.make-tree mypkg\nmetadata\n=========\nA wrapper around ``build.util.project_wheel_metadata`` to enable dowstream\npackagers to indicate that they need an isolated build. Set the environment\nvariable ``BUILD_ENVIRONMENT=current`` to bypass build isolation and use the\ncurrent isolation for loading metadata from a project." I believe this is a bug in the email module incorrectly inferring an error in the (multi-line) description.
md = importlib.metadata.metadata('test')
for key in md:
print(key, md[key], sep=": ") Edit: on further consideration, that approach will fail to emit unique values for headers of the same key. A better workaround is needed. |
The error is easily reproduced without involving importlib.metadata: >>> import email.message
>>> msg = email.message.Message()
>>> msg.add_header('Foo', 'Test\n[bar](https://example.com)\n')
>>> print(msg)
Traceback (most recent call last):
...
email.errors.HeaderParseError: header value appears to contain an embedded header: 'Test\n[bar](https://example.com)' |
The regex that's rejecting the header value is: Lines 50 to 52 in 7595e67
It's detecting the |
Aha. So maybe cpython/Lib/importlib/metadata/_adapters.py Lines 63 to 73 in 6f1d448
The email module is assuming the headers are internally represented in their messy, escaped format, but importlib.metadata adapts that to store friendly values internally. Probably that means that |
I get this with
The looks like it's just adding indent to already-indented headers. I don't think they could be broken that way. But are the headers actually escaped? The email module doesn't handle unicode (at least for the body), and the specification says it's RFC822 + unicode. And headers aren't allowed to have a new newline in the writers. So most writers customize the writing, and I don't think they escape anything. |
Just for context: In emails, a header values cannot contain |
I would love if Python package metadata was JSON instead of not-really-email format. :) There's a way to express metadata (starting with 2.1 or 2.2, forget which) as JSON, but no standard filename, etc. for it. The original "long-description" section, before it was moved to the payload, used
(TBH, payloads aren't unicode, so this requires more hacks.) But this was never done for the license field, such as in this example:
(See https://packaging.python.org/en/latest/specifications/core-metadata/#license) When I've tried to validate single line for the one-line summary, I had to go back because people were loading paragraphs into the summary and were mad that it broke. 🤷 The issue here, though, is that there seems to be some escaping needed for things like markdown and restructure text code in a field (License for example), and I'm trying to find out if there's some escaping we can do to make the parser happy. |
Before moving to scikit-build-core, this was the contents of the `License` field. Putting the entire contents of the license file here breaks `importlib.metadata.metadata("iminuit")` (see python/cpython#119650), and isn't needed - the license file is stored in the wheel already, and the currently only canonical location for license metadata is the trove classifiers. PEP 639, which is currently provisionally accepted and waiting support in packaging, PyPI, etc, solves this by supporting SPDX license expressions. But that's not ready yet. (This is not critical, but a minor annoyance I hit while debugging)
Currently, I can't reproduce the error. The same version of iminuit I was running is not reporting an error even when I try it on a range of Pythons. # /// script
# dependencies = ["nox"]
# ///
import nox
import nox.__main__
@nox.session(python=["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"], venv_backend="uv")
def check(session):
session.install("iminuit")
session.run("python", "-c", "import importlib.metadata; importlib.metadata.metadata('iminuit')['License']")
if __name__ == "__main__":
nox.__main__.main() |
This problem also occurs with license identifiers in HTML comments in <!--
SPDX-FileCopyrightText: 2025 David (Me)
SPDX-License-Identifier: GPL-3.0-or-later
-->
contents here ... with error
|
Here's a simpler reproducer:
Essentially, attempting to render the metadata for any package with a multiline description is likely to fail.
I do observe that the
|
I've rolled out a fix in
It seems that although I added some support for rendering content with newlines (by indenting it), there are still some blank lines that are not being indented. Aha. It seems that
|
In importlib_metadata 8.6.1, it now honors blank lines as well. Please try it out and confirm it addresses your concerns; it should get merged into Python 3.14. |
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 8.5.0 to 8.6.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's changelog</a>.</em></p> <blockquote> <h1>v8.6.1</h1> <h2>Bugfixes</h2> <ul> <li>Fixed indentation logic to also honor blank lines.</li> </ul> <h1>v8.6.0</h1> <h2>Features</h2> <ul> <li><code>python/cpython#119650</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/importlib_metadata/commit/45e8bde73f8ce816fdc47618a31ba3916a332485"><code>45e8bde</code></a> Finalize</li> <li><a href="https://github.com/python/importlib_metadata/commit/506beb7cbd23fef4f93a63a5c3931e302d828896"><code>506beb7</code></a> Fixed indentation logic to also honor blank lines.</li> <li><a href="https://github.com/python/importlib_metadata/commit/dad738095d6d28f24d254f3cc9f82e2394fb2a09"><code>dad7380</code></a> Finalize</li> <li><a href="https://github.com/python/importlib_metadata/commit/dab1dd81507fef5bff6a32a63ab8fc8633e2c24c"><code>dab1dd8</code></a> When transforming the payload to a Description key, clear the payload.</li> <li><a href="https://github.com/python/importlib_metadata/commit/07aa607e54672bc1077007771cbca0e16475aa24"><code>07aa607</code></a> Add support for rendering metadata where some fields have newlines (python/cp...</li> <li><a href="https://github.com/python/importlib_metadata/commit/b92ec183c0297c2edd9b66202647c560937241e3"><code>b92ec18</code></a> Merge <a href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li> <li><a href="https://github.com/python/importlib_metadata/commit/5c34e69568f23a524af4fa9dad3f5e80f22ec3e6"><code>5c34e69</code></a> Use extend for proper workaround.</li> <li><a href="https://github.com/python/importlib_metadata/commit/694e5b4e5e024e29d3bff6f8ff3054792c6e726a"><code>694e5b4</code></a> Merge <a href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li> <li><a href="https://github.com/python/importlib_metadata/commit/750a1891ec4a1c0602050e3463e9593a8c13aa14"><code>750a189</code></a> Require Python 3.9 or later now that Python 3.8 is EOL.</li> <li><a href="https://github.com/python/importlib_metadata/commit/e61a9df7cdc9c8d1b56c30b7b3f94a7cdac14414"><code>e61a9df</code></a> Include pyproject.toml in ruff.toml.</li> <li>Additional commits viewable in <a href="https://github.com/python/importlib_metadata/compare/v8.5.0...v8.6.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=importlib-metadata&package-manager=pip&previous-version=8.5.0&new-version=8.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…5.0 to version 8.6.1 Anderson Bravalheri (1): Bump pre-commit hook for ruff to avoid clashes with pytest-ruff (jaraco/skeleton#150) Avasam (1): Fix an incompatibility (and source of merge conflicts) with projects using Ruff/isort. Jason R. Coombs (15): Remove workaround for sphinx-contrib/sphinx-lint#83 Allow the workflow to be triggered manually. 👹 Feed the hobgoblins (delint). Ensure redent is idempotent (doesn't add 8 spaces to already dedented values). Add Python 3.13 and 3.14 into the matrix. (jaraco/skeleton#146) Separate bpo from Python issue numbers. Add Python 3.13 and 3.14 into the matrix. (jaraco/skeleton#151) Include pyproject.toml in ruff.toml. Require Python 3.9 or later now that Python 3.8 is EOL. Use extend for proper workaround. Add support for rendering metadata where some fields have newlines (python/cpython#119650). When transforming the payload to a Description key, clear the payload. Finalize Fixed indentation logic to also honor blank lines. Finalize
Bumps the dependencies group in /.config with 12 updates: | Package | From | To | | --- | --- | --- | | [filelock](https://github.com/tox-dev/py-filelock) | `3.16.1` | `3.17.0` | | [pre-commit](https://github.com/pre-commit/pre-commit) | `4.0.1` | `4.1.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.9.2` | `0.9.3` | | [tox](https://github.com/tox-dev/tox) | `4.23.2` | `4.24.1` | | [attrs](https://github.com/sponsors/hynek) | `24.3.0` | `25.1.0` | | [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `5.5.1` | | [identify](https://github.com/pre-commit/identify) | `2.6.5` | `2.6.6` | | [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.6.1` | | [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.14` | `10.14.1` | | [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.8.0` | `1.9.0` | | [referencing](https://github.com/python-jsonschema/referencing) | `0.36.1` | `0.36.2` | | ruamel-yaml | `0.18.6` | `0.18.10` | Updates `filelock` from 3.16.1 to 3.17.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tox-dev/py-filelock/releases">filelock's releases</a>.</em></p> <blockquote> <h2>Drop 3.8</h2> <!-- raw HTML omitted --> <p><strong>Full Changelog</strong>: <a href="https://github.com/tox-dev/filelock/compare/3.16.1...3.17.0">https://github.com/tox-dev/filelock/compare/3.16.1...3.17.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tox-dev/filelock/commit/5eb02b2580122e6f42fb8b7a4e08cededcb22b1c"><code>5eb02b2</code></a> Drop 3.8 (<a href="https://github.com/tox-dev/py-filelock/issues/388">#388</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/23a984803c969a75530ba8c2c5fb5a6b73686762"><code>23a9848</code></a> Bump astral-sh/setup-uv from 4 to 5 (<a href="https://github.com/tox-dev/py-filelock/issues/387">#387</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/79a958358f79ea3ae0ae1bc7ee7ce6a96a5ef407"><code>79a9583</code></a> Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 (<a href="https://github.com/tox-dev/py-filelock/issues/386">#386</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/46dddc89672d1646156c61c4db0a664ba4886d2f"><code>46dddc8</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/385">#385</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/57f488ff8fdc2193572efe102408fb63cfefe4e4"><code>57f488f</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/383">#383</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/d4feb5a15974754a8fcd7893c196f229652a05ca"><code>d4feb5a</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/382">#382</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/fb2a4e26c6b391e78ca35d0959e854e9c174fc2b"><code>fb2a4e2</code></a> Bump astral-sh/setup-uv from 3 to 4 (<a href="https://github.com/tox-dev/py-filelock/issues/381">#381</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/07c2840b805d1dd2400ee1b6b193dd3c9bf1f7c0"><code>07c2840</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/379">#379</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/ee4c7ba1c863509a4fa9a8a992c7ec41747e1f96"><code>ee4c7ba</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/377">#377</a>)</li> <li><a href="https://github.com/tox-dev/filelock/commit/2e1a1b228dcf9ab82d93be164573def7c630ae54"><code>2e1a1b2</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/py-filelock/issues/374">#374</a>)</li> <li>Additional commits viewable in <a href="https://github.com/tox-dev/py-filelock/compare/3.16.1...3.17.0">compare view</a></li> </ul> </details> <br /> Updates `pre-commit` from 4.0.1 to 4.1.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pre-commit/pre-commit/releases">pre-commit's releases</a>.</em></p> <blockquote> <h2>pre-commit v4.1.0</h2> <h3>Features</h3> <ul> <li>Add <code>language: julia</code>. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3348">#3348</a> PR by <a href="https://github.com/fredrikekre"><code>@fredrikekre</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/2689">#2689</a> issue <a href="https://github.com/jmuchovej"><code>@jmuchovej</code></a>.</li> </ul> </li> </ul> <h3>Fixes</h3> <ul> <li>Disable automatic toolchain switching for <code>language: golang</code>. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3304">#3304</a> PR by <a href="https://github.com/AleksaC"><code>@AleksaC</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3300">#3300</a> issue by <a href="https://github.com/AleksaC"><code>@AleksaC</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3149">#3149</a> issue by <a href="https://github.com/nijel"><code>@nijel</code></a>.</li> </ul> </li> <li>Fix <code>language: r</code> installation when initiated by RStudio. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3389">#3389</a> PR by <a href="https://github.com/lorenzwalthert"><code>@lorenzwalthert</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3385">#3385</a> issue by <a href="https://github.com/lorenzwalthert"><code>@lorenzwalthert</code></a>.</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md">pre-commit's changelog</a>.</em></p> <blockquote> <h1>4.1.0 - 2025-01-20</h1> <h3>Features</h3> <ul> <li>Add <code>language: julia</code>. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3348">#3348</a> PR by <a href="https://github.com/fredrikekre"><code>@fredrikekre</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/2689">#2689</a> issue <a href="https://github.com/jmuchovej"><code>@jmuchovej</code></a>.</li> </ul> </li> </ul> <h3>Fixes</h3> <ul> <li>Disable automatic toolchain switching for <code>language: golang</code>. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3304">#3304</a> PR by <a href="https://github.com/AleksaC"><code>@AleksaC</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3300">#3300</a> issue by <a href="https://github.com/AleksaC"><code>@AleksaC</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3149">#3149</a> issue by <a href="https://github.com/nijel"><code>@nijel</code></a>.</li> </ul> </li> <li>Fix <code>language: r</code> installation when initiated by RStudio. <ul> <li><a href="https://github.com/pre-commit/pre-commit/issues/3389">#3389</a> PR by <a href="https://github.com/lorenzwalthert"><code>@lorenzwalthert</code></a>.</li> <li><a href="https://github.com/pre-commit/pre-commit/issues/3385">#3385</a> issue by <a href="https://github.com/lorenzwalthert"><code>@lorenzwalthert</code></a>.</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pre-commit/pre-commit/commit/b152e922ef11a97efe22ca7dc4f90011f0d1711c"><code>b152e92</code></a> v4.1.0</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/c3125a4d36912c768bfa5dcb2b79d6f4179d79ed"><code>c3125a4</code></a> Merge pull request <a href="https://github.com/pre-commit/pre-commit/issues/3389">#3389</a> from lorenzwalthert/dev-always-unset-renv</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/c2c061cf63e00a3ff8c88a9054c47e96a36f2daa"><code>c2c061c</code></a> fix: ensure env patch is applied for vanilla emulation</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/cd429db5e2172e51099716efd58a15e76a1719a7"><code>cd429db</code></a> Merge pull request <a href="https://github.com/pre-commit/pre-commit/issues/3382">#3382</a> from pre-commit/pre-commit-ci-update-config</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/9b9f8e254d46da65c8544244c423596d54260e24"><code>9b9f8e2</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/86300a4a7e5441aad007d83c1101d8a8eb767ad7"><code>86300a4</code></a> Merge pull request <a href="https://github.com/pre-commit/pre-commit/issues/3376">#3376</a> from pre-commit/r-gone</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/77edad8455e88b403e055d2692c9545085cf3edb"><code>77edad8</code></a> install r on ubuntu runners</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/18b393905e24c730eeb15754f6f275a9d27e396f"><code>18b3939</code></a> Merge pull request <a href="https://github.com/pre-commit/pre-commit/issues/3375">#3375</a> from pre-commit/dotnet-tests-ubuntu-latest</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/31cb945ffb860f6f8176642d1a27af40eeec554d"><code>31cb945</code></a> Merge pull request <a href="https://github.com/pre-commit/pre-commit/issues/3374">#3374</a> from pre-commit/docker-image-tests-ubuntu-22-not-pre...</li> <li><a href="https://github.com/pre-commit/pre-commit/commit/28c3d81bd27fe5e62eead459c1963a582e763bd7"><code>28c3d81</code></a> update .net tests to use .net 8</li> <li>Additional commits viewable in <a href="https://github.com/pre-commit/pre-commit/compare/v4.0.1...v4.1.0">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.9.2 to 0.9.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.9.3</h2> <h2>Release Notes</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Argument <code>fail_stop</code> in DAG has been renamed as <code>fail_fast</code> (<code>AIR302</code>) (<a href="https://github.com/astral-sh/ruff/pull/15633">#15633</a>)</li> <li>[<code>airflow</code>] Extend <code>AIR303</code> with more symbols (<a href="https://github.com/astral-sh/ruff/pull/15611">#15611</a>)</li> <li>[<code>flake8-bandit</code>] Report all references to suspicious functions (<code>S3</code>) (<a href="https://github.com/astral-sh/ruff/pull/15541">#15541</a>)</li> <li>[<code>flake8-pytest-style</code>] Do not emit diagnostics for empty <code>for</code> loops (<code>PT012</code>, <code>PT031</code>) (<a href="https://github.com/astral-sh/ruff/pull/15542">#15542</a>)</li> <li>[<code>flake8-simplify</code>] Avoid double negations (<code>SIM103</code>) (<a href="https://github.com/astral-sh/ruff/pull/15562">#15562</a>)</li> <li>[<code>pyflakes</code>] Fix infinite loop with unused local import in <code>__init__.py</code> (<code>F401</code>) (<a href="https://github.com/astral-sh/ruff/pull/15517">#15517</a>)</li> <li>[<code>pylint</code>] Do not report methods with only one <code>EM101</code>-compatible <code>raise</code> (<code>PLR6301</code>) (<a href="https://github.com/astral-sh/ruff/pull/15507">#15507</a>)</li> <li>[<code>pylint</code>] Implement <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://github.com/astral-sh/ruff/pull/9640">#9640</a>)</li> <li>[<code>pyupgrade</code>] Add rules to use PEP 695 generics in classes and functions (<code>UP046</code>, <code>UP047</code>) (<a href="https://github.com/astral-sh/ruff/pull/15565">#15565</a>, <a href="https://github.com/astral-sh/ruff/pull/15659">#15659</a>)</li> <li>[<code>refurb</code>] Implement <code>for-loop-writes</code> (<code>FURB122</code>) (<a href="https://github.com/astral-sh/ruff/pull/10630">#10630</a>)</li> <li>[<code>ruff</code>] Implement <code>needless-else</code> clause (<code>RUF047</code>) (<a href="https://github.com/astral-sh/ruff/pull/15051">#15051</a>)</li> <li>[<code>ruff</code>] Implement <code>starmap-zip</code> (<code>RUF058</code>) (<a href="https://github.com/astral-sh/ruff/pull/15483">#15483</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (<code>B903</code>) (<a href="https://github.com/astral-sh/ruff/pull/15549">#15549</a>)</li> <li>[<code>flake8-comprehensions</code>] strip parentheses around generators in <code>unnecessary-generator-set</code> (<code>C401</code>) (<a href="https://github.com/astral-sh/ruff/pull/15553">#15553</a>)</li> <li>[<code>flake8-pytest-style</code>] Rewrite references to <code>.exception</code> (<code>PT027</code>) (<a href="https://github.com/astral-sh/ruff/pull/15680">#15680</a>)</li> <li>[<code>flake8-simplify</code>] Mark fixes as unsafe (<code>SIM201</code>, <code>SIM202</code>) (<a href="https://github.com/astral-sh/ruff/pull/15626">#15626</a>)</li> <li>[<code>flake8-type-checking</code>] Fix some safe fixes being labeled unsafe (<code>TC006</code>,<code>TC008</code>) (<a href="https://github.com/astral-sh/ruff/pull/15638">#15638</a>)</li> <li>[<code>isort</code>] Omit trailing whitespace in <code>unsorted-imports</code> (<code>I001</code>) (<a href="https://github.com/astral-sh/ruff/pull/15518">#15518</a>)</li> <li>[<code>pydoclint</code>] Allow ignoring one line docstrings for <code>DOC</code> rules (<a href="https://github.com/astral-sh/ruff/pull/13302">#13302</a>)</li> <li>[<code>pyflakes</code>] Apply redefinition fixes by source code order (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15575">#15575</a>)</li> <li>[<code>pyflakes</code>] Avoid removing too many imports in <code>redefined-while-unused</code> (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15585">#15585</a>)</li> <li>[<code>pyflakes</code>] Group redefinition fixes by source statement (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15574">#15574</a>)</li> <li>[<code>pylint</code>] Include name of base class in message for <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://github.com/astral-sh/ruff/pull/15559">#15559</a>)</li> <li>[<code>ruff</code>] Update fix for <code>RUF055</code> to use <code>var == value</code> (<a href="https://github.com/astral-sh/ruff/pull/15605">#15605</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix bracket spacing for single-element tuples in f-string expressions (<a href="https://github.com/astral-sh/ruff/pull/15537">#15537</a>)</li> <li>Fix unstable f-string formatting for expressions containing a trailing comma (<a href="https://github.com/astral-sh/ruff/pull/15545">#15545</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid quadratic membership check in import fixes (<a href="https://github.com/astral-sh/ruff/pull/15576">#15576</a>)</li> </ul> <h3>Server</h3> <ul> <li>Allow <code>unsafe-fixes</code> settings for code actions (<a href="https://github.com/astral-sh/ruff/pull/15666">#15666</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bandit</code>] Add missing single-line/dotall regex flag (<code>S608</code>) (<a href="https://github.com/astral-sh/ruff/pull/15654">#15654</a>)</li> <li>[<code>flake8-import-conventions</code>] Fix infinite loop between <code>ICN001</code> and <code>I002</code> (<code>ICN001</code>) (<a href="https://github.com/astral-sh/ruff/pull/15480">#15480</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.9.3</h2> <h3>Preview features</h3> <ul> <li>[<code>airflow</code>] Argument <code>fail_stop</code> in DAG has been renamed as <code>fail_fast</code> (<code>AIR302</code>) (<a href="https://github.com/astral-sh/ruff/pull/15633">#15633</a>)</li> <li>[<code>airflow</code>] Extend <code>AIR303</code> with more symbols (<a href="https://github.com/astral-sh/ruff/pull/15611">#15611</a>)</li> <li>[<code>flake8-bandit</code>] Report all references to suspicious functions (<code>S3</code>) (<a href="https://github.com/astral-sh/ruff/pull/15541">#15541</a>)</li> <li>[<code>flake8-pytest-style</code>] Do not emit diagnostics for empty <code>for</code> loops (<code>PT012</code>, <code>PT031</code>) (<a href="https://github.com/astral-sh/ruff/pull/15542">#15542</a>)</li> <li>[<code>flake8-simplify</code>] Avoid double negations (<code>SIM103</code>) (<a href="https://github.com/astral-sh/ruff/pull/15562">#15562</a>)</li> <li>[<code>pyflakes</code>] Fix infinite loop with unused local import in <code>__init__.py</code> (<code>F401</code>) (<a href="https://github.com/astral-sh/ruff/pull/15517">#15517</a>)</li> <li>[<code>pylint</code>] Do not report methods with only one <code>EM101</code>-compatible <code>raise</code> (<code>PLR6301</code>) (<a href="https://github.com/astral-sh/ruff/pull/15507">#15507</a>)</li> <li>[<code>pylint</code>] Implement <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://github.com/astral-sh/ruff/pull/9640">#9640</a>)</li> <li>[<code>pyupgrade</code>] Add rules to use PEP 695 generics in classes and functions (<code>UP046</code>, <code>UP047</code>) (<a href="https://github.com/astral-sh/ruff/pull/15565">#15565</a>, <a href="https://github.com/astral-sh/ruff/pull/15659">#15659</a>)</li> <li>[<code>refurb</code>] Implement <code>for-loop-writes</code> (<code>FURB122</code>) (<a href="https://github.com/astral-sh/ruff/pull/10630">#10630</a>)</li> <li>[<code>ruff</code>] Implement <code>needless-else</code> clause (<code>RUF047</code>) (<a href="https://github.com/astral-sh/ruff/pull/15051">#15051</a>)</li> <li>[<code>ruff</code>] Implement <code>starmap-zip</code> (<code>RUF058</code>) (<a href="https://github.com/astral-sh/ruff/pull/15483">#15483</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>flake8-bugbear</code>] Do not raise error if keyword argument is present and target-python version is less or equals than 3.9 (<code>B903</code>) (<a href="https://github.com/astral-sh/ruff/pull/15549">#15549</a>)</li> <li>[<code>flake8-comprehensions</code>] strip parentheses around generators in <code>unnecessary-generator-set</code> (<code>C401</code>) (<a href="https://github.com/astral-sh/ruff/pull/15553">#15553</a>)</li> <li>[<code>flake8-pytest-style</code>] Rewrite references to <code>.exception</code> (<code>PT027</code>) (<a href="https://github.com/astral-sh/ruff/pull/15680">#15680</a>)</li> <li>[<code>flake8-simplify</code>] Mark fixes as unsafe (<code>SIM201</code>, <code>SIM202</code>) (<a href="https://github.com/astral-sh/ruff/pull/15626">#15626</a>)</li> <li>[<code>flake8-type-checking</code>] Fix some safe fixes being labeled unsafe (<code>TC006</code>,<code>TC008</code>) (<a href="https://github.com/astral-sh/ruff/pull/15638">#15638</a>)</li> <li>[<code>isort</code>] Omit trailing whitespace in <code>unsorted-imports</code> (<code>I001</code>) (<a href="https://github.com/astral-sh/ruff/pull/15518">#15518</a>)</li> <li>[<code>pydoclint</code>] Allow ignoring one line docstrings for <code>DOC</code> rules (<a href="https://github.com/astral-sh/ruff/pull/13302">#13302</a>)</li> <li>[<code>pyflakes</code>] Apply redefinition fixes by source code order (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15575">#15575</a>)</li> <li>[<code>pyflakes</code>] Avoid removing too many imports in <code>redefined-while-unused</code> (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15585">#15585</a>)</li> <li>[<code>pyflakes</code>] Group redefinition fixes by source statement (<code>F811</code>) (<a href="https://github.com/astral-sh/ruff/pull/15574">#15574</a>)</li> <li>[<code>pylint</code>] Include name of base class in message for <code>redefined-slots-in-subclass</code> (<code>W0244</code>) (<a href="https://github.com/astral-sh/ruff/pull/15559">#15559</a>)</li> <li>[<code>ruff</code>] Update fix for <code>RUF055</code> to use <code>var == value</code> (<a href="https://github.com/astral-sh/ruff/pull/15605">#15605</a>)</li> </ul> <h3>Formatter</h3> <ul> <li>Fix bracket spacing for single-element tuples in f-string expressions (<a href="https://github.com/astral-sh/ruff/pull/15537">#15537</a>)</li> <li>Fix unstable f-string formatting for expressions containing a trailing comma (<a href="https://github.com/astral-sh/ruff/pull/15545">#15545</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid quadratic membership check in import fixes (<a href="https://github.com/astral-sh/ruff/pull/15576">#15576</a>)</li> </ul> <h3>Server</h3> <ul> <li>Allow <code>unsafe-fixes</code> settings for code actions (<a href="https://github.com/astral-sh/ruff/pull/15666">#15666</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-bandit</code>] Add missing single-line/dotall regex flag (<code>S608</code>) (<a href="https://github.com/astral-sh/ruff/pull/15654">#15654</a>)</li> <li>[<code>flake8-import-conventions</code>] Fix infinite loop between <code>ICN001</code> and <code>I002</code> (<code>ICN001</code>) (<a href="https://github.com/astral-sh/ruff/pull/15480">#15480</a>)</li> <li>[<code>flake8-simplify</code>] Do not emit diagnostics for expressions inside string type annotations (<code>SIM222</code>, <code>SIM223</code>) (<a href="https://github.com/astral-sh/ruff/pull/15405">#15405</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/90589372daf58ec4d314cbd15db8d2ef572c33cc"><code>9058937</code></a> Fix grep for version number in docker build (<a href="https://github.com/astral-sh/ruff/issues/15699">#15699</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/b5ffb404de8ab05eb7b14d6547f79f4fe3a3e25f"><code>b5ffb40</code></a> Bump version to 0.9.3 (<a href="https://github.com/astral-sh/ruff/issues/15698">#15698</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/cffd1866ce1ac6da4d6a5bc12435316d2d99755b"><code>cffd186</code></a> Preserve raw string prefix and escapes (<a href="https://github.com/astral-sh/ruff/issues/15694">#15694</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/569060f46ca2e036cd54532c97121737884f26c0"><code>569060f</code></a> [<code>flake8-pytest-style</code>] Rewrite references to <code>.exception</code> (<code>PT027</code>) (<a href="https://github.com/astral-sh/ruff/issues/15680">#15680</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/15394a80282f589526497eefb2507a0afc662ca6"><code>15394a8</code></a> [red-knot] MDTests: Do not depend on precise public-symbol type inference (<a href="https://github.com/astral-sh/ruff/issues/1">#1</a>...</li> <li><a href="https://github.com/astral-sh/ruff/commit/fc2ebea7369b26c864769fce54201a8657d70058"><code>fc2ebea</code></a> [red-knot] Make <code>infer.rs</code> unit tests independent of public symbol inference ...</li> <li><a href="https://github.com/astral-sh/ruff/commit/43160b4c3edb9cda4c01ed857e94578213e70c6f"><code>43160b4</code></a> Tidy knot CLI tests (<a href="https://github.com/astral-sh/ruff/issues/15685">#15685</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/0173738eef808a9b2f492a0b966e3f70e8584e21"><code>0173738</code></a> [red-knot] Port comprehension tests to Markdown (<a href="https://github.com/astral-sh/ruff/issues/15688">#15688</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/05ea77b1d4d1863e6436101cf877fbf265e966f4"><code>05ea77b</code></a> Create Unknown rule diagnostics with a source range (<a href="https://github.com/astral-sh/ruff/issues/15648">#15648</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/1e790d3885919826e2cff2fbf6ddb31554714050"><code>1e790d3</code></a> [red-knot] Port 'deferred annotations' unit tests to Markdown (<a href="https://github.com/astral-sh/ruff/issues/15686">#15686</a>)</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.9.2...0.9.3">compare view</a></li> </ul> </details> <br /> Updates `tox` from 4.23.2 to 4.24.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tox-dev/tox/releases">tox's releases</a>.</em></p> <blockquote> <h2>4.24.1</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>Adds ability to configure stderr output color by <a href="https://github.com/ssbarnea"><code>@ssbarnea</code></a> in <a href="https://github.com/tox-dev/tox/pull/3426">tox-dev/tox#3426</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tox-dev/tox/compare/4.24.0...4.24.1">https://github.com/tox-dev/tox/compare/4.24.0...4.24.1</a></p> <h2>4.24.0</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>fix docs config typo by <a href="https://github.com/wooshaun53"><code>@wooshaun53</code></a> in <a href="https://github.com/tox-dev/tox/pull/3424">tox-dev/tox#3424</a></li> <li>Allow users to disable use of pre-commit-uv by <a href="https://github.com/ssbarnea"><code>@ssbarnea</code></a> in <a href="https://github.com/tox-dev/tox/pull/3430">tox-dev/tox#3430</a></li> <li>Pass nix-ld related variables by default in pass_env (fixes <a href="https://github.com/tox-dev/tox/issues/3425">#3425</a>) by <a href="https://github.com/albertodonato"><code>@albertodonato</code></a> in <a href="https://github.com/tox-dev/tox/pull/3434">tox-dev/tox#3434</a></li> <li>Improve testenv docs consistency by <a href="https://github.com/thatch"><code>@thatch</code></a> in <a href="https://github.com/tox-dev/tox/pull/3440">tox-dev/tox#3440</a></li> <li>Display exception name when subprocesses raise them by <a href="https://github.com/ssbarnea"><code>@ssbarnea</code></a> in <a href="https://github.com/tox-dev/tox/pull/3450">tox-dev/tox#3450</a></li> <li>Fix the CI after setuptools 75.6 change by <a href="https://github.com/gaborbernat"><code>@gaborbernat</code></a> in <a href="https://github.com/tox-dev/tox/pull/3452">tox-dev/tox#3452</a></li> <li>Update pre-commit hooks with mypy fix by <a href="https://github.com/ssbarnea"><code>@ssbarnea</code></a> in <a href="https://github.com/tox-dev/tox/pull/3454">tox-dev/tox#3454</a></li> <li>Fix a typo in a code block in the User Guide by <a href="https://github.com/bryant1410"><code>@bryant1410</code></a> in <a href="https://github.com/tox-dev/tox/pull/3462">tox-dev/tox#3462</a></li> <li>Update pre-commit hooks by <a href="https://github.com/ssbarnea"><code>@ssbarnea</code></a> in <a href="https://github.com/tox-dev/tox/pull/3460">tox-dev/tox#3460</a></li> <li>💅 Make SVG image compatible with Firefox by <a href="https://github.com/webknjaz"><code>@webknjaz</code></a> in <a href="https://github.com/tox-dev/tox/pull/3466">tox-dev/tox#3466</a></li> <li>feat: adding a json schema command by <a href="https://github.com/henryiii"><code>@henryiii</code></a> in <a href="https://github.com/tox-dev/tox/pull/3446">tox-dev/tox#3446</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/wooshaun53"><code>@wooshaun53</code></a> made their first contribution in <a href="https://github.com/tox-dev/tox/pull/3424">tox-dev/tox#3424</a></li> <li><a href="https://github.com/albertodonato"><code>@albertodonato</code></a> made their first contribution in <a href="https://github.com/tox-dev/tox/pull/3434">tox-dev/tox#3434</a></li> <li><a href="https://github.com/thatch"><code>@thatch</code></a> made their first contribution in <a href="https://github.com/tox-dev/tox/pull/3440">tox-dev/tox#3440</a></li> <li><a href="https://github.com/bryant1410"><code>@bryant1410</code></a> made their first contribution in <a href="https://github.com/tox-dev/tox/pull/3462">tox-dev/tox#3462</a></li> <li><a href="https://github.com/henryiii"><code>@henryiii</code></a> made their first contribution in <a href="https://github.com/tox-dev/tox/pull/3446">tox-dev/tox#3446</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tox-dev/tox/compare/4.23.2...4.24.0">https://github.com/tox-dev/tox/compare/4.23.2...4.24.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tox-dev/tox/blob/main/docs/changelog.rst">tox's changelog</a>.</em></p> <blockquote> <h2>v4.24.1 (2025-01-21)</h2> <p>Misc - 4.24.1</p> <pre><code>- :issue:`3426` <h2>v4.24.0 (2025-01-21)</h2> <p>Features - 4.24.0 </code></pre></p> <ul> <li> <p>Add a <code>schema</code> command to produce a JSON Schema for tox and the current plugins.</p> <ul> <li>by :user:<code>henryiii</code> (:issue:<code>3446</code>)</li> </ul> </li> </ul> <p>Bugfixes - 4.24.0</p> <pre><code>- Log exception name when subprocess execution produces one. <ul> <li>by :user:<code>ssbarnea</code> (:issue:<code>3450</code>)</li> </ul> <p>Improved Documentation - 4.24.0 </code></pre></p> <ul> <li> <p>Fix typo in <code>docs/config.rst</code> from <code>{}</code> to <code>{:}</code>.</p> <ul> <li>by :user:<code>wooshaun53</code> (:issue:<code>3424</code>)</li> </ul> </li> <li> <p>Pass <code>NIX_LD</code> and <code>NIX_LD_LIBRARY_PATH</code> variables by default in <code>pass_env</code> to make generic binaries work under Nix/NixOS.</p> <ul> <li>by :user:<code>albertodonato</code> (:issue:<code>3425</code>)</li> </ul> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tox-dev/tox/commit/d4276dc0b6096811547848cc9ab245920db639cb"><code>d4276dc</code></a> release 4.24.1</li> <li><a href="https://github.com/tox-dev/tox/commit/ee660b96bdcf527f4706c9e406d25e1dcb54048b"><code>ee660b9</code></a> Adds ability to configure stderr output color (<a href="https://github.com/tox-dev/tox/issues/3426">#3426</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/eca61ed6ce1f24836b51a42496304ba42ae4a6cd"><code>eca61ed</code></a> release 4.24.0</li> <li><a href="https://github.com/tox-dev/tox/commit/bbd966361b28119d9b0097e0d48299b888596828"><code>bbd9663</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/tox/issues/3464">#3464</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/825c68bf266ef466523f494a96b45fc0e943de35"><code>825c68b</code></a> feat: adding a json schema command (<a href="https://github.com/tox-dev/tox/issues/3446">#3446</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/fccbe2a6cf4e23edeb8eb78030fdfc2fcfdd0e1d"><code>fccbe2a</code></a> 💅 Make SVG image compatible with Firefox (<a href="https://github.com/tox-dev/tox/issues/3466">#3466</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/e3e77a6f711f0c333aea10eb2bc8794c6215c637"><code>e3e77a6</code></a> Bump astral-sh/setup-uv from 4 to 5 (<a href="https://github.com/tox-dev/tox/issues/3463">#3463</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/c0b490d6668b0aa9c531087b23b24691bfe49f9c"><code>c0b490d</code></a> Update pre-commit hooks (<a href="https://github.com/tox-dev/tox/issues/3460">#3460</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/fbac0786536f682ccb5facfafa1eed6e8b5ac18e"><code>fbac078</code></a> Fix a typo in a code block in the User Guide (<a href="https://github.com/tox-dev/tox/issues/3462">#3462</a>)</li> <li><a href="https://github.com/tox-dev/tox/commit/c7f2cafff187cf4895964ad066fb3548fe42ad1a"><code>c7f2caf</code></a> Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 (<a href="https://github.com/tox-dev/tox/issues/3459">#3459</a>)</li> <li>Additional commits viewable in <a href="https://github.com/tox-dev/tox/compare/4.23.2...4.24.1">compare view</a></li> </ul> </details> <br /> Updates `attrs` from 24.3.0 to 25.1.0 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/sponsors/hynek/commits">compare view</a></li> </ul> </details> <br /> Updates `cachetools` from 5.5.0 to 5.5.1 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst">cachetools's changelog</a>.</em></p> <blockquote> <h1>v5.5.1 (2025-01-21)</h1> <ul> <li> <p>Add documentation regarding caching of exceptions.</p> </li> <li> <p>Officially support Python 3.13.</p> </li> <li> <p>Update CI environment.</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tkem/cachetools/commit/b072920d6cfb803be7dbbc7eafd9adc61c5c3cbd"><code>b072920</code></a> Release v5.5.1.</li> <li><a href="https://github.com/tkem/cachetools/commit/efc363338a0257eb86477f4d695c363fb059c2db"><code>efc3633</code></a> Fix <a href="https://github.com/tkem/cachetools/issues/138">#138</a>: Add documentation regarding caching of exceptions.</li> <li><a href="https://github.com/tkem/cachetools/commit/d5c689242a55ffe29370ff7a0d912785f076dc9a"><code>d5c6892</code></a> Officially support Python 3.13.</li> <li><a href="https://github.com/tkem/cachetools/commit/a34b9c5a3f540747977a7ac39aafc52056836b1e"><code>a34b9c5</code></a> Merge remote-tracking branch 'origin/dependabot/github_actions/actions/setup-...</li> <li><a href="https://github.com/tkem/cachetools/commit/9c122a2e5aadf4adc71e1e1e3fbea83337fb729b"><code>9c122a2</code></a> Merge remote-tracking branch 'origin/dependabot/github_actions/actions/checko...</li> <li><a href="https://github.com/tkem/cachetools/commit/d44c98407030d2e91cbe82c3997be042d9c2f0de"><code>d44c984</code></a> Create FUNDING.yml</li> <li><a href="https://github.com/tkem/cachetools/commit/49bff17088baefd81c3fabf66254541e3d2b2924"><code>49bff17</code></a> Bump actions/checkout from 4.1.7 to 4.2.0</li> <li><a href="https://github.com/tkem/cachetools/commit/85c6026dc96e17d45e895d84e3e551f6d3f1086a"><code>85c6026</code></a> Bump actions/setup-python from 5.1.1 to 5.2.0</li> <li>See full diff in <a href="https://github.com/tkem/cachetools/compare/v5.5.0...v5.5.1">compare view</a></li> </ul> </details> <br /> Updates `identify` from 2.6.5 to 2.6.6 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pre-commit/identify/commit/5bc1845addd0f9600fe719cc27464bde5c19f839"><code>5bc1845</code></a> v2.6.6</li> <li><a href="https://github.com/pre-commit/identify/commit/7b82a63b70054697a4c17598872ada429a424835"><code>7b82a63</code></a> Merge pull request <a href="https://github.com/pre-commit/identify/issues/500">#500</a> from vlotorev/patch-1</li> <li><a href="https://github.com/pre-commit/identify/commit/26e13ca264d23a4c759eee395311bf84dde5bf75"><code>26e13ca</code></a> Add '.asm' file extension as 'asm' filetype</li> <li><a href="https://github.com/pre-commit/identify/commit/f09385549fc272df4e28ad8b771ea62bb32c49ca"><code>f093855</code></a> Merge pull request <a href="https://github.com/pre-commit/identify/issues/499">#499</a> from pre-commit/pre-commit-ci-update-config</li> <li><a href="https://github.com/pre-commit/identify/commit/e9ef72e442a7eb1c835b0451340333d53d04e9df"><code>e9ef72e</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li>See full diff in <a href="https://github.com/pre-commit/identify/compare/v2.6.5...v2.6.6">compare view</a></li> </ul> </details> <br /> Updates `importlib-metadata` from 8.5.0 to 8.6.1 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's changelog</a>.</em></p> <blockquote> <h1>v8.6.1</h1> <h2>Bugfixes</h2> <ul> <li>Fixed indentation logic to also honor blank lines.</li> </ul> <h1>v8.6.0</h1> <h2>Features</h2> <ul> <li><code>python/cpython#119650</code></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/importlib_metadata/commit/45e8bde73f8ce816fdc47618a31ba3916a332485"><code>45e8bde</code></a> Finalize</li> <li><a href="https://github.com/python/importlib_metadata/commit/506beb7cbd23fef4f93a63a5c3931e302d828896"><code>506beb7</code></a> Fixed indentation logic to also honor blank lines.</li> <li><a href="https://github.com/python/importlib_metadata/commit/dad738095d6d28f24d254f3cc9f82e2394fb2a09"><code>dad7380</code></a> Finalize</li> <li><a href="https://github.com/python/importlib_metadata/commit/dab1dd81507fef5bff6a32a63ab8fc8633e2c24c"><code>dab1dd8</code></a> When transforming the payload to a Description key, clear the payload.</li> <li><a href="https://github.com/python/importlib_metadata/commit/07aa607e54672bc1077007771cbca0e16475aa24"><code>07aa607</code></a> Add support for rendering metadata where some fields have newlines (python/cp...</li> <li><a href="https://github.com/python/importlib_metadata/commit/b92ec183c0297c2edd9b66202647c560937241e3"><code>b92ec18</code></a> Merge <a href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li> <li><a href="https://github.com/python/importlib_metadata/commit/5c34e69568f23a524af4fa9dad3f5e80f22ec3e6"><code>5c34e69</code></a> Use extend for proper workaround.</li> <li><a href="https://github.com/python/importlib_metadata/commit/694e5b4e5e024e29d3bff6f8ff3054792c6e726a"><code>694e5b4</code></a> Merge <a href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li> <li><a href="https://github.com/python/importlib_metadata/commit/750a1891ec4a1c0602050e3463e9593a8c13aa14"><code>750a189</code></a> Require Python 3.9 or later now that Python 3.8 is EOL.</li> <li><a href="https://github.com/python/importlib_metadata/commit/e61a9df7cdc9c8d1b56c30b7b3f94a7cdac14414"><code>e61a9df</code></a> Include pyproject.toml in ruff.toml.</li> <li>Additional commits viewable in <a href="https://github.com/python/importlib_metadata/compare/v8.5.0...v8.6.1">compare view</a></li> </ul> </details> <br /> Updates `pymdown-extensions` from 10.14 to 10.14.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/facelessuser/pymdown-extensions/releases">pymdown-extensions's releases</a>.</em></p> <blockquote> <h2>10.14.1</h2> <ul> <li><strong>FIX</strong>: MagicLink: Ensure that repo names that start with <code>.</code> are handled correctly.</li> <li><strong>FIX</strong>: FancyLists: Fix case were lists could be falsely created when a line started with <code>.</code> or <code>)</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/868f7e95064b50f6593263a57681533978c99f97"><code>868f7e9</code></a> Update versioning to reflect next release</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/2aba1895ad7ec19ef90d6385e6f798414d97a0e2"><code>2aba189</code></a> Fix list patterns in FancyList (<a href="https://github.com/facelessuser/pymdown-extensions/issues/2576">#2576</a>)</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/b5d38261aac121cb13cd459df0272c4c81abd67f"><code>b5d3826</code></a> Docs: Fix snippets example</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/c9ef97e65936f2ec932b04d688bc5fba6d7787ab"><code>c9ef97e</code></a> Docs: Update stylelint (<a href="https://github.com/facelessuser/pymdown-extensions/issues/2564">#2564</a>)</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/94c6bc4d704455e03a0242b1d1ccefaf3179ee5a"><code>94c6bc4</code></a> Fix Block HTML lint issue</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/ba219e67a1764ad8bf0a692faca00fb1086059d2"><code>ba219e6</code></a> Fix spelling</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/8363af6250f6bcc0fa1373b42ba7d6a05613af93"><code>8363af6</code></a> Fix highlight lint issue</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/760e56b38d1e884ae776bcaef7af4a11324e61c0"><code>760e56b</code></a> Magiclink: fix handling of repos that start with dot</li> <li><a href="https://github.com/facelessuser/pymdown-extensions/commit/51bf16368ac54b6fdf7f10a4f81e50f8556c60a2"><code>51bf163</code></a> Fix missing dict key in arithmatex docs (<a href="https://github.com/facelessuser/pymdown-extensions/issues/2560">#2560</a>)</li> <li>See full diff in <a href="https://github.com/facelessuser/pymdown-extensions/compare/10.14...10.14.1">compare view</a></li> </ul> </details> <br /> Updates `pyproject-api` from 1.8.0 to 1.9.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/tox-dev/pyproject-api/releases">pyproject-api's releases</a>.</em></p> <blockquote> <h2>Drop 3.8</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>Create FUNDING.yml by <a href="https://github.com/gaborbernat"><code>@gaborbernat</code></a> in <a href="https://github.com/tox-dev/pyproject-api/pull/158">tox-dev/pyproject-api#158</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/tox-dev/pyproject-api/compare/1.8.0...1.9.0">https://github.com/tox-dev/pyproject-api/compare/1.8.0...1.9.0</a></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tox-dev/pyproject-api/commit/aace737496bcab66c9a1526c00afc680dcf7bb22"><code>aace737</code></a> Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 (<a href="https://github.com/tox-dev/pyproject-api/issues/175">#175</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/ce4087bd85332841dc0e91cc8defadf4b994d504"><code>ce4087b</code></a> Bump astral-sh/setup-uv from 4 to 5 (<a href="https://github.com/tox-dev/pyproject-api/issues/176">#176</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/136e5ded8f65fb157c2e5fee5e8e05de9eefcdd4"><code>136e5de</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/pyproject-api/issues/174">#174</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/81e9d2214d4904afefac2e7decad8d5c5cd95b45"><code>81e9d22</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/pyproject-api/issues/172">#172</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/5814c0a764a026d25794fb56fbbc2391f2500d53"><code>5814c0a</code></a> Bump astral-sh/setup-uv from 3 to 4 (<a href="https://github.com/tox-dev/pyproject-api/issues/173">#173</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/eb9f7baab9393f3f377fe8e8f402c87f55d6770f"><code>eb9f7ba</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/pyproject-api/issues/171">#171</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/249be0cd649221cfe968e0a6e214036d65d0a66f"><code>249be0c</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/pyproject-api/issues/170">#170</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/f9c1b7f5dc5e917b5971610c1eb2d151c2789df1"><code>f9c1b7f</code></a> Bump pypa/gh-action-pypi-publish from 1.12.1 to 1.12.2 (<a href="https://github.com/tox-dev/pyproject-api/issues/169">#169</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/298cafc6c104a20dbe101d0cdae46c8e038a843d"><code>298cafc</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://github.com/tox-dev/pyproject-api/issues/166">#166</a>)</li> <li><a href="https://github.com/tox-dev/pyproject-api/commit/762410da01d76795f01feec05150bc15dd5bd780"><code>762410d</code></a> Bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.1 (<a href="https://github.com/tox-dev/pyproject-api/issues/168">#168</a>)</li> <li>Additional commits viewable in <a href="https://github.com/tox-dev/pyproject-api/compare/1.8.0...1.9.0">compare view</a></li> </ul> </details> <br /> Updates `referencing` from 0.36.1 to 0.36.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/python-jsonschema/referencing/releases">referencing's releases</a>.</em></p> <blockquote> <h2>v0.36.2</h2> <!-- raw HTML omitted --> <p><strong>Full Changelog</strong>: <a href="https://github.com/python-jsonschema/referencing/compare/v0.36.1...v0.36.2">https://github.com/python-jsonschema/referencing/compare/v0.36.1...v0.36.2</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python-jsonschema/referencing/blob/main/docs/changes.rst">referencing's changelog</a>.</em></p> <blockquote> <h2>v0.36.2</h2> <ul> <li>Release using the newer twine release to preserve PEP 639 license metadata.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python-jsonschema/referencing/commit/9a82e6c7e5e2e395b61bb4017dc6adc52ac52e7c"><code>9a82e6c</code></a> Add v0.36.2 to the CHANGELOG.</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/28f4b79770bdf791f9c5666b0d741094d76f1329"><code>28f4b79</code></a> Update docs requirements.</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/f0d87239ce016a5a65ed124a98b98f57e262df4b"><code>f0d8723</code></a> Merge pull request <a href="https://github.com/python-jsonschema/referencing/issues/215">#215</a> from python-jsonschema/dependabot/submodules/suite-f4...</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/767145a1b36500b10844ffdb5797a508ae4d22af"><code>767145a</code></a> Bump suite from <code>d01bb7a</code> to <code>f49bd3a</code></li> <li><a href="https://github.com/python-jsonschema/referencing/commit/bf82571280f1144df31b3dae918281c276509489"><code>bf82571</code></a> Merge pull request <a href="https://github.com/python-jsonschema/referencing/issues/214">#214</a> from python-jsonschema/pre-commit-ci-update-config</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/94294c149509f1ad8da6918a1373a8242299a2ac"><code>94294c1</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/52add9268ee29ccd47ed36f9f14228233e77dddb"><code>52add92</code></a> Update the uv lockfile.</li> <li><a href="https://github.com/python-jsonschema/referencing/commit/b5296077222f2ebdce0e3c5342539ce6c2d039fb"><code>b529607</code></a> Update the CHANGELOG.</li> <li>See full diff in <a href="https://github.com/python-jsonschema/referencing/compare/v0.36.1...v0.36.2">compare view</a></li> </ul> </details> <br /> Updates `ruamel-yaml` from 0.18.6 to 0.18.10 Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Abhinav Anand <[email protected]>
Bug report
Bug description:
Here is a minimal example project (tested on Python 3.10):
pyproject.toml
README.md
test
package:__init__.py
(empty)bug.py
:import importlib.metadata; print(importlib.metadata.metadata("test"))
To reproduce:
pip install -e .
python test/bug.py
Traceback:
It appears that
[MIT]
is seen as a header, as it would be in a TOML file. That's my best guess really. Any help is appreciated!CPython versions tested on:
3.10
Operating systems tested on:
Linux
The text was updated successfully, but these errors were encountered: