Pull Request Overview
- Opened on October 6, 2026
- Status Open
- Commit count 1 with first commit October 6, 2026
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
Data pending calculation for pull request
Bump pyjwt from 2.14.0 to 2.15.0
Bumps pyjwt from 2.14.0 to 2.15.0.
Release notes
Sourced from pyjwt's releases.
2.15.0
See the 2.15.0 changelog for complete release details.
Changelog
Sourced from pyjwt's changelog.
v2.15.0 <https://github.com/jpadilla/pyjwt/compare/2.14.0...2.15.0>Security
- Wrap recursion errors from deeply nested JWT payloads inDecodeError
instead of exposing a rawRecursionError.Added
- Support Python 3.15 by @kytta in[#1202](https://github.com/jpadilla/pyjwt/issues/1202) &lt;https://github.com/jpadilla/pyjwt/pull/1202&gt;
Changed
-
JWKSetCachenow stores the parsedPyJWKSetrather than the raw JWKS
payload, so a cache hit no longer re-parses every key.JWKSetCache.put()
accepts either form and raisesPyJWKSetErrorfor anything else. As a
result,PyJWKClient.get_jwk_set()returns the samePyJWKSetinstance
for as long as it stays cached, rather than a freshly built one per call in#1208 <https://github.com/jpadilla/pyjwt/pull/1208&gt; -
PyJWKClient.fetch_data()now raisesPyJWKClientError("The JWKS endpoint did not return a JSON object")when
the endpoint response is not a JSON object, instead of returning it forget_jwk_set()to reject. Callers reaching the JWKS throughget_jwk_set()see the same error as before in#1208 <https://github.com/jpadilla/pyjwt/pull/1208&gt;
Fixed
- Return cached PyJWKSet values from PyJWKClient.get_jwk_set() instead
of raising PyJWKClientError(&quot;The JWKS endpoint did not return a JSON
object&quot;). JWKSetCache.put() documents PyJWKSet as the cached value,
so callers pre-populating the cache to avoid a network round-trip could not
read it back in [#914](https://github.com/jpadilla/pyjwt/issues/914) &lt;https://github.com/jpadilla/pyjwt/issues/914&gt;__ and
[#1208](https://github.com/jpadilla/pyjwt/issues/1208) &lt;https://github.com/jpadilla/pyjwt/pull/1208&gt;__
- PyJWKClient.get_jwk_set() now caches the key set it returns, so a
fetch_data() override that filters or transforms the JWKS is no longer
undone by the next cache hit in
[#1208](https://github.com/jpadilla/pyjwt/issues/1208) &lt;https://github.com/jpadilla/pyjwt/pull/1208&gt;__
- Raise the documented PyJWTError subclass instead of leaking a
TypeError when the exp, nbf, or iat claim decodes to a
non-numeric, non-string value such as a list, dict, or null.
- Reject OKP JWK private keys when their public x component does not
match the private d component.
- Treat malformed JWK Set members as unusable keys rather than letting
AttributeError or TypeError escape PyJWKSet. A member that is not
</tr></table>
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/jpadilla/pyjwt/commit/1d41a6478e1562e68ff667fcd703356acf085f68"><code>1d41a64</code></a> chore: prepare 2.15.0 release</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/9bc06658f875b9b40091539140bbbdc4639161c3"><code>9bc0665</code></a> fix: make recursive payload tests deterministic</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/5fde08a6cf906aa7698de2d6391d88b73006b17b"><code>5fde08a</code></a> fix: normalize recursive JWT payload errors</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/171062d2d734315272a901100aa4b109f2fc3c19"><code>171062d</code></a> utils: mention bytes in force_bytes type error (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1173">#1173</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/c9d4d5375bf464ef363506fed9eb6e7f33217ab6"><code>c9d4d53</code></a> docs/conf: drop duplicate 'and' from read() docstring (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1174">#1174</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/2763752196113e1473b0ed7905aa6034aedfbe53"><code>2763752</code></a> Add support for Python 3.15 (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1202">#1202</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/4adcd02722f5011c60079d3978dfc167b9a8eaa5"><code>4adcd02</code></a> Catch http.client.HTTPException in PyJWKClient.fetch_data (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1201">#1201</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/9e501d993b4d3e7dba14bdb1722b1d993ac75097"><code>9e501d9</code></a> fix: correct docstring typo in _validate_jti (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1179">#1179</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/4047c44d51950ffda15f40054508d3f17c43b1e2"><code>4047c44</code></a> docs: clarify JWK certificate member handling (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1212">#1212</a>)</li>
<li><a href="https://github.com/jpadilla/pyjwt/commit/f4e2b59f543cc82d46d9d69922bba59e804216b9"><code>f4e2b59</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/jpadilla/pyjwt/issues/1210">#1210</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/jpadilla/pyjwt/compare/2.14.0...2.15.0">compare view</a></li>
</ul>
</details>
<br />
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 commands and options
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 show 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)
You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/chaoss/grimoirelab/network/alerts).
No comments have been left on this PR.