From 2506d9382cc45c81ace9805e421c4a1116ed3bd0 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Fri, 20 Oct 2023 23:32:02 +0900 Subject: [PATCH 01/13] support flask 3.0.0 --- .../opentelemetry-instrumentation-flask/pyproject.toml | 4 ++-- .../src/opentelemetry/instrumentation/flask/package.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml index 015482c19c..528e08a313 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml +++ b/instrumentation/opentelemetry-instrumentation-flask/pyproject.toml @@ -35,8 +35,8 @@ dependencies = [ [project.optional-dependencies] instruments = [ - "flask >= 1.0, < 3.0", - "werkzeug < 3.0.0" + "werkzeug < 3.0.0", + "flask >= 1.0", ] test = [ "opentelemetry-instrumentation-flask[instruments]", diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/package.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/package.py index 33bfe4ccba..d83adbede0 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/package.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/package.py @@ -13,6 +13,6 @@ # limitations under the License. -_instruments = ("flask >= 1.0, < 3.0",) +_instruments = ("flask >= 1.0",) _supports_metrics = True From fc553d95e5ed99b57e708e9abee44eba394280bf Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 00:10:30 +0900 Subject: [PATCH 02/13] support flask 3.0.0 --- instrumentation/README.md | 2 +- .../instrumentation/bootstrap_gen.py | 2 +- tox.ini | 17 +++++++++-------- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/instrumentation/README.md b/instrumentation/README.md index cc5ea02def..b3abf387bc 100644 --- a/instrumentation/README.md +++ b/instrumentation/README.md @@ -19,7 +19,7 @@ | [opentelemetry-instrumentation-elasticsearch](./opentelemetry-instrumentation-elasticsearch) | elasticsearch >= 2.0 | No | [opentelemetry-instrumentation-falcon](./opentelemetry-instrumentation-falcon) | falcon >= 1.4.1, < 4.0.0 | Yes | [opentelemetry-instrumentation-fastapi](./opentelemetry-instrumentation-fastapi) | fastapi ~= 0.58 | Yes -| [opentelemetry-instrumentation-flask](./opentelemetry-instrumentation-flask) | flask >= 1.0, < 3.0 | Yes +| [opentelemetry-instrumentation-flask](./opentelemetry-instrumentation-flask) | flask >= 1.0 | Yes | [opentelemetry-instrumentation-grpc](./opentelemetry-instrumentation-grpc) | grpcio ~= 1.27 | No | [opentelemetry-instrumentation-httpx](./opentelemetry-instrumentation-httpx) | httpx >= 0.18.0 | No | [opentelemetry-instrumentation-jinja2](./opentelemetry-instrumentation-jinja2) | jinja2 >= 2.7, < 4.0 | No diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py index 097ed49ef7..286e241c2d 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py @@ -85,7 +85,7 @@ "instrumentation": "opentelemetry-instrumentation-fastapi==0.44b0.dev", }, { - "library": "flask >= 1.0, < 3.0", + "library": "flask >= 1.0", "instrumentation": "opentelemetry-instrumentation-flask==0.44b0.dev", }, { diff --git a/tox.ini b/tox.ini index 9541599f95..f21e7eb2a8 100644 --- a/tox.ini +++ b/tox.ini @@ -88,8 +88,8 @@ envlist = pypy3-test-instrumentation-fastapi ; opentelemetry-instrumentation-flask - py3{7,8,9,10,11}-test-instrumentation-flask{213,220} - pypy3-test-instrumentation-flask{213,220} + py3{7,8,9,10,11}-test-instrumentation-flask{213,220,300} + pypy3-test-instrumentation-flask{213,220,300} ; opentelemetry-instrumentation-urllib py3{7,8,9,10,11}-test-instrumentation-urllib @@ -272,8 +272,9 @@ deps = falcon1: falcon ==1.4.1 falcon2: falcon >=2.0.0,<3.0.0 falcon3: falcon >=3.0.0,<4.0.0 - flask213: Flask ==2.1.3 - flask220: Flask >=2.2.0 + flask213: Flask ==2.1.3, Werkzeug ==2.0.2 + flask220: Flask >=2.2.0, Werkzeug ==2.2.0 + flask300: Flask >=3.0.0, Werkzeug ==3.0.0 grpc: pytest-asyncio sqlalchemy11: sqlalchemy>=1.1,<1.2 sqlalchemy14: aiosqlite @@ -324,7 +325,7 @@ changedir = test-instrumentation-elasticsearch{2,5,6}: instrumentation/opentelemetry-instrumentation-elasticsearch/tests test-instrumentation-falcon{1,2,3}: instrumentation/opentelemetry-instrumentation-falcon/tests test-instrumentation-fastapi: instrumentation/opentelemetry-instrumentation-fastapi/tests - test-instrumentation-flask{213,220}: instrumentation/opentelemetry-instrumentation-flask/tests + test-instrumentation-flask{213,220,300}: instrumentation/opentelemetry-instrumentation-flask/tests test-instrumentation-urllib: instrumentation/opentelemetry-instrumentation-urllib/tests test-instrumentation-urllib3v{1,2}: instrumentation/opentelemetry-instrumentation-urllib3/tests test-instrumentation-grpc: instrumentation/opentelemetry-instrumentation-grpc/tests @@ -386,8 +387,8 @@ commands_pre = grpc: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-grpc[test] - falcon{1,2,3},flask{213,220},django{1,2,3,4},pyramid,tornado,starlette,fastapi,aiohttp,asgi,httpx{18,21},requests,urllib,urllib3v{1,2},wsgi: pip install {toxinidir}/util/opentelemetry-util-http[test] - wsgi,falcon{1,2,3},flask{213,220},django{1,2,3,4},pyramid: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] + falcon{1,2,3},flask{213,220,300},django{1,2,3,4},pyramid,tornado,starlette,fastapi,aiohttp,asgi,httpx{18,21},requests,urllib,urllib3v{1,2},wsgi: pip install {toxinidir}/util/opentelemetry-util-http[test] + wsgi,falcon{1,2,3},flask{213,220,300},django{1,2,3,4},pyramid: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test] asgi,django{3,4},starlette,fastapi: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-asgi[test] asyncpg: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg[test] @@ -401,7 +402,7 @@ commands_pre = falcon{1,2,3}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-falcon[test] - flask{213,220}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] + flask{213,220,300}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-flask[test] urllib: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-urllib[test] From 3dda7ad6da5326b8bad30246ec1626a71a6d2add Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 00:25:57 +0900 Subject: [PATCH 03/13] support flask 3.0.0 --- .../instrumentation/flask/__init__.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index 5f16b14727..e9778fafaa 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -245,12 +245,25 @@ def response_hook(span: Span, status: str, response_headers: List): from typing import Collection import flask +import opentelemetry.instrumentation.wsgi as otel_wsgi from packaging import version as package_version -import opentelemetry.instrumentation.wsgi as otel_wsgi from opentelemetry import context, trace from opentelemetry.instrumentation.flask.package import _instruments -from opentelemetry.instrumentation.flask.version import __version__ + +try: + from opentelemetry.instrumentation.flask.version import __version__ +except ImportError: + try: + from importlib import metadata + except ImportError: + import importlib_metadata as metadata + + try: + __version__ = metadata.version("flask") + except (ImportError, metadata.PackageNotFoundError): + __version__ = "unknown" + from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.propagators import ( get_global_response_propagator, From db074d33a9f16440fa626948fac858208d71628b Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 00:51:57 +0900 Subject: [PATCH 04/13] modify tox.ini --- tox.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index f21e7eb2a8..745499942f 100644 --- a/tox.ini +++ b/tox.ini @@ -272,9 +272,9 @@ deps = falcon1: falcon ==1.4.1 falcon2: falcon >=2.0.0,<3.0.0 falcon3: falcon >=3.0.0,<4.0.0 - flask213: Flask ==2.1.3, Werkzeug ==2.0.2 - flask220: Flask >=2.2.0, Werkzeug ==2.2.0 - flask300: Flask >=3.0.0, Werkzeug ==3.0.0 + flask213: Flask ==2.1.3 Werkzeug >=2.0.2,<3.0.0 + flask220: Flask >=2.2.0 Werkzeug >=2.2.0,<3.0.0 + flask300: Flask >=3.0.0 Werkzeug >=3.0.0 grpc: pytest-asyncio sqlalchemy11: sqlalchemy>=1.1,<1.2 sqlalchemy14: aiosqlite From 9dc67ede57ec8007135e3e10dc8953d7efff031c Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 06:58:45 +0900 Subject: [PATCH 05/13] modify Werkzeug version --- tox.ini | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 745499942f..11819978ea 100644 --- a/tox.ini +++ b/tox.ini @@ -272,8 +272,8 @@ deps = falcon1: falcon ==1.4.1 falcon2: falcon >=2.0.0,<3.0.0 falcon3: falcon >=3.0.0,<4.0.0 - flask213: Flask ==2.1.3 Werkzeug >=2.0.2,<3.0.0 - flask220: Flask >=2.2.0 Werkzeug >=2.2.0,<3.0.0 + flask213: Flask ==2.1.3 Werkzeug <3.0.0 + flask220: Flask >=2.2.0 Werkzeug <3.0.0 flask300: Flask >=3.0.0 Werkzeug >=3.0.0 grpc: pytest-asyncio sqlalchemy11: sqlalchemy>=1.1,<1.2 From 284f0e780fda15a898a87a77c63aaf3d95aceb5c Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 08:14:48 +0900 Subject: [PATCH 06/13] modify Werkzeug version --- tox.ini | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index 11819978ea..1b1cbfa4b1 100644 --- a/tox.ini +++ b/tox.ini @@ -272,9 +272,12 @@ deps = falcon1: falcon ==1.4.1 falcon2: falcon >=2.0.0,<3.0.0 falcon3: falcon >=3.0.0,<4.0.0 - flask213: Flask ==2.1.3 Werkzeug <3.0.0 - flask220: Flask >=2.2.0 Werkzeug <3.0.0 - flask300: Flask >=3.0.0 Werkzeug >=3.0.0 + flask213: Flask ==2.1.3 + flask213: Werkzeug <3.0.0 + flask220: Flask >=2.2.0 + flask220: Werkzeug <3.0.0 + flask300: Flask >=3.0.0 + flask300: Werkzeug >=3.0.0 grpc: pytest-asyncio sqlalchemy11: sqlalchemy>=1.1,<1.2 sqlalchemy14: aiosqlite From 31f82972cdef0e6848a9ad12fd407b2ecc8df312 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 12:47:16 +0900 Subject: [PATCH 07/13] modify flask test version --- tox.ini | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 1b1cbfa4b1..863cfa016f 100644 --- a/tox.ini +++ b/tox.ini @@ -88,8 +88,9 @@ envlist = pypy3-test-instrumentation-fastapi ; opentelemetry-instrumentation-flask - py3{7,8,9,10,11}-test-instrumentation-flask{213,220,300} - pypy3-test-instrumentation-flask{213,220,300} + py3{7,8,9,10,11}-test-instrumentation-flask{213,220} + py3{8,9,10,11}-test-instrumentation-flask{300} + pypy3-test-instrumentation-flask{213,220} ; opentelemetry-instrumentation-urllib py3{7,8,9,10,11}-test-instrumentation-urllib From 2805c58a6dcf61f6fba8c2eeaee55b36c870cbf0 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 13:26:59 +0900 Subject: [PATCH 08/13] modify flask version --- .../instrumentation/flask/__init__.py | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index e9778fafaa..6c57097b6c 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -250,19 +250,19 @@ def response_hook(span: Span, status: str, response_headers: List): from opentelemetry import context, trace from opentelemetry.instrumentation.flask.package import _instruments +from opentelemetry.instrumentation.flask.version import __version__ try: - from opentelemetry.instrumentation.flask.version import __version__ -except ImportError: + flask_version = flask.__version__ +except Exception as e: try: from importlib import metadata except ImportError: import importlib_metadata as metadata - try: - __version__ = metadata.version("flask") + flask_version = metadata.version("flask") except (ImportError, metadata.PackageNotFoundError): - __version__ = "unknown" + flask_version = "unknown" from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.propagators import ( @@ -284,7 +284,7 @@ def response_hook(span: Span, status: str, response_headers: List): _excluded_urls_from_env = get_excluded_urls("FLASK") -if package_version.parse(flask.__version__) >= package_version.parse("2.2.0"): +if package_version.parse(flask_version) >= package_version.parse("2.2.0"): def _request_ctx_ref() -> weakref.ReferenceType: return weakref.ref(flask.globals.request_ctx._get_current_object()) @@ -304,11 +304,11 @@ def get_default_span_name(): def _rewrapped_app( - wsgi_app, - active_requests_counter, - duration_histogram, - response_hook=None, - excluded_urls=None, + wsgi_app, + active_requests_counter, + duration_histogram, + response_hook=None, + excluded_urls=None, ): def _wrapped_app(wrapped_app_environ, start_response): # We want to measure the time for route matching, etc. @@ -326,8 +326,8 @@ def _wrapped_app(wrapped_app_environ, start_response): def _start_response(status, response_headers, *args, **kwargs): if flask.request and ( - excluded_urls is None - or not excluded_urls.url_disabled(flask.request.url) + excluded_urls is None + or not excluded_urls.url_disabled(flask.request.url) ): span = flask.request.environ.get(_ENVIRON_SPAN_KEY) @@ -348,8 +348,8 @@ def _start_response(status, response_headers, *args, **kwargs): SpanAttributes.HTTP_STATUS_CODE ] = status_code if ( - span.is_recording() - and span.kind == trace.SpanKind.SERVER + span.is_recording() + and span.kind == trace.SpanKind.SERVER ): custom_attributes = otel_wsgi.collect_custom_response_headers_attributes( response_headers @@ -376,11 +376,11 @@ def _start_response(status, response_headers, *args, **kwargs): def _wrapped_before_request( - request_hook=None, - tracer=None, - excluded_urls=None, - enable_commenter=True, - commenter_options=None, + request_hook=None, + tracer=None, + excluded_urls=None, + enable_commenter=True, + commenter_options=None, ): def _before_request(): if excluded_urls and excluded_urls.url_disabled(flask.request.url): @@ -433,16 +433,16 @@ def _before_request(): # https://flask.palletsprojects.com/en/1.1.x/api/#flask.has_request_context if flask and flask.request: if commenter_options.get("framework", True): - flask_info["framework"] = f"flask:{flask.__version__}" + flask_info["framework"] = f"flask:{flask_version}" if ( - commenter_options.get("controller", True) - and flask.request.endpoint + commenter_options.get("controller", True) + and flask.request.endpoint ): flask_info["controller"] = flask.request.endpoint if ( - commenter_options.get("route", True) - and flask.request.url_rule - and flask.request.url_rule.rule + commenter_options.get("route", True) + and flask.request.url_rule + and flask.request.url_rule.rule ): flask_info["route"] = flask.request.url_rule.rule sqlcommenter_context = context.set_value( @@ -454,7 +454,7 @@ def _before_request(): def _wrapped_teardown_request( - excluded_urls=None, + excluded_urls=None, ): def _teardown_request(exc): # pylint: disable=E1101 @@ -595,14 +595,14 @@ def _uninstrument(self, **kwargs): @staticmethod def instrument_app( - app, - request_hook=None, - response_hook=None, - tracer_provider=None, - excluded_urls=None, - enable_commenter=True, - commenter_options=None, - meter_provider=None, + app, + request_hook=None, + response_hook=None, + tracer_provider=None, + excluded_urls=None, + enable_commenter=True, + commenter_options=None, + meter_provider=None, ): if not hasattr(app, "_is_instrumented_by_opentelemetry"): app._is_instrumented_by_opentelemetry = False From 690b8788f1513aa7fb8aef1f7e174d46b2d85f45 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 13:32:16 +0900 Subject: [PATCH 09/13] modify flask version --- .../instrumentation/flask/__init__.py | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index 6c57097b6c..d739f2ee0b 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -254,7 +254,7 @@ def response_hook(span: Span, status: str, response_headers: List): try: flask_version = flask.__version__ -except Exception as e: +except AttributeError: try: from importlib import metadata except ImportError: @@ -304,11 +304,11 @@ def get_default_span_name(): def _rewrapped_app( - wsgi_app, - active_requests_counter, - duration_histogram, - response_hook=None, - excluded_urls=None, + wsgi_app, + active_requests_counter, + duration_histogram, + response_hook=None, + excluded_urls=None, ): def _wrapped_app(wrapped_app_environ, start_response): # We want to measure the time for route matching, etc. @@ -326,8 +326,8 @@ def _wrapped_app(wrapped_app_environ, start_response): def _start_response(status, response_headers, *args, **kwargs): if flask.request and ( - excluded_urls is None - or not excluded_urls.url_disabled(flask.request.url) + excluded_urls is None + or not excluded_urls.url_disabled(flask.request.url) ): span = flask.request.environ.get(_ENVIRON_SPAN_KEY) @@ -348,8 +348,8 @@ def _start_response(status, response_headers, *args, **kwargs): SpanAttributes.HTTP_STATUS_CODE ] = status_code if ( - span.is_recording() - and span.kind == trace.SpanKind.SERVER + span.is_recording() + and span.kind == trace.SpanKind.SERVER ): custom_attributes = otel_wsgi.collect_custom_response_headers_attributes( response_headers @@ -376,11 +376,11 @@ def _start_response(status, response_headers, *args, **kwargs): def _wrapped_before_request( - request_hook=None, - tracer=None, - excluded_urls=None, - enable_commenter=True, - commenter_options=None, + request_hook=None, + tracer=None, + excluded_urls=None, + enable_commenter=True, + commenter_options=None, ): def _before_request(): if excluded_urls and excluded_urls.url_disabled(flask.request.url): @@ -435,14 +435,14 @@ def _before_request(): if commenter_options.get("framework", True): flask_info["framework"] = f"flask:{flask_version}" if ( - commenter_options.get("controller", True) - and flask.request.endpoint + commenter_options.get("controller", True) + and flask.request.endpoint ): flask_info["controller"] = flask.request.endpoint if ( - commenter_options.get("route", True) - and flask.request.url_rule - and flask.request.url_rule.rule + commenter_options.get("route", True) + and flask.request.url_rule + and flask.request.url_rule.rule ): flask_info["route"] = flask.request.url_rule.rule sqlcommenter_context = context.set_value( @@ -454,7 +454,7 @@ def _before_request(): def _wrapped_teardown_request( - excluded_urls=None, + excluded_urls=None, ): def _teardown_request(exc): # pylint: disable=E1101 @@ -595,14 +595,14 @@ def _uninstrument(self, **kwargs): @staticmethod def instrument_app( - app, - request_hook=None, - response_hook=None, - tracer_provider=None, - excluded_urls=None, - enable_commenter=True, - commenter_options=None, - meter_provider=None, + app, + request_hook=None, + response_hook=None, + tracer_provider=None, + excluded_urls=None, + enable_commenter=True, + commenter_options=None, + meter_provider=None, ): if not hasattr(app, "_is_instrumented_by_opentelemetry"): app._is_instrumented_by_opentelemetry = False From 3c9fad0dd4ab2da770e2d3b91df4a44405c695d9 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Sat, 21 Oct 2023 13:51:51 +0900 Subject: [PATCH 10/13] modify CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 840cfd565a..0b66b4f06a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `opentelemetry-resource-detector-azure` Add resource detectors for Azure App Service and VM ([#1901](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/1901)) +- `opentelemetry-instrumentation-flask` Add support for Flask 3.0.0 + ([#152](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2013)) ## Version 1.19.0/0.40b0 (2023-07-13) - `opentelemetry-instrumentation-asgi` Add `http.server.request.size` metric From 01adf91aa390449cd2c1e262e5ade341ffb15453 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Thu, 21 Dec 2023 08:36:36 +0900 Subject: [PATCH 11/13] include feedback --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 863cfa016f..013b74e45d 100644 --- a/tox.ini +++ b/tox.ini @@ -275,7 +275,7 @@ deps = falcon3: falcon >=3.0.0,<4.0.0 flask213: Flask ==2.1.3 flask213: Werkzeug <3.0.0 - flask220: Flask >=2.2.0 + flask220: Flask ==2.2.0 flask220: Werkzeug <3.0.0 flask300: Flask >=3.0.0 flask300: Werkzeug >=3.0.0 From aa1d5fbc5d33f45ad1d681771b7f636dfd6c2275 Mon Sep 17 00:00:00 2001 From: "allen.k1m" Date: Fri, 22 Dec 2023 08:26:11 +0900 Subject: [PATCH 12/13] include feedback --- .../src/opentelemetry/instrumentation/flask/__init__.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index d739f2ee0b..d343b52f80 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -259,10 +259,7 @@ def response_hook(span: Span, status: str, response_headers: List): from importlib import metadata except ImportError: import importlib_metadata as metadata - try: - flask_version = metadata.version("flask") - except (ImportError, metadata.PackageNotFoundError): - flask_version = "unknown" + flask_version = metadata.version("flask") from opentelemetry.instrumentation.instrumentor import BaseInstrumentor from opentelemetry.instrumentation.propagators import ( From ea7bab963fd53189880289a11b07e6a4ee1cb71e Mon Sep 17 00:00:00 2001 From: Diego Hurtado Date: Fri, 22 Dec 2023 14:54:46 -0600 Subject: [PATCH 13/13] Fix lint and generate --- .../src/opentelemetry/instrumentation/flask/__init__.py | 2 +- .../src/opentelemetry/instrumentation/bootstrap_gen.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py index d343b52f80..5e81cc5abe 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -245,9 +245,9 @@ def response_hook(span: Span, status: str, response_headers: List): from typing import Collection import flask -import opentelemetry.instrumentation.wsgi as otel_wsgi from packaging import version as package_version +import opentelemetry.instrumentation.wsgi as otel_wsgi from opentelemetry import context, trace from opentelemetry.instrumentation.flask.package import _instruments from opentelemetry.instrumentation.flask.version import __version__ diff --git a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py index 286e241c2d..59c9c5e4df 100644 --- a/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py +++ b/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py @@ -85,11 +85,11 @@ "instrumentation": "opentelemetry-instrumentation-fastapi==0.44b0.dev", }, { - "library": "flask >= 1.0", + "library": "werkzeug < 3.0.0", "instrumentation": "opentelemetry-instrumentation-flask==0.44b0.dev", }, { - "library": "werkzeug < 3.0.0", + "library": "flask >= 1.0", "instrumentation": "opentelemetry-instrumentation-flask==0.44b0.dev", }, {