Skip to content

Commit

Permalink
fix: fastapi auto-instrumentation by removing fastapi-slim support
Browse files Browse the repository at this point in the history
Moreover `fastapi-slim` itself is discontinued from maintainers
see fastapi/fastapi#11522 (comment)
see https://fastapi.tiangolo.com/release-notes/#01120
  • Loading branch information
smoke committed Aug 7, 2024
1 parent 009bdba commit 162363f
Show file tree
Hide file tree
Showing 9 changed files with 5 additions and 174 deletions.
108 changes: 0 additions & 108 deletions .github/workflows/test_0.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2212,24 +2212,6 @@ jobs:
- name: Run tests
run: tox -e py38-test-instrumentation-fastapi-main -- -ra

py38-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim 3.8 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: "3.8"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e py38-test-instrumentation-fastapi-slim -- -ra

py39-test-instrumentation-fastapi-main_ubuntu-latest:
name: instrumentation-fastapi-main 3.9 Ubuntu
runs-on: ubuntu-latest
Expand All @@ -2248,24 +2230,6 @@ jobs:
- name: Run tests
run: tox -e py39-test-instrumentation-fastapi-main -- -ra

py39-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim 3.9 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: "3.9"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e py39-test-instrumentation-fastapi-slim -- -ra

py310-test-instrumentation-fastapi-main_ubuntu-latest:
name: instrumentation-fastapi-main 3.10 Ubuntu
runs-on: ubuntu-latest
Expand All @@ -2284,24 +2248,6 @@ jobs:
- name: Run tests
run: tox -e py310-test-instrumentation-fastapi-main -- -ra

py310-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim 3.10 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e py310-test-instrumentation-fastapi-slim -- -ra

py311-test-instrumentation-fastapi-main_ubuntu-latest:
name: instrumentation-fastapi-main 3.11 Ubuntu
runs-on: ubuntu-latest
Expand All @@ -2320,24 +2266,6 @@ jobs:
- name: Run tests
run: tox -e py311-test-instrumentation-fastapi-main -- -ra

py311-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim 3.11 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e py311-test-instrumentation-fastapi-slim -- -ra

py312-test-instrumentation-fastapi-main_ubuntu-latest:
name: instrumentation-fastapi-main 3.12 Ubuntu
runs-on: ubuntu-latest
Expand All @@ -2356,24 +2284,6 @@ jobs:
- name: Run tests
run: tox -e py312-test-instrumentation-fastapi-main -- -ra

py312-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim 3.12 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e py312-test-instrumentation-fastapi-slim -- -ra

pypy3-test-instrumentation-fastapi-main_ubuntu-latest:
name: instrumentation-fastapi-main pypy-3.8 Ubuntu
runs-on: ubuntu-latest
Expand All @@ -2392,24 +2302,6 @@ jobs:
- name: Run tests
run: tox -e pypy3-test-instrumentation-fastapi-main -- -ra

pypy3-test-instrumentation-fastapi-slim_ubuntu-latest:
name: instrumentation-fastapi-slim pypy-3.8 Ubuntu
runs-on: ubuntu-latest
steps:
- name: Checkout repo @ SHA - ${{ github.sha }}
uses: actions/checkout@v4

- name: Set up Python pypy-3.8
uses: actions/setup-python@v5
with:
python-version: "pypy-3.8"

- name: Install tox
run: pip install tox

- name: Run tests
run: tox -e pypy3-test-instrumentation-fastapi-slim -- -ra

py38-test-instrumentation-flask-0_ubuntu-latest:
name: instrumentation-flask-0 3.8 Ubuntu
runs-on: ubuntu-latest
Expand Down
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Fixed

- `opentelemetry-instrumentation-fastapi` fix `fastapi` auto-instrumentation by removing `fastapi-slim` support, `fastapi-slim` itself is discontinued from maintainers
([???](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/???))
- `opentelemetry-instrumentation-aws-lambda` Avoid exception when a handler is not present.
([#2750](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2750))
- `opentelemetry-instrumentation-django` Fix regression - `http.target` re-added back to old semconv duration metrics
([#2746](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2746))
- `opentelemetry-instrumentation-grpc` Fixes the issue with the gRPC instrumentation not working with the 1.63.0 and higher version of gRPC
([#2483](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2484))
- `opentelemetry-instrumentation-fastapi` Fix fastapi-slim support
([#2756](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2756))
- `opentelemetry-instrumentation-aws-lambda` Fixing w3c baggage support
([#2589](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/2589))
- `opentelemetry-instrumentation-celery` propagates baggage
Expand Down
2 changes: 1 addition & 1 deletion instrumentation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
| [opentelemetry-instrumentation-django](./opentelemetry-instrumentation-django) | django >= 1.10 | Yes | experimental
| [opentelemetry-instrumentation-elasticsearch](./opentelemetry-instrumentation-elasticsearch) | elasticsearch >= 6.0 | No | experimental
| [opentelemetry-instrumentation-falcon](./opentelemetry-instrumentation-falcon) | falcon >= 1.4.1, < 4.0.0 | Yes | experimental
| [opentelemetry-instrumentation-fastapi](./opentelemetry-instrumentation-fastapi) | fastapi ~= 0.58,fastapi-slim ~= 0.111 | Yes | migration
| [opentelemetry-instrumentation-fastapi](./opentelemetry-instrumentation-fastapi) | fastapi ~= 0.58 | Yes | migration
| [opentelemetry-instrumentation-flask](./opentelemetry-instrumentation-flask) | flask >= 1.0 | Yes | migration
| [opentelemetry-instrumentation-grpc](./opentelemetry-instrumentation-grpc) | grpcio ~= 1.27 | No | experimental
| [opentelemetry-instrumentation-httpx](./opentelemetry-instrumentation-httpx) | httpx >= 0.18.0 | No | migration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ dependencies = [
[project.optional-dependencies]
instruments = [
"fastapi ~= 0.58",
"fastapi-slim ~= 0.111",
]

[project.entry-points.opentelemetry_instrumentor]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, A
from __future__ import annotations

import logging
from importlib.metadata import PackageNotFoundError, distribution
from typing import Collection

import fastapi
Expand All @@ -197,11 +196,7 @@ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, A
ClientResponseHook,
ServerRequestHook,
)
from opentelemetry.instrumentation.fastapi.package import (
_fastapi,
_fastapi_slim,
_instruments,
)
from opentelemetry.instrumentation.fastapi.package import _instruments
from opentelemetry.instrumentation.fastapi.version import __version__
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
from opentelemetry.metrics import get_meter
Expand Down Expand Up @@ -298,21 +293,6 @@ def uninstrument_app(app: fastapi.FastAPI):
app._is_instrumented_by_opentelemetry = False

def instrumentation_dependencies(self) -> Collection[str]:
# need to use distribution because find_spec("fastapi") will return
# something even with just fastapi-slim installed
try:
distribution("fastapi-slim")
return (_fastapi_slim,)
except PackageNotFoundError:
pass

try:
distribution("fastapi")
return (_fastapi,)
except PackageNotFoundError:
pass

# If neither is installed, return both as potential dependencies
return _instruments

def _instrument(self, **kwargs):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
# limitations under the License.


_fastapi = "fastapi ~= 0.58"
_fastapi_slim = "fastapi-slim ~= 0.111"

_instruments = (_fastapi, _fastapi_slim)
_instruments = ("fastapi ~= 0.58",)

_supports_metrics = True

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,6 @@
"library": "fastapi ~= 0.58",
"instrumentation": "opentelemetry-instrumentation-fastapi==0.48b0.dev",
},
{
"library": "fastapi-slim ~= 0.111",
"instrumentation": "opentelemetry-instrumentation-fastapi==0.48b0.dev",
},
{
"library": "flask >= 1.0",
"instrumentation": "opentelemetry-instrumentation-flask==0.48b0.dev",
Expand Down
1 change: 0 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -557,7 +557,6 @@ commands_pre =
fastapi: pip install opentelemetry-sdk@{env:CORE_REPO}\#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk
fastapi: pip install opentelemetry-test-utils@{env:CORE_REPO}\#egg=opentelemetry-test-utils&subdirectory=tests/opentelemetry-test-utils
fastapi-main: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt
fastapi-slim: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements-slim.txt
lint-instrumentation-fastapi: pip install -r {toxinidir}/instrumentation/opentelemetry-instrumentation-fastapi/test-requirements.txt

mysql: pip install opentelemetry-api@{env:CORE_REPO}\#egg=opentelemetry-api&subdirectory=opentelemetry-api
Expand Down

0 comments on commit 162363f

Please sign in to comment.