Releases: ixunio/superjwt
Releases · ixunio/superjwt
0.7.0 (Jan 18, 2026)
Changes (♻️)
JWT & Validation
- (breaking) 💥
decode()now returns a Pydantic instance, matching the claims validation model (defaultJWTClaims) ([#91]) - (breaking) 💥
JWTDatetimeis removed,'exp','nbf','iat'are now typed asJWTDatetimeIntinJWTClaimsmodel and still serialize toint. ([#91]) - (breaking) 💥
encode()/decode()claims validation parameter renamed tovalidation([#96])
Fixes (🐛)
JWT & Validation
nbfvalidation to be triggered only during decoding to allow for token creation with a Not Before claim. ([#94])
0.6.0 (Jan 14, 2026)
New (✨)
Misc
- Comprehensive and versioned documentation hosted on GitHub Pages with automated CI ([#84])
Changes (♻️)
JWT & Validation
- (breaking) 💥 Stricter default behavior: use
JWTClaimsas default claims validation when decoding (and when encoding claims data is a raw dict) ([#83]) AlgorithmMismatchErroris now also raised during encoding when'alg'is valid but not matching the JWS instance (even when headers validation is disabled) ([#82])- Trim exceptions message from uncontrolled string size ([#80])
0.5.0 (Jan 12, 2026)
New (✨)
Algorithm
- Asymmetric JWS signature algorithms support ([#68]) ([#69]) ([#71])
- RSA PKCS1 v1.5 (
RS256,RS384,RS512) - RSA PSS (
PS256,PS384,PS512) - ECDSA (
ES256,ES256K,ES384,ES512) - EdDSA (
Ed25519,Ed448)
- RSA PKCS1 v1.5 (
- Pick algorithm from
Algstr Enum ([#57])
Key
- Key generation ([#72])
- Asymmetric keys support ([#67]) ([#70])
- RSA key pair
- EC (Elliptic Curve) key pair for ECDSA
- OKP (Octet Key Pair) for EdDSA
JWT & Validation
- Validation can be configured via
ValidationConfigand supports internal params (leeway, now,allow_future_iat) ([#62]) ([#75]) - Time integrity validation update ([#55])
- add leeway support for
'iat','exp', and'nbf'comparison against now - new check that
'iat'is not in the future. Can be disabled via validation config.
- add leeway support for
- Choose timestamp serialization format (
intorfloat) ([#53])- Configure
JWTDatetimedefault behavior (defaultint) - New
JWTDatetimeInt/JWTDatetimeFloatfield type to serialize asint/floattimestamp
- Configure
- Time spoofing for validation and testing purposes ([#51])
Misc
- CI: run tests with and without
cryptographyinstalled - CI: documentation deployment
Changes (♻️)
JWT & Validation
.with_issued_at()and.with_expiration()now preserve time delta with'iat'([#49])
0.4.1 (Jan 03, 2026)
0.4.0 (Jan 02, 2026)
New (✨)
JWT & Validation
JWTClaimsnow raisesTokenNotYetValidErrorif'nbf'>'iat'(or present time) ([#41])JWTcan receive amax_token_bytesparameter to control the allowed max token size ([#40])Validationflag can be passed to choose between two modes: ([#39])- Validation.DEFAULT (default when nothing is specified)
- Validation.DISABLE
Changes (♻️)
JWT & Validation
- (breaking) 💥 Refactoring of public and private interfaces ([#39])
- module-level
encode(),decode()andinspect()are now thread safe and written as functions instead of a local statefulJWTinstance tokenparam indecode()is renamedcompactJWTmethods now always return aJWSToken
- module-level
Misc
- (breaking) 💥 Refactoring of exception handling ([#40])
- base exception is now
SuperJWTError - improved exceptions hierarchy
- base exception is now
0.3.0 (Dec 30, 2025)
New (✨)
JWT & Validation
- Validate claims or headers with custom pydantic models for
decode()([#34]) - New exception
AlgorithmMismatchErroris raised during decoding when'alg'is valid but not declared as processable by the JWS instance ([#31]) - Expired token now raises
TokenExpiredErrorupon claims validation ([#24])
Changes (♻️)
JWT & Validation
- (breaking) 💥 Refactoring of claims and headers validation ([#34])
encode()new validation default behavior:- when
claimsis passed as a pydantic instance, validate against it automatically - when
claimsis passed as a dict or empty, no automatic validation - when
headers(optional) is passed as a pydantic instance, validate against itautomatically - when
headers(optional) is passed as a dict, validate againstJOSEHeader
- when
decode()new validation default behavior:- no automatic validation for claims by default
- headers are automatically validated against
JOSEHeader
- claims & headers default validation can be overridden by passing a pydantic model to the validation params in
encode()/decode()
- (breaking) 💥 Refactoring of
JWTClaimspydantic model ([#17])- defaulting with no
'iat'set with_issued_at()method added
- defaulting with no
0.2.0 (Dec 27, 2025)
Changes (♻️)
JWT & Validation
- State, data integrity and consistency of JWT and JWS instances improved ([#15])
- b64=false in header will raise an
InvalidHeaderErroras this is not a supported feature ([#13]) - (breaking) 💥
SecondDatetimerenamed toJWTDatetime([#6]) - Better tests for datetime claims
Misc
- Add compatibility for python 3.10 & 3.11, was working only for python 3.12-3.14 previously
Fixes (🐛)
JWT & Validation
0.1.0 (Dec 08, 2025)
New (✨)
Algorithm
- HMAC with SHA256/384/512 signature
JWT & Validation
- JWT/JWS encode + decode + inspect features
- Automatic claims validation with Pydantic
- Custom claims definition with Pydantic
Misc
- CI (tests, linter, release)