Skip to content

Commit 8d7b958

Browse files
committed
Add variadic arguments to metric exporter/reader interfaces
Fixes #2650
1 parent 5456988 commit 8d7b958

File tree

5 files changed

+38
-18
lines changed

5 files changed

+38
-18
lines changed

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/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/measurement_consumer.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,24 @@
3131

3232
class MeasurementConsumer(ABC):
3333
@abstractmethod
34-
def consume_measurement(self, measurement: Measurement) -> None:
34+
def consume_measurement(
35+
self, measurement: Measurement, *args, **kwargs
36+
) -> None:
3537
pass
3638

3739
@abstractmethod
38-
def register_asynchronous_instrument(self, instrument: "_Asynchronous"):
40+
def register_asynchronous_instrument(
41+
self, instrument: "_Asynchronous", *args, **kwargs
42+
):
3943
pass
4044

4145
@abstractmethod
4246
def collect(
4347
self,
4448
metric_reader: MetricReader,
4549
instrument_type_temporality: Dict[type, AggregationTemporality],
50+
*args,
51+
**kwargs
4652
) -> Iterable[Metric]:
4753
pass
4854

@@ -60,12 +66,14 @@ def __init__(self, sdk_config: SdkConfiguration) -> None:
6066
}
6167
self._async_instruments: List["_Asynchronous"] = []
6268

63-
def consume_measurement(self, measurement: Measurement) -> None:
69+
def consume_measurement(
70+
self, measurement: Measurement, *args, **kwargs
71+
) -> None:
6472
for reader_storage in self._reader_storages.values():
6573
reader_storage.consume_measurement(measurement)
6674

6775
def register_asynchronous_instrument(
68-
self, instrument: "_Asynchronous"
76+
self, instrument: "_Asynchronous", *args, **kwargs
6977
) -> None:
7078
with self._lock:
7179
self._async_instruments.append(instrument)
@@ -74,6 +82,8 @@ def collect(
7482
self,
7583
metric_reader: MetricReader,
7684
instrument_type_temporality: Dict[type, AggregationTemporality],
85+
*args,
86+
**kwargs
7787
) -> Iterable[Metric]:
7888
with self._lock:
7989
metric_reader_storage = self._reader_storages[metric_reader]

opentelemetry-sdk/src/opentelemetry/sdk/_metrics/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)