Skip to content

Commit 140ce27

Browse files
Mak te A365exporter internal and final so its not instantiated outside the core sdk
1 parent ec23bd3 commit 140ce27

File tree

5 files changed

+14
-10
lines changed

5 files changed

+14
-10
lines changed

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from opentelemetry.sdk.trace import TracerProvider
1111
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
1212

13-
from .exporters.agent365_exporter import Agent365Exporter
13+
from .exporters.agent365_exporter import _Agent365Exporter
1414
from .exporters.agent365_exporter_options import Agent365ExporterOptions
1515
from .exporters.utils import is_agent365_exporter_enabled
1616
from .trace_processor.span_processor import SpanProcessor
@@ -147,7 +147,7 @@ def _configure_internal(
147147
}
148148

149149
if is_agent365_exporter_enabled() and exporter_options.token_resolver is not None:
150-
exporter = Agent365Exporter(
150+
exporter = _Agent365Exporter(
151151
token_resolver=exporter_options.token_resolver,
152152
cluster_category=exporter_options.cluster_category,
153153
use_s2s_endpoint=exporter_options.use_s2s_endpoint,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Agent365Exporter is not exported intentionally.
2+
# It should only be used internally by the observability core module.
3+
__all__ = ["Agent365ExporterOptions"]

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/exporters/agent365_exporter.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import threading
1010
import time
1111
from collections.abc import Callable, Sequence
12-
from typing import Any
12+
from typing import Any, final
1313

1414
import requests
1515
from microsoft_agents_a365.runtime.power_platform_api_discovery import PowerPlatformApiDiscovery
@@ -36,7 +36,8 @@
3636
logger = logging.getLogger(__name__)
3737

3838

39-
class Agent365Exporter(SpanExporter):
39+
@final
40+
class _Agent365Exporter(SpanExporter):
4041
"""
4142
Agent 365 span exporter for Agent 365:
4243
* Partitions spans by (tenantId, agentId)

tests/observability/core/test_agent365.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ def test_configure_with_exporter_options_and_parameter_precedence(self, mock_is_
6161
)
6262
self.assertTrue(result, "configure() should return True with exporter_options")
6363

64-
@patch("microsoft_agents_a365.observability.core.config.Agent365Exporter")
64+
@patch("microsoft_agents_a365.observability.core.config._Agent365Exporter")
6565
@patch("microsoft_agents_a365.observability.core.config.BatchSpanProcessor")
6666
@patch("microsoft_agents_a365.observability.core.config.is_agent365_exporter_enabled")
6767
def test_batch_span_processor_and_exporter_called_with_correct_values(
6868
self, mock_is_enabled, mock_batch_processor, mock_exporter
6969
):
70-
"""Test that BatchSpanProcessor and Agent365Exporter are called with correct values from exporter_options."""
70+
"""Test that BatchSpanProcessor and _Agent365Exporter are called with correct values from exporter_options."""
7171
# Enable Agent365 exporter for this test
7272
mock_is_enabled.return_value = True
7373

tests/observability/core/test_agent365_exporter.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from microsoft_agents_a365.observability.core.constants import GEN_AI_AGENT_ID_KEY, TENANT_ID_KEY
88
from microsoft_agents_a365.observability.core.exporters.agent365_exporter import (
9-
Agent365Exporter,
9+
_Agent365Exporter,
1010
)
1111
from opentelemetry.sdk.trace import ReadableSpan
1212
from opentelemetry.sdk.trace.export import SpanExportResult
@@ -21,7 +21,7 @@ def setUp(self):
2121
self.mock_token_resolver.return_value = "test_token_123"
2222

2323
# Don't patch the class in setUp, do it per test
24-
self.exporter = Agent365Exporter(
24+
self.exporter = _Agent365Exporter(
2525
token_resolver=self.mock_token_resolver, cluster_category="test"
2626
)
2727

@@ -216,7 +216,7 @@ def test_partitioning_by_scope(self):
216216
def test_s2s_endpoint_path_when_enabled(self):
217217
"""Test 4: Test that S2S endpoint path is used when use_s2s_endpoint is True."""
218218
# Arrange - Create exporter with S2S endpoint enabled
219-
s2s_exporter = Agent365Exporter(
219+
s2s_exporter = _Agent365Exporter(
220220
token_resolver=self.mock_token_resolver, cluster_category="test", use_s2s_endpoint=True
221221
)
222222

@@ -252,7 +252,7 @@ def test_s2s_endpoint_path_when_enabled(self):
252252
def test_default_endpoint_path_when_s2s_disabled(self):
253253
"""Test 5: Test that default endpoint path is used when use_s2s_endpoint is False."""
254254
# Arrange - Create exporter with S2S endpoint disabled (default behavior)
255-
default_exporter = Agent365Exporter(
255+
default_exporter = _Agent365Exporter(
256256
token_resolver=self.mock_token_resolver, cluster_category="test", use_s2s_endpoint=False
257257
)
258258

0 commit comments

Comments
 (0)