diff --git a/pydantic_evals/pydantic_evals/otel/_context_in_memory_span_exporter.py b/pydantic_evals/pydantic_evals/otel/_context_in_memory_span_exporter.py index cd83f30a99..05d4d6bff9 100644 --- a/pydantic_evals/pydantic_evals/otel/_context_in_memory_span_exporter.py +++ b/pydantic_evals/pydantic_evals/otel/_context_in_memory_span_exporter.py @@ -109,7 +109,7 @@ def get_finished_spans(self, context_id: str | None = None) -> tuple[ReadableSpa def export(self, spans: typing.Sequence[ReadableSpan]) -> SpanExportResult: """Stores a list of spans in memory.""" - if self._stopped: # pragma: no cover + if self._stopped: return SpanExportResult.FAILURE with self._lock: context_id = _EXPORTER_CONTEXT_ID.get() diff --git a/tests/conftest.py b/tests/conftest.py index f37d35a946..26a6ad039d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -24,6 +24,7 @@ from vcr import VCR, request as vcr_request import pydantic_ai.models +from pydantic_ai import Agent from pydantic_ai.messages import BinaryContent from pydantic_ai.models import Model, cached_async_http_client @@ -230,6 +231,24 @@ def event_loop() -> Iterator[None]: new_loop.close() +@pytest.fixture(autouse=True) +def no_instrumentation_by_default(): + Agent.instrument_all(False) + + +try: + import logfire + + logfire.DEFAULT_LOGFIRE_INSTANCE.config.ignore_no_config = True + + @pytest.fixture(autouse=True) + def fresh_logfire(): + logfire.shutdown(flush=False) + +except ImportError: + pass + + def raise_if_exception(e: Any) -> None: if isinstance(e, Exception): raise e diff --git a/tests/evals/test_otel.py b/tests/evals/test_otel.py index 10fec9f7bb..715742735e 100644 --- a/tests/evals/test_otel.py +++ b/tests/evals/test_otel.py @@ -336,9 +336,6 @@ async def test_span_node_repr(span_tree: SpanTree): async def test_span_tree_ancestors_methods(): """Test the ancestor traversal methods in SpanNode.""" - # Configure logfire - logfire.configure() - # Create spans with a deep structure for testing ancestor methods with context_subtree() as tree: with logfire.span('root', depth=0): @@ -398,9 +395,6 @@ async def test_span_tree_ancestors_methods(): async def test_span_tree_descendants_methods(): """Test the descendant traversal methods in SpanNode.""" - # Configure logfire - logfire.configure() - # Create spans with a deep structure for testing descendant methods with context_subtree() as tree: with logfire.span('root', depth=0): @@ -488,9 +482,6 @@ async def test_span_tree_descendants_methods(): async def test_log_levels_and_exceptions(): """Test recording different log levels and exceptions in spans.""" - # Configure logfire - logfire.configure() - with context_subtree() as tree: # Test different log levels with logfire.span('parent_span'): @@ -891,7 +882,6 @@ async def test_context_subtree_not_configured(mocker: MockerFixture): """Test that context_subtree correctly records spans in independent async contexts.""" from opentelemetry.trace import ProxyTracerProvider - # from opentelemetry.sdk.trace import TracerProvider mocker.patch( 'pydantic_evals.otel._context_in_memory_span_exporter.get_tracer_provider', return_value=ProxyTracerProvider() )