Skip to content

Commit 7a3fc3f

Browse files
committed
add type hints to '_semconv'
1 parent 27e21e0 commit 7a3fc3f

File tree

2 files changed

+117
-39
lines changed
  • instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client
  • opentelemetry-instrumentation/src/opentelemetry/instrumentation

2 files changed

+117
-39
lines changed

instrumentation/opentelemetry-instrumentation-aiohttp-client/src/opentelemetry/instrumentation/aiohttp_client/__init__.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,18 @@ def response_hook(span: Span, params: typing.Union[
129129
HTTP_DURATION_HISTOGRAM_BUCKETS_OLD,
130130
_client_duration_attrs_new,
131131
_client_duration_attrs_old,
132-
_filter_semconv_duration_attrs, # type: ignore[reportUnknownVariableType]
132+
_filter_semconv_duration_attrs,
133133
_get_schema_url,
134134
_OpenTelemetrySemanticConventionStability,
135135
_OpenTelemetryStabilitySignalType,
136136
_report_new,
137137
_report_old,
138-
_set_http_host_client, # type: ignore[reportUnknownVariableType]
139-
_set_http_method, # type: ignore[reportUnknownVariableType]
140-
_set_http_net_peer_name_client, # type: ignore[reportUnknownVariableType]
141-
_set_http_peer_port_client, # type: ignore[reportUnknownVariableType]
142-
_set_http_url, # type: ignore[reportUnknownVariableType]
143-
_set_status, # type: ignore[reportUnknownVariableType]
138+
_set_http_host_client,
139+
_set_http_method,
140+
_set_http_net_peer_name_client,
141+
_set_http_peer_port_client,
142+
_set_http_url,
143+
_set_status,
144144
_StabilityMode,
145145
)
146146
from opentelemetry.instrumentation.aiohttp_client.package import _instruments

opentelemetry-instrumentation/src/opentelemetry/instrumentation/_semconv.py

Lines changed: 110 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import os
1616
import threading
1717
from enum import Enum
18+
from typing import Container, Mapping
1819

1920
from opentelemetry.instrumentation.utils import http_status_to_status_code
2021
from opentelemetry.semconv._incubating.attributes.http_attributes import (
@@ -63,7 +64,9 @@
6364
USER_AGENT_ORIGINAL,
6465
)
6566
from opentelemetry.semconv.schemas import Schemas
67+
from opentelemetry.trace import Span
6668
from opentelemetry.trace.status import Status, StatusCode
69+
from opentelemetry.util.types import AttributeValue
6770

6871
# Values defined in milliseconds
6972
HTTP_DURATION_HISTOGRAM_BUCKETS_OLD = (
@@ -259,11 +262,11 @@ def _get_opentelemetry_stability_opt_in_mode(
259262

260263

261264
def _filter_semconv_duration_attrs(
262-
attrs,
263-
old_attrs,
264-
new_attrs,
265-
sem_conv_opt_in_mode=_StabilityMode.DEFAULT,
266-
):
265+
attrs: Mapping[str, AttributeValue],
266+
old_attrs: Container[AttributeValue],
267+
new_attrs: Container[AttributeValue],
268+
sem_conv_opt_in_mode: _StabilityMode = _StabilityMode.DEFAULT,
269+
) -> dict[str, AttributeValue]:
267270
filtered_attrs = {}
268271
# duration is two different metrics depending on sem_conv_opt_in_mode, so no DUP attributes
269272
allowed_attributes = (
@@ -276,11 +279,11 @@ def _filter_semconv_duration_attrs(
276279

277280

278281
def _filter_semconv_active_request_count_attr(
279-
attrs,
280-
old_attrs,
281-
new_attrs,
282-
sem_conv_opt_in_mode=_StabilityMode.DEFAULT,
283-
):
282+
attrs: Mapping[str, AttributeValue],
283+
old_attrs: Container[AttributeValue],
284+
new_attrs: Container[AttributeValue],
285+
sem_conv_opt_in_mode: _StabilityMode = _StabilityMode.DEFAULT,
286+
) -> dict[str, AttributeValue]:
284287
filtered_attrs = {}
285288
if _report_old(sem_conv_opt_in_mode):
286289
for key, val in attrs.items():
@@ -293,20 +296,29 @@ def _filter_semconv_active_request_count_attr(
293296
return filtered_attrs
294297

295298

296-
def set_string_attribute(result, key, value):
299+
def set_string_attribute(
300+
result: Mapping[str, AttributeValue], key: str, value: AttributeValue
301+
) -> None:
297302
if value:
298303
result[key] = value
299304

300305

301-
def set_int_attribute(result, key, value):
306+
def set_int_attribute(
307+
result: dict[str, AttributeValue], key: str, value: AttributeValue
308+
) -> None:
302309
if value:
303310
try:
304311
result[key] = int(value)
305312
except ValueError:
306313
return
307314

308315

309-
def _set_http_method(result, original, normalized, sem_conv_opt_in_mode):
316+
def _set_http_method(
317+
result: dict[str, AttributeValue],
318+
original: str,
319+
normalized: str,
320+
sem_conv_opt_in_mode: _StabilityMode,
321+
) -> None:
310322
original = original.strip()
311323
normalized = normalized.strip()
312324
# See https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-spans.md#common-attributes
@@ -320,35 +332,55 @@ def _set_http_method(result, original, normalized, sem_conv_opt_in_mode):
320332
set_string_attribute(result, HTTP_REQUEST_METHOD, normalized)
321333

322334

323-
def _set_http_status_code(result, code, sem_conv_opt_in_mode):
335+
def _set_http_status_code(
336+
result: dict[str, AttributeValue],
337+
code: str | int,
338+
sem_conv_opt_in_mode: _StabilityMode,
339+
) -> None:
324340
if _report_old(sem_conv_opt_in_mode):
325341
set_int_attribute(result, HTTP_STATUS_CODE, code)
326342
if _report_new(sem_conv_opt_in_mode):
327343
set_int_attribute(result, HTTP_RESPONSE_STATUS_CODE, code)
328344

329345

330-
def _set_http_url(result, url, sem_conv_opt_in_mode):
346+
def _set_http_url(
347+
result: dict[str, AttributeValue],
348+
url: str,
349+
sem_conv_opt_in_mode: _StabilityMode,
350+
) -> None:
331351
if _report_old(sem_conv_opt_in_mode):
332352
set_string_attribute(result, HTTP_URL, url)
333353
if _report_new(sem_conv_opt_in_mode):
334354
set_string_attribute(result, URL_FULL, url)
335355

336356

337-
def _set_http_scheme(result, scheme, sem_conv_opt_in_mode):
357+
def _set_http_scheme(
358+
result: dict[str, AttributeValue],
359+
scheme: str,
360+
sem_conv_opt_in_mode: _StabilityMode,
361+
) -> None:
338362
if _report_old(sem_conv_opt_in_mode):
339363
set_string_attribute(result, HTTP_SCHEME, scheme)
340364
if _report_new(sem_conv_opt_in_mode):
341365
set_string_attribute(result, URL_SCHEME, scheme)
342366

343367

344-
def _set_http_flavor_version(result, version, sem_conv_opt_in_mode):
368+
def _set_http_flavor_version(
369+
result: dict[str, AttributeValue],
370+
version: str,
371+
sem_conv_opt_in_mode: _StabilityMode,
372+
) -> None:
345373
if _report_old(sem_conv_opt_in_mode):
346374
set_string_attribute(result, HTTP_FLAVOR, version)
347375
if _report_new(sem_conv_opt_in_mode):
348376
set_string_attribute(result, NETWORK_PROTOCOL_VERSION, version)
349377

350378

351-
def _set_http_user_agent(result, user_agent, sem_conv_opt_in_mode):
379+
def _set_http_user_agent(
380+
result: dict[str, AttributeValue],
381+
user_agent: str,
382+
sem_conv_opt_in_mode: _StabilityMode,
383+
) -> None:
352384
if _report_old(sem_conv_opt_in_mode):
353385
set_string_attribute(result, HTTP_USER_AGENT, user_agent)
354386
if _report_new(sem_conv_opt_in_mode):
@@ -358,28 +390,44 @@ def _set_http_user_agent(result, user_agent, sem_conv_opt_in_mode):
358390
# Client
359391

360392

361-
def _set_http_host_client(result, host, sem_conv_opt_in_mode):
393+
def _set_http_host_client(
394+
result: dict[str, AttributeValue],
395+
host: str,
396+
sem_conv_opt_in_mode: _StabilityMode,
397+
) -> None:
362398
if _report_old(sem_conv_opt_in_mode):
363399
set_string_attribute(result, HTTP_HOST, host)
364400
if _report_new(sem_conv_opt_in_mode):
365401
set_string_attribute(result, SERVER_ADDRESS, host)
366402

367403

368-
def _set_http_net_peer_name_client(result, peer_name, sem_conv_opt_in_mode):
404+
def _set_http_net_peer_name_client(
405+
result: dict[str, AttributeValue],
406+
peer_name: str,
407+
sem_conv_opt_in_mode: _StabilityMode,
408+
) -> None:
369409
if _report_old(sem_conv_opt_in_mode):
370410
set_string_attribute(result, NET_PEER_NAME, peer_name)
371411
if _report_new(sem_conv_opt_in_mode):
372412
set_string_attribute(result, SERVER_ADDRESS, peer_name)
373413

374414

375-
def _set_http_peer_port_client(result, port, sem_conv_opt_in_mode):
415+
def _set_http_peer_port_client(
416+
result: dict[str, AttributeValue],
417+
port: str | int,
418+
sem_conv_opt_in_mode: _StabilityMode,
419+
) -> None:
376420
if _report_old(sem_conv_opt_in_mode):
377421
set_int_attribute(result, NET_PEER_PORT, port)
378422
if _report_new(sem_conv_opt_in_mode):
379423
set_int_attribute(result, SERVER_PORT, port)
380424

381425

382-
def _set_http_network_protocol_version(result, version, sem_conv_opt_in_mode):
426+
def _set_http_network_protocol_version(
427+
result: dict[str, AttributeValue],
428+
version: str,
429+
sem_conv_opt_in_mode: _StabilityMode,
430+
) -> None:
383431
if _report_old(sem_conv_opt_in_mode):
384432
set_string_attribute(result, HTTP_FLAVOR, version)
385433
if _report_new(sem_conv_opt_in_mode):
@@ -389,21 +437,35 @@ def _set_http_network_protocol_version(result, version, sem_conv_opt_in_mode):
389437
# Server
390438

391439

392-
def _set_http_net_host(result, host, sem_conv_opt_in_mode):
440+
def _set_http_net_host(
441+
result: dict[str, AttributeValue],
442+
host: str,
443+
sem_conv_opt_in_mode: _StabilityMode,
444+
) -> None:
393445
if _report_old(sem_conv_opt_in_mode):
394446
set_string_attribute(result, NET_HOST_NAME, host)
395447
if _report_new(sem_conv_opt_in_mode):
396448
set_string_attribute(result, SERVER_ADDRESS, host)
397449

398450

399-
def _set_http_net_host_port(result, port, sem_conv_opt_in_mode):
451+
def _set_http_net_host_port(
452+
result: dict[str, AttributeValue],
453+
port: str | int,
454+
sem_conv_opt_in_mode: _StabilityMode,
455+
) -> None:
400456
if _report_old(sem_conv_opt_in_mode):
401457
set_int_attribute(result, NET_HOST_PORT, port)
402458
if _report_new(sem_conv_opt_in_mode):
403459
set_int_attribute(result, SERVER_PORT, port)
404460

405461

406-
def _set_http_target(result, target, path, query, sem_conv_opt_in_mode):
462+
def _set_http_target(
463+
result: dict[str, AttributeValue],
464+
target: str,
465+
path: str | None,
466+
query: str | None,
467+
sem_conv_opt_in_mode: _StabilityMode,
468+
) -> None:
407469
if _report_old(sem_conv_opt_in_mode):
408470
set_string_attribute(result, HTTP_TARGET, target)
409471
if _report_new(sem_conv_opt_in_mode):
@@ -413,7 +475,11 @@ def _set_http_target(result, target, path, query, sem_conv_opt_in_mode):
413475
set_string_attribute(result, URL_QUERY, query)
414476

415477

416-
def _set_http_host_server(result, host, sem_conv_opt_in_mode):
478+
def _set_http_host_server(
479+
result: dict[str, AttributeValue],
480+
host: str,
481+
sem_conv_opt_in_mode: _StabilityMode,
482+
) -> None:
417483
if _report_old(sem_conv_opt_in_mode):
418484
set_string_attribute(result, HTTP_HOST, host)
419485
if _report_new(sem_conv_opt_in_mode):
@@ -426,7 +492,11 @@ def _set_http_host_server(result, host, sem_conv_opt_in_mode):
426492
# net.sock.peer.addr -> client.socket.address for server spans (TODO) AND client.address if missing
427493
# https://github.com/open-telemetry/semantic-conventions/blob/v1.21.0/CHANGELOG.md#v1210-2023-07-13
428494
# https://github.com/open-telemetry/semantic-conventions/blob/main/docs/non-normative/http-migration.md#common-attributes-across-http-client-and-server-spans
429-
def _set_http_peer_ip_server(result, ip, sem_conv_opt_in_mode):
495+
def _set_http_peer_ip_server(
496+
result: dict[str, AttributeValue],
497+
ip: str,
498+
sem_conv_opt_in_mode: _StabilityMode,
499+
) -> None:
430500
if _report_old(sem_conv_opt_in_mode):
431501
set_string_attribute(result, NET_PEER_IP, ip)
432502
if _report_new(sem_conv_opt_in_mode):
@@ -435,28 +505,36 @@ def _set_http_peer_ip_server(result, ip, sem_conv_opt_in_mode):
435505
set_string_attribute(result, CLIENT_ADDRESS, ip)
436506

437507

438-
def _set_http_peer_port_server(result, port, sem_conv_opt_in_mode):
508+
def _set_http_peer_port_server(
509+
result: dict[str, AttributeValue],
510+
port: str | int,
511+
sem_conv_opt_in_mode: _StabilityMode,
512+
) -> None:
439513
if _report_old(sem_conv_opt_in_mode):
440514
set_int_attribute(result, NET_PEER_PORT, port)
441515
if _report_new(sem_conv_opt_in_mode):
442516
set_int_attribute(result, CLIENT_PORT, port)
443517

444518

445-
def _set_http_net_peer_name_server(result, name, sem_conv_opt_in_mode):
519+
def _set_http_net_peer_name_server(
520+
result: dict[str, AttributeValue],
521+
name: str,
522+
sem_conv_opt_in_mode: _StabilityMode,
523+
) -> None:
446524
if _report_old(sem_conv_opt_in_mode):
447525
set_string_attribute(result, NET_PEER_NAME, name)
448526
if _report_new(sem_conv_opt_in_mode):
449527
set_string_attribute(result, CLIENT_ADDRESS, name)
450528

451529

452530
def _set_status(
453-
span,
454-
metrics_attributes: dict,
531+
span: Span,
532+
metrics_attributes: dict[str, AttributeValue],
455533
status_code: int,
456534
status_code_str: str,
457535
server_span: bool = True,
458536
sem_conv_opt_in_mode: _StabilityMode = _StabilityMode.DEFAULT,
459-
):
537+
) -> None:
460538
if status_code < 0:
461539
if _report_new(sem_conv_opt_in_mode):
462540
metrics_attributes[ERROR_TYPE] = status_code_str

0 commit comments

Comments
 (0)