Skip to content

Commit a41f5f7

Browse files
committed
setup.py: bump PyJWT floor to >=2.11.0 to match the actual runtime requirement
flask_jwt_extended/tokens.py does: from jwt.types import Options …and jwt.types.Options was first added in PyJWT 2.11.0 (2026-01-30). The current install_requires in setup.py declares PyJWT>=2.0,<3.0, which is wide enough for resolvers to land on PyJWT 2.10.x and earlier — those installs then fail at import time with: ImportError: cannot import name 'Options' from 'jwt.types' PR #574 (commit 9bf8d35, 'Bump PyJWT to 2.12.1') already bumped the dev requirements.txt to PyJWT 2.12.1, but the package's own install_requires floor was left at >=2.0. This change bridges that gap so downstream consumers (e.g. flask-appbuilder, apache-airflow) can rely on pip install flask-jwt-extended resulting in a working import without having to add their own defensive PyJWT pin. Same class of issue as #553 — a runtime import that requires a newer PyJWT than the declared floor admits. The upper bound (<3.0) is unchanged.
1 parent 03b6435 commit a41f5f7

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@
3131
install_requires=[
3232
"Werkzeug>=0.14", # Needed for SameSite cookie functionality
3333
"Flask>=2.0,<4.0",
34-
"PyJWT>=2.0,<3.0",
34+
# `flask_jwt_extended/tokens.py` imports `Options` from `jwt.types`,
35+
# which was first added in PyJWT 2.11.0. Earlier 2.x releases parse
36+
# the import-time `from jwt.types import Options` as an ImportError.
37+
"PyJWT>=2.11.0,<3.0",
3538
],
3639
extras_require={"asymmetric_crypto": ["cryptography>=3.3.1"]},
3740
python_requires=">=3.10,<4",

0 commit comments

Comments
 (0)