chore(deps): update python-poetry (minor)
This MR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| coverage | 7.13.4 → 7.14.1 |
||
| daphne (changelog) | ~4.1.0 → ~4.2.0 |
||
| djangorestframework (changelog) | 3.16.1 → 3.17.1 |
||
| pyjwt | 2.11.0 → 2.13.0 |
Release Notes
coveragepy/coveragepy (coverage)
v7.14.1
-
Fix: the HTML report used typographic niceties to make file paths more readable by adding a small amount of space around slashes. Those spaces interfered with searching the page for file paths of interest. Now the report uses CSS to accomplish the same visual tweak so that searches with slashes work correctly. Closes
issue 2170_. -
Add a 3.16 PyPI classifier <hugo-316_>_ since we test on the 3.16 main branch.
.. _issue 2170: #2170 .. _hugo-316: https://mastodon.social/@hugovk/116588523571204490
.. _changes_7-14-0:
v7.14.0
-
Feature: now when running one of the reporting commands, if there are parallel data files that need combining, they will be implicitly combined before creating the report. There is no option to avoid the combination; let us know if you have a use case that requires it. Thanks,
Tim Hatch <pull 2162_>. Closesissue 1781. -
Fix: the output from
combinewas too verbose, listing each file considered. Now it shows a single line with the counts of files combined, files skipped, and files with errors. The-qflag suppresses this line. The old detailed lines are available with the new--debug=combineoption. -
Fix: running a Python file through a symlink now sets the sys.path correctly, matching regular Python behavior. Fixes
issue 2157_. -
Fix:
Collector.flush_datacould fail with "RuntimeError: Set changed size during iteration" when a tracer in another thread added a line to the per-file set thatadd_lines(oradd_arcs) was iterating. The values passed toCoverageDataare now snapshotted viadict.copy()andset.copy(), which are atomic under the GIL. Thanks,Alex Vandiver <pull 2165_>_. -
Fix: the soft keyword
lazyis now bolded in HTML reports. -
We are no longer testing eventlet support. Eventlet started issuing stern deprecation warnings that break our tests. Our support code is still there.
.. _issue 1781: #1781 .. _issue 2157: #2157 .. _pull 2162: #2162 .. _pull 2165: #2165
.. _changes_7-13-5:
v7.13.5
-
Fix:
issue 2138_ describes a memory leak that happened when repeatedly using the Coverage API with in-memory data. This is now fixed. -
Fix: the markdown-formatted coverage report didn't fully escape special characters in file paths (
issue 2141). This would be very unlikely to cause a problem, but now it's done properly, thanks toEllie Ayla <pull 2142_>. -
Fix: the C extension wouldn't build on VS2019, but now it does (
issue 2145_).
.. _issue 2138: #2138 .. _issue 2141: #2141 .. _pull 2142: #2142 .. _issue 2145: #2145
.. _changes_7-13-4:
django/daphne (daphne)
v4.2.2
-
Fixed a denial of service vulnerability via unbounded WebSocket message sizes. Daphne previously passed no message or frame size limits to autobahn, whose defaults are unbounded. This allowed an unauthenticated client to exhaust server memory by sending a very large WebSocket messages/frames (CVE-2026-44545).
Both limits now default to 1 MiB and can be configured via the new
--websocket-max-message-sizeand--websocket-max-frame-sizeCLI flags (or the matchingServerconstructor arguments). Pass0to restore the previous unlimited behaviour.Thanks to ParkHyunWoo for the report.
-
Fixed a header injection vulnerability on the WebSocket upgrade path (CVE-2026-44546).
Header values containing
\x0b,\x0c,\x1c,\x1d,\x1e, or\x85were parsed as a single header by Twisted but split into multiple headers by autobahn during the WebSocket handshake. An attacker could exploit this parser differential to smuggle additional headers (e.g. authentication tokens,X-Forwarded-For,Origin,Daphne-Root-Path) into the ASGI scope passed to the application.Daphne now rejects requests carrying these bytes in any header value with a 400 Bad Request response, as required by RFC 9110 §5.5.
Thanks to Rene Henningsen for the report.
v4.2.1
-
Fixed a packaging error in 4.2.0.
-
Removed --nostatic and --insecure args to runserver command when staticfiles app is not installed.
v4.2.0
Daphne 4.2 is a maintenance release in the 4.x series.
-
Added support for Python 3.13.
-
Dropped support for EOL Python 3.8.
-
Updated pyupgrade configuration to target Python 3.9.
-
Added a
load_asgi_apphook to CLI class, useful for compiled or frozen applications. -
Allowed assigning a port in the DaphneProcess test helper, useful for live server test cases, such as that provided by Channels.
-
Added --nostatic and --insecure args to runserver command to match Django's built-in command.
-
Moved metadata to use pyproject.toml.
-
Updated sdist file to include tests and changelog.
-
Removed unused pytest-runner.
encode/django-rest-framework (djangorestframework)
v3.17.1
What's Changed
Bug fixes
- Fix
HTMLFormRendererwith emptydatetimevalues by @p-r-a-v-i-n in #9928
Full Changelog: https://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1
v3.17.0
What's Changed
Breaking changes
- Drop support for Python 3.9 by @auvipy in #9781
- Drop deprecated coreapi support by @browniebroke in #9895
Features
- Add ability to specify output format for
DurationFieldby @sevdog in #8532 - Add missing decorators:
@versioning_class(),@content_negotiation_class(),@metadata_class()for function-based views by @qqii in #9719 - Add support for Python 3.14 by @cclauss in #9780
- Support
violation_error_codeandviolation_error_messagefromUniqueConstraintinUniqueTogetherValidatorby @s-aleshin in #9766 - Add support for
ipaddressobjects inJSONEncoderby @corenting in #9087 - Add optional support to serialize
BigIntegerto string by @HoodyH in #9775 - Add Django 6.0 support by @MehrazRumman in #9819
Bug fixes
- Prevent small risk of
Tokenoverwrite by @mahdirahimi1999 in #9754 - Fix
UniqueTogetherValidatorvalidation when condition references a read-only field by @ticosax in #9764 - Fix validation on many to many field when
default=Noneby @Genarito in #9790 - Fix invalid SPDX license expression in
__init__.pyby @TheFunctionalGuy in #9799 - Fix
HTMLFormRendererto ensure a validdatetime-localformat by @mgaligniana in #9365 - Fix mutable default arguments in OrderingFilter methods by @killerdevildog in #9742
- Update TokenAdmin to respect USERNAME_FIELD of the user model by @m000 in #9836
- Preserve ordering in
MultipleChoiceFieldby @fbozhang in #9735
Translations
- Update French translation by @SebCorbin in #9770
- Update Brazilian Portuguese translations by @JVPinheiroReis in #9828
- Fix and improve French translations by @deronnax in #9896
- Add missing Russian translation by @minorytanaka in #9903
Packaging
- Migrate packaging to
pyproject.tomlby @deronnax in #9056 - Move package data rules from
MANIFEST.intopyproject.tomlby @p-r-a-v-i-n in #9825 - Set up release workflow with trusted publisher by @browniebroke in #9852
Other changes
- Refactor token generation to use the
secretsmodule by @mahdirahimi1999 in #9760 - Add validation for decorator out-of-order with
@api_viewby @kernelshard in #9821 - Switch to mkdocs material theme for documentation by @browniebroke in #9849
New Contributors
- @khaledsukkar2 made their first contribution in #9717
- @qqii made their first contribution in #9719
- @zankoAn made their first contribution in #9788
- @uche-wealth made their first contribution in #9795
- @s-aleshin made their first contribution in #9766
- @Infamous003 made their first contribution in #9794
- @Genarito made their first contribution in #9790
- @TheFunctionalGuy made their first contribution in #9799
- @mahdighadiriii made their first contribution in #9800
- @p-r-a-v-i-n made their first contribution in #9801
- @itssimon made their first contribution in #9718
- @huynguyengl99 made their first contribution in #9785
- @corenting made their first contribution in #9087
- @killerdevildog made their first contribution in #9742
- @dayandavid made their first contribution in #9820
- @abhishektiwari made their first contribution in #9826
- @HoodyH made their first contribution in #9775
- @Shrikantgiri25 made their first contribution in #9808
- @JVPinheiroReis made their first contribution in #9828
- @m000 made their first contribution in #9836
- @Nabute made their first contribution in #9767
- @therealjozber made their first contribution in #9845
- @nexapytech made their first contribution in #9867
- @RispaJoseph made their first contribution in #9874
- @LorenzoGuideri made their first contribution in #9875
- @maldoinc made their first contribution in #9893
- @0Nafi0 made their first contribution in #9861
- @MoeSalah1999 made their first contribution in #9870
- @kelsonbrito50 made their first contribution in #9901
- @fbozhang made their first contribution in #9735
- @minorytanaka made their first contribution in #9903
- @kosbemrunal made their first contribution in #9904
- @htvictoire made their first contribution in #9916
Full Changelog: https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.0
jpadilla/pyjwt (pyjwt)
v2.13.0
v2.12.1
Security
- Reject JWK JSON documents passed as raw HMAC secrets in
``HMACAlgorithm.prepare_key`` to close an algorithm-confusion gap that
the existing PEM/SSH guard did not cover. Reported by @​aradona91 in
`GHSA-xgmm-8j9v-c9wx <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx>`__.
- Bind the JWT header ``alg`` to ``PyJWK.algorithm_name`` during
verification so the caller's ``algorithms=[...]`` allow-list cannot be
bypassed when decoding with a ``PyJWK`` / ``PyJWKClient`` key. Reported
by @​sushi-gif in `GHSA-jq35-7prp-9v3f <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f>`__.
- Reject non-``http(s)`` URI schemes in ``PyJWKClient`` so attacker-
influenced URIs cannot read local files or reach unintended schemes via
urllib's default ``file://`` / ``ftp://`` / ``data:`` handlers. Reported
by @​KEIJOT in `GHSA-993g-76c3-p5m4 <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4>`__.
- Preserve the cached JWK Set on fetch errors in ``PyJWKClient.fetch_data``.
The previous ``finally``-block ``put(None)`` pattern cleared the cache
on any transient outage, turning one bad JWKS request into application-
wide auth failure. Reported by @​eddieran in `GHSA-fhv5-28vv-h8m8 <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8>`__.
- Skip the unconditional base64 decode of the compact-form payload segment
when ``b64=false`` is set in the protected header, and require that
segment to be empty (RFC 7515 Appendix F detached form). Closes an
unauthenticated DoS amplifier. Reported by @​thesmartshadow in
`GHSA-w7vc-732c-9m39 <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39>`__.
Fixed
~~~~~
- Reject empty HMAC keys outright in ``HMACAlgorithm.prepare_key`` with
``InvalidKeyError`` instead of accepting them with only a warning.
Thanks to @​SnailSploit and @​spartan8806 for independently flagging the
footgun.
- Forward per-call ``options`` (including ``enforce_minimum_key_length``)
from ``PyJWT.decode`` through to ``PyJWS._verify_signature`` so the
option actually takes effect when set at the call site rather than only
on the ``PyJWT`` instance. Thanks to @​WLUB for the report.
- RFC 7797 §3 compliance for ``b64=false``: the encoder now auto-adds
``"b64"`` to the ``crit`` header parameter, and the decoder rejects
tokens that set ``b64=false`` without listing it in ``crit``. Thanks to
@​MachineLearning-Nerd for the report.
Changed
~~~~~~~
- Migrate the ``dev``, ``docs``, and ``tests`` package extras to dependency groups by @​kurtmckee in `#​1152 <https://github.com/jpadilla/pyjwt/pull/1152>`__
`v2.12.1 <https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1>`__
------------------------------------------------------------------------
Fixed
~~~~~
- Add missing ``typing_extensions`` dependency for Python < 3.11 in `#​1150 <https://github.com/jpadilla/pyjwt/issues/1150>`__
`v2.12.0 <https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0>`__
-----------------------------------------------------------------------
Fixed
~~~~~
- Annotate PyJWKSet.keys for pyright by @​tamird in `#​1134 <https://github.com/jpadilla/pyjwt/pull/1134>`__
- Close ``HTTPError`` response to prevent ``ResourceWarning`` on Python 3.14 by @​veeceey in `#​1133 <https://github.com/jpadilla/pyjwt/pull/1133>`__
- Do not keep ``algorithms`` dict in PyJWK instances by @​akx in `#​1143 <https://github.com/jpadilla/pyjwt/pull/1143>`__
- Validate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by @​dmbs335 in `GHSA-752w-5fwx-jx9f <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f>`__
- Use PyJWK algorithm when encoding without explicit algorithm in `#​1148 <https://github.com/jpadilla/pyjwt/pull/1148>`__
Added
~~~~~
- Docs: Add ``PyJWKClient`` API reference and document the two-tier caching system (JWK Set cache and signing key LRU cache).
`v2.11.0 <https://github.com/jpadilla/pyjwt/compare/2.10.1...2.11.0>`__
-----------------------------------------------------------------------
Fixed
~~~~~
- Enforce ECDSA curve validation per RFC 7518 Section 3.4.
- Fix build system warnings by @​kurtmckee in `#​1105 <https://github.com/jpadilla/pyjwt/pull/1105>`__
- Validate key against allowed types for Algorithm family in `#​964 <https://github.com/jpadilla/pyjwt/pull/964>`__
- Add iterator for JWKSet in `#​1041 <https://github.com/jpadilla/pyjwt/pull/1041>`__
- Validate `iss` claim is a string during encoding and decoding by @​pachewise in `#​1040 <https://github.com/jpadilla/pyjwt/pull/1040>`__
- Improve typing/logic for `options` in decode, decode_complete by @​pachewise in `#​1045 <https://github.com/jpadilla/pyjwt/pull/1045>`__
- Declare float supported type for lifespan and timeout by @​nikitagashkov in `#​1068 <https://github.com/jpadilla/pyjwt/pull/1068>`__
- Fix ``SyntaxWarning``\s/``DeprecationWarning``\s caused by invalid escape sequences by @​kurtmckee in `#​1103 <https://github.com/jpadilla/pyjwt/pull/1103>`__
- Development: Build a shared wheel once to speed up test suite setup times by @​kurtmckee in `#​1114 <https://github.com/jpadilla/pyjwt/pull/1114>`__
- Development: Test type annotations across all supported Python versions,
increase the strictness of the type checking, and remove the mypy pre-commit hook
by @​kurtmckee in `#​1112 <https://github.com/jpadilla/pyjwt/pull/1112>`__
Added
~~~~~
- Support Python 3.14, and test against PyPy 3.10 and 3.11 by @​kurtmckee in `#​1104 <https://github.com/jpadilla/pyjwt/pull/1104>`__
- Development: Migrate to ``build`` to test package building in CI by @​kurtmckee in `#​1108 <https://github.com/jpadilla/pyjwt/pull/1108>`__
- Development: Improve coverage config and eliminate unused test suite code by @​kurtmckee in `#​1115 <https://github.com/jpadilla/pyjwt/pull/1115>`__
- Docs: Standardize CHANGELOG links to MRs by @​kurtmckee in `#​1110 <https://github.com/jpadilla/pyjwt/pull/1110>`__
- Docs: Fix Read the Docs builds by @​kurtmckee in `#​1111 <https://github.com/jpadilla/pyjwt/pull/1111>`__
- Docs: Add example of using leeway with nbf by @​djw8605 in `#​1034 <https://github.com/jpadilla/pyjwt/pull/1034>`__
- Docs: Refactored docs with ``autodoc``; added ``PyJWS`` and ``jwt.algorithms`` docs by @​pachewise in `#​1045 <https://github.com/jpadilla/pyjwt/pull/1045>`__
- Docs: Documentation improvements for "sub" and "jti" claims by @​cleder in `#​1088 <https://github.com/jpadilla/pyjwt/pull/1088>`__
- Development: Add pyupgrade as a pre-commit hook by @​kurtmckee in `#​1109 <https://github.com/jpadilla/pyjwt/pull/1109>`__
- Add minimum key length validation for HMAC and RSA keys (CWE-326).
Warns by default via ``InsecureKeyLengthWarning`` when keys are below
minimum recommended lengths per RFC 7518 Section 3.2 (HMAC) and
NIST SP 800-131A (RSA). Pass ``enforce_minimum_key_length=True`` in
options to ``PyJWT`` or ``PyJWS`` to raise ``InvalidKeyError`` instead.
- Refactor ``PyJWT`` to own an internal ``PyJWS`` instance instead of
calling global ``api_jws`` functions.
`v2.10.1 <https://github.com/jpadilla/pyjwt/compare/2.10.0...2.10.1>`__
-----------------------------------------------------------------------
Fixed
~~~~~
- Prevent partial matching of `iss` claim by @​fabianbadoi in `GHSA-75c5-xw7c-p5pm <https://github.com/jpadilla/pyjwt/security/advisories/GHSA-75c5-xw7c-p5pm>`__
`v2.10.0 <https://github.com/jpadilla/pyjwt/compare/2.9.0...2.10.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- Remove algorithm requirement from JWT API, instead relying on JWS API for enforcement, by @​luhn in `#​975 <https://github.com/jpadilla/pyjwt/pull/975>`__
- Use ``Sequence`` for parameter types rather than ``List`` where applicable by @​imnotjames in `#​970 <https://github.com/jpadilla/pyjwt/pull/970>`__
- Add JWK support to JWT encode by @​luhn in `#​979 <https://github.com/jpadilla/pyjwt/pull/979>`__
- Encoding and decoding payloads using the `none` algorithm by @​jpadilla in `#c2629f6 <https://github.com/jpadilla/pyjwt/commit/c2629f66c593459e02616048443231ccbe18be16>`__
Before:
.. code-block:: pycon
>>> import jwt
>>> jwt.encode({"payload": "abc"}, key=None, algorithm=None)
After:
.. code-block:: pycon
>>> import jwt
>>> jwt.encode({"payload": "abc"}, key=None, algorithm="none")
- Added validation for 'sub' (subject) and 'jti' (JWT ID) claims in tokens by @​Divan009 in `#​1005 <https://github.com/jpadilla/pyjwt/pull/1005>`__
- Refactor project configuration files from ``setup.cfg`` to ``pyproject.toml`` by @​cleder in `#​995 <https://github.com/jpadilla/pyjwt/pull/995>`__
- Ruff linter and formatter changes by @​gagandeepp in `#​1001 <https://github.com/jpadilla/pyjwt/pull/1001>`__
- Drop support for Python 3.8 (EOL) by @​kkirsche in `#​1007 <https://github.com/jpadilla/pyjwt/pull/1007>`__
Fixed
~~~~~
- Encode EC keys with a fixed bit length by @​etianen in `#​990 <https://github.com/jpadilla/pyjwt/pull/990>`__
- Add an RTD config file to resolve Read the Docs build failures by @​kurtmckee in `#​977 <https://github.com/jpadilla/pyjwt/pull/977>`__
- Docs: Update ``iat`` exception docs by @​pachewise in `#​974 <https://github.com/jpadilla/pyjwt/pull/974>`__
- Docs: Fix ``decode_complete`` scope and algorithms by @​RbnRncn in `#​982 <https://github.com/jpadilla/pyjwt/pull/982>`__
- Fix doctest for ``docs/usage.rst`` by @​pachewise in `#​986 <https://github.com/jpadilla/pyjwt/pull/986>`__
- Fix ``test_utils.py`` not to xfail by @​pachewise in `#​987 <https://github.com/jpadilla/pyjwt/pull/987>`__
- Docs: Correct `jwt.decode` audience param doc expression by @​peter279k in `#​994 <https://github.com/jpadilla/pyjwt/pull/994>`__
Added
~~~~~
- Add support for python 3.13 by @​hugovk in `#​972 <https://github.com/jpadilla/pyjwt/pull/972>`__
- Create SECURITY.md by @​auvipy and @​jpadilla in `#​973 <https://github.com/jpadilla/pyjwt/pull/973>`__
- Docs: Add PS256 encoding and decoding usage by @​peter279k in `#​992 <https://github.com/jpadilla/pyjwt/pull/992>`__
- Docs: Add API docs for PyJWK by @​luhn in `#​980 <https://github.com/jpadilla/pyjwt/pull/980>`__
- Docs: Add EdDSA algorithm encoding/decoding usage by @​peter279k in `#​993 <https://github.com/jpadilla/pyjwt/pull/993>`__
- Include checkers and linters for ``pyproject.toml`` in ``pre-commit`` by @​cleder in `#​1002 <https://github.com/jpadilla/pyjwt/pull/1002>`__
- Docs: Add ES256 decoding usage by @​Gautam-Hegde in `#​1003 <https://github.com/jpadilla/pyjwt/pull/1003>`__
`v2.9.0 <https://github.com/jpadilla/pyjwt/compare/2.8.0...2.9.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- Drop support for Python 3.7 (EOL) by @​hugovk in `#​910 <https://github.com/jpadilla/pyjwt/pull/910>`__
- Allow JWT issuer claim validation to accept a list of strings too by @​mattpollak in `#​913 <https://github.com/jpadilla/pyjwt/pull/913>`__
Fixed
~~~~~
- Fix unnecessary string concatenation by @​sirosen in `#​904 <https://github.com/jpadilla/pyjwt/pull/904>`__
- Fix docs for ``jwt.decode_complete`` to include ``strict_aud`` option by @​woodruffw in `#​923 <https://github.com/jpadilla/pyjwt/pull/923>`__
- Fix docs step by @​jpadilla in `#​950 <https://github.com/jpadilla/pyjwt/pull/950>`__
- Fix: Remove an unused variable from example code block by @​kenkoooo in `#​958 <https://github.com/jpadilla/pyjwt/pull/958>`__
Added
~~~~~
- Add support for Python 3.12 by @​hugovk in `#​910 <https://github.com/jpadilla/pyjwt/pull/910>`__
- Improve performance of ``is_ssh_key`` + add unit test by @​bdraco in `#​940 <https://github.com/jpadilla/pyjwt/pull/940>`__
- Allow ``jwt.decode()`` to accept a PyJWK object by @​luhn in `#​886 <https://github.com/jpadilla/pyjwt/pull/886>`__
- Make ``algorithm_name`` attribute available on PyJWK by @​luhn in `#​886 <https://github.com/jpadilla/pyjwt/pull/886>`__
- Raise ``InvalidKeyError`` on invalid PEM keys to be compatible with cryptography 42.x.x by @​CollinEMac in `#​952 <https://github.com/jpadilla/pyjwt/pull/952>`__
- Raise an exception when required cryptography dependency is missing by @​tobloef in `<https://github.com/jpadilla/pyjwt/pull/963>`__
`v2.8.0 <https://github.com/jpadilla/pyjwt/compare/2.7.0...2.8.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- Update python version test matrix by @​auvipy in `#​895 <https://github.com/jpadilla/pyjwt/pull/895>`__
Fixed
~~~~~
Added
~~~~~
- Add ``strict_aud`` as an option to ``jwt.decode`` by @​woodruffw in `#​902 <https://github.com/jpadilla/pyjwt/pull/902>`__
- Export PyJWKClientConnectionError class by @​daviddavis in `#​887 <https://github.com/jpadilla/pyjwt/pull/887>`__
- Allows passing of ssl.SSLContext to PyJWKClient by @​juur in `#​891 <https://github.com/jpadilla/pyjwt/pull/891>`__
`v2.7.0 <https://github.com/jpadilla/pyjwt/compare/2.6.0...2.7.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- Changed the error message when the token audience doesn't match the expected audience by @​irdkwmnsb `#​809 <https://github.com/jpadilla/pyjwt/pull/809>`__
- Improve error messages when cryptography isn't installed by @​Viicos in `#​846 <https://github.com/jpadilla/pyjwt/pull/846>`__
- Make `Algorithm` an abstract base class by @​Viicos in `#​845 <https://github.com/jpadilla/pyjwt/pull/845>`__
- ignore invalid keys in a jwks by @​timw6n in `#​863 <https://github.com/jpadilla/pyjwt/pull/863>`__
Fixed
~~~~~
- Add classifier for Python 3.11 by @​eseifert in `#​818 <https://github.com/jpadilla/pyjwt/pull/818>`__
- Fix ``_validate_iat`` validation by @​Viicos in `#​847 <https://github.com/jpadilla/pyjwt/pull/847>`__
- fix: use datetime.datetime.timestamp function to have a milliseconds by @​daillouf `#​821 <https://github.com/jpadilla/pyjwt/pull/821>`__
- docs: correct mistake in the changelog about verify param by @​gbillig in `#​866 <https://github.com/jpadilla/pyjwt/pull/866>`__
Added
~~~~~
- Add ``compute_hash_digest`` as a method of ``Algorithm`` objects, which uses
the underlying hash algorithm to compute a digest. If there is no appropriate
hash algorithm, a ``NotImplementedError`` will be raised in `#​775 <https://github.com/jpadilla/pyjwt/pull/775>`__
- Add optional ``headers`` argument to ``PyJWKClient``. If provided, the headers
will be included in requests that the client uses when fetching the JWK set by @​thundercat1 in `#​823 <https://github.com/jpadilla/pyjwt/pull/823>`__
- Add PyJWT._{de,en}code_payload hooks by @​akx in `#​829 <https://github.com/jpadilla/pyjwt/pull/829>`__
- Add `sort_headers` parameter to `api_jwt.encode` by @​evroon in `#​832 <https://github.com/jpadilla/pyjwt/pull/832>`__
- Make mypy configuration stricter and improve typing by @​akx in `#​830 <https://github.com/jpadilla/pyjwt/pull/830>`__
- Add more types by @​Viicos in `#​843 <https://github.com/jpadilla/pyjwt/pull/843>`__
- Add a timeout for PyJWKClient requests by @​daviddavis in `#​875 <https://github.com/jpadilla/pyjwt/pull/875>`__
- Add client connection error exception by @​daviddavis in `#​876 <https://github.com/jpadilla/pyjwt/pull/876>`__
- Add complete types to take all allowed keys into account by @​Viicos in `#​873 <https://github.com/jpadilla/pyjwt/pull/873>`__
- Add `as_dict` option to `Algorithm.to_jwk` by @​fluxth in `#​881 <https://github.com/jpadilla/pyjwt/pull/881>`__
`v2.6.0 <https://github.com/jpadilla/pyjwt/compare/2.5.0...2.6.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- bump up cryptography >= 3.4.0 by @​jpadilla in `#​807 <https://github.com/jpadilla/pyjwt/pull/807>`__
- Remove `types-cryptography` from `crypto` extra by @​lautat in `#​805 <https://github.com/jpadilla/pyjwt/pull/805>`__
Fixed
~~~~~
- Invalidate token on the exact second the token expires `#​797 <https://github.com/jpadilla/pyjwt/pull/797>`__
- fix: version 2.5.0 heading typo by @​c0state in `#​803 <https://github.com/jpadilla/pyjwt/pull/803>`__
Added
~~~~~
- Adding validation for `issued_at` when `iat > (now + leeway)` as `ImmatureSignatureError` by @​sriharan16 in `#​794 <https://github.com/jpadilla/pyjwt/pull/794>`__
`v2.5.0 <https://github.com/jpadilla/pyjwt/compare/2.4.0...2.5.0>`__
-----------------------------------------------------------------------
Changed
~~~~~~~
- Skip keys with incompatible alg when loading JWKSet by @​DaGuich in `#​762 <https://github.com/jpadilla/pyjwt/pull/762>`__
- Remove support for python3.6 by @​sirosen in `#​777 <https://github.com/jpadilla/pyjwt/pull/777>`__
- Emit a deprecation warning for unsupported kwargs by @​sirosen in `#​776 <https://github.com/jpadilla/pyjwt/pull/776>`__
- Remove redundant wheel dep from pyproject.toml by @​mgorny in `#​765 <https://github.com/jpadilla/pyjwt/pull/765>`__
- Do not fail when an unusable key occurs by @​DaGuich in `#​762 <https://github.com/jpadilla/pyjwt/pull/762>`__
- Update audience typing by @​JulianMaurin in `#​782 <https://github.com/jpadilla/pyjwt/pull/782>`__
- Improve PyJWKSet error accuracy by @​JulianMaurin in `#​786 <https://github.com/jpadilla/pyjwt/pull/786>`__
- Mypy as pre-commit check + api_jws typing by @​JulianMaurin in `#​787 <https://github.com/jpadilla/pyjwt/pull/787>`__
Fixed
~~~~~
- Adjust expected exceptions in option merging tests for PyPy3 by @​mgorny in `#​763 <https://github.com/jpadilla/pyjwt/pull/763>`__
- Fixes for pyright on strict mode by @​brandon-leapyear in `#​747 <https://github.com/jpadilla/pyjwt/pull/747>`__
- docs: fix simple typo, iinstance -> isinstance by @​timgates42 in `#​774 <https://github.com/jpadilla/pyjwt/pull/774>`__
- Fix typo: priot -> prior by @​jdufresne in `#​780 <https://github.com/jpadilla/pyjwt/pull/780>`__
- Fix for headers disorder issue by @​kadabusha in `#​721 <https://github.com/jpadilla/pyjwt/pull/721>`__
Added
~~~~~
- Add to_jwk static method to ECAlgorithm by @​leonsmith in `#​732 <https://github.com/jpadilla/pyjwt/pull/732>`__
- Expose get_algorithm_by_name as new method by @​sirosen in `#​773 <https://github.com/jpadilla/pyjwt/pull/773>`__
- Add type hints to jwt/help.py and add missing types dependency by @​kkirsche in `#​784 <https://github.com/jpadilla/pyjwt/pull/784>`__
- Add cacheing functionality for JWK set by @​wuhaoyujerry in `#​781 <https://github.com/jpadilla/pyjwt/pull/781>`__
`v2.4.0 <https://github.com/jpadilla/pyjwt/compare/2.3.0...2.4.0>`__
-----------------------------------------------------------------------
Security- [CVE-2022-29217] Prevent key confusion through non-blocklisted public key formats. https://github.com/jpadilla/pyjwt/security/advisories/GHSA-ffqj-6fqr-9h24
Changed
- Explicit check the key for ECAlgorithm by @​estin in `#​713 <https://github.com/jpadilla/pyjwt/pull/713>`__
- Raise DeprecationWarning for jwt.decode(verify=...) by @​akx in `#​742 <https://github.com/jpadilla/pyjwt/pull/742>`__
Fixed
~~~~~
- Don't use implicit optionals by @​rekyungmin in `#​705 <https://github.com/jpadilla/pyjwt/pull/705>`__
- documentation fix: show correct scope for decode_complete() by @​sseering in `#​661 <https://github.com/jpadilla/pyjwt/pull/661>`__
- fix: Update copyright information by @​kkirsche in `#​729 <https://github.com/jpadilla/pyjwt/pull/729>`__
- Don't mutate options dictionary in .decode_complete() by @​akx in `#​743 <https://github.com/jpadilla/pyjwt/pull/743>`__
Added
~~~~~
- Add support for Python 3.10 by @​hugovk in `#​699 <https://github.com/jpadilla/pyjwt/pull/699>`__
- api_jwk: Add PyJWKSet.__getitem__ by @​woodruffw in `#​725 <https://github.com/jpadilla/pyjwt/pull/725>`__
- Update usage.rst by @​guneybilen in `#​727 <https://github.com/jpadilla/pyjwt/pull/727>`__
- Docs: mention performance reasons for reusing RSAPrivateKey when encoding by @​dmahr1 in `#​734 <https://github.com/jpadilla/pyjwt/pull/734>`__
- Fixed typo in usage.rst by @​israelabraham in `#​738 <https://github.com/jpadilla/pyjwt/pull/738>`__
- Add detached payload support for JWS encoding and decoding by @​fviard in `#​723 <https://github.com/jpadilla/pyjwt/pull/723>`__
- Replace various string interpolations with f-strings by @​akx in `#​744 <https://github.com/jpadilla/pyjwt/pull/744>`__
- Update CHANGELOG.rst by @​hipertracker in `#​751 <https://github.com/jpadilla/pyjwt/pull/751>`__
`v2.3.0 <https://github.com/jpadilla/pyjwt/compare/2.2.0...2.3.0>`__
-----------------------------------------------------------------------
Fixed
~~~~~
- Revert "Remove arbitrary kwargs." `#​701 <https://github.com/jpadilla/pyjwt/pull/701>`__
Added
~~~~~
- Add exception chaining `#​702 <https://github.com/jpadilla/pyjwt/pull/702>`__
`v2.2.0 <https://github.com/jpadilla/pyjwt/compare/2.1.0...2.2.0>`__
-----------------------------------------------------------------------
Changed- Remove arbitrary kwargs.
#​657 <https://github.com/jpadilla/pyjwt/pull/657>__ - Use timezone package as Python 3.5+ is required.
#​694 <https://github.com/jpadilla/pyjwt/pull/694>__
Fixed
- Assume JWK without the "use" claim is valid for signing as per RFC7517 `#​668 <https://github.com/jpadilla/pyjwt/pull/668>`__
- Prefer `headers["alg"]` to `algorithm` in `jwt.encode()`. `#​673 <https://github.com/jpadilla/pyjwt/pull/673>`__
- Fix aud validation to support {'aud': null} case. `#​670 <https://github.com/jpadilla/pyjwt/pull/670>`__
- Make `typ` optional in JWT to be compliant with RFC7519. `#​644 <https://github.com/jpadilla/pyjwt/pull/644>`__
- Remove upper bound on cryptography version. `#​693 <https://github.com/jpadilla/pyjwt/pull/693>`__
Added- Add support for Ed448/EdDSA.
#​675 <https://github.com/jpadilla/pyjwt/pull/675>__
v2.12.0
Security
- Validate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by @dmbs335 in GHSA-752w-5fwx-jx9f
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1132
- chore(docs): fix docs build by @tamird in #1137
- Annotate PyJWKSet.keys for pyright by @tamird in #1134
- fix: close HTTPError to prevent ResourceWarning on Python 3.14 by @veeceey in #1133
- chore: remove superfluous constants by @tamird in #1136
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1135
- chore(tests): enable mypy by @tamird in #1138
- Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #1142
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1141
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #1145
- fix: do not store reference to algorithms dict on PyJWK by @akx in #1143
- Use PyJWK algorithm when encoding without explicit algorithm by @jpadilla in #1148
New Contributors
Full Changelog: https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0
Configuration
- If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.