Skip to content

Commit 21994df

Browse files
author
alrex
authored
Rename HTTPTextFormat to TextMapPropagator (#1085)
1 parent 50478c2 commit 21994df

File tree

17 files changed

+132
-136
lines changed

17 files changed

+132
-136
lines changed

docs/conf.py

+3-6
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,14 @@
103103
# with "class reference target not found: ObjectProxy".
104104
("py:class", "ObjectProxy"),
105105
# TODO: Understand why sphinx is not able to find this local class
106-
(
107-
"py:class",
108-
"opentelemetry.trace.propagation.httptextformat.HTTPTextFormat",
109-
),
106+
("py:class", "opentelemetry.trace.propagation.textmap.TextMapPropagator",),
110107
(
111108
"any",
112-
"opentelemetry.trace.propagation.httptextformat.HTTPTextFormat.extract",
109+
"opentelemetry.trace.propagation.textmap.TextMapPropagator.extract",
113110
),
114111
(
115112
"any",
116-
"opentelemetry.trace.propagation.httptextformat.HTTPTextFormat.inject",
113+
"opentelemetry.trace.propagation.textmap.TextMapPropagator.inject",
117114
),
118115
]
119116

docs/examples/datadog_exporter/server.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,19 @@
3535
)
3636

3737
# append Datadog format for propagation to and from Datadog instrumented services
38-
global_httptextformat = propagators.get_global_httptextformat()
38+
global_textmap = propagators.get_global_textmap()
3939
if isinstance(
40-
global_httptextformat, propagators.composite.CompositeHTTPPropagator
40+
global_textmap, propagators.composite.CompositeHTTPPropagator
4141
) and not any(
42-
isinstance(p, DatadogFormat) for p in global_httptextformat._propagators
42+
isinstance(p, DatadogFormat) for p in global_textmap._propagators
4343
):
44-
propagators.set_global_httptextformat(
44+
propagators.set_global_textmap(
4545
propagators.composite.CompositeHTTPPropagator(
46-
global_httptextformat._propagators + [DatadogFormat()]
46+
global_textmap._propagators + [DatadogFormat()]
4747
)
4848
)
4949
else:
50-
propagators.set_global_httptextformat(DatadogFormat())
50+
propagators.set_global_textmap(DatadogFormat())
5151

5252
tracer = trace.get_tracer(__name__)
5353

docs/getting-started.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ an example using Zipkin's `b3 propagation <https://github.com/openzipkin/b3-prop
194194
from opentelemetry import propagators
195195
from opentelemetry.sdk.trace.propagation.b3_format import B3Format
196196
197-
propagators.set_global_httptextformat(B3Format())
197+
propagators.set_global_textmap(B3Format())
198198
199199
200200
Adding Metrics

exporter/opentelemetry-exporter-datadog/src/opentelemetry/exporter/datadog/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
trace.get_tracer_provider().add_span_processor(span_processor)
5151
5252
# Optional: use Datadog format for propagation in distributed traces
53-
propagators.set_global_httptextformat(DatadogFormat())
53+
propagators.set_global_textmap(DatadogFormat())
5454
5555
with tracer.start_as_current_span("foo"):
5656
print("Hello world!")

exporter/opentelemetry-exporter-datadog/src/opentelemetry/exporter/datadog/propagator.py

+10-10
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,18 @@
1717
from opentelemetry import trace
1818
from opentelemetry.context import Context
1919
from opentelemetry.trace import get_current_span, set_span_in_context
20-
from opentelemetry.trace.propagation.httptextformat import (
20+
from opentelemetry.trace.propagation.textmap import (
2121
Getter,
22-
HTTPTextFormat,
23-
HTTPTextFormatT,
2422
Setter,
23+
TextMapPropagator,
24+
TextMapPropagatorT,
2525
)
2626

2727
# pylint:disable=relative-beyond-top-level
2828
from . import constants
2929

3030

31-
class DatadogFormat(HTTPTextFormat):
31+
class DatadogFormat(TextMapPropagator):
3232
"""Propagator for the Datadog HTTP header format.
3333
"""
3434

@@ -39,8 +39,8 @@ class DatadogFormat(HTTPTextFormat):
3939

4040
def extract(
4141
self,
42-
get_from_carrier: Getter[HTTPTextFormatT],
43-
carrier: HTTPTextFormatT,
42+
get_from_carrier: Getter[TextMapPropagatorT],
43+
carrier: TextMapPropagatorT,
4444
context: typing.Optional[Context] = None,
4545
) -> Context:
4646
trace_id = extract_first_element(
@@ -81,8 +81,8 @@ def extract(
8181

8282
def inject(
8383
self,
84-
set_in_carrier: Setter[HTTPTextFormatT],
85-
carrier: HTTPTextFormatT,
84+
set_in_carrier: Setter[TextMapPropagatorT],
85+
carrier: TextMapPropagatorT,
8686
context: typing.Optional[Context] = None,
8787
) -> None:
8888
span = get_current_span(context)
@@ -120,8 +120,8 @@ def format_span_id(span_id: int) -> str:
120120

121121

122122
def extract_first_element(
123-
items: typing.Iterable[HTTPTextFormatT],
124-
) -> typing.Optional[HTTPTextFormatT]:
123+
items: typing.Iterable[TextMapPropagatorT],
124+
) -> typing.Optional[TextMapPropagatorT]:
125125
if items is None:
126126
return None
127127
return next(iter(items), None)

instrumentation/opentelemetry-instrumentation-opentracing-shim/src/opentelemetry/instrumentation/opentracing_shim/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ def inject(self, span_context, format: object, carrier: object):
676676
if format not in self._supported_formats:
677677
raise UnsupportedFormatException
678678

679-
propagator = propagators.get_global_httptextformat()
679+
propagator = propagators.get_global_textmap()
680680

681681
ctx = set_span_in_context(DefaultSpan(span_context.unwrap()))
682682
propagator.inject(type(carrier).__setitem__, carrier, context=ctx)
@@ -710,7 +710,7 @@ def get_as_list(dict_object, key):
710710
value = dict_object.get(key)
711711
return [value] if value is not None else []
712712

713-
propagator = propagators.get_global_httptextformat()
713+
propagator = propagators.get_global_textmap()
714714
ctx = propagator.extract(get_as_list, carrier)
715715
span = get_current_span(ctx)
716716
if span is not None:

instrumentation/opentelemetry-instrumentation-opentracing-shim/tests/test_shim.py

+23-17
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
util,
3030
)
3131
from opentelemetry.sdk.trace import TracerProvider
32-
from opentelemetry.test.mock_httptextformat import (
33-
MockHTTPTextFormat,
34-
NOOPHTTPTextFormat,
32+
from opentelemetry.test.mock_textmap import (
33+
MockTextMapPropagator,
34+
NOOPTextMapPropagator,
3535
)
3636

3737

@@ -46,15 +46,15 @@ def setUp(self):
4646
@classmethod
4747
def setUpClass(cls):
4848
# Save current propagator to be restored on teardown.
49-
cls._previous_propagator = propagators.get_global_httptextformat()
49+
cls._previous_propagator = propagators.get_global_textmap()
5050

5151
# Set mock propagator for testing.
52-
propagators.set_global_httptextformat(MockHTTPTextFormat())
52+
propagators.set_global_textmap(MockTextMapPropagator())
5353

5454
@classmethod
5555
def tearDownClass(cls):
5656
# Restore previous propagator.
57-
propagators.set_global_httptextformat(cls._previous_propagator)
57+
propagators.set_global_textmap(cls._previous_propagator)
5858

5959
def test_shim_type(self):
6060
# Verify shim is an OpenTracing tracer.
@@ -482,8 +482,10 @@ def test_inject_http_headers(self):
482482

483483
headers = {}
484484
self.shim.inject(context, opentracing.Format.HTTP_HEADERS, headers)
485-
self.assertEqual(headers[MockHTTPTextFormat.TRACE_ID_KEY], str(1220))
486-
self.assertEqual(headers[MockHTTPTextFormat.SPAN_ID_KEY], str(7478))
485+
self.assertEqual(
486+
headers[MockTextMapPropagator.TRACE_ID_KEY], str(1220)
487+
)
488+
self.assertEqual(headers[MockTextMapPropagator.SPAN_ID_KEY], str(7478))
487489

488490
def test_inject_text_map(self):
489491
"""Test `inject()` method for Format.TEXT_MAP."""
@@ -496,8 +498,12 @@ def test_inject_text_map(self):
496498
# Verify Format.TEXT_MAP
497499
text_map = {}
498500
self.shim.inject(context, opentracing.Format.TEXT_MAP, text_map)
499-
self.assertEqual(text_map[MockHTTPTextFormat.TRACE_ID_KEY], str(1220))
500-
self.assertEqual(text_map[MockHTTPTextFormat.SPAN_ID_KEY], str(7478))
501+
self.assertEqual(
502+
text_map[MockTextMapPropagator.TRACE_ID_KEY], str(1220)
503+
)
504+
self.assertEqual(
505+
text_map[MockTextMapPropagator.SPAN_ID_KEY], str(7478)
506+
)
501507

502508
def test_inject_binary(self):
503509
"""Test `inject()` method for Format.BINARY."""
@@ -515,8 +521,8 @@ def test_extract_http_headers(self):
515521
"""Test `extract()` method for Format.HTTP_HEADERS."""
516522

517523
carrier = {
518-
MockHTTPTextFormat.TRACE_ID_KEY: 1220,
519-
MockHTTPTextFormat.SPAN_ID_KEY: 7478,
524+
MockTextMapPropagator.TRACE_ID_KEY: 1220,
525+
MockTextMapPropagator.SPAN_ID_KEY: 7478,
520526
}
521527

522528
ctx = self.shim.extract(opentracing.Format.HTTP_HEADERS, carrier)
@@ -527,22 +533,22 @@ def test_extract_empty_context_returns_invalid_context(self):
527533
"""In the case where the propagator cannot extract a
528534
SpanContext, extract should return and invalid span context.
529535
"""
530-
_old_propagator = propagators.get_global_httptextformat()
531-
propagators.set_global_httptextformat(NOOPHTTPTextFormat())
536+
_old_propagator = propagators.get_global_textmap()
537+
propagators.set_global_textmap(NOOPTextMapPropagator())
532538
try:
533539
carrier = {}
534540

535541
ctx = self.shim.extract(opentracing.Format.HTTP_HEADERS, carrier)
536542
self.assertEqual(ctx.unwrap(), trace.INVALID_SPAN_CONTEXT)
537543
finally:
538-
propagators.set_global_httptextformat(_old_propagator)
544+
propagators.set_global_textmap(_old_propagator)
539545

540546
def test_extract_text_map(self):
541547
"""Test `extract()` method for Format.TEXT_MAP."""
542548

543549
carrier = {
544-
MockHTTPTextFormat.TRACE_ID_KEY: 1220,
545-
MockHTTPTextFormat.SPAN_ID_KEY: 7478,
550+
MockTextMapPropagator.TRACE_ID_KEY: 1220,
551+
MockTextMapPropagator.SPAN_ID_KEY: 7478,
546552
}
547553

548554
ctx = self.shim.extract(opentracing.Format.TEXT_MAP, carrier)

instrumentation/opentelemetry-instrumentation-requests/tests/test_requests_integration.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from opentelemetry import context, propagators, trace
2323
from opentelemetry.instrumentation.requests import RequestsInstrumentor
2424
from opentelemetry.sdk import resources
25-
from opentelemetry.test.mock_httptextformat import MockHTTPTextFormat
25+
from opentelemetry.test.mock_textmap import MockTextMapPropagator
2626
from opentelemetry.test.test_base import TestBase
2727
from opentelemetry.trace.status import StatusCanonicalCode
2828

@@ -148,28 +148,28 @@ def test_suppress_instrumentation(self):
148148
self.assert_span(num_spans=0)
149149

150150
def test_distributed_context(self):
151-
previous_propagator = propagators.get_global_httptextformat()
151+
previous_propagator = propagators.get_global_textmap()
152152
try:
153-
propagators.set_global_httptextformat(MockHTTPTextFormat())
153+
propagators.set_global_textmap(MockTextMapPropagator())
154154
result = self.perform_request(self.URL)
155155
self.assertEqual(result.text, "Hello!")
156156

157157
span = self.assert_span()
158158

159159
headers = dict(httpretty.last_request().headers)
160-
self.assertIn(MockHTTPTextFormat.TRACE_ID_KEY, headers)
160+
self.assertIn(MockTextMapPropagator.TRACE_ID_KEY, headers)
161161
self.assertEqual(
162162
str(span.get_context().trace_id),
163-
headers[MockHTTPTextFormat.TRACE_ID_KEY],
163+
headers[MockTextMapPropagator.TRACE_ID_KEY],
164164
)
165-
self.assertIn(MockHTTPTextFormat.SPAN_ID_KEY, headers)
165+
self.assertIn(MockTextMapPropagator.SPAN_ID_KEY, headers)
166166
self.assertEqual(
167167
str(span.get_context().span_id),
168-
headers[MockHTTPTextFormat.SPAN_ID_KEY],
168+
headers[MockTextMapPropagator.SPAN_ID_KEY],
169169
)
170170

171171
finally:
172-
propagators.set_global_httptextformat(previous_propagator)
172+
propagators.set_global_textmap(previous_propagator)
173173

174174
def test_span_callback(self):
175175
RequestsInstrumentor().uninstrument()

opentelemetry-api/CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
([#1045](https://github.com/open-telemetry/opentelemetry-python/pull/1045))
1515
- Rename CorrelationContext to Baggage
1616
([#1060](https://github.com/open-telemetry/opentelemetry-python/pull/1060))
17+
- Rename HTTPTextFormat to TextMapPropagator. This change also updates `get_global_httptextformat` and
18+
`set_global_httptextformat` to `get_global_textmap` and `set_global_textmap`
19+
([#1085](https://github.com/open-telemetry/opentelemetry-python/pull/1085))
1720

1821
## Version 0.12b0
1922

opentelemetry-api/src/opentelemetry/baggage/propagation/__init__.py

+10-12
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,25 @@
1818
from opentelemetry import baggage
1919
from opentelemetry.context import get_current
2020
from opentelemetry.context.context import Context
21-
from opentelemetry.trace.propagation import httptextformat
21+
from opentelemetry.trace.propagation import textmap
2222

2323

24-
class BaggagePropagator(httptextformat.HTTPTextFormat):
24+
class BaggagePropagator(textmap.TextMapPropagator):
2525
MAX_HEADER_LENGTH = 8192
2626
MAX_PAIR_LENGTH = 4096
2727
MAX_PAIRS = 180
2828
_BAGGAGE_HEADER_NAME = "otcorrelations"
2929

3030
def extract(
3131
self,
32-
get_from_carrier: httptextformat.Getter[
33-
httptextformat.HTTPTextFormatT
34-
],
35-
carrier: httptextformat.HTTPTextFormatT,
32+
get_from_carrier: textmap.Getter[textmap.TextMapPropagatorT],
33+
carrier: textmap.TextMapPropagatorT,
3634
context: typing.Optional[Context] = None,
3735
) -> Context:
3836
"""Extract Baggage from the carrier.
3937
4038
See
41-
`opentelemetry.trace.propagation.httptextformat.HTTPTextFormat.extract`
39+
`opentelemetry.trace.propagation.textmap.TextMapPropagator.extract`
4240
"""
4341

4442
if context is None:
@@ -73,14 +71,14 @@ def extract(
7371

7472
def inject(
7573
self,
76-
set_in_carrier: httptextformat.Setter[httptextformat.HTTPTextFormatT],
77-
carrier: httptextformat.HTTPTextFormatT,
74+
set_in_carrier: textmap.Setter[textmap.TextMapPropagatorT],
75+
carrier: textmap.TextMapPropagatorT,
7876
context: typing.Optional[Context] = None,
7977
) -> None:
8078
"""Injects Baggage into the carrier.
8179
8280
See
83-
`opentelemetry.trace.propagation.httptextformat.HTTPTextFormat.inject`
81+
`opentelemetry.trace.propagation.textmap.TextMapPropagator.inject`
8482
"""
8583
baggage_entries = baggage.get_all(context=context)
8684
if not baggage_entries:
@@ -100,8 +98,8 @@ def _format_baggage(baggage_entries: typing.Mapping[str, object]) -> str:
10098

10199

102100
def _extract_first_element(
103-
items: typing.Iterable[httptextformat.HTTPTextFormatT],
104-
) -> typing.Optional[httptextformat.HTTPTextFormatT]:
101+
items: typing.Iterable[textmap.TextMapPropagatorT],
102+
) -> typing.Optional[textmap.TextMapPropagatorT]:
105103
if items is None:
106104
return None
107105
return next(iter(items), None)

0 commit comments

Comments
 (0)