|
7 | 7 | from typing import Any, Callable, Literal |
8 | 8 | from urllib.parse import urlparse |
9 | 9 |
|
| 10 | +from opentelemetry._events import ( |
| 11 | + EventLogger, # pyright: ignore[reportPrivateImportUsage] |
| 12 | + EventLoggerProvider, # pyright: ignore[reportPrivateImportUsage] |
| 13 | + Event, # pyright: ignore[reportPrivateImportUsage] |
| 14 | + get_event_logger_provider, # pyright: ignore[reportPrivateImportUsage] |
| 15 | +) |
10 | 16 | from opentelemetry._logs import ( |
11 | 17 | Logger, # pyright: ignore[reportPrivateImportUsage] |
12 | 18 | LoggerProvider, # pyright: ignore[reportPrivateImportUsage] |
@@ -90,7 +96,7 @@ def __init__( |
90 | 96 | event_mode: Literal['attributes', 'logs'] = 'attributes', |
91 | 97 | tracer_provider: TracerProvider | None = None, |
92 | 98 | meter_provider: MeterProvider | None = None, |
93 | | - event_logger_provider: LoggerProvider | None = None, |
| 99 | + event_logger_provider: LoggerProvider | EventLoggerProvider | None = None, |
94 | 100 | include_binary_content: bool = True, |
95 | 101 | include_content: bool = True, |
96 | 102 | ): |
@@ -121,7 +127,11 @@ def __init__( |
121 | 127 | scope_name = 'pydantic-ai' |
122 | 128 | self.tracer = tracer_provider.get_tracer(scope_name, __version__) |
123 | 129 | self.meter = meter_provider.get_meter(scope_name, __version__) |
124 | | - self.event_logger = event_logger_provider.get_logger(scope_name, __version__) |
| 130 | + try: |
| 131 | + self.event_logger = event_logger_provider.get_logger(scope_name, __version__) |
| 132 | + except AttributeError: |
| 133 | + # Older OTel/logfire versions don't support LoggerProvider |
| 134 | + self.event_logger = event_logger_provider.get_event_logger(scope_name, __version__) |
125 | 135 | self.event_mode = event_mode |
126 | 136 | self.include_binary_content = include_binary_content |
127 | 137 | self.include_content = include_content |
@@ -332,7 +342,7 @@ def _record_metrics(): |
332 | 342 | # to prevent them from being redundantly recorded in the span itself by logfire. |
333 | 343 | record_metrics() |
334 | 344 |
|
335 | | - def _emit_events(self, span: Span, events: list[LogRecord]) -> None: |
| 345 | + def _emit_events(self, span: Span, events: list[LogRecord] | list[LogRecord]) -> None: |
336 | 346 | if self.instrumentation_settings.event_mode == 'logs': |
337 | 347 | for event in events: |
338 | 348 | self.instrumentation_settings.event_logger.emit(event) |
|
0 commit comments