Skip to content

Commit e4767be

Browse files
authored
Use protobuf objects with types instead of dicts (#211)
1 parent 9e5893c commit e4767be

File tree

8 files changed

+28
-59
lines changed

8 files changed

+28
-59
lines changed

dev-constraints.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
black==22.3.0
22
flake8==3.9.2
3+
# 3rd party package until https://github.com/googleapis/python-api-common-protos/issues/135 is
4+
# fixed
5+
googleapis-common-protos-stubs==2.1.0
36
isort==5.8.0
47
mypy-extensions==0.4.3
58
mypy==0.982

opentelemetry-exporter-gcp-monitoring/mypy.ini

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,5 @@ namespace_packages = True
33
explicit_package_bases = True
44
mypy_path = $MYPY_CONFIG_FILE_DIR/src
55

6-
[mypy-opentelemetry.sdk.*]
7-
ignore_missing_imports = True
8-
96
[mypy-google.auth.*]
107
ignore_missing_imports = True
11-
12-
[mypy-google.cloud.*]
13-
ignore_missing_imports = True
14-
15-
[mypy-google.api.*]
16-
ignore_missing_imports = True
17-
18-
[mypy-google.rpc.*]
19-
ignore_missing_imports = True
20-
21-

opentelemetry-exporter-gcp-monitoring/src/opentelemetry/exporter/cloud_monitoring/__init__.py

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -156,37 +156,37 @@ def _get_metric_descriptor(
156156
if descriptor_type in self._metric_descriptors:
157157
return self._metric_descriptors[descriptor_type]
158158

159-
descriptor = { # type: ignore[var-annotated] # TODO #56
160-
"name": None,
161-
"type": descriptor_type,
162-
"display_name": metric.name,
163-
"description": metric.description,
164-
"labels": [],
165-
}
159+
descriptor = MetricDescriptor(
160+
type=descriptor_type,
161+
display_name=metric.name,
162+
description=metric.description or "",
163+
)
166164
seen_keys: Set[str] = set()
167165
for data_point in metric.data.data_points:
168166
for key in data_point.attributes or {}:
169167
if key in seen_keys:
170168
continue
171169
seen_keys.add(key)
172-
descriptor["labels"].append(LabelDescriptor(key=_normalize_label_key(key))) # type: ignore[union-attr] # TODO #56
170+
descriptor.labels.append(
171+
LabelDescriptor(key=_normalize_label_key(key))
172+
)
173173

174174
if self.unique_identifier:
175-
descriptor["labels"].append( # type: ignore[union-attr] # TODO #56
175+
descriptor.labels.append(
176176
LabelDescriptor(key=UNIQUE_IDENTIFIER_KEY)
177177
)
178178

179179
data = metric.data
180180
if isinstance(data, Sum):
181-
descriptor["metric_kind"] = (
181+
descriptor.metric_kind = (
182182
MetricDescriptor.MetricKind.CUMULATIVE
183183
if data.is_monotonic
184184
else MetricDescriptor.MetricKind.GAUGE
185185
)
186186
elif isinstance(data, Gauge):
187-
descriptor["metric_kind"] = MetricDescriptor.MetricKind.GAUGE
187+
descriptor.metric_kind = MetricDescriptor.MetricKind.GAUGE
188188
elif isinstance(data, Histogram):
189-
descriptor["metric_kind"] = MetricDescriptor.MetricKind.CUMULATIVE
189+
descriptor.metric_kind = MetricDescriptor.MetricKind.CUMULATIVE
190190
else:
191191
# Exhaustive check
192192
_: NoReturn = data
@@ -198,13 +198,13 @@ def _get_metric_descriptor(
198198

199199
first_point = data.data_points[0] if len(data.data_points) else None
200200
if isinstance(first_point, NumberDataPoint):
201-
descriptor["value_type"] = (
201+
descriptor.value_type = (
202202
MetricDescriptor.ValueType.INT64
203203
if isinstance(first_point.value, int)
204204
else MetricDescriptor.ValueType.DOUBLE
205205
)
206206
elif isinstance(first_point, HistogramDataPoint):
207-
descriptor["value_type"] = MetricDescriptor.ValueType.DISTRIBUTION
207+
descriptor.value_type = MetricDescriptor.ValueType.DISTRIBUTION
208208
elif first_point is None:
209209
pass
210210
else:
@@ -215,22 +215,21 @@ def _get_metric_descriptor(
215215
type(first_point).__name__,
216216
)
217217

218-
proto_descriptor = MetricDescriptor(**descriptor)
219218
try:
220-
descriptor = self.client.create_metric_descriptor(
219+
response_descriptor = self.client.create_metric_descriptor(
221220
CreateMetricDescriptorRequest(
222-
name=self.project_name, metric_descriptor=proto_descriptor
221+
name=self.project_name, metric_descriptor=descriptor
223222
)
224223
)
225224
# pylint: disable=broad-except
226225
except Exception as ex:
227226
logger.error(
228227
"Failed to create metric descriptor %s",
229-
proto_descriptor,
228+
descriptor,
230229
exc_info=ex,
231230
)
232231
return None
233-
self._metric_descriptors[descriptor_type] = descriptor
232+
self._metric_descriptors[descriptor_type] = response_descriptor
234233
return descriptor
235234

236235
@staticmethod

opentelemetry-exporter-gcp-trace/mypy.ini

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,5 @@ namespace_packages = True
33
explicit_package_bases = True
44
mypy_path = $MYPY_CONFIG_FILE_DIR/src
55

6-
[mypy-opentelemetry.sdk.*]
7-
ignore_missing_imports = True
8-
96
[mypy-google.auth.*]
107
ignore_missing_imports = True
11-
12-
[mypy-google.cloud.*]
13-
ignore_missing_imports = True
14-
15-
[mypy-google.api.*]
16-
ignore_missing_imports = True
17-
18-
[mypy-google.rpc.*]
19-
ignore_missing_imports = True
20-
21-

opentelemetry-exporter-gcp-trace/src/opentelemetry/exporter/cloud_trace/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ def _translate_to_cloud_trace(
230230
MAX_SPAN_ATTRS,
231231
add_agent_attr=True,
232232
),
233-
links=_extract_links(span.links), # type: ignore[has-type]
234-
status=_extract_status(span.status), # type: ignore[arg-type]
233+
links=_extract_links(span.links),
234+
status=_extract_status(span.status),
235235
time_events=_extract_events(span.events),
236236
span_kind=_extract_span_kind(span.kind),
237237
)
@@ -281,7 +281,7 @@ def _extract_status(status: trace_api.Status) -> Optional[status_pb2.Status]:
281281
status_proto = status_pb2.Status(code=code_pb2.OK)
282282
elif status.status_code is StatusCode.ERROR:
283283
status_proto = status_pb2.Status(
284-
code=code_pb2.UNKNOWN, message=status.description
284+
code=code_pb2.UNKNOWN, message=status.description or ""
285285
)
286286
# future added value
287287
else:
@@ -290,7 +290,7 @@ def _extract_status(status: trace_api.Status) -> Optional[status_pb2.Status]:
290290
status.status_code,
291291
)
292292
status_proto = status_pb2.Status(
293-
code=code_pb2.UNKNOWN, message=status.description
293+
code=code_pb2.UNKNOWN, message=status.description or ""
294294
)
295295

296296
return status_proto

opentelemetry-propagator-gcp/mypy.ini

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,3 @@
22
namespace_packages = True
33
explicit_package_bases = True
44
mypy_path = $MYPY_CONFIG_FILE_DIR/src
5-
6-
[mypy-opentelemetry.sdk.*]
7-
ignore_missing_imports = True
8-

opentelemetry-resourcedetector-gcp/mypy.ini

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,3 @@
22
namespace_packages = True
33
explicit_package_bases = True
44
mypy_path = $MYPY_CONFIG_FILE_DIR/src
5-
6-
[mypy-opentelemetry.sdk.*]
7-
ignore_missing_imports = True
8-

tox.ini

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ dev_deps =
3434
types-protobuf
3535
types-requests
3636
types-setuptools
37+
# 3rd party package until https://github.com/googleapis/python-api-common-protos/issues/135
38+
# is fixed
39+
googleapis-common-protos-stubs
3740

3841
; CircleCI won't show results if I put them in .test-results directly
3942
test_results_dir = {toxinidir}/.test-results/test-results

0 commit comments

Comments
 (0)