From 57eab9811dae2b876c084d898aee3b0d7736a3ac Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 2 Mar 2021 12:36:44 -0800 Subject: [PATCH 1/4] move textmap propagators to opentelemetry.propagators --- docs/conf.py | 14 ++++---------- .../auto-instrumentation/server_instrumented.py | 2 +- .../opentelemetry/baggage/propagation/__init__.py | 9 ++++----- .../src/opentelemetry/propagate/__init__.py | 3 +-- .../src/opentelemetry/propagators/composite.py | 14 +++++++------- .../{trace/propagation => propagators}/textmap.py | 0 .../trace/propagation/tracecontext.py | 11 +++++------ .../tests/baggage/test_baggage_propagation.py | 2 +- .../propagators/test_global_httptextformat.py | 2 +- .../tests/trace/propagation/test_textmap.py | 2 +- .../propagation/test_tracecontexthttptextformat.py | 11 ++++------- .../src/opentelemetry/propagators/b3/__init__.py | 2 +- .../trace/propagation/test_benchmark_b3_format.py | 2 +- .../tests/test_b3_format.py | 2 +- .../opentelemetry/propagators/jaeger/__init__.py | 2 +- .../tests/test_jaeger_propagator.py | 2 +- .../shim/opentracing_shim/__init__.py | 2 +- tests/util/src/opentelemetry/test/mock_textmap.py | 2 +- 18 files changed, 36 insertions(+), 48 deletions(-) rename opentelemetry-api/src/opentelemetry/{trace/propagation => propagators}/textmap.py (100%) diff --git a/docs/conf.py b/docs/conf.py index 42eefa1ce1c..a8c659b2d44 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -102,16 +102,10 @@ # with "class reference target not found: ObjectProxy". ("py:class", "ObjectProxy"), # TODO: Understand why sphinx is not able to find this local class - ("py:class", "opentelemetry.trace.propagation.textmap.TextMapPropagator",), - ("py:class", "opentelemetry.trace.propagation.textmap.DictGetter",), - ( - "any", - "opentelemetry.trace.propagation.textmap.TextMapPropagator.extract", - ), - ( - "any", - "opentelemetry.trace.propagation.textmap.TextMapPropagator.inject", - ), + ("py:class", "opentelemetry.propagators.textmap.TextMapPropagator",), + ("py:class", "opentelemetry.propagators.textmap.DictGetter",), + ("any", "opentelemetry.propagators.textmap.TextMapPropagator.extract",), + ("any", "opentelemetry.propagators.textmap.TextMapPropagator.inject",), ] # Add any paths that contain templates here, relative to this directory. diff --git a/docs/examples/auto-instrumentation/server_instrumented.py b/docs/examples/auto-instrumentation/server_instrumented.py index 5bf5e8dafe2..1ac1bd6b71b 100644 --- a/docs/examples/auto-instrumentation/server_instrumented.py +++ b/docs/examples/auto-instrumentation/server_instrumented.py @@ -17,12 +17,12 @@ from opentelemetry import trace from opentelemetry.instrumentation.wsgi import collect_request_attributes from opentelemetry.propagate import extract +from opentelemetry.propagators.textmap import DictGetter from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ( ConsoleSpanExporter, SimpleSpanProcessor, ) -from opentelemetry.trace.propagation.textmap import DictGetter app = Flask(__name__) diff --git a/opentelemetry-api/src/opentelemetry/baggage/propagation/__init__.py b/opentelemetry-api/src/opentelemetry/baggage/propagation/__init__.py index ae5e0c34e1b..9c68357a7c9 100644 --- a/opentelemetry-api/src/opentelemetry/baggage/propagation/__init__.py +++ b/opentelemetry-api/src/opentelemetry/baggage/propagation/__init__.py @@ -18,12 +18,11 @@ from opentelemetry import baggage from opentelemetry.context import get_current from opentelemetry.context.context import Context -from opentelemetry.trace.propagation import textmap +from opentelemetry.propagators import textmap class BaggagePropagator(textmap.TextMapPropagator): - """Extracts and injects Baggage which is used to annotate telemetry. - """ + """Extracts and injects Baggage which is used to annotate telemetry.""" MAX_HEADER_LENGTH = 8192 MAX_PAIR_LENGTH = 4096 @@ -39,7 +38,7 @@ def extract( """Extract Baggage from the carrier. See - `opentelemetry.trace.propagation.textmap.TextMapPropagator.extract` + `opentelemetry.propagators.textmap.TextMapPropagator.extract` """ if context is None: @@ -81,7 +80,7 @@ def inject( """Injects Baggage into the carrier. See - `opentelemetry.trace.propagation.textmap.TextMapPropagator.inject` + `opentelemetry.propagators.textmap.TextMapPropagator.inject` """ baggage_entries = baggage.get_all(context=context) if not baggage_entries: diff --git a/opentelemetry-api/src/opentelemetry/propagate/__init__.py b/opentelemetry-api/src/opentelemetry/propagate/__init__.py index 6050b5f4ff8..77d09b9a9f2 100644 --- a/opentelemetry-api/src/opentelemetry/propagate/__init__.py +++ b/opentelemetry-api/src/opentelemetry/propagate/__init__.py @@ -76,8 +76,7 @@ def example_route(): from opentelemetry.context.context import Context from opentelemetry.environment_variables import OTEL_PROPAGATORS -from opentelemetry.propagators import composite -from opentelemetry.trace.propagation import textmap +from opentelemetry.propagators import composite, textmap logger = getLogger(__name__) diff --git a/opentelemetry-api/src/opentelemetry/propagators/composite.py b/opentelemetry-api/src/opentelemetry/propagators/composite.py index fde42d9373b..92dc6b8a380 100644 --- a/opentelemetry-api/src/opentelemetry/propagators/composite.py +++ b/opentelemetry-api/src/opentelemetry/propagators/composite.py @@ -15,13 +15,13 @@ import typing from opentelemetry.context.context import Context -from opentelemetry.trace.propagation import textmap +from opentelemetry.propagators import textmap logger = logging.getLogger(__name__) class CompositeHTTPPropagator(textmap.TextMapPropagator): - """ CompositeHTTPPropagator provides a mechanism for combining multiple + """CompositeHTTPPropagator provides a mechanism for combining multiple propagators into a single one. Args: @@ -39,12 +39,12 @@ def extract( carrier: textmap.TextMapPropagatorT, context: typing.Optional[Context] = None, ) -> Context: - """ Run each of the configured propagators with the given context and carrier. + """Run each of the configured propagators with the given context and carrier. Propagators are run in the order they are configured, if multiple propagators write the same context key, the propagator later in the list will override previous propagators. - See `opentelemetry.trace.propagation.textmap.TextMapPropagator.extract` + See `opentelemetry.propagators.textmap.TextMapPropagator.extract` """ for propagator in self._propagators: context = propagator.extract(getter, carrier, context) @@ -56,12 +56,12 @@ def inject( carrier: textmap.TextMapPropagatorT, context: typing.Optional[Context] = None, ) -> None: - """ Run each of the configured propagators with the given context and carrier. + """Run each of the configured propagators with the given context and carrier. Propagators are run in the order they are configured, if multiple propagators write the same carrier key, the propagator later in the list will override previous propagators. - See `opentelemetry.trace.propagation.textmap.TextMapPropagator.inject` + See `opentelemetry.propagators.textmap.TextMapPropagator.inject` """ for propagator in self._propagators: propagator.inject(set_in_carrier, carrier, context) @@ -71,7 +71,7 @@ def fields(self) -> typing.Set[str]: """Returns a set with the fields set in `inject`. See - `opentelemetry.trace.propagation.textmap.TextMapPropagator.fields` + `opentelemetry.propagators.textmap.TextMapPropagator.fields` """ composite_fields = set() diff --git a/opentelemetry-api/src/opentelemetry/trace/propagation/textmap.py b/opentelemetry-api/src/opentelemetry/propagators/textmap.py similarity index 100% rename from opentelemetry-api/src/opentelemetry/trace/propagation/textmap.py rename to opentelemetry-api/src/opentelemetry/propagators/textmap.py diff --git a/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py b/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py index c18cde9ee64..b22f7e7271f 100644 --- a/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py +++ b/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py @@ -17,13 +17,12 @@ import opentelemetry.trace as trace from opentelemetry.context.context import Context -from opentelemetry.trace.propagation import textmap +from opentelemetry.propagate import textmap from opentelemetry.trace.span import TraceState class TraceContextTextMapPropagator(textmap.TextMapPropagator): - """Extracts and injects using w3c TraceContext's headers. - """ + """Extracts and injects using w3c TraceContext's headers.""" _TRACEPARENT_HEADER_NAME = "traceparent" _TRACESTATE_HEADER_NAME = "tracestate" @@ -41,7 +40,7 @@ def extract( ) -> Context: """Extracts SpanContext from the carrier. - See `opentelemetry.trace.propagation.textmap.TextMapPropagator.extract` + See `opentelemetry.propagators.textmap.TextMapPropagator.extract` """ header = getter.get(carrier, self._TRACEPARENT_HEADER_NAME) @@ -91,7 +90,7 @@ def inject( ) -> None: """Injects SpanContext into the carrier. - See `opentelemetry.trace.propagation.textmap.TextMapPropagator.inject` + See `opentelemetry.propagators.textmap.TextMapPropagator.inject` """ span = trace.get_current_span(context) span_context = span.get_span_context() @@ -116,6 +115,6 @@ def fields(self) -> typing.Set[str]: """Returns a set with the fields set in `inject`. See - `opentelemetry.trace.propagation.textmap.TextMapPropagator.fields` + `opentelemetry.propagators.textmap.TextMapPropagator.fields` """ return {self._TRACEPARENT_HEADER_NAME, self._TRACESTATE_HEADER_NAME} diff --git a/opentelemetry-api/tests/baggage/test_baggage_propagation.py b/opentelemetry-api/tests/baggage/test_baggage_propagation.py index 68723c6a0b3..719e8d91e3e 100644 --- a/opentelemetry-api/tests/baggage/test_baggage_propagation.py +++ b/opentelemetry-api/tests/baggage/test_baggage_propagation.py @@ -18,7 +18,7 @@ from opentelemetry import baggage from opentelemetry.baggage.propagation import BaggagePropagator from opentelemetry.context import get_current -from opentelemetry.trace.propagation.textmap import DictGetter +from opentelemetry.propagators.textmap import DictGetter carrier_getter = DictGetter() diff --git a/opentelemetry-api/tests/propagators/test_global_httptextformat.py b/opentelemetry-api/tests/propagators/test_global_httptextformat.py index 88b1920468e..f6adf8aebdc 100644 --- a/opentelemetry-api/tests/propagators/test_global_httptextformat.py +++ b/opentelemetry-api/tests/propagators/test_global_httptextformat.py @@ -16,8 +16,8 @@ from opentelemetry import baggage, trace from opentelemetry.propagate import extract, inject +from opentelemetry.propagators.textmap import DictGetter from opentelemetry.trace import get_current_span, set_span_in_context -from opentelemetry.trace.propagation.textmap import DictGetter carrier_getter = DictGetter() diff --git a/opentelemetry-api/tests/trace/propagation/test_textmap.py b/opentelemetry-api/tests/trace/propagation/test_textmap.py index 830f7ac2c1c..12e851de348 100644 --- a/opentelemetry-api/tests/trace/propagation/test_textmap.py +++ b/opentelemetry-api/tests/trace/propagation/test_textmap.py @@ -14,7 +14,7 @@ import unittest -from opentelemetry.trace.propagation.textmap import DictGetter +from opentelemetry.propagators.textmap import DictGetter class TestDictGetter(unittest.TestCase): diff --git a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py index 0b20fbff4bf..680f8b4ce09 100644 --- a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py +++ b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py @@ -17,8 +17,8 @@ from unittest.mock import Mock, patch from opentelemetry import trace +from opentelemetry.propagators.textmap import DictGetter from opentelemetry.trace.propagation import tracecontext -from opentelemetry.trace.propagation.textmap import DictGetter from opentelemetry.trace.span import TraceState FORMAT = tracecontext.TraceContextTextMapPropagator() @@ -187,8 +187,7 @@ def test_propagate_invalid_context(self): self.assertFalse("traceparent" in output) def test_tracestate_empty_header(self): - """Test tracestate with an additional empty header (should be ignored) - """ + """Test tracestate with an additional empty header (should be ignored)""" span = trace.get_current_span( FORMAT.extract( carrier_getter, @@ -203,8 +202,7 @@ def test_tracestate_empty_header(self): self.assertEqual(span.get_span_context().trace_state["foo"], "1") def test_tracestate_header_with_trailing_comma(self): - """Do not propagate invalid trace context. - """ + """Do not propagate invalid trace context.""" span = trace.get_current_span( FORMAT.extract( carrier_getter, @@ -219,8 +217,7 @@ def test_tracestate_header_with_trailing_comma(self): self.assertEqual(span.get_span_context().trace_state["foo"], "1") def test_tracestate_keys(self): - """Test for valid key patterns in the tracestate - """ + """Test for valid key patterns in the tracestate""" tracestate_value = ",".join( [ "1a-2f@foo=bar1", diff --git a/propagator/opentelemetry-propagator-b3/src/opentelemetry/propagators/b3/__init__.py b/propagator/opentelemetry-propagator-b3/src/opentelemetry/propagators/b3/__init__.py index e872cef9e6c..e9defd17d20 100644 --- a/propagator/opentelemetry-propagator-b3/src/opentelemetry/propagators/b3/__init__.py +++ b/propagator/opentelemetry-propagator-b3/src/opentelemetry/propagators/b3/__init__.py @@ -17,7 +17,7 @@ import opentelemetry.trace as trace from opentelemetry.context import Context -from opentelemetry.trace.propagation.textmap import ( +from opentelemetry.propagators.textmap import ( Getter, Setter, TextMapPropagator, diff --git a/propagator/opentelemetry-propagator-b3/tests/performance/benchmarks/trace/propagation/test_benchmark_b3_format.py b/propagator/opentelemetry-propagator-b3/tests/performance/benchmarks/trace/propagation/test_benchmark_b3_format.py index 843e6e96b0c..5048f495f06 100644 --- a/propagator/opentelemetry-propagator-b3/tests/performance/benchmarks/trace/propagation/test_benchmark_b3_format.py +++ b/propagator/opentelemetry-propagator-b3/tests/performance/benchmarks/trace/propagation/test_benchmark_b3_format.py @@ -14,7 +14,7 @@ import opentelemetry.propagators.b3 as b3_format import opentelemetry.sdk.trace as trace -from opentelemetry.trace.propagation.textmap import DictGetter +from opentelemetry.propagators.textmap import DictGetter FORMAT = b3_format.B3Format() diff --git a/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py b/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py index cbf19b02a2c..14d6acf6652 100644 --- a/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py +++ b/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py @@ -20,7 +20,7 @@ import opentelemetry.sdk.trace.id_generator as id_generator import opentelemetry.trace as trace_api from opentelemetry.context import get_current -from opentelemetry.trace.propagation.textmap import DictGetter +from opentelemetry.propagators.textmap import DictGetter FORMAT = b3_format.B3Format() diff --git a/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py b/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py index 67c7d716c96..b73963965b6 100644 --- a/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py +++ b/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py @@ -18,7 +18,7 @@ import opentelemetry.trace as trace from opentelemetry import baggage from opentelemetry.context import Context, get_current -from opentelemetry.trace.propagation.textmap import ( +from opentelemetry.propagators.textmap import ( Getter, Setter, TextMapPropagator, diff --git a/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py b/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py index 8512678aeee..8e7190d1cca 100644 --- a/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py +++ b/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py @@ -22,7 +22,7 @@ from opentelemetry.propagators import ( # pylint: disable=no-name-in-module jaeger, ) -from opentelemetry.trace.propagation.textmap import DictGetter +from opentelemetry.propagators.textmap import DictGetter FORMAT = jaeger.JaegerPropagator() diff --git a/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py b/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py index 1083e682633..7f3dff5d346 100644 --- a/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py +++ b/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py @@ -102,6 +102,7 @@ from opentelemetry.baggage import get_baggage, set_baggage from opentelemetry.context import Context, attach, detach, get_value, set_value from opentelemetry.propagate import get_global_textmap +from opentelemetry.propagators.textmap import DictGetter from opentelemetry.shim.opentracing_shim import util from opentelemetry.shim.opentracing_shim.version import __version__ from opentelemetry.trace import INVALID_SPAN_CONTEXT, DefaultSpan, Link @@ -112,7 +113,6 @@ get_current_span, set_span_in_context, ) -from opentelemetry.trace.propagation.textmap import DictGetter from opentelemetry.util.types import Attributes ValueT = TypeVar("ValueT", int, float, bool, str) diff --git a/tests/util/src/opentelemetry/test/mock_textmap.py b/tests/util/src/opentelemetry/test/mock_textmap.py index 50e40490b75..bd0e8cbd6b2 100644 --- a/tests/util/src/opentelemetry/test/mock_textmap.py +++ b/tests/util/src/opentelemetry/test/mock_textmap.py @@ -16,7 +16,7 @@ from opentelemetry import trace from opentelemetry.context import Context, get_current -from opentelemetry.trace.propagation.textmap import ( +from opentelemetry.propagators.textmap import ( Getter, Setter, TextMapPropagator, From 04c8d1d80fa2184487a687c240a619a3e10334b9 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 2 Mar 2021 12:42:11 -0800 Subject: [PATCH 2/4] add changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e09bf17a4b8..b2020715ab8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `BatchExportSpanProcessor` to `BatchSpanProcessor` and `SimpleExportSpanProcessor` to `SimpleSpanProcessor` ([#1656])(https://github.com/open-telemetry/opentelemetry-python/pull/1656) +- Moving `Getter`, `Setter` and `TextMapPropagator` out of `opentelemetry.trace.propagation` and + into `opentelemetry.propagators` + ([#165])(https://github.com/open-telemetry/opentelemetry-python/pull/165) ## [0.18b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v0.18b0) - 2021-02-16 From 834462941942229e308117220e1fa1fad7cb06e3 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 2 Mar 2021 13:03:18 -0800 Subject: [PATCH 3/4] fix missed import --- .../src/opentelemetry/trace/propagation/tracecontext.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py b/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py index 1838c7a4f85..e648338e2c2 100644 --- a/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py +++ b/opentelemetry-api/src/opentelemetry/trace/propagation/tracecontext.py @@ -17,7 +17,7 @@ import opentelemetry.trace as trace from opentelemetry.context.context import Context -from opentelemetry.propagate import textmap +from opentelemetry.propagators import textmap from opentelemetry.trace.span import TraceState From 6f7faa4d91212df75b4c387cb049c96e276a38ac Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Tue, 2 Mar 2021 13:08:06 -0800 Subject: [PATCH 4/4] update sha --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6a371b9de68..73baecb7851 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ env: # Otherwise, set variable to the commit of your branch on # opentelemetry-python-contrib which is compatible with these Core repo # changes. - CONTRIB_REPO_SHA: 3ceaa0ec08801a8efccee328a805c038f9a7648e + CONTRIB_REPO_SHA: 16ae58b341b960df52c1cf4541695164821b3638 jobs: build: