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 f69470ab9e..468765480b 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py +++ b/instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py @@ -303,8 +303,12 @@ def response_hook(span: Span, status: str, response_headers: List): _logger = getLogger(__name__) # Global constants for Flask 3.1+ streaming context cleanup -_IS_FLASK_31_PLUS = hasattr(flask, "__version__") and package_version.parse( - flask.__version__ +try: + _flask_version = version("flask") +except Exception: + _flask_version = None +_IS_FLASK_31_PLUS = _flask_version is not None and package_version.parse( + _flask_version ) >= package_version.parse("3.1.0") _ENVIRON_STARTTIME_KEY = "opentelemetry-flask.starttime_key" diff --git a/instrumentation/opentelemetry-instrumentation-flask/tests/test_flask_compatibility.py b/instrumentation/opentelemetry-instrumentation-flask/tests/test_flask_compatibility.py index dcf9b2bdd6..37121f707f 100644 --- a/instrumentation/opentelemetry-instrumentation-flask/tests/test_flask_compatibility.py +++ b/instrumentation/opentelemetry-instrumentation-flask/tests/test_flask_compatibility.py @@ -31,12 +31,13 @@ _request_ctx_ref, ) from opentelemetry.test.wsgitestutil import WsgiTestBase +from opentelemetry.util._importlib_metadata import version class TestFlaskCompatibility(WsgiTestBase): def setUp(self): super().setUp() - self.flask_version = flask.__version__ + self.flask_version = version("flask") def test_streaming_response_context_cleanup(self): """Test that streaming responses properly clean up context"""