From d856f9d1810d8077be7ef654f6273f120c3485e8 Mon Sep 17 00:00:00 2001 From: Chris Kleinknecht Date: Mon, 16 Sep 2019 16:43:56 -0700 Subject: [PATCH] Make getter/setter types specific to context --- .../context/propagation/httptextformat.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/opentelemetry-api/src/opentelemetry/context/propagation/httptextformat.py b/opentelemetry-api/src/opentelemetry/context/propagation/httptextformat.py index f3823a86d17..ffde2f1c254 100644 --- a/opentelemetry-api/src/opentelemetry/context/propagation/httptextformat.py +++ b/opentelemetry-api/src/opentelemetry/context/propagation/httptextformat.py @@ -14,11 +14,14 @@ import abc import typing +from typing import Type, TypeVar from opentelemetry.trace import SpanContext -Setter = typing.Callable[[object, str, str], None] -Getter = typing.Callable[[object, str], typing.List[str]] +_T = typing.TypeVar("_T") + +Setter = typing.Callable[[Type[_T], str, str], None] +Getter = typing.Callable[[Type[_T], str], typing.List[str]] class HTTPTextFormat(abc.ABC): @@ -70,7 +73,7 @@ def example_route(): @abc.abstractmethod def extract( - self, get_from_carrier: Getter, carrier: object + self, get_from_carrier: Getter[_T], carrier: _T ) -> SpanContext: """Create a SpanContext from values in the carrier. @@ -93,7 +96,7 @@ def extract( @abc.abstractmethod def inject( - self, context: SpanContext, set_in_carrier: Setter, carrier: object + self, context: SpanContext, set_in_carrier: Setter[_T], carrier: _T ) -> None: """Inject values from a SpanContext into a carrier.