From 4fc24183076a3b0baaf9abe048305a03601aa355 Mon Sep 17 00:00:00 2001 From: Vladimir Mihailenco Date: Sun, 1 Nov 2026 15:43:32 +0200 Subject: [PATCH] fix(example): make Flask examples installable with Flask 3.1 Earlier Dependabot bumps moved the Flask examples to Flask 3.1.3 without updating the rest of the requirements, so none of them could be installed. - itsdangerous 2.1.2 -> 2.2.0 (required by Flask 3.1) - flask_sqlalchemy 2.5.1 -> 3.1.1 (2.x imports _app_ctx_stack, removed in Flask 2.3) and access db.engine inside an app context, as 3.x requires - pin sqlalchemy 2.0.x (instrumentation 0.66b0 supports < 2.1) - uWSGI 2.0.22 -> 2.0.31 (2.0.22 does not build on Python 3.12) - pin opentelemetry-instrumentation-logging 0.66b0 so pip 24 can resolve - flask-auto-instrumentation: flask 2.3.2 -> 3.1.3 (supersedes #328) --- example/flask-auto-instrumentation/requirements.txt | 5 +++-- example/flask-gunicorn/main.py | 4 +++- example/flask-gunicorn/requirements.txt | 6 ++++-- example/flask-uwsgi/main.py | 4 +++- example/flask-uwsgi/requirements.txt | 8 +++++--- example/flask/main.py | 4 +++- example/flask/requirements.txt | 6 ++++-- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/example/flask-auto-instrumentation/requirements.txt b/example/flask-auto-instrumentation/requirements.txt index e4d16e3..7581b67 100644 --- a/example/flask-auto-instrumentation/requirements.txt +++ b/example/flask-auto-instrumentation/requirements.txt @@ -1,5 +1,6 @@ uptrace==1.45.0 -flask==2.3.2 -itsdangerous==2.1.2 +flask==3.1.3 +itsdangerous==2.2.0 opentelemetry-instrumentation==0.66b0 opentelemetry-instrumentation-flask==0.66b0 +opentelemetry-instrumentation-logging==0.66b0 diff --git a/example/flask-gunicorn/main.py b/example/flask-gunicorn/main.py index 904a9fe..11652ae 100644 --- a/example/flask-gunicorn/main.py +++ b/example/flask-gunicorn/main.py @@ -13,7 +13,9 @@ application.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:" db = SQLAlchemy(application) -SQLAlchemyInstrumentor().instrument(engine=db.engine) +# Flask-SQLAlchemy 3.x requires an app context to access db.engine. +with application.app_context(): + SQLAlchemyInstrumentor().instrument(engine=db.engine) @application.route("/") diff --git a/example/flask-gunicorn/requirements.txt b/example/flask-gunicorn/requirements.txt index dd29bc3..4cbc259 100644 --- a/example/flask-gunicorn/requirements.txt +++ b/example/flask-gunicorn/requirements.txt @@ -1,7 +1,9 @@ uptrace==1.45.0 flask==3.1.3 -flask_sqlalchemy==2.5.1 -itsdangerous==2.1.2 +flask_sqlalchemy==3.1.1 +sqlalchemy==2.0.55 +itsdangerous==2.2.0 opentelemetry-instrumentation-flask==0.66b0 opentelemetry-instrumentation-sqlalchemy==0.66b0 gunicorn==23.0.0 +opentelemetry-instrumentation-logging==0.66b0 diff --git a/example/flask-uwsgi/main.py b/example/flask-uwsgi/main.py index 7655028..01651e5 100644 --- a/example/flask-uwsgi/main.py +++ b/example/flask-uwsgi/main.py @@ -14,7 +14,9 @@ application.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:" db = SQLAlchemy(application) -SQLAlchemyInstrumentor().instrument(engine=db.engine) +# Flask-SQLAlchemy 3.x requires an app context to access db.engine. +with application.app_context(): + SQLAlchemyInstrumentor().instrument(engine=db.engine) @application.route("/") diff --git a/example/flask-uwsgi/requirements.txt b/example/flask-uwsgi/requirements.txt index 6319562..1c18ede 100644 --- a/example/flask-uwsgi/requirements.txt +++ b/example/flask-uwsgi/requirements.txt @@ -1,7 +1,9 @@ uptrace==1.45.0 flask==3.1.3 -flask_sqlalchemy==2.5.1 -itsdangerous==2.1.2 +flask_sqlalchemy==3.1.1 +sqlalchemy==2.0.55 +itsdangerous==2.2.0 opentelemetry-instrumentation-flask==0.66b0 opentelemetry-instrumentation-sqlalchemy==0.66b0 -uWSGI==2.0.22 +uWSGI==2.0.31 +opentelemetry-instrumentation-logging==0.66b0 diff --git a/example/flask/main.py b/example/flask/main.py index 48e7bb6..0ea0761 100755 --- a/example/flask/main.py +++ b/example/flask/main.py @@ -20,7 +20,9 @@ app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:" db = SQLAlchemy(app) -SQLAlchemyInstrumentor().instrument(engine=db.engine) +# Flask-SQLAlchemy 3.x requires an app context to access db.engine. +with app.app_context(): + SQLAlchemyInstrumentor().instrument(engine=db.engine) @app.route("/") diff --git a/example/flask/requirements.txt b/example/flask/requirements.txt index 031bec4..cde6e76 100644 --- a/example/flask/requirements.txt +++ b/example/flask/requirements.txt @@ -1,6 +1,8 @@ uptrace==1.45.0 flask==3.1.3 -flask_sqlalchemy==2.5.1 -itsdangerous==2.1.2 +flask_sqlalchemy==3.1.1 +sqlalchemy==2.0.55 +itsdangerous==2.2.0 opentelemetry-instrumentation-flask==0.66b0 opentelemetry-instrumentation-sqlalchemy==0.66b0 +opentelemetry-instrumentation-logging==0.66b0