From 0ec183b34f491458f409574c3205ce44c105b909 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Fri, 27 Dec 2024 10:47:32 +0100 Subject: [PATCH] Don't use `logfire_instance` in `instrument_django` (#731) --- logfire/_internal/integrations/django.py | 28 +++++++++++++++++------- logfire/_internal/main.py | 11 ++++++---- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/logfire/_internal/integrations/django.py b/logfire/_internal/integrations/django.py index 6a82cfb55..d2f24d08c 100644 --- a/logfire/_internal/integrations/django.py +++ b/logfire/_internal/integrations/django.py @@ -1,6 +1,10 @@ -from typing import Any +from __future__ import annotations + +from typing import Any, Callable + +from django.http import HttpRequest, HttpResponse +from opentelemetry.trace import Span -from logfire import Logfire from logfire._internal.utils import maybe_capture_server_headers try: @@ -13,16 +17,24 @@ ) -def instrument_django(logfire_instance: Logfire, *, capture_headers: bool = False, **kwargs: Any): +def instrument_django( + *, + capture_headers: bool, + is_sql_commentor_enabled: bool | None, + excluded_urls: str | None, + request_hook: Callable[[Span, HttpRequest], None] | None, + response_hook: Callable[[Span, HttpRequest, HttpResponse], None] | None, + **kwargs: Any, +) -> None: """Instrument the `django` module so that spans are automatically created for each web request. See the `Logfire.instrument_django` method for details. """ maybe_capture_server_headers(capture_headers) DjangoInstrumentor().instrument( - **{ - 'tracer_provider': logfire_instance.config.get_tracer_provider(), - 'meter_provider': logfire_instance.config.get_meter_provider(), - **kwargs, - } + excluded_urls=excluded_urls, + is_sql_commentor_enabled=is_sql_commentor_enabled, + request_hook=request_hook, + response_hook=response_hook, + **kwargs, ) diff --git a/logfire/_internal/main.py b/logfire/_internal/main.py index f8d41177a..58ff7f907 100644 --- a/logfire/_internal/main.py +++ b/logfire/_internal/main.py @@ -1288,8 +1288,8 @@ def instrument_django( self, capture_headers: bool = False, is_sql_commentor_enabled: bool | None = None, - request_hook: Callable[[Span, HttpRequest], None] | None = None, - response_hook: Callable[[Span, HttpRequest, HttpResponse], None] | None = None, + request_hook: Callable[[trace_api.Span, HttpRequest], None] | None = None, + response_hook: Callable[[trace_api.Span, HttpRequest, HttpResponse], None] | None = None, excluded_urls: str | None = None, **kwargs: Any, ) -> None: @@ -1327,13 +1327,16 @@ def instrument_django( self._warn_if_not_initialized_for_instrumentation() return instrument_django( - self, capture_headers=capture_headers, is_sql_commentor_enabled=is_sql_commentor_enabled, request_hook=request_hook, response_hook=response_hook, excluded_urls=excluded_urls, - **kwargs, + **{ + 'tracer_provider': self._config.get_tracer_provider(), + 'meter_provider': self._config.get_meter_provider(), + **kwargs, + }, ) def instrument_requests(