Skip to content

Commit 63b6e22

Browse files
committed
Merge branch 'main' into merge_main_2
2 parents 589ba99 + a746d57 commit 63b6e22

File tree

43 files changed

+320
-259
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+320
-259
lines changed

.github/workflows/test.yml

Lines changed: 13 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,14 @@ 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: 36275f3cbf00c2021caa1d922bd98215c50b9af3
13+
CONTRIB_REPO_SHA: 4a4d889b1876323d7f70507b5e4d079f454fe0d6
14+
# This is needed because we do not clone the core repo in contrib builds anymore.
15+
# When running contrib builds as part of core builds, we use actions/checkout@v2 which
16+
# does not set an environment variable (simply just runs tox), which is different when
17+
# contrib builds are run directly from contrib (since test.yml is executed, which sets CORE_REPO_SHA)
18+
# The solution is to include CORE_REPO_SHA as part of THIS environment so it can be accessed
19+
# from within the contrib build.
20+
CORE_REPO_SHA: ${{ github.sha }}
1421

1522
jobs:
1623
build:
@@ -104,19 +111,19 @@ jobs:
104111
key: v2-tox-cache-${{ matrix.tox-environment }}-${{ hashFiles('tox.ini', 'dev-requirements.txt') }}-core
105112
- name: run tox
106113
run: tox -e ${{ matrix.tox-environment }}
114+
115+
# Contrib unit test suite in order to ensure changes in core do not break anything in contrib.
116+
# We only run contrib unit tests on the oldest supported Python version (3.6) as running the same tests
117+
# on all versions is somewhat redundant.
107118
contrib-build:
108119
env:
109120
# We use these variables to convert between tox and GHA version literals
110121
py36: 3.6
111-
py37: 3.7
112-
py38: 3.8
113-
py39: 3.9
114-
pypy3: pypy3
115122
runs-on: ${{ matrix.os }}
116123
strategy:
117124
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
118125
matrix:
119-
python-version: [ py36, py37, py38, py39, pypy3 ]
126+
python-version: [ py36 ]
120127
package: ["instrumentation", "exporter"]
121128
os: [ ubuntu-20.04]
122129
steps:
@@ -147,38 +154,3 @@ jobs:
147154
key: v2-tox-cache-${{ matrix.python-version }}-${{ matrix.package }}-${{ matrix.os }}-${{ hashFiles('tox.ini', 'dev-requirements.txt') }}-contrib
148155
- name: run tox
149156
run: tox -f ${{ matrix.python-version }}-${{ matrix.package }}
150-
contrib-misc:
151-
strategy:
152-
fail-fast: false
153-
matrix:
154-
tox-environment: [ "docker-tests"]
155-
name: ${{ matrix.tox-environment }}
156-
runs-on: ubuntu-20.04
157-
steps:
158-
- name: Checkout Contrib Repo @ SHA - ${{ env.CONTRIB_REPO_SHA }}
159-
uses: actions/checkout@v2
160-
with:
161-
repository: open-telemetry/opentelemetry-python-contrib
162-
ref: ${{ env.CONTRIB_REPO_SHA }}
163-
- name: Checkout Core Repo @ SHA ${{ github.sha }}
164-
uses: actions/checkout@v2
165-
with:
166-
repository: open-telemetry/opentelemetry-python
167-
path: opentelemetry-python-core
168-
- name: Set up Python
169-
uses: actions/setup-python@v2
170-
with:
171-
python-version: 3.9
172-
architecture: 'x64'
173-
- name: Install tox
174-
run: pip install -U tox
175-
- name: Cache tox environment
176-
# Preserves .tox directory between runs for faster installs
177-
uses: actions/cache@v2
178-
with:
179-
path: |
180-
.tox
181-
~/.cache/pip
182-
key: v2-tox-cache-${{ matrix.tox-environment }}-${{ hashFiles('tox.ini', 'dev-requirements.txt') }}-contrib
183-
- name: run tox
184-
run: tox -e ${{ matrix.tox-environment }}

CHANGELOG.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ All notable changes to this project will be documented in this file.
44
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

7-
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.5.0-0.24b0...HEAD)
8-
<<<<<<< HEAD
7+
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.6.0-0.25b0...HEAD)
98

109
- Make Measurement a concrete class
1110
([#2153](https://github.com/open-telemetry/opentelemetry-python/pull/2153))
1211
- Add metrics API
1312
([#1887](https://github.com/open-telemetry/opentelemetry-python/pull/1887))
13+
14+
## [1.6.0-0.25b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.6.0-0.25b0) - 2021-10-13
15+
1416
- Fix race in `set_tracer_provider()`
1517
([#2182](https://github.com/open-telemetry/opentelemetry-python/pull/2182))
1618
- Automatically load OTEL environment variables as options for `opentelemetry-instrument`
@@ -39,6 +41,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3941
([#2145](https://github.com/open-telemetry/opentelemetry-python/pull/2145))
4042
- Add `schema_url` to `TracerProvider.get_tracer`
4143
([#2154](https://github.com/open-telemetry/opentelemetry-python/pull/2154))
44+
- Make baggage implementation w3c spec complaint
45+
([#2167](https://github.com/open-telemetry/opentelemetry-python/pull/2167))
46+
- Add name to `BatchSpanProcessor` worker thread
47+
([#2186](https://github.com/open-telemetry/opentelemetry-python/pull/2186))
4248

4349
## [1.5.0-0.24b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.5.0-0.24b0) - 2021-08-26
4450

eachdist.ini

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ sortfirst=
1212
exporter/*
1313

1414
[stable]
15-
version=1.5.0
15+
version=1.6.0
1616

1717
packages=
1818
opentelemetry-sdk
@@ -31,7 +31,7 @@ packages=
3131
opentelemetry-api
3232

3333
[prerelease]
34-
version=0.24b0
34+
version=0.25b0
3535

3636
packages=
3737
opentelemetry-opentracing-shim

exporter/opentelemetry-exporter-jaeger-proto-grpc/src/opentelemetry/exporter/jaeger/proto/grpc/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
__version__ = "1.5.0"
16+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-jaeger-thrift/src/opentelemetry/exporter/jaeger/thrift/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
__version__ = "1.5.0"
16+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-jaeger/setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ python_requires = >=3.6
3939

4040
packages=find_namespace:
4141
install_requires =
42-
opentelemetry-exporter-jaeger-proto-grpc == 1.5.0
43-
opentelemetry-exporter-jaeger-thrift == 1.5.0
42+
opentelemetry-exporter-jaeger-proto-grpc == 1.6.0
43+
opentelemetry-exporter-jaeger-thrift == 1.6.0
4444

4545
[options.extras_require]
4646
test =

exporter/opentelemetry-exporter-jaeger/src/opentelemetry/exporter/jaeger/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
__version__ = "1.5.0"
16+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.24b0"
15+
__version__ = "0.25b0"

exporter/opentelemetry-exporter-otlp-proto-grpc/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ install_requires =
4343
googleapis-common-protos ~= 1.52
4444
opentelemetry-api ~= 1.3
4545
opentelemetry-sdk ~= 1.3
46-
opentelemetry-proto == 1.5.0
46+
opentelemetry-proto == 1.6.0
4747
backoff ~= 1.10.0
4848

4949
[options.extras_require]

exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-otlp-proto-http/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ install_requires =
4343
googleapis-common-protos ~= 1.52
4444
opentelemetry-api ~= 1.3
4545
opentelemetry-sdk ~= 1.3
46-
opentelemetry-proto == 1.5.0
46+
opentelemetry-proto == 1.6.0
4747
backoff ~= 1.10.0
4848

4949
[options.extras_require]

exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-otlp/setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ classifiers =
3838
python_requires = >=3.6
3939
packages=find_namespace:
4040
install_requires =
41-
opentelemetry-exporter-otlp-proto-grpc == 1.5.0
42-
opentelemetry-exporter-otlp-proto-http == 1.5.0
41+
opentelemetry-exporter-otlp-proto-grpc == 1.6.0
42+
opentelemetry-exporter-otlp-proto-http == 1.6.0
4343

4444
[options.entry_points]
4545
opentelemetry_traces_exporter =

exporter/opentelemetry-exporter-otlp/src/opentelemetry/exporter/otlp/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-zipkin-proto-http/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ install_requires =
4545
requests ~= 2.7
4646
opentelemetry-api ~= 1.3
4747
opentelemetry-sdk ~= 1.3
48-
opentelemetry-exporter-zipkin-json == 1.5.0
48+
opentelemetry-exporter-zipkin-json == 1.6.0
4949

5050
[options.packages.find]
5151
where = src

exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

exporter/opentelemetry-exporter-zipkin/setup.cfg

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ classifiers =
3838
python_requires = >=3.6
3939
packages=find_namespace:
4040
install_requires =
41-
opentelemetry-exporter-zipkin-json == 1.5.0
42-
opentelemetry-exporter-zipkin-proto-http == 1.5.0
41+
opentelemetry-exporter-zipkin-json == 1.6.0
42+
opentelemetry-exporter-zipkin-proto-http == 1.6.0
4343

4444
[options.extras_require]
4545
test =

exporter/opentelemetry-exporter-zipkin/src/opentelemetry/exporter/zipkin/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.5.0"
15+
__version__ = "1.6.0"

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

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,30 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
import typing
15+
from logging import getLogger
16+
from re import compile
1617
from types import MappingProxyType
18+
from typing import Mapping, Optional
1719

1820
from opentelemetry.context import create_key, get_value, set_value
1921
from opentelemetry.context.context import Context
22+
from opentelemetry.util.re import (
23+
_BAGGAGE_PROPERTY_FORMAT,
24+
_KEY_FORMAT,
25+
_VALUE_FORMAT,
26+
)
2027

2128
_BAGGAGE_KEY = create_key("baggage")
29+
_logger = getLogger(__name__)
30+
31+
_KEY_PATTERN = compile(_KEY_FORMAT)
32+
_VALUE_PATTERN = compile(_VALUE_FORMAT)
33+
_PROPERT_PATTERN = compile(_BAGGAGE_PROPERTY_FORMAT)
2234

2335

2436
def get_all(
25-
context: typing.Optional[Context] = None,
26-
) -> typing.Mapping[str, object]:
37+
context: Optional[Context] = None,
38+
) -> Mapping[str, object]:
2739
"""Returns the name/value pairs in the Baggage
2840
2941
Args:
@@ -39,8 +51,8 @@ def get_all(
3951

4052

4153
def get_baggage(
42-
name: str, context: typing.Optional[Context] = None
43-
) -> typing.Optional[object]:
54+
name: str, context: Optional[Context] = None
55+
) -> Optional[object]:
4456
"""Provides access to the value for a name/value pair in the
4557
Baggage
4658
@@ -56,7 +68,7 @@ def get_baggage(
5668

5769

5870
def set_baggage(
59-
name: str, value: object, context: typing.Optional[Context] = None
71+
name: str, value: object, context: Optional[Context] = None
6072
) -> Context:
6173
"""Sets a value in the Baggage
6274
@@ -69,13 +81,20 @@ def set_baggage(
6981
A Context with the value updated
7082
"""
7183
baggage = dict(get_all(context=context))
72-
baggage[name] = value
84+
if not _is_valid_key(name):
85+
_logger.warning(
86+
"Baggage key `%s` does not match format, ignoring", name
87+
)
88+
elif not _is_valid_value(str(value)):
89+
_logger.warning(
90+
"Baggage value `%s` does not match format, ignoring", value
91+
)
92+
else:
93+
baggage[name] = value
7394
return set_value(_BAGGAGE_KEY, baggage, context=context)
7495

7596

76-
def remove_baggage(
77-
name: str, context: typing.Optional[Context] = None
78-
) -> Context:
97+
def remove_baggage(name: str, context: Optional[Context] = None) -> Context:
7998
"""Removes a value from the Baggage
8099
81100
Args:
@@ -91,7 +110,7 @@ def remove_baggage(
91110
return set_value(_BAGGAGE_KEY, baggage, context=context)
92111

93112

94-
def clear(context: typing.Optional[Context] = None) -> Context:
113+
def clear(context: Optional[Context] = None) -> Context:
95114
"""Removes all values from the Baggage
96115
97116
Args:
@@ -101,3 +120,22 @@ def clear(context: typing.Optional[Context] = None) -> Context:
101120
A Context with all baggage entries removed
102121
"""
103122
return set_value(_BAGGAGE_KEY, {}, context=context)
123+
124+
125+
def _is_valid_key(name: str) -> bool:
126+
return _KEY_PATTERN.fullmatch(str(name)) is not None
127+
128+
129+
def _is_valid_value(value: object) -> bool:
130+
parts = str(value).split(";")
131+
is_valid_value = _VALUE_PATTERN.fullmatch(parts[0]) is not None
132+
if len(parts) > 1: # one or more properties metadata
133+
for property in parts[1:]:
134+
if _PROPERT_PATTERN.fullmatch(property) is None:
135+
is_valid_value = False
136+
break
137+
return is_valid_value
138+
139+
140+
def _is_valid_pair(key: str, value: str) -> bool:
141+
return _is_valid_key(key) and _is_valid_value(value)

0 commit comments

Comments
 (0)