Skip to content

Fix vulnerable dependencies - #322

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
fix-vulnerable-deps
Open

Fix vulnerable dependencies#322
github-actions[bot] wants to merge 1 commit into
mainfrom
fix-vulnerable-deps

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Vulnerabilities

Package Advisory Current Fixed Sources
idna GHSA-65pc-fj4g-8rjx: Internationalized Domain Names in Applications (IDNA): Specially crafted inputs to idna.encode() can bypass CVE-2024-3651 fix 3.8 3.15 github-advisories, uv-audit
jinja2 GHSA-cpwx-vrp4-4pq7: Jinja2 vulnerable to sandbox breakout through attr filter selecting format method 3.1.4 3.1.6 github-advisories, uv-audit
jinja2 GHSA-gmj6-6f8f-6699: Jinja has a sandbox breakout through malicious filenames 3.1.4 3.1.5 github-advisories, uv-audit
jinja2 GHSA-q2x7-8rv6-6q7h: Jinja has a sandbox breakout through indirect reference to format method 3.1.4 3.1.5 github-advisories, uv-audit
markdown GHSA-5wmx-573v-2qwq: Python-Markdown has an Uncaught Exception 3.7 3.8.1 github-advisories, uv-audit
pygments GHSA-5239-wwwm-4pmq: Pygments has Regular Expression Denial of Service (ReDoS) due to Inefficient Regex for GUID Matching 2.18.0 2.20.0 github-advisories, uv-audit
pytest GHSA-6w46-j5rx-g56g: pytest has vulnerable tmpdir handling 8.3.2 9.0.3 github-advisories, uv-audit
requests GHSA-9hjg-9r4m-mvj7: Requests vulnerable to .netrc credentials leak via malicious URLs 2.32.3 2.32.4 github-advisories, uv-audit
requests GHSA-gc5v-m9x4-r6x2: Requests has Insecure Temp File Reuse in its extract_zipped_paths() utility function 2.32.3 2.33.0 github-advisories, uv-audit
soupsieve GHSA-2wc2-fm75-p42x: Soup Sieve has Memory Exhaustion via Large Comma-Separated Selector Lists 2.6 2.8.4 github-advisories, uv-audit
soupsieve GHSA-836r-79rf-4m37: Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser 2.6 2.8.4 github-advisories, uv-audit
urllib3 GHSA-2xpw-w6gg-jr37: urllib3 streaming API improperly handles highly compressed data 2.2.2 2.6.0 github-advisories, uv-audit
urllib3 GHSA-38jv-5279-wg99: Decompression-bomb safeguards bypassed when following HTTP redirects (streaming API) 2.2.2 2.6.3 github-advisories, uv-audit
urllib3 GHSA-48p4-8xcf-vxj5: urllib3 does not control redirects in browsers and Node.js 2.2.2 2.5.0 github-advisories, uv-audit
urllib3 GHSA-gm62-xv2j-4w53: urllib3 allows an unbounded number of links in the decompression chain 2.2.2 2.6.0 github-advisories, uv-audit
urllib3 GHSA-pq67-6m6q-mj2v: urllib3 redirects are not disabled when retries are disabled on PoolManager instantiation 2.2.2 2.5.0 github-advisories, uv-audit
urllib3 GHSA-qccp-gfcp-xxvc: urllib3: Sensitive headers forwarded across origins in proxied low-level redirects 2.2.2 2.7.0 github-advisories, uv-audit

🆙 Updated packages

Resolved with exclude-newer cutoff: 2026-08-04.

Package Change Released
idna 3.83.18 2026-06-02 (2 months ago)
jinja2 3.1.43.1.6 2025-03-05 (a year ago)
markdown 3.73.10.3 2026-07-30 (a week ago)
pytest 8.3.29.1.1 2026-06-19 (2 months ago)
requests 2.32.32.34.2 2026-05-14 (3 months ago)
soupsieve 2.62.9.2 2026-08-07 (4 days ago)
urllib3 2.2.22.7.0 2026-05-07 (3 months ago)

Release notes

idna

Changelog

jinja2

3.1.5

This is the Jinja 3.1.5 security fix release, which fixes security issues and bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.

PyPI: https://pypi.org/project/Jinja2/3.1.5/
Changes: https://jinja.palletsprojects.com/changes/#version-3-1-5
Milestone: https://redirect.github.com/pallets/jinja/milestone/16?closed=1

  • The sandboxed environment handles indirect calls to str.format, such as by passing a stored reference to a filter that calls its argument. GHSA-q2x7-8rv6-6q7h
  • Escape template name before formatting it into error messages, to avoid issues with names that contain f-string syntax. #​1792, GHSA-gmj6-6f8f-6699
  • Sandbox does not allow clear and pop on known mutable sequence types. #​2032
  • Calling sync render for an async template uses asyncio.run. #​1952
  • Avoid unclosed auto_aiter warnings. #​1960
  • Return an aclose-able AsyncGenerator from Template.generate_async. #​1960
  • Avoid leaving root_render_func() unclosed in Template.generate_async. #​1960
  • Avoid leaving async generators unclosed in blocks, includes and extends. #​1960
  • The runtime uses the correct concat function for the current environment when calling block references. #​1701
  • Make |unique async-aware, allowing it to be used after another async-aware filter. #​1781
  • |int filter handles OverflowError from scientific notation. #​1921
  • Make compiling deterministic for tuple unpacking in a {% set ... %} call. #​2021
  • Fix dunder protocol (copy/pickle/etc) interaction with Undefined objects. #​2025
  • Fix copy/pickle support for the internal missing object. #​2027
  • Environment.overlay(enable_async) is applied correctly. #​2061

... Full release notes

3.1.6

This is the Jinja 3.1.6 security release, which fixes security issues but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.

PyPI: https://pypi.org/project/Jinja2/3.1.6/
Changes: https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6

markdown

3.8

Changed
  • DRY fix in abbr extension by introducing method create_element (#​1483).
  • Clean up test directory by removing some redundant tests and port
    non-redundant cases to the newer test framework.
  • Improved performance of the raw HTML post-processor (#​1510).
Fixed
  • Backslash Unescape IDs set via attr_list on toc (#​1493).
  • Ensure md_in_html processes content inside "markdown" blocks as they are
    parsed outside of "markdown" blocks to keep things more consistent for
    third-party extensions (#​1503).
  • md_in_html handle tags within inline code blocks better (#​1075).
  • md_in_html fix handling of one-liner block HTML handling (#​1074).
  • Ensure <center> is treated like a block-level element (#​1481).
  • Ensure that abbr extension respects AtomicString and does not process
    perceived abbreviations in these strings (#​1512).
  • Ensure smarty extension correctly renders nested closing quotes (#​1514).

3.8.1

Fixed
  • Ensure incomplete markup declaration in raw HTML doesn't crash parser (#​1534).
  • Fixed dropped content in md_in_html (#​1526).
  • Fixed HTML handling corner case that prevented some content from not being rendered (#​1528).

3.8.2

Fixed
  • Fix codecs deprecation in Python 3.14.
  • Fix issue with unclosed comment parsing in Python 3.14.
  • Fix issue with unclosed declarations in Python 3.14.
  • Fix issue with unclosed HTML tag <foo and Python 3.14.

3.10.1

Fixed
  • Ensure nested elements inside inline comments are properly unescaped (#​1571).
  • Make the docs build successfully with mkdocstrings-python 2.0 (#​1575).
  • Fix infinite loop when multiple bogus or unclosed HTML comments appear in input (#​1578).
  • Fix another infinite loop when handling bad comments (#​1586).

3.10.2

Fixed
  • Fix a regression related to comment handling (#​1590).
  • More reliable fix for </ (#​1593).

3.10.3

Fixed
  • Fix SetextHeaderProcessor regex to prevent mixed = and - chars in setext-style headers (#​1606).
  • Add AI Policy to Contributing Guide.
  • Officially document all included extensions as being in maintenance mode.
  • Link the Extension API documentation to the API Reference (#​1612).
pytest

8.3.3

pytest 8.3.3 (2024-09-09)

Bug fixes

  • #​12446: Avoid calling @property (and other instance descriptors) during fixture discovery -- by asottile{.interpreted-text role="user"}

  • #​12659: Fixed the issue of not displaying assertion failure differences when using the parameter --import-mode=importlib in pytest>=8.1.

  • #​12667: Fixed a regression where type change in [ExceptionInfo.errisinstance]{.title-ref} caused [mypy]{.title-ref} to fail.

  • #​12744: Fixed typing compatibility with Python 3.9 or less -- replaced [typing.Self]{.title-ref} with [typing_extensions.Self]{.title-ref} -- by Avasam{.interpreted-text role="user"}

  • #​12745: Fixed an issue with backslashes being incorrectly converted in nodeid paths on Windows, ensuring consistent path handling across environments.

  • #​6682: Fixed bug where the verbosity levels where not being respected when printing the "msg" part of failed assertion (as in assert condition, msg).

  • #​9422: Fix bug where disabling the terminal plugin via -p no:terminal would cause crashes related to missing the verbose option.

    -- by GTowers1{.interpreted-text role="user"}

Improved documentation

  • #​12663: Clarify that the [pytest_deselected]{.title-ref} hook should be called from [pytest_collection_modifyitems]{.title-ref} hook implementations when items are deselected.

... Full release notes

8.3.4

pytest 8.3.4 (2024-12-01)
Bug fixes
  • #​12592: Fixed KeyError{.interpreted-text role="class"} crash when using --import-mode=importlib in a directory layout where a directory contains a child directory with the same name.

  • #​12818: Assertion rewriting now preserves the source ranges of the original instructions, making it play well with tools that deal with the AST, like executing.

  • #​12849: ANSI escape codes for colored output now handled correctly in pytest.fail{.interpreted-text role="func"} with [pytrace=False]{.title-ref}.

  • #​9353: pytest.approx{.interpreted-text role="func"} now uses strict equality when given booleans.

Improved documentation
  • #​10558: Fix ambiguous docstring of pytest.Config.getoption{.interpreted-text role="func"}.

  • #​10829: Improve documentation on the current handling of the --basetemp option and its lack of retention functionality (temporary directory location and retention{.interpreted-text role="ref"}).

  • #​12866: Improved cross-references concerning the recwarn{.interpreted-text role="fixture"} fixture.

  • #​12966: Clarify filterwarnings{.interpreted-text role="ref"} docs on filter precedence/order when using multiple @pytest.mark.filterwarnings <pytest.mark.filterwarnings ref>{.interpreted-text role="ref"} marks.

Contributor-facing changes

... Full release notes

8.3.5

pytest 8.3.5 (2025-03-02)
Bug fixes
  • #​11777: Fixed issue where sequences were still being shortened even with -vv verbosity.
  • #​12888: Fixed broken input when using Python 3.13+ and a libedit build of Python, such as on macOS or with uv-managed Python binaries from the python-build-standalone project. This could manifest e.g. by a broken prompt when using Pdb, or seeing empty inputs with manual usage of input() and suspended capturing.
  • #​13026: Fixed AttributeError{.interpreted-text role="class"} crash when using --import-mode=importlib when top-level directory same name as another module of the standard library.
  • #​13053: Fixed a regression in pytest 8.3.4 where, when using --import-mode=importlib, a directory containing py file with the same name would cause an ImportError
  • #​13083: Fixed issue where pytest could crash if one of the collected directories got removed during collection.
Improved documentation
  • #​12842: Added dedicated page about using types with pytest.

    See types{.interpreted-text role="ref"} for detailed usage.

Contributor-facing changes
  • #​13112: Fixed selftest failures in test_terminal.py with Pygments >= 2.19.0
  • #​13256: Support for Towncrier versions released in 2024 has been re-enabled
    when building Sphinx docs -- by webknjaz{.interpreted-text role="user"}.

8.4.0

pytest 8.4.0 (2025-06-02)
Removals and backward incompatible breaking changes
  • #​11372: Async tests will now fail, instead of warning+skipping, if you don't have any suitable plugin installed.

  • #​12346: Tests will now fail, instead of raising a warning, if they return any value other than None.

  • #​12874: We dropped support for Python 3.8 following its end of life (2024-10-07).

  • #​12960: Test functions containing a yield now cause an explicit error. They have not been run since pytest 4.0, and were previously marked as an expected failure and deprecation warning.

    See the docs <yield tests deprecated>{.interpreted-text role="ref"} for more information.

Deprecations (removal in next major release)
  • #​10839: Requesting an asynchronous fixture without a [pytest_fixture_setup]{.title-ref} hook that resolves it will now give a DeprecationWarning. This most commonly happens if a sync test requests an async fixture. This should have no effect on a majority of users with async tests or fixtures using async pytest plugins, but may affect non-standard hook setups or autouse=True. For guidance on how to work around this warning see sync-test-async-fixture{.interpreted-text role="ref"}.
New features

... Full release notes

8.4.1

pytest 8.4.1 (2025-06-17)
Bug fixes
  • #​13461: Corrected _pytest.terminal.TerminalReporter.isatty to support
    being called as a method. Before it was just a boolean which could
    break correct code when using -o log_cli=true).

  • #​13477: Reintroduced pytest.PytestReturnNotNoneWarning{.interpreted-text role="class"} which was removed by accident in pytest [8.4]{.title-ref}.

    This warning is raised when a test functions returns a value other than None, which is often a mistake made by beginners.

    See return-not-none{.interpreted-text role="ref"} for more information.

  • #​13497: Fixed compatibility with Twisted 25+.

Improved documentation
  • #​13492: Fixed outdated warning about faulthandler not working on Windows.

8.4.2

pytest 8.4.2 (2025-09-03)
Bug fixes
  • #​13478: Fixed a crash when using console_output_style{.interpreted-text role="confval"} with times and a module is skipped.

  • #​13530: Fixed a crash when using pytest.approx{.interpreted-text role="func"} and decimal.Decimal{.interpreted-text role="class"} instances with the decimal.FloatOperation{.interpreted-text role="class"} trap set.

  • #​13549: No longer evaluate type annotations in Python 3.14 when inspecting function signatures.

    This prevents crashes during module collection when modules do not explicitly use from __future__ import annotations and import types for annotations within a if TYPE_CHECKING: block.

  • #​13559: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in pytest.Parser.addini{.interpreted-text role="meth"}.

  • #​13563: pytest.approx{.interpreted-text role="func"} now only imports numpy if NumPy is already in sys.modules. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.

Improved documentation
  • #​13577: Clarify that pytest_generate_tests is discovered in test modules/classes; other hooks must be in conftest.py or plugins.
Contributor-facing changes
  • #​13480: Self-testing: fixed a few test failures when run with -Wdefault or a similar override.

... Full release notes

9.0.0

pytest 9.0.0 (2025-11-05)
New features
  • #​1367: Support for subtests has been added.

    subtests <subtests> are an alternative to parametrization, useful in situations where the parametrization values are not all known at collection time.

    Example:

    def contains_docstring(p: Path) -> bool:
        """Return True if the given Python file contains a top-level docstring."""
        ...
    
    def test_py_files_contain_docstring(subtests: pytest.Subtests) -> None:
        for path in Path.cwd().glob("*.py"):
            with subtests.test(path=str(path)):
                assert contains_docstring(path)

    Each assert failure or error is caught by the context manager and reported individually, giving a clear picture of all files that are missing a docstring.

    In addition, unittest.TestCase.subTest is now also supported.

    This feature was originally implemented as a separate plugin in pytest-subtests, but since then has been merged into the core.

    [!NOTE]
    This feature is experimental and will likely evolve in future releases. By that we mean that we might change how subtests are reported on failure, but the functionality and how to use it are stable.

  • #​13743: Added support for native TOML configuration files.

    While pytest, since version 6, supports configuration in pyproject.toml files under [tool.pytest.ini_options],
    it does so in an "INI compatibility mode", where all configuration values are treated as strings or list of strings.
    Now, pytest supports the native TOML data model.

    In pyproject.toml, the native TOML configuration is under the [tool.pytest] table.

    ##### pyproject.toml
    [tool.pytest]
    minversion = "9.0"
    addopts = ["-ra", "-q"]
    testpaths = [
        "tests",
        "integration",
    ]

... Full release notes

9.0.1

pytest 9.0.1 (2025-11-12)
Bug fixes
  • #​13895: Restore support for skipping tests via raise unittest.SkipTest.
  • #​13896: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.
  • #​13904: Fixed the TOML type of the verbosity settings in the API reference from number to string.
  • #​13910: Fixed UserWarning: Do not expect file_or_dir on some earlier Python 3.12 and 3.13 point versions.
Packaging updates and notes for downstreams
  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.
Contributor-facing changes
  • #​13891, #​13942: The CI/CD part of the release automation is now capable of
    creating GitHub Releases without having a Git checkout on
    disk -- by bluetech and webknjaz.
  • #​13933: The tox configuration has been adjusted to make sure the desired
    version string can be passed into its package_env through
    the SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST environment
    variable as a part of the release process -- by webknjaz.

9.0.2

pytest 9.0.2 (2025-12-06)
Bug fixes
  • #​13896: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.

    You may enable it again by passing -p terminalprogress. We may enable it by default again once compatibility improves in the future.

    Additionally, when the environment variable TERM is dumb, the escape codes are no longer emitted, even if the plugin is enabled.

  • #​13904: Fixed the TOML type of the tmp_path_retention_count settings in the API reference from number to string.

  • #​13946: The private config.inicfg attribute was changed in a breaking manner in pytest 9.0.0.
    Due to its usage in the ecosystem, it is now restored to working order using a compatibility shim.
    It will be deprecated in pytest 9.1 and removed in pytest 10.

  • #​13965: Fixed quadratic-time behavior when handling unittest subtests in Python 3.10.

Improved documentation
  • #​4492: The API Reference now contains cross-reference-able documentation of pytest's command-line flags <command-line-flags>.

9.0.3

pytest 9.0.3 (2026-04-07)
Bug fixes
  • #​12444: Fixed pytest.approx which now correctly takes into account ~collections.abc.Mapping keys order to compare them.

  • #​13634: Blocking a conftest.py file using the -p no: option is now explicitly disallowed.

    Previously this resulted in an internal assertion failure during plugin loading.

    Pytest now raises a clear UsageError explaining that conftest files are not plugins and cannot be disabled via -p.

  • #​13734: Fixed crash when a test raises an exceptiongroup with __tracebackhide__ = True.

  • #​14195: Fixed an issue where non-string messages passed to unittest.TestCase.subTest() were not printed.

  • #​14343: Fixed use of insecure temporary directory (CVE-2025-71176).

Improved documentation
  • #​13388: Clarified documentation for -p vs PYTEST_PLUGINS plugin loading and fixed an incorrect -p example.
  • #​13731: Clarified that capture fixtures (e.g. capsys and capfd) take precedence over the -s / --capture=no command-line options in Accessing captured output from a test function <accessing-captured-output>.
  • #​14088: Clarified that the default pytest_collection hook sets session.items before it calls pytest_collection_finish, not after.
  • #​14255: TOML integer log levels must be quoted: Updating reference documentation.
Contributor-facing changes

... Full release notes

9.1.0

pytest 9.1.0 (2026-06-13)
Removals and backward incompatible breaking changes
  • #​14533: When using --doctest-modules, autouse fixtures with module, package or session scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.

    If this is undesirable, move the fixture definition to a conftest.py file if possible.

    Technical explanation for those interested:
    When using --doctest-modules, pytest possibly collects Python modules twice, once as pytest.Module and once as a DoctestModule (depending on the configuration).
    Due to improvements in pytest's fixture implementation, if e.g. the DoctestModule collects a fixture, it is now visible to it only, and not to the Module.
    This means that both need to register the fixtures independently.

Deprecations (removal in next major release)
  • #​10819: Added a deprecation warning for class-scoped fixtures defined as instance methods (without @classmethod). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use @classmethod decorator instead -- by yastcher.

    See 10819 and 14011.

  • #​12882: Calling request.getfixturevalue() <pytest.FixtureRequest.getfixturevalue> during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.

    See dynamic-fixture-request-during-teardown for details.

... Full release notes

9.1.1

pytest 9.1.1 (2026-06-19)
Bug fixes
  • #​14220: Fixed a logic bug in pytest.RaisesGroup which would might cause it to display incorrect "It matches FooError() which was paired with BarError" messages.
  • #​14591: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect @​pytest.mark.parametrize to fail with "duplicate parametrization of '<fixture name>'".
  • #​14606: Fixed list-item typing errors from mypy in @pytest.mark.parametrize <pytest.mark.parametrize ref> argvalues parameter.
  • #​14608: Fixed a regression in pytest 9.1.0 where conftest.py files located in <invocation dir>/test* were no longer loaded as initial conftests when invoked without arguments.
    This could cause certain hooks (like pytest_addoption) in these files to not fire.
requests

v2.32.4

2.32.4 (2025-06-10)

Security

  • CVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted
    environment will retrieve credentials for the wrong hostname/machine from a
    netrc file. (#​6965)

Improvements

  • Numerous documentation improvements

Deprecations

  • Added support for pypy 3.11 for Linux and macOS. (#​6926)
  • Dropped support for pypy 3.9 following its end of support. (#​6926)

v2.32.5

2.32.5 (2025-08-18)

Bugfixes

  • The SSLContext caching feature originally introduced in 2.32.0 has created
    a new class of issues in Requests that have had negative impact across a number
    of use cases. The Requests team has decided to revert this feature as long term
    maintenance of it is proving to be unsustainable in its current iteration.

Deprecations

  • Added support for Python 3.14.
  • Dropped support for Python 3.8 following its end of support.

v2.33.0

2.33.0 (2026-03-25)

Announcements

  • 📣 Requests is adding inline types. If you have a typed code base that uses Requests, please take a look at #​7271. Give it a try, and report any gaps or feedback you may have in the issue. 📣

Security

  • CVE-2026-25645 requests.utils.extract_zipped_paths now extracts contents to a non-deterministic location to prevent malicious file replacement. This does not affect default usage of Requests, only applications calling the utility function directly.

Improvements

  • Migrated to a PEP 517 build system using setuptools. (#​7012)

Bugfixes

  • Fixed an issue where an empty netrc entry could cause malformed authentication to be applied to Requests on Python 3.11+. (#​7205)

Deprecations

  • Dropped support for Python 3.9 following its end of support. (#​7196)

Documentation

  • Various typo fixes and doc improvements.
New Contributors

Full Changelog: https://redirect.github.com/psf/requests/blob/main/HISTORY.md#2330-2026-03-25

v2.33.1

2.33.1 (2026-03-30)

Bugfixes

  • Fixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary
    files in the tmp directory. (#​7305)
  • Fixed Content-Type header parsing for malformed values. (#​7309)
  • Improved error consistency for malformed header values. (#​7308)
New Contributors

Full Changelog: https://redirect.github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30

v2.34.0

2.34.0 (2026-05-11)

Announcements

  • Requests 2.34.0 introduces inline types, replacing those provided by
    typeshed. Public API types should be fully compatible with mypy, pyright,
    and ty. We believe types are comprehensive but if you find issues, please
    report them to the pinned tracking issue.

    Special thanks to @​bastimeyer, @​cthoyt, @​edgarrmondragon, and @​srittau for
    helping review and test the types ahead of the release. (#​7272)

Improvements

  • Digest Auth hashing algorithms have added usedforsecurity=False to clarify
    security considerations. (#​7310)
  • Requests added support for Python 3.15 based on beta1. Downstream projects
    should be able to start testing prior to its release in October. (#​7422)
  • Requests added support for Python 3.14t. (#​7419)

Bugfixes

  • Response.history no longer contains a reference to itself, preventing
    accidental looping when traversing the history list. (#​7328)
  • Requests no longer performs greedy matching on no_proxy domains. The
    proxy_bypass implementation has been updated with CPython's fix from
    bpo-39057. (#​7427)
  • Requests no longer incorrectly strips duplicate leading slashes in
    URI paths. This should address user issues with specific presigned
    URLs. Note the full fix requires urllib3 2.7.0+. (#​7315)
New Contributors

... Full release notes

v2.34.1

2.34.1 (2026-05-13)

Bugfixes

  • Widened json input type from dict and list to Mapping
    and Sequence. (#​7436)
  • Changed headers input type to MutableMapping and removed None from
    Request.headers typing to improve handling for users. (#​7431)
  • Response.reason moved from str | None to str to improve handling
    for users. (#​7437)
  • Fixed a bug where some bodies with custom __getattr__ implementations
    weren't being properly detected as Iterables. (#​7433)
New Contributors

Full Changelog: https://redirect.github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13

v2.34.2

2.34.2 (2026-05-14)

  • Moved headers input type back to Mapping to avoid invariance issues with MutableMapping and inferred dict types. Users calling Request.headers.update() may need to narrow typing in their code. (#​7441)

Full Changelog: https://redirect.github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14

soupsieve

2.7

2.7
  • NEW: Add :open pseudo selector.
  • NEW: Add :muted pseudo selector.
  • NEW: Recognize the following pseudo selectors: :autofill, :buffering, :fullscreen, :picture-in-picture,
    :popover-open, :seeking, :stalled, and :volume-locked. These selectors, while recognized, will not match any
    element as they require a live environment to check element states and browser states. This just prevents Soup Sieve
    from failing when any of these selectors are specified.
  • NEW: A number of existing pseudo-classes are no longer noted as experimental.
  • FIX: Typing fixes.

2.8

2.8
  • NEW: Drop support for Python 3.8.
  • NEW: Add support for Python 3.14.
  • NEW: Deploy with PyPI's "Trusted Publisher".

2.8.1

2.8.1
  • FIX: Changes in tests to accommodate latest Python HTML parser changes.

2.8.2

2.8.2
  • FIX: Ensure custom selectors or namespace dictionaries reject non-string keys (@​mundanevision20).
  • FIX: Fix handling of :in-range and :out-of-range with end of year weeks (@​mundanevision20).
  • FIX: Fix a potential infinite loop in the pretty printing debug function (@​mundanevision20).

2.8.3

2.8.3
  • FIX: Fix inefficient attribute pattern.

2.8.4

2.8.4
  • FIX: Fix another inefficient attribute pattern (@​mauriceng98).
  • FIX: Limit total number of selectors processed in a pattern to prevent massive selector requests (@​mauriceng98).

2.9

2.9
  • NEW: Drop Python 3.9 support.
  • NEW: Lazy compile selector patterns to improve initial import speed.
  • FIX: Correct :nth-child/:nth-of-type (and -last- variants) for An+B values whose sequence steps onto
    index 0 or onto the last child (e.g. :nth-child(2n-2), :nth-child(n-1), :nth-child(n+5)), which previously
    matched the wrong elements or nothing at all (@​gaoflow).
  • FIX: More efficient CSS ID matching (@​kaimandalic).
  • FIX: Fix inefficient trimming of comments and white space (@​kaimandalic).

2.9.1

2.9.1
  • FIX: Correct [attr^=""], [attr$=""], and [attr*=""] to match nothing when the value is empty, per CSS
    Selectors Level 4 substring matching, which previously matched any element merely having the attribute
    (@​chuenchen309).

2.9.2

2.9.2
  • FIX: Fix issue where :is() and :where() were not accounting for empty selectors in the max selector count as
    they should (@​arpitjain099).
  • FIX: Fix issue where :has() was allowing empty selectors in some circumstances even though it is not
    forgiving.
  • FIX: Reduce selector object size when :is() and :where() contain empty selectors.
urllib3

2.2.3

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support for 2023. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Features
  • Added support for Python 3.13. (#​3473)
Bugfixes
  • Fixed the default encoding of chunked request bodies to be UTF-8 instead of ISO-8859-1. All other methods of supplying a request body already use UTF-8 starting in urllib3 v2.0. (#​3053)
  • Fixed ResourceWarning on CONNECT with Python < 3.11.4 by backporting https://redirect.github.com/python/cpython/issues/103472. (`#3252)
  • Adjust tolerance for floating-point comparison on Windows to avoid flakiness in CI (#3413)
  • Fixed a crash where certain standard library hash functions were absent in restricted environments. (#3432)
  • Fixed mypy error when adding to HTTPConnection.default_socket_options. (#3448)
HTTP/2 (experimental)

HTTP/2 support is still in early development.

  • Excluded Transfer-Encoding: chunked from HTTP/2 request body (#3425)
  • Added version checking for h2 (https://pypi.org/project/h2/) usage. Now only accepting supported h2 major version 4.x.x. (#​3290)
  • Added a probing mechanism for determining whether a given target origin supports HTTP/2 via ALPN. (#​3301)
  • Add support for sending a request body with HTTP/2 (#​3302)

Full Changelog: https://redirect.github.com/urllib3/urllib3/compare/2.2.2...2.2.3

2.3.0

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support for 2023. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Features
Bugfixes
Deprecations and Removals

Full Changelog: https://redirect.github.com/urllib3/urllib3/compare/2.2.3...2.3.0

2.4.0

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Features
  • Applied PEP 639 by specifying the license fields in pyproject.toml. (#​3522)
  • Updated exceptions to save and restore more properties during the pickle/serialization process. (#​3567)
  • Added verify_flags option to create_urllib3_context with a default of VERIFY_X509_PARTIAL_CHAIN and VERIFY_X509_STRICT for Python 3.13+. (#​3571)
Bugfixes
  • Fixed a bug with partial reads of streaming data in Emscripten. (#​3555)
Misc
  • Switched to uv for installing development dependecies. (#​3550)
  • Removed the multiple.intoto.jsonl asset from GitHub releases. Attestation of release files since v2.3.0 can be found on PyPI. (#​3566)

2.5.0

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Security issues

urllib3 2.5.0 fixes two moderate security issues:

Features
  • Added support for the compression.zstd module that is new in Python 3.14. See PEP 784 for more information. (#​3610)
  • Added support for version 0.5 of hatch-vcs (#​3612)
Bugfixes
  • Raised exception for HTTPResponse.shutdown on a connection already released to the pool. (#​3581)
  • Fixed incorrect CONNECT statement when using an IPv6 proxy with connection_from_host. Previously would not be wrapped in []. (#​3615)

2.6.0

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Security
  • Fixed a security issue where streaming API could improperly handle highly compressed HTTP content ("decompression bombs") leading to excessive resource consumption even when a small amount of data was requested. Reading small chunks of compressed data is safer and much more efficient now. (CVE-2025-66471 reported by @​Cycloctane, 8.9 High, GHSA-2xpw-w6gg-jr37)
  • Fixed a security issue where an attacker could compose an HTTP response with virtually unlimited links in the Content-Encoding header, potentially leading to a denial of service (DoS) attack by exhausting system resources during decoding. The number of allowed chained encodings is now limited to 5. (CVE-2025-66418 reported by @​illia-v, 8.9 High, GHSA-gm62-xv2j-4w53)

[!IMPORTANT]

  • If urllib3 is not installed with the optional urllib3[brotli] extra, but your environment contains a Brotli/brotlicffi/brotlipy package anyway, make sure to upgrade it to at least Brotli 1.2.0 or brotlicffi 1.2.0.0 to benefit from the security fixes and avoid warnings. Prefer using urllib3[brotli] to install a compatible Brotli package automatically.
  • If you use custom decompressors, please make sure to update them to respect the changed API of urllib3.response.ContentDecoder.
Features

... Full release notes

2.6.1

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Changes
  • Restore previously removed HTTPResponse.getheaders() and HTTPResponse.getheader() methods. (#​3731)

2.6.2

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Changes

2.6.3

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Changes

2.7.0

🚀 urllib3 is fundraising for HTTP/2 support

urllib3 is raising ~$40,000 USD to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects please consider contributing financially to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.

Thank you for your support.

Security

Addressed high-severity security issues. Impact was limited to specific use cases detailed in the accompanying advisories; overall user exposure was estimated to be marginal.

  • Decompression-bomb safeguards of the streaming API were bypassed:

    1. When HTTPResponse.drain_conn() was called after the response had been read and decompressed partially. (Reported by @​Cycloctane)
    2. During the second HTTPResponse.read(amt=N) or HTTPResponse.stream(amt=N) call when the response was decompressed using the official Brotli library. (Reported by @​kimkou2024)

    See GHSA-mf9v-mfxr-j63j for details.

  • HTTP pools created using ProxyManager.connection_from_url did not strip sensitive headers specified in Retry.remove_headers_on_redirect when redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by @​christos-spearbit)

Deprecations and Removals

... Full release notes

⚙️ Configuration

Relevant [tool.repomatic] options:

Important

If you suspect the PR content is outdated, click Run workflow to refresh it manually before merging.

Workflow metadata

🏭 Generated with repomatic 7.9.0

@kdeldycke kdeldycke added 🔗 dependencies Dependency changes and removed 🔗 dependencies-2 labels Aug 9, 2026
@github-actions
github-actions Bot force-pushed the fix-vulnerable-deps branch from d13f314 to 120541c Compare August 9, 2026 20:35
@kdeldycke
kdeldycke force-pushed the fix-vulnerable-deps branch 11 times, most recently from 3a9c8f4 to c8f2337 Compare August 11, 2026 12:24
@kdeldycke
kdeldycke force-pushed the fix-vulnerable-deps branch from c8f2337 to 3b3094b Compare August 11, 2026 14:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔗 dependencies Dependency changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant