From fe55d5cbf4d89893085fceaebbdc6d82b6c8bd20 Mon Sep 17 00:00:00 2001 From: Diego Hurtado <ocelotl@users.noreply.github.com> Date: Thu, 5 May 2022 19:55:34 -0600 Subject: [PATCH] Refactored type for metrics data structure --- .../proto/grpc/_metric_exporter/__init__.py | 19 ++++----------- .../exporter/prometheus/__init__.py | 2 +- .../sdk/_metrics/_internal/export/__init__.py | 24 +++++++------------ .../sdk/_metrics/_internal/metric_reader.py | 2 +- .../sdk/_metrics/export/__init__.py | 1 + 5 files changed, 16 insertions(+), 32 deletions(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_metric_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_metric_exporter/__init__.py index a36b8e329a8..e7d47d31b78 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_metric_exporter/__init__.py +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_metric_exporter/__init__.py @@ -13,7 +13,7 @@ from logging import getLogger from os import environ -from typing import Optional, Sequence, Dict, Iterable +from typing import Optional, Sequence, Dict from grpc import ChannelCredentials, Compression from opentelemetry.exporter.otlp.proto.grpc.exporter import ( OTLPExporterMixin, @@ -40,14 +40,12 @@ from opentelemetry.sdk._metrics.export import ( MetricExporter, MetricExportResult, + MappingMetricT, ) from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.util.instrumentation import ( InstrumentationScope as SDKInstrumentationScope, ) -from opentelemetry.sdk._metrics.metric_reader import ( - Metric as MetricReaderMetric, -) _logger = getLogger(__name__) @@ -86,11 +84,7 @@ def __init__( ) def _translate_data( - self, - data: Dict[ - Resource, - Dict[SDKInstrumentationScope, Iterable[MetricReaderMetric]], - ], + self, data: MappingMetricT ) -> ExportMetricsServiceRequest: sdk_resource_scope_metrics: Dict[ @@ -202,12 +196,7 @@ def _translate_data( ) def export( - self, - metrics: Dict[ - Resource, Dict[InstrumentationScope, Iterable[MetricReaderMetric]] - ], - *args, - **kwargs + self, metrics: MappingMetricT, *args, **kwargs ) -> MetricExportResult: return self._export(metrics) diff --git a/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py index 3f3f8861f1d..1d86cc8e048 100644 --- a/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py +++ b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py @@ -121,7 +121,7 @@ def _receive_metrics( Resource, Dict[InstrumentationScope, Iterable[MetricReaderMetric]] ], *args, - **kwargs + **kwargs, ) -> None: if metrics is None: return diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/export/__init__.py index e41305a4ff8..41d69d075d8 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/export/__init__.py @@ -19,7 +19,7 @@ from os import environ, linesep from sys import stdout from threading import Event, RLock, Thread -from typing import IO, Callable, Dict, Iterable, List, Optional, Sequence +from typing import IO, Callable, Dict, Iterable, List, Mapping, Optional from opentelemetry.context import ( _SUPPRESS_INSTRUMENTATION_KEY, @@ -39,6 +39,10 @@ _logger = logging.getLogger(__name__) +MappingMetricT = Mapping[ + Resource, Mapping[InstrumentationScope, Iterable[MetricReaderMetric]] +] + class MetricExportResult(Enum): """Result of exporting a metric @@ -58,7 +62,7 @@ class MetricExporter(ABC): @abstractmethod def export( - self, metrics: Sequence[Metric], *args, **kwargs + self, metrics: MappingMetricT, *args, **kwargs ) -> "MetricExportResult": """Exports a batch of telemetry data. @@ -95,7 +99,7 @@ def __init__( self.formatter = formatter def export( - self, metrics: Sequence[Metric], *args, **kwargs + self, metrics: MappingMetricT, *args, **kwargs ) -> MetricExportResult: for metric in metrics: self.out.write(self.formatter(metric)) @@ -135,12 +139,7 @@ def get_metrics(self) -> List[Metric]: return metrics def _receive_metrics( - self, - metrics: Dict[ - Resource, Dict[InstrumentationScope, Iterable[MetricReaderMetric]] - ], - *args, - **kwargs + self, metrics: MappingMetricT, *args, **kwargs ) -> None: with self._lock: self._metrics = metrics @@ -212,12 +211,7 @@ def _ticker(self) -> None: self.collect() def _receive_metrics( - self, - metrics: Dict[ - Resource, Dict[InstrumentationScope, Iterable[MetricReaderMetric]] - ], - *args, - **kwargs + self, metrics: MappingMetricT, *args, **kwargs ) -> None: if metrics is None: return diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/metric_reader.py b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/metric_reader.py index d9841295f45..9783dafc34f 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/metric_reader.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/_internal/metric_reader.py @@ -216,7 +216,7 @@ def _receive_metrics( self, metrics: Dict[Resource, Dict[InstrumentationScope, Iterable[Metric]]], *args, - **kwargs + **kwargs, ) -> None: """Called by `MetricReader.collect` when it receives a batch of metrics""" diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/export/__init__.py index 06dc1e77766..c894139a66d 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_metrics/export/__init__.py @@ -17,6 +17,7 @@ from opentelemetry.sdk._metrics._internal.export import ( # noqa: F401 ConsoleMetricExporter, InMemoryMetricReader, + MappingMetricT, MetricExporter, MetricExportResult, PeriodicExportingMetricReader,