Skip to content

Commit 32e6f6d

Browse files
authored
instrumentation/fastapi: fix fastapi-slim support (#2756)
1 parent dab664c commit 32e6f6d

File tree

4 files changed

+24
-12
lines changed

4 files changed

+24
-12
lines changed

.github/workflows/instrumentations_1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
- "resource-detector-azure"
3939
- "resource-detector-container"
4040
- "util-http"
41-
- "fastapi-slim"
41+
- "fastapislim"
4242
- "processor-baggage"
4343
os: [ubuntu-20.04]
4444
exclude:

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
([#2746](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2746))
1616
- `opentelemetry-instrumentation-grpc` Fixes the issue with the gRPC instrumentation not working with the 1.63.0 and higher version of gRPC
1717
([#2483](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2484))
18+
- `opentelemetry-instrumentation-fastapi` Fix fastapi-slim support
19+
([#2756](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2756))
1820

1921
## Version 1.26.0/0.47b0 (2024-07-23)
2022

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, A
172172
---
173173
"""
174174
import logging
175-
from importlib.util import find_spec
175+
from importlib.metadata import PackageNotFoundError, distribution
176176
from typing import Collection
177177

178178
import fastapi
@@ -285,10 +285,20 @@ def uninstrument_app(app: fastapi.FastAPI):
285285
app._is_instrumented_by_opentelemetry = False
286286

287287
def instrumentation_dependencies(self) -> Collection[str]:
288-
if find_spec("fastapi") is not None:
289-
return (_fastapi,)
290-
if find_spec("fastapi_slim") is not None:
288+
# need to use distribution because find_spec("fastapi") will return
289+
# something even with just fastapi-slim installed
290+
try:
291+
distribution("fastapi-slim")
291292
return (_fastapi_slim,)
293+
except PackageNotFoundError:
294+
pass
295+
296+
try:
297+
distribution("fastapi")
298+
return (_fastapi,)
299+
except PackageNotFoundError:
300+
pass
301+
292302
# If neither is installed, return both as potential dependencies
293303
return _instruments
294304

tox.ini

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,9 @@ envlist =
116116

117117
; opentelemetry-instrumentation-fastapi
118118
py3{8,9,10,11,12}-test-instrumentation-fastapi
119-
py3{8,9,10,11,12}-test-instrumentation-fastapi-slim
119+
py3{8,9,10,11,12}-test-instrumentation-fastapislim
120120
pypy3-test-instrumentation-fastapi
121-
pypy3-test-instrumentation-fastapi-slim
121+
pypy3-test-instrumentation-fastapislim
122122
lint-instrumentation-fastapi
123123

124124
; opentelemetry-instrumentation-flask
@@ -556,11 +556,11 @@ commands_pre =
556556
fastapi: pip install opentelemetry-sdk@{env:CORE_REPO}\#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk
557557
fastapi: pip install opentelemetry-test-utils@{env:CORE_REPO}\#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils
558558
fastapi: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt
559-
fastapi-slim: pip install opentelemetry-api@{env:CORE_REPO}\#egg=opentelemetry-api&subdirectory=opentelemetry-api
560-
fastapi-slim: pip install opentelemetry-semantic-conventions@{env:CORE_REPO}\#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions
561-
fastapi-slim: pip install opentelemetry-sdk@{env:CORE_REPO}\#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk
562-
fastapi-slim: pip install opentelemetry-test-utils@{env:CORE_REPO}\#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils
563-
fastapi-slim: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements-slim.txt
559+
fastapislim: pip install opentelemetry-api@{env:CORE_REPO}\#egg=opentelemetry-api&subdirectory=opentelemetry-api
560+
fastapislim: pip install opentelemetry-semantic-conventions@{env:CORE_REPO}\#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions
561+
fastapislim: pip install opentelemetry-sdk@{env:CORE_REPO}\#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk
562+
fastapislim: pip install opentelemetry-test-utils@{env:CORE_REPO}\#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils
563+
fastapislim: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements-slim.txt
564564

565565
mysql: pip install opentelemetry-api@{env:CORE_REPO}\#egg=opentelemetry-api&subdirectory=opentelemetry-api
566566
mysql: pip install opentelemetry-semantic-conventions@{env:CORE_REPO}\#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions

0 commit comments

Comments
 (0)