[{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/327244065","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/327244065/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/327244065/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.13.0","id":327244065,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4TgVkh","tag_name":"2.13.0","target_commitish":"master","name":"2.13.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-05-21T19:34:15Z","updated_at":"2026-05-21T19:53:00Z","published_at":"2026-05-21T19:53:00Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.13.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.13.0","body":"# PyJWT 2.13.0 — Security Release\r\n\r\nThis release bundles five security fixes plus three additional hardening / spec-compliance changes. We recommend all users upgrade.\r\n\r\n## Security\r\n\r\n- **[`GHSA-xgmm-8j9v-c9wx`](https://github.com/jpadilla/pyjwt/security/advisories/GHSA-xgmm-8j9v-c9wx) — JWK JSON accepted as HMAC secret (algorithm confusion).** `HMACAlgorithm.prepare_key` previously rejected PEM- and SSH-formatted asymmetric keys but did not catch a JWK passed as a raw JSON string. In a verifier configured with both symmetric and asymmetric algorithms in `algorithms=[…]` and a raw-JSON JWK as the key, an attacker could forge HS256 tokens using the JWK text as the HMAC secret. The guard has been extended to reject any JWK-shaped JSON. _Reported by @aradona91._\r\n\r\n- **[`GHSA-jq35-7prp-9v3f`](https://github.com/jpadilla/pyjwt/security/advisories/GHSA-jq35-7prp-9v3f) — Algorithm allow-list bypass with `PyJWK` / `PyJWKClient`.** When verifying with a `PyJWK`, the caller's `algorithms=[…]` allow-list was checked against the token header `alg` as a string only; actual verification used the algorithm bound to the `PyJWK`. An attacker who controlled a registered JWKS key could sign with one algorithm and advertise another on the header. PyJWT now requires the token header `alg` to match the `PyJWK`'s algorithm before verification. _Reported by @sushi-gif._\r\n\r\n- **[`GHSA-w7vc-732c-9m39`](https://github.com/jpadilla/pyjwt/security/advisories/GHSA-w7vc-732c-9m39) — DoS via base64 decode of unused payload segment when `b64=false`.** For detached-payload JWS (`b64=false`), the compact-form payload segment was base64-decoded before being discarded in favor of the caller-supplied `detached_payload`. An attacker could inflate the unused segment to force CPU + memory cost without holding a valid signature. The segment is now required to be empty per RFC 7515 Appendix F, and is no longer decoded. _Reported by @thesmartshadow._\r\n\r\n- **[`GHSA-993g-76c3-p5m4`](https://github.com/jpadilla/pyjwt/security/advisories/GHSA-993g-76c3-p5m4) — `PyJWKClient` accepts non-HTTP(S) URIs.** `PyJWKClient.fetch_data` passed its URI to `urllib.request.urlopen`, which by default also handles `file://`, `ftp://`, and `data:` schemes. An application that fed an attacker-influenced URI into `PyJWKClient` could be coerced into reading local files or reaching other unintended schemes. `PyJWKClient` now rejects any URI whose scheme isn't `http` or `https`. _Reported by @KEIJOT._\r\n\r\n- **[`GHSA-fhv5-28vv-h8m8`](https://github.com/jpadilla/pyjwt/security/advisories/GHSA-fhv5-28vv-h8m8) — `PyJWKClient` cache wiped on fetch error.** A `finally`-block `put(jwk_set=None)` cleared the JWK Set cache whenever a fetch raised, turning a transient JWKS-endpoint outage into application-wide auth failure. The cache write was moved into the success path; transient errors no longer evict valid cached keys. _Reported by @eddieran._\r\n\r\n## Fixed\r\n\r\n- Reject empty HMAC keys outright in `HMACAlgorithm.prepare_key` with `InvalidKeyError` instead of accepting them with only a warning. Defends against the `os.getenv(\"JWT_SECRET\", \"\")` footgun. _Thanks to @SnailSploit and @spartan8806 for the reports._\r\n- Forward per-call `options` (including `enforce_minimum_key_length`) from `PyJWT.decode` through to `PyJWS._verify_signature`. The option was previously silently dropped between the two layers, so it only took effect when set on the `PyJWT` instance. _Thanks to @WLUB for the report._\r\n- **RFC 7797 §3 compliance for `b64=false`:** the encoder now auto-adds `\"b64\"` to `crit`, and the decoder rejects tokens that set `b64=false` without listing it in `crit`. _Thanks to @MachineLearning-Nerd for the report._\r\n\r\n## Changed\r\n\r\n- Migrate the `dev`, `docs`, and `tests` package extras to dependency groups, by [@kurtmckee](https://github.com/kurtmckee) in [#1152](https://github.com/jpadilla/pyjwt/pull/1152).\r\n\r\n## Upgrade notes\r\n\r\nMost fixes are invisible to correctly-configured callers. A few behavioral changes you may encounter:\r\n\r\n- **Empty HMAC keys now raise.** If your app passed `\"\"` or `b\"\"` as a secret (often via a missing env var, e.g. `os.getenv(\"JWT_SECRET\", \"\")`), `encode`/`decode` will now raise `InvalidKeyError`. This is the intended behavior — fix the configuration.\r\n- **`PyJWK` decoding now requires the token's `alg` to match the JWK's algorithm.** Previously a mismatch was silently honored if the header `alg` appeared in the allow-list. Tokens that relied on this mismatch will now fail with `InvalidAlgorithmError`.\r\n- **`PyJWKClient` now rejects non-HTTP(S) URIs at construction time.** Tests or dev environments that fetched JWKS from `file://` URIs need to switch to a local HTTP server or load the JWKS by other means (e.g. construct `PyJWKSet.from_dict(...)` directly).\r\n- **`b64=false` tokens are now strictly RFC 7515 / 7797 compliant.** Tokens with a non-empty compact-form payload segment, or that omit `\"b64\"` from `crit`, will be rejected. PyJWT-produced tokens always satisfy both invariants, so round-trips through PyJWT are unaffected.\r\n- **`enforce_minimum_key_length` set per-call now takes effect.** Callers who passed `options={\"enforce_minimum_key_length\": True}` to `jwt.decode()` previously got no enforcement; they will now get `InvalidKeyError` on undersized keys, as documented.\r\n\r\n**Full changelog:** https://github.com/jpadilla/pyjwt/compare/2.12.1...2.13.0\r\n","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/1172","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/327244065/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"mentions_count":9},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296839807","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296839807/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/296839807/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.12.1","id":296839807,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4RsWp_","tag_name":"2.12.1","target_commitish":"master","name":"2.12.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-13T18:41:01Z","updated_at":"2026-03-13T19:09:09Z","published_at":"2026-03-13T19:09:09Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.12.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.12.1","body":"## What's Changed\r\n* Add typing_extensions dependency for Python < 3.11 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/1151\r\n\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296839807/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":1,"confused":0,"heart":0,"rocket":1,"eyes":0},"mentions_count":1},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296297063","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296297063/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/296297063/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.12.0","id":296297063,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4RqSJn","tag_name":"2.12.0","target_commitish":"master","name":"2.12.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-03-12T17:08:41Z","updated_at":"2026-03-12T17:11:17Z","published_at":"2026-03-12T17:10:11Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.12.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.12.0","body":"## Security\r\n* 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)\r\n\r\n## What's Changed\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1132\r\n* chore(docs): fix docs build by @tamird in https://github.com/jpadilla/pyjwt/pull/1137\r\n* Annotate PyJWKSet.keys for pyright by @tamird in https://github.com/jpadilla/pyjwt/pull/1134\r\n* fix: close HTTPError to prevent ResourceWarning on Python 3.14 by @veeceey in https://github.com/jpadilla/pyjwt/pull/1133\r\n* chore: remove superfluous constants by @tamird in https://github.com/jpadilla/pyjwt/pull/1136\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1135\r\n* chore(tests): enable mypy by @tamird in https://github.com/jpadilla/pyjwt/pull/1138\r\n* Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1142\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1141\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1145\r\n* fix: do not store reference to algorithms dict on PyJWK by @akx in https://github.com/jpadilla/pyjwt/pull/1143\r\n* Use PyJWK algorithm when encoding without explicit algorithm by @jpadilla in https://github.com/jpadilla/pyjwt/pull/1148\r\n\r\n## New Contributors\r\n* @tamird made their first contribution in https://github.com/jpadilla/pyjwt/pull/1137\r\n* @veeceey made their first contribution in https://github.com/jpadilla/pyjwt/pull/1133\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/296297063/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":2,"rocket":0,"eyes":0},"mentions_count":7},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/281645726","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/281645726/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/281645726/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.11.0","id":281645726,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4QyZKe","tag_name":"2.11.0","target_commitish":"master","name":"2.11.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-01-30T18:44:15Z","updated_at":"2026-01-30T19:59:07Z","published_at":"2026-01-30T19:59:07Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.11.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.11.0","body":"## What's Changed\r\n* Fixed type error in comment by @shuhaib-aot in https://github.com/jpadilla/pyjwt/pull/1026\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1018\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1033\r\n* Make note of use of leeway with nbf by @djw8605 in https://github.com/jpadilla/pyjwt/pull/1034\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1035\r\n* Fixes #964: Validate key against allowed types for Algorithm family by @pachewise in https://github.com/jpadilla/pyjwt/pull/985\r\n* Feat #1024: Add iterator for PyJWKSet by @pachewise in https://github.com/jpadilla/pyjwt/pull/1041\r\n* Fixes #1039: Add iss, issuer type checks by @pachewise in https://github.com/jpadilla/pyjwt/pull/1040\r\n* Fixes #660: Improve typing/logic for `options` in decode, decode_complete; Improve docs by @pachewise in https://github.com/jpadilla/pyjwt/pull/1045\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1042\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1052\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1053\r\n* Fix #1022: Map `algorithm=None` to \"none\" by @qqii in https://github.com/jpadilla/pyjwt/pull/1056\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1055\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1058\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1060\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1061\r\n* Fixes #1047: Correct `PyJWKClient.get_signing_key_from_jwt` annotation  by @khvn26 in https://github.com/jpadilla/pyjwt/pull/1048\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1062\r\n* Fixed doc string typo in _validate_jti() function #1063 by @kuldeepkhatke in https://github.com/jpadilla/pyjwt/pull/1064\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1065\r\n* Update SECURITY.md by @auvipy in https://github.com/jpadilla/pyjwt/pull/1057\r\n* Typing fix: use `float` instead of `int` for `lifespan` and `timeout` by @nikitagashkov in https://github.com/jpadilla/pyjwt/pull/1068\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1067\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1071\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1076\r\n* Fix TYP header documentation by @fobiasmog in https://github.com/jpadilla/pyjwt/pull/1046\r\n* doc: Document claims sub and jti by @cleder in https://github.com/jpadilla/pyjwt/pull/1088\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1077\r\n* Bump actions/setup-python from 5 to 6 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1089\r\n* Bump actions/stale from 8 to 10 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1090\r\n* Bump actions/checkout from 4 to 5 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1083\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1091\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1093\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in https://github.com/jpadilla/pyjwt/pull/1096\r\n* Resolve package build warnings by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1105\r\n* Support Python 3.14, and test against PyPy 3.10+ by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1104\r\n* Fix a `SyntaxWarning` caused by invalid escape sequences by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1103\r\n* Standardize CHANGELOG links to PRs by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1110\r\n* Migrate from `pep517`, which is deprecated, to `build` by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1108\r\n* Fix incorrectly-named test suite function by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1116\r\n* Fix Read the Docs builds by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1111\r\n* Bump actions/download-artifact from 4 to 6 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1118\r\n* Escalate test suite warnings to errors by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1107\r\n* Add pyupgrade as a pre-commit hook by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1109\r\n* Simplify the test suite decorators by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1113\r\n* Improve coverage config and eliminate unused test suite code by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1115\r\n* Build a shared wheel once in the test suite by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1114\r\n* Bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1122\r\n* Thoroughly test type annotations, and resolve errors by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/1112\r\n* Fix leeway value in usage documentation by @Matthew1471 in https://github.com/jpadilla/pyjwt/pull/1124\r\n* Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in https://github.com/jpadilla/pyjwt/pull/1125\r\n\r\n## New Contributors\r\n* @shuhaib-aot made their first contribution in https://github.com/jpadilla/pyjwt/pull/1026\r\n* @qqii made their first contribution in https://github.com/jpadilla/pyjwt/pull/1056\r\n* @khvn26 made their first contribution in https://github.com/jpadilla/pyjwt/pull/1048\r\n* @kuldeepkhatke made their first contribution in https://github.com/jpadilla/pyjwt/pull/1064\r\n* @nikitagashkov made their first contribution in https://github.com/jpadilla/pyjwt/pull/1068\r\n* @fobiasmog made their first contribution in https://github.com/jpadilla/pyjwt/pull/1046\r\n* @Matthew1471 made their first contribution in https://github.com/jpadilla/pyjwt/pull/1124\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.10.1...2.11.0","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/281645726/reactions","total_count":3,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":2,"rocket":0,"eyes":0},"mentions_count":14},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/187944556","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/187944556/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/187944556/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.10.1","id":187944556,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4LM85s","tag_name":"2.10.1","target_commitish":"master","name":"2.10.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2024-11-28T03:30:29Z","updated_at":"2024-11-28T03:40:39Z","published_at":"2024-11-28T03:40:39Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.10.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.10.1","body":"## Fixed\r\n\r\n- Prevent partial matching of `iss` claim. Thanks @fabianbadoi! (See: https://github.com/jpadilla/pyjwt/security/advisories/GHSA-75c5-xw7c-p5pm)\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.10.0...2.10.1","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/1021","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/187944556/reactions","total_count":6,"+1":2,"-1":0,"laugh":0,"hooray":3,"confused":0,"heart":0,"rocket":1,"eyes":0},"mentions_count":1},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/185800185","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/185800185/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/185800185/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.10.0","id":185800185,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4LExX5","tag_name":"2.10.0","target_commitish":"master","name":"2.10.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2024-11-16T13:57:38Z","updated_at":"2024-11-17T10:18:41Z","published_at":"2024-11-17T10:18:41Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.10.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.10.0","body":"## What's Changed\r\n* chore: use sequence for typing rather than list by @imnotjames in https://github.com/jpadilla/pyjwt/pull/970\r\n* Add support for Python 3.13 by @hugovk in https://github.com/jpadilla/pyjwt/pull/972\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/971\r\n* Add an RTD config file to resolve RTD build failures by @kurtmckee in https://github.com/jpadilla/pyjwt/pull/977\r\n* docs: Update `iat` exception docs by @pachewise in https://github.com/jpadilla/pyjwt/pull/974\r\n* Remove algorithm requirement for JWT API by @luhn in https://github.com/jpadilla/pyjwt/pull/975\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/978\r\n* Create SECURITY.md by @auvipy in https://github.com/jpadilla/pyjwt/pull/973\r\n* docs fix: decode_complete scope and algorithms by @RbnRncn in https://github.com/jpadilla/pyjwt/pull/982\r\n* fix doctest for docs/usage.rst by @pachewise in https://github.com/jpadilla/pyjwt/pull/986\r\n* fix test_utils.py not to xfail by @pachewise in https://github.com/jpadilla/pyjwt/pull/987\r\n* Correct jwt.decode audience param doc expression by @peter279k in https://github.com/jpadilla/pyjwt/pull/994\r\n* Add PS256 encoding and decoding usage by @peter279k in https://github.com/jpadilla/pyjwt/pull/992\r\n* Add API docs for PyJWK by @luhn in https://github.com/jpadilla/pyjwt/pull/980\r\n* Refactor project configuration files from setup.cfg to pyproject.toml PEP-518 by @cleder in https://github.com/jpadilla/pyjwt/pull/995\r\n* Add JWK support to JWT encode by @luhn in https://github.com/jpadilla/pyjwt/pull/979\r\n* Update pre-commit hooks to lint pyproject.toml by @cleder in https://github.com/jpadilla/pyjwt/pull/1002\r\n* Add EdDSA algorithm encoding/decoding usage by @peter279k in https://github.com/jpadilla/pyjwt/pull/993\r\n* Ruff linter and formatter changes by @gagandeepp in https://github.com/jpadilla/pyjwt/pull/1001\r\n* Validate `sub` and `jti` claims for the token by @Divan009 in https://github.com/jpadilla/pyjwt/pull/1005\r\n* Add ES256 usage  by @Gautam-Hegde in https://github.com/jpadilla/pyjwt/pull/1003\r\n* Encode EC keys with a fixed bit length by @way-dave in https://github.com/jpadilla/pyjwt/pull/990\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/1000\r\n* Drop support for Python 3.8 by @kkirsche in https://github.com/jpadilla/pyjwt/pull/1007\r\n* Prepare 2.10.0 release by @benvdh in https://github.com/jpadilla/pyjwt/pull/1011\r\n* Bump codecov/codecov-action from 4 to 5 by @dependabot in https://github.com/jpadilla/pyjwt/pull/1014\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/1006\r\n\r\n## New Contributors\r\n* @imnotjames made their first contribution in https://github.com/jpadilla/pyjwt/pull/970\r\n* @kurtmckee made their first contribution in https://github.com/jpadilla/pyjwt/pull/977\r\n* @pachewise made their first contribution in https://github.com/jpadilla/pyjwt/pull/974\r\n* @RbnRncn made their first contribution in https://github.com/jpadilla/pyjwt/pull/982\r\n* @peter279k made their first contribution in https://github.com/jpadilla/pyjwt/pull/994\r\n* @cleder made their first contribution in https://github.com/jpadilla/pyjwt/pull/995\r\n* @gagandeepp made their first contribution in https://github.com/jpadilla/pyjwt/pull/1001\r\n* @Divan009 made their first contribution in https://github.com/jpadilla/pyjwt/pull/1005\r\n* @Gautam-Hegde made their first contribution in https://github.com/jpadilla/pyjwt/pull/1003\r\n* @way-dave made their first contribution in https://github.com/jpadilla/pyjwt/pull/990\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.9.0...2.10.0","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/1016","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/185800185/reactions","total_count":10,"+1":3,"-1":0,"laugh":0,"hooray":4,"confused":0,"heart":0,"rocket":3,"eyes":0},"mentions_count":17},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/168266405","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/168266405/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/168266405/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.9.0","id":168266405,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4KB4ql","tag_name":"2.9.0","target_commitish":"master","name":"2.9.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2024-07-31T12:40:12Z","updated_at":"2024-08-01T14:58:20Z","published_at":"2024-08-01T14:58:20Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.9.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.9.0","body":"## What's Changed\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/905\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/909\r\n* Add support for Python 3.12 by @hugovk in https://github.com/jpadilla/pyjwt/pull/910\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/911\r\n* Fix an unnecessary str concat by @sirosen in https://github.com/jpadilla/pyjwt/pull/904\r\n* Update jwt-api to accept either a string or list of strings for issuer validation by @mattpollak in https://github.com/jpadilla/pyjwt/pull/913\r\n* Bump actions/checkout from 3 to 4 by @dependabot in https://github.com/jpadilla/pyjwt/pull/916\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/917\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/922\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/926\r\n* Bump actions/setup-python from 4 to 5 by @dependabot in https://github.com/jpadilla/pyjwt/pull/931\r\n* Bump hynek/build-and-inspect-python-package from 1 to 2 by @dependabot in https://github.com/jpadilla/pyjwt/pull/935\r\n* docs/api: document strict_aud on decode_complete by @woodruffw in https://github.com/jpadilla/pyjwt/pull/923\r\n* chore: fix docs step by @jpadilla in https://github.com/jpadilla/pyjwt/pull/950\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/953\r\n* Add coverage and improve performance of is_ssh_key by @bdraco in https://github.com/jpadilla/pyjwt/pull/940\r\n* Decode with PyJWK by @luhn in https://github.com/jpadilla/pyjwt/pull/886\r\n* Remove an unused variable from an example code block by @kenkoooo in https://github.com/jpadilla/pyjwt/pull/958\r\n* Handle load_pem_public_key ValueError by @CollinEMac in https://github.com/jpadilla/pyjwt/pull/952\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/960\r\n* Raise exception when required cryptography dependency is missing by @tobloef in https://github.com/jpadilla/pyjwt/pull/963\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/965\r\n* Add 2.9.0 changelog. Fixes #949 by @benvdh in https://github.com/jpadilla/pyjwt/pull/967\r\n\r\n## New Contributors\r\n* @mattpollak made their first contribution in https://github.com/jpadilla/pyjwt/pull/913\r\n* @bdraco made their first contribution in https://github.com/jpadilla/pyjwt/pull/940\r\n* @luhn made their first contribution in https://github.com/jpadilla/pyjwt/pull/886\r\n* @kenkoooo made their first contribution in https://github.com/jpadilla/pyjwt/pull/958\r\n* @CollinEMac made their first contribution in https://github.com/jpadilla/pyjwt/pull/952\r\n* @tobloef made their first contribution in https://github.com/jpadilla/pyjwt/pull/963\r\n* @benvdh made their first contribution in https://github.com/jpadilla/pyjwt/pull/967\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.8.0...2.9.0","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/968","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/168266405/reactions","total_count":13,"+1":4,"-1":0,"laugh":1,"hooray":5,"confused":0,"heart":1,"rocket":1,"eyes":1},"mentions_count":13},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/112722072","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/112722072/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/112722072/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.8.0","id":112722072,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4GuACY","tag_name":"2.8.0","target_commitish":"master","name":"2.8.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2023-07-18T18:30:05Z","updated_at":"2023-07-18T19:59:57Z","published_at":"2023-07-18T19:59:57Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.8.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.8.0","body":"## What's Changed\r\n* Export PyJWKClientConnectionError class by @daviddavis in https://github.com/jpadilla/pyjwt/pull/887\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/889\r\n* Patch 1 by @juur in https://github.com/jpadilla/pyjwt/pull/891\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/896\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/898\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/900\r\n* Update python version by @auvipy in https://github.com/jpadilla/pyjwt/pull/895\r\n* api_jwt: add a `strict_aud` option by @woodruffw in https://github.com/jpadilla/pyjwt/pull/902\r\n\r\n## New Contributors\r\n* @juur made their first contribution in https://github.com/jpadilla/pyjwt/pull/891\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.7.0...2.8.0","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/903","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/112722072/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"mentions_count":5},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/102402625","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/102402625/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/102402625/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.7.0","id":102402625,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4GGopB","tag_name":"2.7.0","target_commitish":"master","name":"2.7.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2023-05-09T19:04:21Z","updated_at":"2023-05-09T20:05:20Z","published_at":"2023-05-09T20:05:20Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.7.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.7.0","body":"## What's Changed\r\n* Add classifier for Python 3.11 by @eseifert in https://github.com/jpadilla/pyjwt/pull/818\r\n* Add `Algorithm.compute_hash_digest` and use it to implement at_hash validation example by @sirosen in https://github.com/jpadilla/pyjwt/pull/775\r\n* fix: use datetime.datetime.timestamp function to have a milliseconds by @daillouf in https://github.com/jpadilla/pyjwt/pull/821\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/825\r\n* Custom header configuration in jwk client by @thundercat1 in https://github.com/jpadilla/pyjwt/pull/823\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/828\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/833\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/835\r\n* Add PyJWT._{de,en}code_payload hooks by @akx in https://github.com/jpadilla/pyjwt/pull/829\r\n* Add `sort_headers` parameter to `api_jwt.encode` by @evroon in https://github.com/jpadilla/pyjwt/pull/832\r\n* Make mypy configuration stricter and improve typing by @akx in https://github.com/jpadilla/pyjwt/pull/830\r\n* Bump actions/stale from 6 to 7 by @dependabot in https://github.com/jpadilla/pyjwt/pull/840\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/838\r\n* Add more types by @Viicos in https://github.com/jpadilla/pyjwt/pull/843\r\n* Differentiate between two errors by @irdkwmnsb in https://github.com/jpadilla/pyjwt/pull/809\r\n* Fix `_validate_iat` validation by @Viicos in https://github.com/jpadilla/pyjwt/pull/847\r\n* Improve error messages when cryptography isn't installed by @Viicos in https://github.com/jpadilla/pyjwt/pull/846\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/852\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/855\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/859\r\n* Make `Algorithm` an abstract base class by @Viicos in https://github.com/jpadilla/pyjwt/pull/845\r\n* docs: correct mistake in the changelog about verify param by @gbillig in https://github.com/jpadilla/pyjwt/pull/866\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/868\r\n* Bump actions/stale from 7 to 8 by @dependabot in https://github.com/jpadilla/pyjwt/pull/872\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/874\r\n* Add a timeout for PyJWKClient requests by @daviddavis in https://github.com/jpadilla/pyjwt/pull/875\r\n* Add client connection error exception by @daviddavis in https://github.com/jpadilla/pyjwt/pull/876\r\n* Add complete types to take all allowed keys into account by @Viicos in https://github.com/jpadilla/pyjwt/pull/873\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/878\r\n* Build  and upload PyPI package by @jpadilla in https://github.com/jpadilla/pyjwt/pull/884\r\n* Fix for issue #862 - ignore invalid keys in a jwks. by @timw6n in https://github.com/jpadilla/pyjwt/pull/863\r\n* Add `as_dict` option to `Algorithm.to_jwk` by @fluxth in https://github.com/jpadilla/pyjwt/pull/881\r\n\r\n## New Contributors\r\n* @eseifert made their first contribution in https://github.com/jpadilla/pyjwt/pull/818\r\n* @daillouf made their first contribution in https://github.com/jpadilla/pyjwt/pull/821\r\n* @thundercat1 made their first contribution in https://github.com/jpadilla/pyjwt/pull/823\r\n* @evroon made their first contribution in https://github.com/jpadilla/pyjwt/pull/832\r\n* @Viicos made their first contribution in https://github.com/jpadilla/pyjwt/pull/843\r\n* @irdkwmnsb made their first contribution in https://github.com/jpadilla/pyjwt/pull/809\r\n* @gbillig made their first contribution in https://github.com/jpadilla/pyjwt/pull/866\r\n* @daviddavis made their first contribution in https://github.com/jpadilla/pyjwt/pull/875\r\n* @timw6n made their first contribution in https://github.com/jpadilla/pyjwt/pull/863\r\n* @fluxth made their first contribution in https://github.com/jpadilla/pyjwt/pull/881\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.6.0...2.7.0","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/102402625/reactions","total_count":8,"+1":3,"-1":0,"laugh":0,"hooray":1,"confused":0,"heart":1,"rocket":3,"eyes":0},"mentions_count":15},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/80800330","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/80800330/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/80800330/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.6.0","id":80800330,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4E0OpK","tag_name":"2.6.0","target_commitish":"master","name":"2.6.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2022-10-20T01:08:12Z","updated_at":"2022-10-24T14:25:05Z","published_at":"2022-10-24T14:25:05Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.6.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.6.0","body":"## What's Changed\r\n* fix: version 2.5.0 heading typo by @c0state in https://github.com/jpadilla/pyjwt/pull/803\r\n* Remove `types-cryptography` from `crypto` extra by @lautat in https://github.com/jpadilla/pyjwt/pull/805\r\n* bump up cryptography >= 3.4.0 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/807\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/798\r\n* Bump actions/stale from 5 to 6 by @dependabot in https://github.com/jpadilla/pyjwt/pull/808\r\n* Invalidate exp when exp == now() by @wcedmisten-reify in https://github.com/jpadilla/pyjwt/pull/797\r\n* Handling 'ImmatureSignatureError' for issued_at time by @sriharan16 in https://github.com/jpadilla/pyjwt/pull/794\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/810\r\n* Bump version to 2.6.0 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/813\r\n\r\n## New Contributors\r\n* @c0state made their first contribution in https://github.com/jpadilla/pyjwt/pull/803\r\n* @lautat made their first contribution in https://github.com/jpadilla/pyjwt/pull/805\r\n* @wcedmisten-reify made their first contribution in https://github.com/jpadilla/pyjwt/pull/797\r\n* @sriharan16 made their first contribution in https://github.com/jpadilla/pyjwt/pull/794\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.5.0...2.6.0","discussion_url":"https://github.com/jpadilla/pyjwt/discussions/816","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/80800330/reactions","total_count":6,"+1":2,"-1":0,"laugh":0,"hooray":2,"confused":0,"heart":1,"rocket":1,"eyes":0},"mentions_count":7},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/77454708","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/77454708/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/77454708/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.5.0","id":77454708,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4End10","tag_name":"2.5.0","target_commitish":"master","name":"2.5.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2022-09-17T13:52:22Z","updated_at":"2022-09-17T13:57:11Z","published_at":"2022-09-17T13:57:11Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.5.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.5.0","body":"## What's Changed\r\n* Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/jpadilla/pyjwt/pull/758\r\n* Bump codecov/codecov-action from 1 to 3 by @dependabot in https://github.com/jpadilla/pyjwt/pull/757\r\n* Bump actions/setup-python from 2 to 3 by @dependabot in https://github.com/jpadilla/pyjwt/pull/756\r\n* adding support for compressed payloads by @danieltmiles in https://github.com/jpadilla/pyjwt/pull/753\r\n* Revert \"adding support for compressed payloads\" by @auvipy in https://github.com/jpadilla/pyjwt/pull/761\r\n* Add to_jwk static method to ECAlgorithm by @leonsmith in https://github.com/jpadilla/pyjwt/pull/732\r\n* Remove redundant wheel dep from pyproject.toml by @mgorny in https://github.com/jpadilla/pyjwt/pull/765\r\n* Adjust expected exceptions in option merging tests for PyPy3 by @mgorny in https://github.com/jpadilla/pyjwt/pull/763\r\n* Do not fail when an unusable key occurs by @DaGuich in https://github.com/jpadilla/pyjwt/pull/762\r\n* Fixes for pyright on strict mode by @brandon-leapyear in https://github.com/jpadilla/pyjwt/pull/747\r\n* Bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/jpadilla/pyjwt/pull/769\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/770\r\n* docs: fix simple typo, iinstance -> isinstance by @timgates42 in https://github.com/jpadilla/pyjwt/pull/774\r\n* Expose get_algorithm_by_name as new method by @sirosen in https://github.com/jpadilla/pyjwt/pull/773\r\n* Remove support for python3.6 by @sirosen in https://github.com/jpadilla/pyjwt/pull/777\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/778\r\n* Emit a deprecation warning for unsupported kwargs by @sirosen in https://github.com/jpadilla/pyjwt/pull/776\r\n* Fix typo: priot -> prior by @jdufresne in https://github.com/jpadilla/pyjwt/pull/780\r\n* Fix for headers disorder issue by @kadabusha in https://github.com/jpadilla/pyjwt/pull/721\r\n* Update audience typing by @JulianMaurin in https://github.com/jpadilla/pyjwt/pull/782\r\n* Improve PyJWKSet error accuracy by @JulianMaurin in https://github.com/jpadilla/pyjwt/pull/786\r\n* Add type hints to jwt/help.py and add missing types dependency by @kkirsche in https://github.com/jpadilla/pyjwt/pull/784\r\n* Add cacheing functionality for JWK set by @wuhaoyujerry in https://github.com/jpadilla/pyjwt/pull/781\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/788\r\n* Mypy as pre-commit check + api_jws typing by @JulianMaurin in https://github.com/jpadilla/pyjwt/pull/787\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/791\r\n* Bump version to 2.5.0 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/801\r\n\r\n## New Contributors\r\n* @dependabot made their first contribution in https://github.com/jpadilla/pyjwt/pull/758\r\n* @danieltmiles made their first contribution in https://github.com/jpadilla/pyjwt/pull/753\r\n* @leonsmith made their first contribution in https://github.com/jpadilla/pyjwt/pull/732\r\n* @mgorny made their first contribution in https://github.com/jpadilla/pyjwt/pull/765\r\n* @DaGuich made their first contribution in https://github.com/jpadilla/pyjwt/pull/762\r\n* @brandon-leapyear made their first contribution in https://github.com/jpadilla/pyjwt/pull/747\r\n* @sirosen made their first contribution in https://github.com/jpadilla/pyjwt/pull/773\r\n* @kadabusha made their first contribution in https://github.com/jpadilla/pyjwt/pull/721\r\n* @JulianMaurin made their first contribution in https://github.com/jpadilla/pyjwt/pull/782\r\n* @wuhaoyujerry made their first contribution in https://github.com/jpadilla/pyjwt/pull/781\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.4.0...2.5.0","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/77454708/reactions","total_count":4,"+1":1,"-1":0,"laugh":0,"hooray":2,"confused":0,"heart":0,"rocket":1,"eyes":0},"mentions_count":16},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/66728247","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/66728247/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/66728247/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.4.0","id":66728247,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4D-jE3","tag_name":"2.4.0","target_commitish":"master","name":"2.4.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2022-05-12T18:51:41Z","updated_at":"2022-05-12T18:57:01Z","published_at":"2022-05-12T18:57:01Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.4.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.4.0","body":"## Security\r\n\r\n- [CVE-2022-29217] Prevent key confusion through non-blocklisted public key formats. https://github.com/jpadilla/pyjwt/security/advisories/GHSA-ffqj-6fqr-9h24\r\n\r\n## What's Changed\r\n* Add support for Python 3.10 by @hugovk in https://github.com/jpadilla/pyjwt/pull/699\r\n* Don't use implicit optionals by @rekyungmin in https://github.com/jpadilla/pyjwt/pull/705\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/708\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/710\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/711\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/712\r\n* documentation fix: show correct scope for decode_complete() by @sseering in https://github.com/jpadilla/pyjwt/pull/661\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/716\r\n* Explicit check the key for ECAlgorithm by @estin in https://github.com/jpadilla/pyjwt/pull/713\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/720\r\n* api_jwk: Add PyJWKSet.__getitem__ by @woodruffw in https://github.com/jpadilla/pyjwt/pull/725\r\n* Update usage.rst by @guneybilen in https://github.com/jpadilla/pyjwt/pull/727\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/728\r\n* fix: Update copyright information by @kkirsche in https://github.com/jpadilla/pyjwt/pull/729\r\n* Docs: mention performance reasons for reusing RSAPrivateKey when encoding by @dmahr1 in https://github.com/jpadilla/pyjwt/pull/734\r\n* Fixed typo in usage.rst by @israelabraham in https://github.com/jpadilla/pyjwt/pull/738\r\n* Add detached payload support for JWS encoding and decoding by @fviard in https://github.com/jpadilla/pyjwt/pull/723\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/740\r\n* Raise DeprecationWarning for jwt.decode(verify=...) by @akx in https://github.com/jpadilla/pyjwt/pull/742\r\n* Don't mutate options dictionary in .decode_complete() by @akx in https://github.com/jpadilla/pyjwt/pull/743\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/748\r\n* Replace various string interpolations with f-strings by @akx in https://github.com/jpadilla/pyjwt/pull/744\r\n* Update CHANGELOG.rst by @hipertracker in https://github.com/jpadilla/pyjwt/pull/751\r\n\r\n## New Contributors\r\n* @hugovk made their first contribution in https://github.com/jpadilla/pyjwt/pull/699\r\n* @rekyungmin made their first contribution in https://github.com/jpadilla/pyjwt/pull/705\r\n* @sseering made their first contribution in https://github.com/jpadilla/pyjwt/pull/661\r\n* @estin made their first contribution in https://github.com/jpadilla/pyjwt/pull/713\r\n* @woodruffw made their first contribution in https://github.com/jpadilla/pyjwt/pull/725\r\n* @guneybilen made their first contribution in https://github.com/jpadilla/pyjwt/pull/727\r\n* @dmahr1 made their first contribution in https://github.com/jpadilla/pyjwt/pull/734\r\n* @israelabraham made their first contribution in https://github.com/jpadilla/pyjwt/pull/738\r\n* @fviard made their first contribution in https://github.com/jpadilla/pyjwt/pull/723\r\n* @akx made their first contribution in https://github.com/jpadilla/pyjwt/pull/742\r\n* @hipertracker made their first contribution in https://github.com/jpadilla/pyjwt/pull/751\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.3.0...2.4.0","reactions":{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/66728247/reactions","total_count":2,"+1":0,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":2},"mentions_count":13},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/51550311","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/51550311/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/51550311/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.3.0","id":51550311,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4DEphn","tag_name":"2.3.0","target_commitish":"master","name":"2.3.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2021-10-16T15:46:05Z","updated_at":"2021-10-18T15:25:11Z","published_at":"2021-10-18T15:25:11Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.3.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.3.0","body":"## What's Changed\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/700\r\n* Add exception chaining by @ehdgua01 in https://github.com/jpadilla/pyjwt/pull/702\r\n* Revert \"Remove arbitrary kwargs.\" by @auvipy in https://github.com/jpadilla/pyjwt/pull/701\r\n* Bump up version to v2.3.0 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/703\r\n\r\n## New Contributors\r\n* @ehdgua01 made their first contribution in https://github.com/jpadilla/pyjwt/pull/702\r\n* @auvipy made their first contribution in https://github.com/jpadilla/pyjwt/pull/701\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.2.0...2.3.0","mentions_count":4},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/50925547","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/50925547/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/50925547/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.2.0","id":50925547,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOABV8os4DCQ_r","tag_name":"2.2.0","target_commitish":"master","name":"2.2.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2021-10-06T14:03:12Z","updated_at":"2021-10-06T22:31:43Z","published_at":"2021-10-06T22:31:43Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.2.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.2.0","body":"## What's Changed\r\n* Complete `jwt` documentation by @johachi in https://github.com/jpadilla/pyjwt/pull/654\r\n* Ignore coverage files generated during test runs by @makusu2 in https://github.com/jpadilla/pyjwt/pull/617\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/656\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/658\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/667\r\n* Fix aud validation to support {'aud': null} case. by @dajiaji in https://github.com/jpadilla/pyjwt/pull/670\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/678\r\n* Prefer headers['alg'] to algorithm parameter in encode(). by @dajiaji in https://github.com/jpadilla/pyjwt/pull/673\r\n* DOC: Clarify RSA encoding and decoding depend on the cryptography package by @TPXP in https://github.com/jpadilla/pyjwt/pull/664\r\n* Make typ optional by @dajiaji in https://github.com/jpadilla/pyjwt/pull/644\r\n* Remove arbitrary kwargs. by @dajiaji in https://github.com/jpadilla/pyjwt/pull/657\r\n* Assume JWK is valid for signing if \"use\" is omitted by @Klavionik in https://github.com/jpadilla/pyjwt/pull/668\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/684\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/686\r\n* [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jpadilla/pyjwt/pull/689\r\n* Remove upper bound on cryptography version by @riconnon in https://github.com/jpadilla/pyjwt/pull/693\r\n* Add support for Ed448/EdDSA. by @dajiaji in https://github.com/jpadilla/pyjwt/pull/675\r\n* Chore: inline Variables that immediately Returned by @yezz123 in https://github.com/jpadilla/pyjwt/pull/690\r\n* Use timezone package as Python 3.5+ is required by @kkirsche in https://github.com/jpadilla/pyjwt/pull/694\r\n* Bump up version to v2.2.0 by @jpadilla in https://github.com/jpadilla/pyjwt/pull/697\r\n\r\n## New Contributors\r\n* @TPXP made their first contribution in https://github.com/jpadilla/pyjwt/pull/664\r\n* @Klavionik made their first contribution in https://github.com/jpadilla/pyjwt/pull/668\r\n* @riconnon made their first contribution in https://github.com/jpadilla/pyjwt/pull/693\r\n* @yezz123 made their first contribution in https://github.com/jpadilla/pyjwt/pull/690\r\n* @kkirsche made their first contribution in https://github.com/jpadilla/pyjwt/pull/694\r\n\r\n**Full Changelog**: https://github.com/jpadilla/pyjwt/compare/2.1.0...2.2.0","mentions_count":10},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/42133401","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/42133401/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/42133401/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.1.0","id":42133401,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTQyMTMzNDAx","tag_name":"2.1.0","target_commitish":"master","name":"2.1.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2021-04-28T11:59:15Z","updated_at":"2021-04-28T12:06:52Z","published_at":"2021-04-28T12:06:52Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.1.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.1.0","body":"# Changelog\r\n\r\n## Changed\r\n\r\n-   Allow claims validation without making JWT signature validation mandatory. #608\r\n\r\n## Fixed\r\n\r\n-   Remove padding from JWK test data. #628\r\n-   Make `kty` mandatory in JWK to be compliant with RFC7517. #624\r\n-   Allow JWK without `alg` to be compliant with RFC7517. #624\r\n-   Allow to verify with private key on ECAlgorithm, as well as on Ed25519Algorithm. #645\r\n\r\n## Added\r\n\r\n-   Add caching by default to PyJWKClient #611\r\n-   Add missing exceptions.InvalidKeyError to jwt module `__init__` imports #620\r\n-   Add support for ES256K algorithm #629\r\n-   Add `from_jwk()` to Ed25519Algorithm #621\r\n-   Add `to_jwk()` to Ed25519Algorithm #643\r\n-   Export `PyJWK` and `PyJWKSet` #652"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/36519553","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/36519553/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/36519553/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.0.1","id":36519553,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTM2NTE5NTUz","tag_name":"2.0.1","target_commitish":"master","name":"2.0.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2021-01-17T17:56:19Z","updated_at":"2021-01-17T17:59:22Z","published_at":"2021-01-17T17:59:22Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.0.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.0.1","body":"## Changelog\r\n\r\n### Changed\r\n\r\n- Rename CHANGELOG.md to CHANGELOG.rst and include in docs #597\r\n\r\n### Fixed\r\n\r\n- Fix `from_jwk()` for all algorithms #598 "},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/35616180","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/35616180/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/35616180/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.0.0","id":35616180,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTM1NjE2MTgw","tag_name":"2.0.0","target_commitish":"master","name":"v2.0.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2020-12-22T13:37:35Z","updated_at":"2020-12-22T14:13:22Z","published_at":"2020-12-22T14:13:22Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.0.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.0.0","body":"### Highlights\r\n\r\n#### Introduce better experience for JWKs\r\n\r\nIntroduce `PyJWK`, `PyJWKSet`, and `PyJWKClient`.\r\n\r\n```python\r\nimport jwt\r\nfrom jwt import PyJWKClient\r\n\r\ntoken = \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik5FRTFRVVJCT1RNNE16STVSa0ZETlRZeE9UVTFNRGcyT0Rnd1EwVXpNVGsxUWpZeVJrUkZRdyJ9.eyJpc3MiOiJodHRwczovL2Rldi04N2V2eDlydS5hdXRoMC5jb20vIiwic3ViIjoiYVc0Q2NhNzl4UmVMV1V6MGFFMkg2a0QwTzNjWEJWdENAY2xpZW50cyIsImF1ZCI6Imh0dHBzOi8vZXhwZW5zZXMtYXBpIiwiaWF0IjoxNTcyMDA2OTU0LCJleHAiOjE1NzIwMDY5NjQsImF6cCI6ImFXNENjYTc5eFJlTFdVejBhRTJINmtEME8zY1hCVnRDIiwiZ3R5IjoiY2xpZW50LWNyZWRlbnRpYWxzIn0.PUxE7xn52aTCohGiWoSdMBZGiYAHwE5FYie0Y1qUT68IHSTXwXVd6hn02HTah6epvHHVKA2FqcFZ4GGv5VTHEvYpeggiiZMgbxFrmTEY0csL6VNkX1eaJGcuehwQCRBKRLL3zKmA5IKGy5GeUnIbpPHLHDxr-GXvgFzsdsyWlVQvPX2xjeaQ217r2PtxDeqjlf66UYl6oY6AqNS8DH3iryCvIfCcybRZkc_hdy-6ZMoKT6Piijvk_aXdm7-QQqKJFHLuEqrVSOuBqqiNfVrG27QzAPuPOxvfXTVLXL2jek5meH6n-VWgrBdoMFH93QEszEDowDAEhQPHVs0xj7SIzA\"\r\nkid = \"NEE1QURBOTM4MzI5RkFDNTYxOTU1MDg2ODgwQ0UzMTk1QjYyRkRFQw\"\r\nurl = \"https://dev-87evx9ru.auth0.com/.well-known/jwks.json\"\r\n\r\njwks_client = PyJWKClient(url)\r\nsigning_key = jwks_client.get_signing_key_from_jwt(token)\r\n\r\ndata = jwt.decode(\r\n    token,\r\n    signing_key.key,\r\n    algorithms=[\"RS256\"],\r\n    audience=\"https://expenses-api\",\r\n    options={\"verify_exp\": False},\r\n)\r\nprint(data)\r\n```\r\n\r\n#### Support for JWKs containing ECDSA keys\r\n\r\n#### Drop support for Python 2\r\n\r\n#### Require cryptography >= 3\r\n\r\n#### Drop support for PyCrypto and ECDSA\r\n\r\nWe've kept this around for a long time, mostly for environments that didn't allow installing cryptography.\r\n\r\n#### Drop CLI\r\n\r\nDropped the included cli entry point.\r\n\r\n#### Improve typings\r\n\r\nWe no longer need to use mypy Python 2 compatibility mode (comments)\r\n\r\n#### Add support for Ed25519 / EdDSA\r\n\r\n### Changes\r\n\r\n- Add PyPy3 to the test matrix (#550) by @jdufresne\r\n- Require tweak (#280) by @psafont\r\n- Decode return type is dict[str, Any] (#393) by @jacopofar\r\n- Fix linter error in test_cli (#414) by @jaraco\r\n- Run mypy with tox (#421) by @jpadilla\r\n- Document (and prefer) pyjwt[crypto] req format (#426) by @gthb\r\n- Correct type for json_encoder argument (#438) by @jdufresne\r\n- Prefer https:// links where available (#439) by @jdufresne\r\n- Pass python_requires argument to setuptools (#440) by @jdufresne\r\n- Rename [wheel] section to [bdist_wheel] as the former is legacy (#441) by @jdufresne\r\n- Remove setup.py test command in favor of pytest and tox (#442) by @jdufresne\r\n- Fix mypy errors (#449) by @jpadilla\r\n- DX Tweaks (#450) by @jpadilla\r\n- Add support of python 3.8 (#452) by @Djailla\r\n- Fix 406 (#454) by @justinbaur\r\n- Add support for Ed25519 / EdDSA, with unit tests (#455) by @Someguy123\r\n- Remove Python 2.7 compatibility (#457) by @Djailla\r\n- Fix simple typo: encododed -> encoded (#462) by @timgates42\r\n- Enhance tracebacks. (#477) by @JulienPalard\r\n- Simplify `python_requires` (#478) by @michael-k\r\n- Document top-level .encode and .decode to close #459 (#482) by @dimaqq\r\n- Improve documentation for audience usage (#484) by @CorreyL\r\n- Correct README on how to run tests locally (#489) by @jdufresne\r\n- Fix `tox -e lint` warnings and errors (#490) by @jdufresne\r\n- Run pyupgrade across project to use modern Python 3 conventions (#491) by @jdufresne\r\n- Add Python-3-only trove classifier and remove \"universal\" from wheel (#492) by @jdufresne\r\n- Emit warnings about user code, not pyjwt code (#494) by @mgedmin\r\n- Move setup information to declarative setup.cfg (#495) by @jdufresne\r\n- CLI options for verifying audience and issuer (#496) by @GeoffRichards\r\n- Specify the target Python version for mypy (#497) by @jdufresne\r\n- Remove unnecessary compatibility shims for Python 2 (#498) by @jdufresne\r\n- Setup GH Actions (#499) by @jpadilla\r\n- Implementation of ECAlgorithm.from_jwk (#500) by @jpadilla\r\n- Remove cli entry point (#501) by @jpadilla\r\n- Expose InvalidKeyError on jwt module (#503) by @russellcardullo\r\n- Avoid loading token twice in pyjwt.decode (#506) by @CaselIT\r\n- Default links to stable version of documentation (#508) by @salcedo\r\n- Update README.md badges (#510) by @jpadilla\r\n- Introduce better experience for JWKs (#511) by @jpadilla\r\n- Fix tox conditional extras (#512) by @jpadilla\r\n- Return tokens as string not bytes (#513) by @jpadilla\r\n- Drop support for legacy contrib algorithms (#514) by @jpadilla\r\n- Drop deprecation warnings (#515) by @jpadilla\r\n- Update Auth0 sponsorship link (#519) by @Sambego\r\n- Update return type for jwt.encode (#521) by @moomoolive\r\n- Run tests against Python 3.9 and add trove classifier (#522) by @michael-k\r\n- Removed redundant `default_backend()` (#523) by @rohitkg98\r\n- Documents how to use private keys with passphrases (#525) by @rayluo\r\n- Update version to 2.0.0a1 (#528) by @jpadilla\r\n- Fix usage example (#530) by @nijel\r\n- add EdDSA to docs (#531) by @CircleOnCircles\r\n- Remove support for EOL Python 3.5 (#532) by @jdufresne\r\n- Upgrade to isort 5 and adjust configurations (#533) by @jdufresne\r\n- Remove unused argument \"verify\" from PyJWS.decode() (#534) by @jdufresne\r\n- Update typing syntax and usage for Python 3.6+ (#535) by @jdufresne\r\n- Run pyupgrade to simplify code and use Python 3.6 syntax (#536) by @jdufresne\r\n- Drop unknown pytest config option: strict (#537) by @jdufresne\r\n- Upgrade black version and usage (#538) by @jdufresne\r\n- Remove \"Command line\" sections from docs (#539) by @jdufresne\r\n- Use existing key_path() utility function throughout tests (#540) by @jdufresne\r\n- Replace force_bytes()/force_unicode() in tests with literals (#541) by @jdufresne\r\n- Remove unnecessary Unicode decoding before json.loads() (#542) by @jdufresne\r\n- Remove unnecessary force_bytes() calls priot to base64url_decode() (#543) by @jdufresne\r\n- Remove deprecated arguments from docs (#544) by @jdufresne\r\n- Update code blocks in docs (#545) by @jdufresne\r\n- Refactor jwt/jwks_client.py without requests dependency (#546) by @jdufresne\r\n- Tighten bytes/str boundaries and remove unnecessary coercing (#547) by @jdufresne\r\n- Replace codecs.open() with builtin open() (#548) by @jdufresne\r\n- Replace int_from_bytes() with builtin int.from_bytes() (#549) by @jdufresne\r\n- Enforce .encode() return type using mypy (#551) by @jdufresne\r\n- Prefer direct indexing over options.get() (#552) by @jdufresne\r\n- Cleanup \"noqa\" comments (#553) by @jdufresne\r\n- Replace merge_dict() with builtin dict unpacking generalizations (#555) by @jdufresne\r\n- Do not mutate the input payload in PyJWT.encode() (#557) by @jdufresne\r\n- Use direct indexing in PyJWKClient.get_signing_key_from_jwt() (#558) by @jdufresne\r\n- Split PyJWT/PyJWS classes to tighten type interfaces   (#559) by @jdufresne\r\n- Simplify mocked_response test utility function (#560) by @jdufresne\r\n- Autoupdate pre-commit hooks and apply them (#561) by @jdufresne\r\n- Remove unused argument \"payload\" from PyJWS._verify_signature() (#562) by @jdufresne\r\n- Add utility functions to assist test skipping (#563) by @jdufresne\r\n- Type hint jwt.utils module (#564) by @jdufresne\r\n- Prefer ModuleNotFoundError over ImportError (#565) by @jdufresne\r\n- Fix tox \"manifest\" environment to pass (#566) by @jdufresne\r\n- Fix tox \"docs\" environment to pass (#567) by @jdufresne\r\n- Simplify black configuration to be closer to upstream defaults (#568) by @jdufresne\r\n- Use generator expressions (#569) by @jdufresne\r\n- Simplify from_base64url_uint() (#570) by @jdufresne\r\n- Drop lint environment from GitHub actions in favor of pre-commit.ci (#571) by @jdufresne\r\n- [pre-commit.ci] pre-commit autoupdate (#572)\r\n- Simplify tox configuration (#573) by @jdufresne\r\n- Combine identical test functions using pytest.mark.parametrize() (#574) by @jdufresne\r\n- Complete type hinting of jwks_client.py (#578) by @jdufresne\r\n\r\nThanks to all that helped made this release happen one way or another. Special shout out to @jdufresne for all the amazing work getting this project into tip-top shape."},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/35532139","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/35532139/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/35532139/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.0.0a2","id":35532139,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTM1NTMyMTM5","tag_name":"2.0.0a2","target_commitish":"master","name":"2.0.0a2","draft":false,"immutable":false,"prerelease":true,"created_at":"2020-12-20T00:02:44Z","updated_at":"2020-12-20T00:08:13Z","published_at":"2020-12-20T00:08:13Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.0.0a2","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.0.0a2","body":""},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/33351658","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/33351658/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/33351658/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/2.0.0a1","id":33351658,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTMzMzUxNjU4","tag_name":"2.0.0a1","target_commitish":"master","name":"2.0.0a1","draft":false,"immutable":false,"prerelease":true,"created_at":"2020-11-02T12:58:11Z","updated_at":"2020-11-02T13:04:54Z","published_at":"2020-11-02T13:04:54Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/2.0.0a1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/2.0.0a1","body":""},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/14408706","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/14408706/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/14408706/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.7.1","id":14408706,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTE0NDA4NzA2","tag_name":"1.7.1","target_commitish":"master","name":"v1.7.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-12-07T13:40:31Z","updated_at":"2018-12-07T13:41:59Z","published_at":"2018-12-07T13:41:59Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.7.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.7.1","body":"# Fixed\r\n\r\n- Update test dependencies with pinned ranges (b65e1ac6dc4d11801f3642eaab34ae6a54162c18)\r\n- Fix pytest deprecation warnings (b65e1ac6dc4d11801f3642eaab34ae6a54162c18)"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/14299847","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/14299847/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/14299847/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.7.0","id":14299847,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTE0Mjk5ODQ3","tag_name":"1.7.0","target_commitish":"master","name":"v1.7.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-12-02T03:49:29Z","updated_at":"2018-12-02T03:50:20Z","published_at":"2018-12-02T03:50:20Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.7.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.7.0","body":"### Changed\r\n\r\n- Remove CRLF line endings #353\r\n\r\n### Fixed\r\n\r\n- Update usage.rst #360\r\n\r\n### Added\r\n\r\n- Support for Python 3.7 #375 #379 #384"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/11148602","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/11148602/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/11148602/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.6.4","id":11148602,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTExMTQ4NjAy","tag_name":"1.6.4","target_commitish":"master","name":"v1.6.4","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-05-24T02:47:12Z","updated_at":"2018-05-24T02:48:09Z","published_at":"2018-05-24T02:48:09Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.6.4","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.6.4","body":"### Fixed\r\n\r\n- Reverse an unintentional breaking API change to .decode() #352 "},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/11081113","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/11081113/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/11081113/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.6.3","id":11081113,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTExMDgxMTEz","tag_name":"1.6.3","target_commitish":"master","name":"v1.6.3","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-05-19T17:13:50Z","updated_at":"2018-05-19T17:18:43Z","published_at":"2018-05-19T17:18:43Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.6.3","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.6.3","body":"Note: I accidentally published v1.6.2 and removed it from PyPI, that's why the jump to v1.6.3\r\n\r\n### Changed\r\n\r\n- All exceptions inherit from PyJWTError #340\r\n\r\n### Added\r\n\r\n- Add type hints #344\r\n- Add help module 7ca41e53b3d7d9f5cd31bdd8a2b832d192006239\r\n\r\n### Docs\r\n\r\n- Added section to usage docs for jwt.get_unverified_header() #350\r\n- Update legacy instructions for using pycrypto #337 "},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/10140351","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/10140351/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/10140351/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.6.1","id":10140351,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTEwMTQwMzUx","tag_name":"1.6.1","target_commitish":"master","name":"v1.6.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-03-18T13:38:37Z","updated_at":"2018-03-18T13:40:07Z","published_at":"2018-03-18T13:40:07Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.6.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.6.1","body":"### Fixed\r\n\r\n- Audience parameter throws `InvalidAudienceError` when application does not specify an audience, but the token does. #336"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/9924545","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/9924545/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/9924545/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.6.0","id":9924545,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTk5MjQ1NDU=","tag_name":"1.6.0","target_commitish":"master","name":"v1.6.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2018-03-03T16:55:02Z","updated_at":"2018-03-03T16:57:38Z","published_at":"2018-03-03T16:57:38Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.6.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.6.0","body":"### Changed\r\n\r\n- Dropped support for python 2.6 and 3.3 #301\r\n- An invalid signature now raises an `InvalidSignatureError` instead of `DecodeError` #316\r\n\r\n### Fixed\r\n\r\n- Fix over-eager fallback to stdin #304\r\n\r\n### Added\r\n\r\n- Audience parameter now supports iterables #306"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/7642245","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/7642245/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/7642245/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.5.3","id":7642245,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTc2NDIyNDU=","tag_name":"1.5.3","target_commitish":"master","name":"v1.5.3","draft":false,"immutable":false,"prerelease":false,"created_at":"2017-09-05T18:21:44Z","updated_at":"2017-09-05T18:22:32Z","published_at":"2017-09-05T18:22:32Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.5.3","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.5.3","body":"### Changed\r\n\r\n- Increase required version of the cryptography package to >=1.4.0.\r\n\r\n### Fixed\r\n\r\n- Remove uses of deprecated functions from the cryptography package.\r\n- Warn about missing `algorithms` param to `decode()` only when `verify` param is `True` #281"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6804228","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6804228/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/6804228/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.5.2","id":6804228,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTY4MDQyMjg=","tag_name":"1.5.2","target_commitish":"master","name":"v1.5.2","draft":false,"immutable":false,"prerelease":false,"created_at":"2017-06-22T16:31:48Z","updated_at":"2017-06-22T16:32:49Z","published_at":"2017-06-22T16:32:49Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.5.2","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.5.2","body":"### Fixed\r\n\r\n- Ensure correct arguments order in decode super call [7c1e61d][7c1e61d]\r\n\r\n[7c1e61d]: https://github.com/jpadilla/pyjwt/commit/7c1e61dde27bafe16e7d1bb6e35199e778962742"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6802818","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6802818/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/6802818/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.5.1","id":6802818,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTY4MDI4MTg=","tag_name":"1.5.1","target_commitish":"master","name":"v1.5.1","draft":false,"immutable":false,"prerelease":false,"created_at":"2017-06-22T14:57:07Z","updated_at":"2017-06-22T14:58:19Z","published_at":"2017-06-22T14:58:19Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.5.1","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.5.1","body":"### Changed\r\n\r\n- Change optparse for argparse. [#238][238]\r\n\r\n### Fixed\r\n\r\n- Guard against PKCS1 PEM encododed public keys [#277][277]\r\n- Add deprecation warning when decoding without specifying `algorithms` [#277][277]\r\n- Improve deprecation messages [#270][270]\r\n- PyJWT.decode: move verify param into options [#271][271]\r\n\r\n### Added\r\n\r\n- Support for Python 3.6 [#262][262]\r\n- Expose jwt.InvalidAlgorithmError [#264][264]\r\n\r\n[238]: https://github.com/jpadilla/pyjwt/pull/238\r\n[262]: https://github.com/jpadilla/pyjwt/pull/262\r\n[264]: https://github.com/jpadilla/pyjwt/pull/264\r\n[270]: https://github.com/jpadilla/pyjwt/pull/270\r\n[271]: https://github.com/jpadilla/pyjwt/pull/271\r\n[277]: https://github.com/jpadilla/pyjwt/pull/277"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6123419","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/6123419/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/6123419/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.5.0","id":6123419,"author":{"login":"jpadilla","id":83319,"node_id":"MDQ6VXNlcjgzMzE5","avatar_url":"https://avatars.githubusercontent.com/u/83319?v=4","gravatar_id":"","url":"https://api.github.com/users/jpadilla","html_url":"https://github.com/jpadilla","followers_url":"https://api.github.com/users/jpadilla/followers","following_url":"https://api.github.com/users/jpadilla/following{/other_user}","gists_url":"https://api.github.com/users/jpadilla/gists{/gist_id}","starred_url":"https://api.github.com/users/jpadilla/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpadilla/subscriptions","organizations_url":"https://api.github.com/users/jpadilla/orgs","repos_url":"https://api.github.com/users/jpadilla/repos","events_url":"https://api.github.com/users/jpadilla/events{/privacy}","received_events_url":"https://api.github.com/users/jpadilla/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTYxMjM0MTk=","tag_name":"1.5.0","target_commitish":"master","name":"v1.5.0","draft":false,"immutable":false,"prerelease":false,"created_at":"2017-04-19T14:38:28Z","updated_at":"2017-04-19T14:40:32Z","published_at":"2017-04-19T14:40:32Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.5.0","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.5.0","body":"### Changed\r\n- Add support for ECDSA public keys in RFC 4253 (OpenSSH) format #244\r\n- Renamed commandline script `jwt` to `jwt-cli` to avoid issues with the script clobbering the `jwt` module in some circumstances. #187\r\n- Better error messages when using an algorithm that requires the cryptography package, but it isn't available #230\r\n- Tokens with future 'iat' values are no longer rejected #190\r\n- Non-numeric 'iat' values now raise InvalidIssuedAtError instead of DecodeError\r\n- Remove rejection of future 'iat' claims #252\r\n\r\n### Fixed\r\n- Add back 'ES512' for backward compatibility (for now) #225\r\n- Fix incorrectly named ECDSA algorithm #219\r\n- Fix rpm build #196\r\n\r\n### Added\r\n- Add JWK support for HMAC and RSA keys #202"},{"url":"https://api.github.com/repos/jpadilla/pyjwt/releases/3839728","assets_url":"https://api.github.com/repos/jpadilla/pyjwt/releases/3839728/assets","upload_url":"https://uploads.github.com/repos/jpadilla/pyjwt/releases/3839728/assets{?name,label}","html_url":"https://github.com/jpadilla/pyjwt/releases/tag/1.4.2","id":3839728,"author":{"login":"mark-adams","id":472350,"node_id":"MDQ6VXNlcjQ3MjM1MA==","avatar_url":"https://avatars.githubusercontent.com/u/472350?v=4","gravatar_id":"","url":"https://api.github.com/users/mark-adams","html_url":"https://github.com/mark-adams","followers_url":"https://api.github.com/users/mark-adams/followers","following_url":"https://api.github.com/users/mark-adams/following{/other_user}","gists_url":"https://api.github.com/users/mark-adams/gists{/gist_id}","starred_url":"https://api.github.com/users/mark-adams/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mark-adams/subscriptions","organizations_url":"https://api.github.com/users/mark-adams/orgs","repos_url":"https://api.github.com/users/mark-adams/repos","events_url":"https://api.github.com/users/mark-adams/events{/privacy}","received_events_url":"https://api.github.com/users/mark-adams/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"MDc6UmVsZWFzZTM4Mzk3Mjg=","tag_name":"1.4.2","target_commitish":"master","name":"v1.4.2","draft":false,"immutable":false,"prerelease":false,"created_at":"2016-08-08T19:42:23Z","updated_at":"2016-08-08T19:43:14Z","published_at":"2016-08-08T19:43:14Z","assets":[],"tarball_url":"https://api.github.com/repos/jpadilla/pyjwt/tarball/1.4.2","zipball_url":"https://api.github.com/repos/jpadilla/pyjwt/zipball/1.4.2","body":"Bugfix release\n"}]