Skip to content

Commit a53618d

Browse files
committed
feat(util): Upgrade otel semconv and api
remove otel api and sem conv from instrumentation packages
1 parent e11fcdd commit a53618d

9 files changed

Lines changed: 59 additions & 27 deletions

File tree

instrumentation-genai/opentelemetry-instrumentation-crewai/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ classifiers = [
2424
"Programming Language :: Python :: 3.13",
2525
]
2626
dependencies = [
27-
"opentelemetry-api ~= 1.38.0.dev0",
28-
"opentelemetry-instrumentation ~= 0.59b0.dev0",
29-
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
3027
"splunk-otel-util-genai>=0.1.4",
3128
"wrapt >= 1.14.0, < 2.0.0",
3229
]

instrumentation-genai/opentelemetry-instrumentation-fastmcp/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,6 @@ classifiers = [
2020
"Programming Language :: Python :: 3.13",
2121
]
2222
dependencies = [
23-
"opentelemetry-api ~= 1.38.0.dev0",
24-
"opentelemetry-instrumentation ~= 0.59b0.dev0",
25-
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
2623
"splunk-otel-util-genai>=0.1.4",
2724
"wrapt>=1.0.0",
2825
]

instrumentation-genai/opentelemetry-instrumentation-langchain/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@ classifiers = [
2424
"Programming Language :: Python :: 3.13",
2525
]
2626
dependencies = [
27-
"opentelemetry-api ~= 1.38.0.dev0",
28-
"opentelemetry-instrumentation ~= 0.59b0.dev0",
29-
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
3027
"splunk-otel-util-genai>=0.1.4",
3128
]
3229

instrumentation-genai/opentelemetry-instrumentation-llamaindex/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ classifiers = [
2121
"Programming Language :: Python :: 3.13",
2222
]
2323
dependencies = [
24-
"opentelemetry-api ~= 1.38.0.dev0",
25-
"opentelemetry-instrumentation ~= 0.59b0.dev0",
26-
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
2724
"splunk-otel-util-genai>=0.1.4",
2825
]
2926

instrumentation-genai/opentelemetry-instrumentation-openai-agents-v2/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ classifiers = [
2222
"Programming Language :: Python :: 3.13",
2323
]
2424
dependencies = [
25-
"opentelemetry-api >= 1.37",
26-
"opentelemetry-instrumentation >= 0.58b0",
27-
"opentelemetry-semantic-conventions >= 0.58b0",
2825
"splunk-otel-util-genai >= 0.1.9"
2926
]
3027

instrumentation-genai/opentelemetry-instrumentation-openai-v2/pyproject.toml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ classifiers = [
1919
"Programming Language :: Python :: 3.13",
2020
]
2121
dependencies = [
22-
"opentelemetry-api >= 1.37",
23-
"opentelemetry-instrumentation >= 0.58b0",
24-
"opentelemetry-semantic-conventions >= 0.58b0",
2522
"splunk-otel-util-genai >= 0.1.9"
2623

2724
]

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/conftest.py

Lines changed: 54 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,31 @@ def fixture_meter_provider(metric_reader):
8888

8989
@pytest.fixture(autouse=True)
9090
def environment():
91-
if not os.getenv("OPENAI_API_KEY"):
91+
original_api_key = os.environ.get("OPENAI_API_KEY")
92+
original_evals = os.environ.get(
93+
"OTEL_INSTRUMENTATION_GENAI_EVALS_EVALUATORS"
94+
)
95+
96+
if not original_api_key:
9297
os.environ["OPENAI_API_KEY"] = "test_openai_api_key"
98+
os.environ["OTEL_INSTRUMENTATION_GENAI_EVALS_EVALUATORS"] = "none"
99+
setattr(genai_handler.get_telemetry_handler, "_default_handler", None)
100+
101+
yield
102+
103+
if original_api_key is None:
104+
os.environ.pop("OPENAI_API_KEY", None)
105+
else:
106+
os.environ["OPENAI_API_KEY"] = original_api_key
107+
108+
if original_evals is None:
109+
os.environ.pop("OTEL_INSTRUMENTATION_GENAI_EVALS_EVALUATORS", None)
110+
else:
111+
os.environ["OTEL_INSTRUMENTATION_GENAI_EVALS_EVALUATORS"] = (
112+
original_evals
113+
)
114+
115+
setattr(genai_handler.get_telemetry_handler, "_default_handler", None)
93116

94117

95118
@pytest.fixture
@@ -102,7 +125,7 @@ def async_openai_client():
102125
return AsyncOpenAI()
103126

104127

105-
@pytest.fixture(scope="module")
128+
@pytest.fixture(scope="function")
106129
def vcr_config():
107130
return {
108131
"filter_headers": [
@@ -113,9 +136,15 @@ def vcr_config():
113136
],
114137
"decode_compressed_response": True,
115138
"before_record_response": scrub_response_headers,
139+
"serializer": "yaml",
116140
}
117141

118142

143+
@pytest.fixture(scope="session")
144+
def vcr_cassette_dir():
145+
return os.path.join(os.path.dirname(__file__), "cassettes")
146+
147+
119148
@pytest.fixture(scope="function")
120149
def instrument_no_content(tracer_provider, logger_provider, meter_provider):
121150
os.environ.update(
@@ -260,9 +289,30 @@ def deserialize(cassette_string):
260289
return yaml.load(cassette_string, Loader=yaml.Loader)
261290

262291

263-
@pytest.fixture(scope="module", autouse=True)
292+
try: # pragma: no cover - optional pytest-vcr dependency
293+
import pytest_recording # type: ignore # noqa: F401
294+
import vcr as vcr_module # type: ignore # noqa: F401
295+
296+
# Register custom YAML serializer globally
297+
vcr_module.VCR().register_serializer("yaml", PrettyPrintJSONBody)
298+
299+
except (
300+
ModuleNotFoundError
301+
): # pragma: no cover - provide stub when plugin missing
302+
303+
@pytest.fixture(name="vcr", scope="module")
304+
def _noop_vcr_fixture():
305+
class _VCRStub:
306+
def register_serializer(self, *_args, **_kwargs):
307+
return None
308+
309+
return _VCRStub()
310+
311+
312+
@pytest.fixture(scope="function", autouse=True)
264313
def fixture_vcr(vcr):
265-
vcr.register_serializer("yaml", PrettyPrintJSONBody)
314+
# When pytest-recording is installed, vcr is a Cassette and we don't need to do anything
315+
# The serializer is already registered on the VCR module above
266316
return vcr
267317

268318

instrumentation-genai/opentelemetry-instrumentation-weaviate/pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ classifiers = [
2121
"Programming Language :: Python :: 3.13",
2222
]
2323
dependencies = [
24-
"opentelemetry-api ~= 1.38.0.dev0",
25-
"opentelemetry-instrumentation ~= 0.59b0.dev0",
26-
"opentelemetry-semantic-conventions ~= 0.59b0.dev0",
24+
"opentelemetry-instrumentation ~= 0.60b1",
25+
"opentelemetry-semantic-conventions ~= 0.60b1",
26+
"opentelemetry-api == 1.39.1",
2727
]
2828

2929
[project.optional-dependencies]

util/opentelemetry-util-genai/pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ classifiers = [
2525
"Programming Language :: Python :: 3.13",
2626
]
2727
dependencies = [
28-
"opentelemetry-instrumentation ~= 0.57b0",
29-
"opentelemetry-semantic-conventions ~= 0.57b0",
28+
"opentelemetry-instrumentation ~= 0.60b1",
29+
"opentelemetry-semantic-conventions ~= 0.60b1",
3030
"opentelemetry-api>=1.31.0",
3131
]
3232

0 commit comments

Comments
 (0)