Skip to content

Commit 7397605

Browse files
authored
Add variadic arguments to metric exporter/reader interfaces (#2654)
* Add variadic arguments to metric exporter/reader interfaces Fixes #2650 * Add changelog entry * Remove args * Add args again This reverts commit 7eb6134. * Add missing args
1 parent cdab6e1 commit 7397605

File tree

5 files changed

+26
-14
lines changed

5 files changed

+26
-14
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.11.1-0.30b1...HEAD)
99

10+
- Add variadic arguments to metric exporter/reader interfaces
11+
([#2654](https://github.com/open-telemetry/opentelemetry-python/pull/2654))
1012
- Move Metrics API behind internal package
1113
([#2651](https://github.com/open-telemetry/opentelemetry-python/pull/2651))
1214

exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_metric_exporter/__init__.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,10 @@ def _translate_data(
168168
)
169169
)
170170

171-
def export(self, metrics: Sequence[Metric]) -> MetricExportResult:
171+
def export(
172+
self, metrics: Sequence[Metric], *args, **kwargs
173+
) -> MetricExportResult:
172174
return self._export(metrics)
173175

174-
def shutdown(self):
176+
def shutdown(self, *args, **kwargs):
175177
pass

exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,14 @@ def __init__(self, prefix: str = "") -> None:
110110
REGISTRY.register(self._collector)
111111
self._collector._callback = self.collect
112112

113-
def _receive_metrics(self, metrics: Iterable[Metric]) -> None:
113+
def _receive_metrics(
114+
self, metrics: Iterable[Metric], *args, **kwargs
115+
) -> None:
114116
if metrics is None:
115117
return
116118
self._collector.add_metrics_data(metrics)
117119

118-
def shutdown(self) -> bool:
120+
def shutdown(self, *args, **kwargs) -> bool:
119121
REGISTRY.unregister(self._collector)
120122
return True
121123

opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/export/__init__.py

+14-8
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ class MetricExporter(ABC):
5252
"""
5353

5454
@abstractmethod
55-
def export(self, metrics: Sequence[Metric]) -> "MetricExportResult":
55+
def export(
56+
self, metrics: Sequence[Metric], *args, **kwargs
57+
) -> "MetricExportResult":
5658
"""Exports a batch of telemetry data.
5759
5860
Args:
@@ -63,7 +65,7 @@ def export(self, metrics: Sequence[Metric]) -> "MetricExportResult":
6365
"""
6466

6567
@abstractmethod
66-
def shutdown(self) -> None:
68+
def shutdown(self, *args, **kwargs) -> None:
6769
"""Shuts down the exporter.
6870
6971
Called when the SDK is shut down.
@@ -87,13 +89,15 @@ def __init__(
8789
self.out = out
8890
self.formatter = formatter
8991

90-
def export(self, metrics: Sequence[Metric]) -> MetricExportResult:
92+
def export(
93+
self, metrics: Sequence[Metric], *args, **kwargs
94+
) -> MetricExportResult:
9195
for metric in metrics:
9296
self.out.write(self.formatter(metric))
9397
self.out.flush()
9498
return MetricExportResult.SUCCESS
9599

96-
def shutdown(self) -> None:
100+
def shutdown(self, *args, **kwargs) -> None:
97101
pass
98102

99103

@@ -123,11 +127,11 @@ def get_metrics(self) -> List[Metric]:
123127
self._metrics = []
124128
return metrics
125129

126-
def _receive_metrics(self, metrics: Iterable[Metric]):
130+
def _receive_metrics(self, metrics: Iterable[Metric], *args, **kwargs):
127131
with self._lock:
128132
self._metrics = list(metrics)
129133

130-
def shutdown(self):
134+
def shutdown(self, *args, **kwargs):
131135
pass
132136

133137

@@ -193,7 +197,9 @@ def _ticker(self) -> None:
193197
# one last collection below before shutting down completely
194198
self.collect()
195199

196-
def _receive_metrics(self, metrics: Iterable[Metric]) -> None:
200+
def _receive_metrics(
201+
self, metrics: Iterable[Metric], *args, **kwargs
202+
) -> None:
197203
if metrics is None:
198204
return
199205
token = attach(set_value(_SUPPRESS_INSTRUMENTATION_KEY, True))
@@ -203,7 +209,7 @@ def _receive_metrics(self, metrics: Iterable[Metric]) -> None:
203209
_logger.exception("Exception while exporting metrics %s", str(e))
204210
detach(token)
205211

206-
def shutdown(self):
212+
def shutdown(self, *args, **kwargs):
207213
def _shutdown():
208214
self._shutdown = True
209215

opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/metric_reader.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -162,11 +162,11 @@ def _set_collect_callback(
162162
self._collect = func
163163

164164
@abstractmethod
165-
def _receive_metrics(self, metrics: Iterable[Metric]):
165+
def _receive_metrics(self, metrics: Iterable[Metric], *args, **kwargs):
166166
"""Called by `MetricReader.collect` when it receives a batch of metrics"""
167167

168168
@abstractmethod
169-
def shutdown(self):
169+
def shutdown(self, *args, **kwargs):
170170
"""Shuts down the MetricReader. This method provides a way
171171
for the MetricReader to do any cleanup required. A metric reader can
172172
only be shutdown once, any subsequent calls are ignored and return

0 commit comments

Comments
 (0)