Skip to content

Commit 25edfef

Browse files
ocelotlalrex
andauthored
Make setters and getters optional (open-telemetry#1690)
Co-authored-by: alrex <aboten@lightstep.com>
1 parent c533ac1 commit 25edfef

File tree

25 files changed

+201
-192
lines changed

25 files changed

+201
-192
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ env:
1010
# Otherwise, set variable to the commit of your branch on
1111
# opentelemetry-python-contrib which is compatible with these Core repo
1212
# changes.
13-
CONTRIB_REPO_SHA: 5bc0fa1611502be47a1f4eb550fe255e4b707ba1
13+
CONTRIB_REPO_SHA: 0d12fa39523212e268ef435825af2039a876fd75
1414

1515
jobs:
1616
build:

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

77
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v0.18b0...HEAD)
8+
- Make setters and getters optional
9+
([#1690](https://github.com/open-telemetry/opentelemetry-python/pull/1690))
810

911
### Added
1012
- Document how to work with fork process web server models(Gunicorn, uWSGI etc...)

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
("py:class", "opentelemetry.trace._LinkBase",),
105105
# TODO: Understand why sphinx is not able to find this local class
106106
("py:class", "opentelemetry.propagators.textmap.TextMapPropagator",),
107-
("py:class", "opentelemetry.propagators.textmap.DictGetter",),
107+
("py:class", "opentelemetry.propagators.textmap.DefaultGetter",),
108108
("any", "opentelemetry.propagators.textmap.TextMapPropagator.extract",),
109109
("any", "opentelemetry.propagators.textmap.TextMapPropagator.inject",),
110110
]

docs/examples/auto-instrumentation/README.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ Manually instrumented server
3737
def server_request():
3838
with tracer.start_as_current_span(
3939
"server_request",
40-
context=propagators.extract(DictGetter(), request.headers
41-
),
40+
context=propagators.extract(request.headers),
4241
):
4342
print(request.args.get("param"))
4443
return "served"

docs/examples/auto-instrumentation/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737

3838
with tracer.start_as_current_span("client-server"):
3939
headers = {}
40-
propagators.inject(dict.__setitem__, headers)
40+
propagators.inject(headers)
4141
requested = get(
4242
"http://localhost:8082/server_request",
4343
params={"param": argv[1]},

docs/examples/auto-instrumentation/server_instrumented.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from opentelemetry import trace
1818
from opentelemetry.instrumentation.wsgi import collect_request_attributes
1919
from opentelemetry.propagate import extract
20-
from opentelemetry.propagators.textmap import DictGetter
2120
from opentelemetry.sdk.trace import TracerProvider
2221
from opentelemetry.sdk.trace.export import (
2322
ConsoleSpanExporter,
@@ -38,7 +37,7 @@
3837
def server_request():
3938
with tracer.start_as_current_span(
4039
"server_request",
41-
context=extract(DictGetter(), request.headers),
40+
context=extract(request.headers),
4241
kind=trace.SpanKind.SERVER,
4342
attributes=collect_request_attributes(request.environ),
4443
):

docs/examples/datadog_exporter/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747

4848
with tracer.start_as_current_span("client-server"):
4949
headers = {}
50-
inject(dict.__setitem__, headers)
50+
inject(headers)
5151
requested = get(
5252
"http://localhost:8082/server_request",
5353
params={"param": argv[1]},

docs/examples/django/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
with tracer.start_as_current_span("client-server"):
3838
headers = {}
39-
inject(dict.__setitem__, headers)
39+
inject(headers)
4040
requested = get(
4141
"http://localhost:8000",
4242
params={"param": argv[1]},

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class W3CBaggagePropagator(textmap.TextMapPropagator):
3131

3232
def extract(
3333
self,
34-
getter: textmap.Getter[textmap.TextMapPropagatorT],
35-
carrier: textmap.TextMapPropagatorT,
34+
carrier: textmap.CarrierT,
3635
context: typing.Optional[Context] = None,
36+
getter: textmap.Getter = textmap.default_getter,
3737
) -> Context:
3838
"""Extract Baggage from the carrier.
3939
@@ -73,9 +73,9 @@ def extract(
7373

7474
def inject(
7575
self,
76-
set_in_carrier: textmap.Setter[textmap.TextMapPropagatorT],
77-
carrier: textmap.TextMapPropagatorT,
76+
carrier: textmap.CarrierT,
7877
context: typing.Optional[Context] = None,
78+
setter: textmap.Setter = textmap.default_setter,
7979
) -> None:
8080
"""Injects Baggage into the carrier.
8181
@@ -87,7 +87,7 @@ def inject(
8787
return
8888

8989
baggage_string = _format_baggage(baggage_entries)
90-
set_in_carrier(carrier, self._BAGGAGE_HEADER_NAME, baggage_string)
90+
setter.set(carrier, self._BAGGAGE_HEADER_NAME, baggage_string)
9191

9292
@property
9393
def fields(self) -> typing.Set[str]:
@@ -103,8 +103,8 @@ def _format_baggage(baggage_entries: typing.Mapping[str, object]) -> str:
103103

104104

105105
def _extract_first_element(
106-
items: typing.Optional[typing.Iterable[textmap.TextMapPropagatorT]],
107-
) -> typing.Optional[textmap.TextMapPropagatorT]:
106+
items: typing.Optional[typing.Iterable[textmap.CarrierT]],
107+
) -> typing.Optional[textmap.CarrierT]:
108108
if items is None:
109109
return None
110110
return next(iter(items), None)

opentelemetry-api/src/opentelemetry/propagate/__init__.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,9 @@ def example_route():
8282

8383

8484
def extract(
85-
getter: textmap.Getter[textmap.TextMapPropagatorT],
86-
carrier: textmap.TextMapPropagatorT,
85+
carrier: textmap.CarrierT,
8786
context: typing.Optional[Context] = None,
87+
getter: textmap.Getter = textmap.default_getter,
8888
) -> Context:
8989
"""Uses the configured propagator to extract a Context from the carrier.
9090
@@ -99,26 +99,26 @@ def extract(
9999
context: an optional Context to use. Defaults to current
100100
context if not set.
101101
"""
102-
return get_global_textmap().extract(getter, carrier, context)
102+
return get_global_textmap().extract(carrier, context, getter=getter)
103103

104104

105105
def inject(
106-
set_in_carrier: textmap.Setter[textmap.TextMapPropagatorT],
107-
carrier: textmap.TextMapPropagatorT,
106+
carrier: textmap.CarrierT,
108107
context: typing.Optional[Context] = None,
108+
setter: textmap.Setter = textmap.default_setter,
109109
) -> None:
110110
"""Uses the configured propagator to inject a Context into the carrier.
111111
112112
Args:
113-
set_in_carrier: A setter function that can set values
114-
on the carrier.
115113
carrier: An object that contains a representation of HTTP
116-
headers. Should be paired with set_in_carrier, which
114+
headers. Should be paired with setter, which
117115
should know how to set header values on the carrier.
118-
context: an optional Context to use. Defaults to current
116+
context: An optional Context to use. Defaults to current
119117
context if not set.
118+
setter: An optional `Setter` object that can set values
119+
on the carrier.
120120
"""
121-
get_global_textmap().inject(set_in_carrier, carrier, context)
121+
get_global_textmap().inject(carrier, context=context, setter=setter)
122122

123123

124124
try:

0 commit comments

Comments
 (0)