55
66Intended call shape from a per-package ``tests/test_conformance.py``::
77
8- pytestmark = pytest.mark.conformance
9-
108 @pytest.mark.parametrize(
119 "scenario", [InferenceScenario(), ToolCallingScenario()]
1210 )
1311 def test_conformance(scenario, vcr, weaver_live_check):
1412 report = run_conformance(scenario, vcr=vcr, weaver=weaver_live_check)
1513 # Optionally layer lib-specific assertions on `report` here.
1614
17- The module-level ``pytestmark = pytest.mark.conformance`` is required: the
18- ``*-conformance`` tox envs select these tests via ``-m conformance``, and the
19- regular ``*-{oldest,latest}`` envs deselect them via ``-m "not conformance"``.
15+ The ``*-conformance`` tox envs point pytest directly at
16+ ``tests/test_conformance.py``; the regular ``*-{oldest,latest}`` envs
17+ ``--ignore`` it. The OTLP/gRPC exporter and ``weaver_live_check`` only need
18+ to be installed in the conformance envs.
2019
2120Each ``tests/conformance/<op>.py`` defines a :class:`Scenario` subclass with:
2221
@@ -40,15 +39,6 @@ def test_conformance(scenario, vcr, weaver_live_check):
4039from pathlib import Path
4140from typing import Any , ClassVar
4241
43- from opentelemetry .exporter .otlp .proto .grpc ._log_exporter import (
44- OTLPLogExporter ,
45- )
46- from opentelemetry .exporter .otlp .proto .grpc .metric_exporter import (
47- OTLPMetricExporter ,
48- )
49- from opentelemetry .exporter .otlp .proto .grpc .trace_exporter import (
50- OTLPSpanExporter ,
51- )
5242from opentelemetry .sdk ._logs import LoggerProvider
5343from opentelemetry .sdk ._logs .export import SimpleLogRecordProcessor
5444from opentelemetry .sdk .metrics import MeterProvider
@@ -105,6 +95,19 @@ def validate(self, report: LiveCheckReport) -> None:
10595def _build_providers (
10696 endpoint : str ,
10797) -> tuple [TracerProvider , MeterProvider , LoggerProvider ]:
98+ # OTLP/gRPC exporters are only installed in the *-conformance tox envs
99+ # (see dev-requirements-conformance.txt). Import lazily so this module
100+ # stays importable in regular test envs that exclude conformance tests.
101+ from opentelemetry .exporter .otlp .proto .grpc ._log_exporter import ( # noqa: PLC0415
102+ OTLPLogExporter ,
103+ )
104+ from opentelemetry .exporter .otlp .proto .grpc .metric_exporter import ( # noqa: PLC0415
105+ OTLPMetricExporter ,
106+ )
107+ from opentelemetry .exporter .otlp .proto .grpc .trace_exporter import ( # noqa: PLC0415
108+ OTLPSpanExporter ,
109+ )
110+
108111 tracer_provider = TracerProvider ()
109112 tracer_provider .add_span_processor (
110113 SimpleSpanProcessor (OTLPSpanExporter (endpoint = endpoint , insecure = True ))
0 commit comments