Skip to content
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
([#4427](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4427))
- `opentelemetry-instrumentation-flask`: Clean up environ keys in `_teardown_request` to prevent duplicate execution
([#4341](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4341))
- `opentelemetry-instrumentation-flask`: Stop reading the deprecated (from 3.1) `flask.__version__` attribute; resolve the Flask version via `importlib.metadata`
([#4422](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4422))

### Breaking changes

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -301,10 +301,6 @@ 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__
) >= package_version.parse("3.1.0")

_ENVIRON_STARTTIME_KEY = "opentelemetry-flask.starttime_key"
_ENVIRON_SPAN_KEY = "opentelemetry-flask.span_key"
Expand All @@ -316,6 +312,11 @@ def response_hook(span: Span, status: str, response_headers: List):

flask_version = version("flask")

# Global constant for Flask 3.1+ streaming context cleanup
_IS_FLASK_31_PLUS = package_version.parse(
flask_version
) >= package_version.parse("3.1.0")

if package_version.parse(flask_version) >= package_version.parse("2.2.0"):

def _request_ctx_ref() -> weakref.ReferenceType:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import io
import threading
import time
from importlib.metadata import version
from unittest import mock, skipIf

import flask
Expand All @@ -37,7 +38,7 @@
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"""
Expand Down
Loading