Skip to content

Commit d88203e

Browse files
committed
Remove starlette version ceiling
1 parent 71bfc95 commit d88203e

File tree

7 files changed

+55
-45
lines changed

7 files changed

+55
-45
lines changed

instrumentation/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
| [opentelemetry-instrumentation-requests](./opentelemetry-instrumentation-requests) | requests ~= 2.0 | Yes | migration
4545
| [opentelemetry-instrumentation-sqlalchemy](./opentelemetry-instrumentation-sqlalchemy) | sqlalchemy >= 1.0.0, < 2.1.0 | Yes | development
4646
| [opentelemetry-instrumentation-sqlite3](./opentelemetry-instrumentation-sqlite3) | sqlite3 | No | development
47-
| [opentelemetry-instrumentation-starlette](./opentelemetry-instrumentation-starlette) | starlette >= 0.13, <0.15 | Yes | development
47+
| [opentelemetry-instrumentation-starlette](./opentelemetry-instrumentation-starlette) | starlette >= 0.13 | Yes | development
4848
| [opentelemetry-instrumentation-system-metrics](./opentelemetry-instrumentation-system-metrics) | psutil >= 5 | No | development
4949
| [opentelemetry-instrumentation-threading](./opentelemetry-instrumentation-threading) | threading | No | development
5050
| [opentelemetry-instrumentation-tornado](./opentelemetry-instrumentation-tornado) | tornado >= 5.1.1 | Yes | development

instrumentation/opentelemetry-instrumentation-starlette/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ dependencies = [
3434
]
3535

3636
[project.optional-dependencies]
37-
instruments = ["starlette >= 0.13, <0.15"]
37+
instruments = ["starlette >= 0.13"]
3838

3939
[project.entry-points.opentelemetry_instrumentor]
4040
starlette = "opentelemetry.instrumentation.starlette:StarletteInstrumentor"

instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ def instrument_app(
239239
meter_provider,
240240
schema_url="https://opentelemetry.io/schemas/1.11.0",
241241
)
242-
if not getattr(app, "is_instrumented_by_opentelemetry", False):
242+
if not getattr(app, "_is_instrumented_by_opentelemetry", False):
243243
app.add_middleware(
244244
OpenTelemetryMiddleware,
245245
excluded_urls=_excluded_urls,
@@ -251,7 +251,7 @@ def instrument_app(
251251
tracer=tracer,
252252
meter=meter,
253253
)
254-
app.is_instrumented_by_opentelemetry = True
254+
app._is_instrumented_by_opentelemetry = True
255255

256256
# adding apps to set for uninstrumenting
257257
if app not in _InstrumentedStarlette._instrumented_starlette_apps:
@@ -332,7 +332,7 @@ def __init__(self, *args: Any, **kwargs: Any):
332332
_InstrumentedStarlette._instrumented_starlette_apps.add(self)
333333

334334
def __del__(self):
335-
_InstrumentedStarlette._instrumented_starlette_apps.remove(self)
335+
_InstrumentedStarlette._instrumented_starlette_apps.discard(self)
336336

337337

338338
def _get_route_details(scope: dict[str, Any]) -> str | None:

instrumentation/opentelemetry-instrumentation-starlette/src/opentelemetry/instrumentation/starlette/package.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
# limitations under the License.
1414

1515

16-
_instruments = ("starlette >= 0.13, <0.15",)
16+
_instruments = ("starlette >= 0.13",)
1717

1818
_supports_metrics = True

instrumentation/opentelemetry-instrumentation-starlette/test-requirements.latest.txt

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,31 @@
1717
# opentelemetry-instrumentation-asgi
1818
# opentelemetry-instrumentation-starlette
1919
anyio==4.5.2 ; python_full_version < '3.9'
20-
# via httpx
21-
anyio==4.8.0 ; python_full_version >= '3.9'
22-
# via httpx
20+
# via
21+
# httpx
22+
# starlette
23+
anyio==4.9.0 ; python_full_version >= '3.9'
24+
# via
25+
# httpx
26+
# starlette
2327
asgiref==3.8.1
2428
# via opentelemetry-instrumentation-asgi
25-
certifi==2025.1.31
29+
certifi==2025.4.26
2630
# via
2731
# httpcore
2832
# httpx
2933
# requests
30-
charset-normalizer==3.4.1
34+
charset-normalizer==3.4.2
3135
# via requests
3236
colorama==0.4.6 ; sys_platform == 'win32'
3337
# via pytest
34-
deprecated==1.2.18
35-
# via
36-
# opentelemetry-api
37-
# opentelemetry-semantic-conventions
38-
exceptiongroup==1.2.2 ; python_full_version < '3.11'
38+
exceptiongroup==1.3.0 ; python_full_version < '3.11'
3939
# via
4040
# anyio
4141
# pytest
42-
h11==0.14.0
42+
h11==0.16.0
4343
# via httpcore
44-
httpcore==1.0.7
44+
httpcore==1.0.9
4545
# via httpx
4646
httpx==0.28.1
4747
# via -r instrumentation/opentelemetry-instrumentation-starlette/test-requirements.in
@@ -52,15 +52,17 @@ idna==3.10
5252
# requests
5353
importlib-metadata==8.5.0 ; python_full_version < '3.9'
5454
# via opentelemetry-api
55-
importlib-metadata==8.6.1 ; python_full_version >= '3.9'
55+
importlib-metadata==8.7.0 ; python_full_version >= '3.9'
5656
# via opentelemetry-api
57-
iniconfig==2.0.0
57+
iniconfig==2.1.0
5858
# via pytest
59-
packaging==24.2
59+
packaging==25.0
6060
# via
6161
# opentelemetry-instrumentation
6262
# pytest
63-
pluggy==1.5.0
63+
pluggy==1.5.0 ; python_full_version < '3.9'
64+
# via pytest
65+
pluggy==1.6.0 ; python_full_version >= '3.9'
6466
# via pytest
6567
pytest==7.4.4
6668
# via
@@ -72,22 +74,26 @@ requests==2.32.3
7274
# -r instrumentation/opentelemetry-instrumentation-starlette/test-requirements.in
7375
sniffio==1.3.1
7476
# via anyio
75-
starlette==0.14.2
77+
starlette==0.44.0 ; python_full_version < '3.9'
78+
# via opentelemetry-instrumentation-starlette
79+
starlette==0.46.2 ; python_full_version >= '3.9'
7680
# via opentelemetry-instrumentation-starlette
7781
tomli==2.2.1 ; python_full_version < '3.11'
7882
# via pytest
79-
typing-extensions==4.12.2 ; python_full_version < '3.13'
83+
typing-extensions==4.13.2
8084
# via
8185
# anyio
8286
# asgiref
87+
# exceptiongroup
88+
# opentelemetry-api
89+
# opentelemetry-semantic-conventions
90+
# starlette
8391
urllib3==2.2.3 ; python_full_version < '3.9'
8492
# via requests
85-
urllib3==2.3.0 ; python_full_version >= '3.9'
93+
urllib3==2.4.0 ; python_full_version >= '3.9'
8694
# via requests
8795
wrapt==1.17.2
88-
# via
89-
# deprecated
90-
# opentelemetry-instrumentation
96+
# via opentelemetry-instrumentation
9197
zipp==3.20.2 ; python_full_version < '3.9'
9298
# via importlib-metadata
9399
zipp==3.21.0 ; python_full_version >= '3.9'

instrumentation/opentelemetry-instrumentation-starlette/tests/test_starlette_instrumentation.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -667,15 +667,17 @@ async def _(websocket: WebSocket) -> None:
667667

668668

669669
class TestHTTPAppWithCustomHeaders(TestBaseWithCustomHeaders):
670-
@patch.dict(
671-
"os.environ",
672-
{
673-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
674-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
675-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
676-
},
677-
)
678670
def setUp(self) -> None:
671+
patcher = patch.dict(
672+
"os.environ",
673+
{
674+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
675+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
676+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
677+
},
678+
)
679+
patcher.start()
680+
self.addCleanup(patcher.stop)
679681
super().setUp()
680682

681683
def test_custom_request_headers_in_span_attributes(self):
@@ -793,15 +795,17 @@ def test_custom_response_headers_not_in_span_attributes(self):
793795

794796

795797
class TestWebSocketAppWithCustomHeaders(TestBaseWithCustomHeaders):
796-
@patch.dict(
797-
"os.environ",
798-
{
799-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
800-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
801-
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
802-
},
803-
)
804798
def setUp(self) -> None:
799+
patcher = patch.dict(
800+
"os.environ",
801+
{
802+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS: ".*my-secret.*",
803+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,Regex-Test-Header-.*,Regex-Invalid-Test-Header-.*,.*my-secret.*",
804+
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE: "Custom-Test-Header-1,Custom-Test-Header-2,Custom-Test-Header-3,my-custom-regex-header-.*,invalid-regex-header-.*,.*my-secret.*",
805+
},
806+
)
807+
patcher.start()
808+
self.addCleanup(patcher.stop)
805809
super().setUp()
806810

807811
def test_custom_request_headers_in_span_attributes(self):

opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@
189189
"instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.55b0.dev",
190190
},
191191
{
192-
"library": "starlette >= 0.13, <0.15",
192+
"library": "starlette >= 0.13",
193193
"instrumentation": "opentelemetry-instrumentation-starlette==0.55b0.dev",
194194
},
195195
{

0 commit comments

Comments
 (0)