Skip to content

Commit a5db459

Browse files
authored
Merge branch 'main' into django-asgi
2 parents 8e0aca6 + b8fe7fc commit a5db459

File tree

168 files changed

+2518
-2624
lines changed

Some content is hidden

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

168 files changed

+2518
-2624
lines changed

.github/workflows/publish.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Publish
22

33
on:
44
release:
5-
types: [created]
5+
types: [published]
66

77
jobs:
88
publish:

.github/workflows/test.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
- 'release/*'
77
pull_request:
88
env:
9-
CORE_REPO_SHA: c4cdffd0c8bd47b2e5c4f4a823722ca514f10db3
9+
CORE_REPO_SHA: 1c8449dee58b702b2505e2aefeb3c4106d1e33cf
1010

1111
jobs:
1212
build:

CHANGELOG.md

+46-5
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,24 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.3.0-0.22b0...HEAD)
9-
- `opentelemetry-sdk-extension-aws` Update AWS entry points to match spec
10-
([#566](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/566))
11-
- Include Flask 2.0 as compatible with existing flask instrumentation
12-
([#545](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/545))
8+
## [Unreleased](https://github.com/open-telemetry/opentelemetry-python/compare/v1.4.0-0.23b0...HEAD)
9+
10+
### Added
11+
- `opentelemetry-sdk-extension-aws` Add AWS resource detectors to extension package
12+
([#586](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/586))
13+
- `opentelemetry-instrumentation-asgi`, `opentelemetry-instrumentation-aiohttp-client`, `openetelemetry-instrumentation-fastapi`,
14+
`opentelemetry-instrumentation-starlette`, `opentelemetry-instrumentation-urllib`, `opentelemetry-instrumentation-urllib3` Added `request_hook` and `response_hook` callbacks
15+
([#576](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/576))
16+
17+
### Changed
18+
- Enable explicit `excluded_urls` argument in `opentelemetry-instrumentation-flask`
19+
([#604](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/604))
20+
21+
## [1.4.0-0.23b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.4.0-0.23b0) - 2021-07-21
22+
23+
### Removed
24+
- Move `opentelemetry-instrumentation` to the core repo.
25+
([#595](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/595))
1326

1427
### Changed
1528
- `opentelemetry-instrumentation-tornado` properly instrument work done in tornado on_finish method.
@@ -23,10 +36,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2336
([#538](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/538))
2437
- Changed the psycopg2-binary to psycopg2 as dependency in production
2538
([#543](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/543))
39+
- Implement consistent way of checking if instrumentation is already active
40+
([#549](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/549))
2641
- Require aiopg to be less than 1.3.0
2742
([#560](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/560))
2843
- `opentelemetry-instrumentation-django` Migrated Django middleware to new-style.
2944
([#533](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/533))
45+
- Updating dependency for opentelemetry api/sdk packages to support major version instead
46+
of pinning to specific versions.
47+
([#567](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/567))
48+
- `opentelemetry-instrumentation-grpc` Respect the suppress instrumentation in gRPC client instrumentor
49+
([#559](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/559))
50+
- `opentelemetry-instrumentation-grpc` Fixed asynchonous unary call traces
51+
([#536](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/536))
52+
- `opentelemetry-sdk-extension-aws` Update AWS entry points to match spec
53+
([#566](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/566))
54+
- Include Flask 2.0 as compatible with existing flask instrumentation
55+
([#545](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/545))
56+
- `openelemetry-sdk-extension-aws` Take a dependency on `opentelemetry-sdk`
57+
([#558](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/558))
58+
- Change `opentelemetry-instrumentation-httpx` to replace `client` classes with instrumented versions.
59+
([#577](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/577))
60+
- `opentelemetry-instrumentation-requests` Fix potential `AttributeError` when `requests`
61+
is used with a custom transport adapter.
62+
([#562](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/562))
63+
- `opentelemetry-instrumentation-django` Fix AttributeError: ResolverMatch object has no attribute route
64+
([#581](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/581))
65+
- `opentelemetry-instrumentation-botocore` Suppress botocore downstream instrumentation like urllib3
66+
([#563](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/563))
67+
- `opentelemetry-exporter-datadog` Datadog exporter should not use `unknown_service` as fallback resource service name.
68+
([#570](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/570))
69+
- Add support for the async extension of SQLAlchemy (>= 1.4)
70+
([#568](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/568))
3071

3172
### Added
3273
- `opentelemetry-instrumentation-httpx` Add `httpx` instrumentation

README.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,24 @@ See [CONTRIBUTING.md](CONTRIBUTING.md)
7272

7373
We meet weekly on Thursday, and the time of the meeting alternates between 9AM PT and 4PM PT. The meeting is subject to change depending on contributors' availability. Check the [OpenTelemetry community calendar](https://calendar.google.com/calendar/embed?src=google.com_b79e3e90j7bbsa2n2p5an5lf60%40group.calendar.google.com) for specific dates.
7474

75-
Meetings take place via [Zoom video conference](https://zoom.us/j/6729396170). The passcode is _77777_.
75+
Meetings take place via [Zoom video conference](https://zoom.us/j/8287234601?pwd=YjN2MURycXc4cEZlYTRtYjJaM0grZz09). The passcode is _77777_.
7676

7777
Meeting notes are available as a public [Google doc](https://docs.google.com/document/d/1CIMGoIOZ-c3-igzbd6_Pnxx1SjAkjwqoYSUWxPY8XIs/edit). For edit access, get in touch on [GitHub Discussions](https://github.com/open-telemetry/opentelemetry-python/discussions).
7878

7979
Approvers ([@open-telemetry/python-approvers](https://github.com/orgs/open-telemetry/teams/python-approvers)):
8080

8181
- [Aaron Abbott](https://github.com/aabmass), Google
82-
- [Diego Hurtado](https://github.com/ocelotl), Lightstep
83-
- [Owais Lone](https://github.com/owais), Splunk
82+
- [Alex Boten](https://github.com/codeboten), Lightstep
83+
- [Nathaniel Ruiz Nowell](https://github.com/NathanielRN), AWS
84+
- [Srikanth Chekuri](https://github.com/lonewolf3739)
8485

8586
*Find more about the approver role in [community repository](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver).*
8687

8788
Maintainers ([@open-telemetry/python-maintainers](https://github.com/orgs/open-telemetry/teams/python-maintainers)):
8889

89-
- [Alex Boten](https://github.com/codeboten), Lightstep
90+
- [Diego Hurtado](https://github.com/ocelotl), Lightstep
9091
- [Leighton Chen](https://github.com/lzchen), Microsoft
92+
- [Owais Lone](https://github.com/owais), Splunk
9193

9294
*Find more about the maintainer role in [community repository](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer).*
9395

_template/setup.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ package_dir=
4545
packages=find_namespace:
4646

4747
install_requires =
48-
opentelemetry-api == 1.4.0.dev0
48+
opentelemetry-api ~= 1.3
4949

5050
[options.extras_require]
5151
test =

_template/version.py

+1-1
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.23.dev0"
15+
__version__ = "0.24.dev0"

docs-requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ sphinx-autodoc-typehints
66
# doesn't work for pkg_resources.
77
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-api&subdirectory=opentelemetry-api"
88
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions"
9-
-e "git+https://github.com/open-telemetry/opentelemetry-python-contrib.git#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
9+
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
1010
-e "git+https://github.com/open-telemetry/opentelemetry-python.git#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk"
1111
-e "git+https://github.com/open-telemetry/opentelemetry-python-contrib.git#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http"
1212

docs/conf.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@
2525
settings.configure()
2626

2727
source_dirs = [
28-
os.path.abspath("../opentelemetry-instrumentation/src/"),
28+
os.path.abspath(
29+
"../opentelemetry-python-core/opentelemetry-instrumentation/src/"
30+
),
2931
]
3032

3133
exp = "../exporter"

eachdist.ini

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ sortfirst=
1717
ext/*
1818

1919
[stable]
20-
version=1.4.0.dev0
20+
version=1.4.0
2121

2222
packages=
2323
opentelemetry-sdk
@@ -35,7 +35,7 @@ packages=
3535
opentelemetry-api
3636

3737
[prerelease]
38-
version=0.23.dev0
38+
version=0.24.dev0
3939

4040
packages=
4141
all

exporter/opentelemetry-exporter-datadog/setup.cfg

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ package_dir=
3939
packages=find_namespace:
4040
install_requires =
4141
ddtrace>=0.34.0,<0.47.0
42-
opentelemetry-api == 1.4.0.dev0
43-
opentelemetry-sdk == 1.4.0.dev0
44-
opentelemetry-semantic-conventions == 0.23.dev0
42+
opentelemetry-api ~= 1.3
43+
opentelemetry-sdk ~= 1.3
44+
opentelemetry-semantic-conventions == 0.24.dev0
4545

4646
[options.packages.find]
4747
where = src

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

+9-5
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ def _translate_to_datadog(self, spans):
135135
[
136136
resource_tags,
137137
resource_service_name,
138-
] = _extract_tags_from_resource(span.resource)
138+
] = _extract_tags_from_resource(span.resource, self.service)
139139

140140
datadog_span = DatadogSpan(
141141
tracer,
142142
_get_span_name(span),
143-
service=resource_service_name or self.service,
143+
service=resource_service_name,
144144
resource=_get_resource(span),
145145
span_type=_get_span_type(span),
146146
trace_id=trace_id,
@@ -312,19 +312,23 @@ def _parse_tags_str(tags_str):
312312
return parsed_tags
313313

314314

315-
def _extract_tags_from_resource(resource):
315+
def _extract_tags_from_resource(resource, fallback_service_name):
316316
"""Parse tags from resource.attributes, except service.name which
317317
has special significance within datadog"""
318318
tags = {}
319-
service_name = None
320319
if not (resource and getattr(resource, "attributes", None)):
321-
return [tags, service_name]
320+
return [tags, fallback_service_name]
322321

322+
service_name = None
323323
for attribute_key, attribute_value in resource.attributes.items():
324324
if attribute_key == SERVICE_NAME_TAG:
325325
service_name = attribute_value
326326
else:
327327
tags[attribute_key] = attribute_value
328+
329+
if service_name is None or service_name == "unknown_service":
330+
service_name = fallback_service_name
331+
328332
return [tags, service_name]
329333

330334

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

+1-1
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.23.dev0"
15+
__version__ = "0.24.dev0"

exporter/opentelemetry-exporter-datadog/tests/test_datadog_exporter.py

+38
Original file line numberDiff line numberDiff line change
@@ -612,3 +612,41 @@ def test_sampling_rate(self):
612612
]
613613
expected = [0.5]
614614
self.assertListEqual(actual, expected)
615+
616+
def test_service_name_fallback(self):
617+
context = trace_api.SpanContext(
618+
trace_id=0x000000000000000000000000DEADBEEF,
619+
span_id=0x34BF92DEEFC58C92,
620+
is_remote=False,
621+
trace_flags=trace_api.TraceFlags(trace_api.TraceFlags.SAMPLED),
622+
)
623+
trace_api.get_tracer_provider().sampler = sampling.TraceIdRatioBased(
624+
0.5
625+
)
626+
627+
resource_with_default_name = Resource(
628+
attributes={
629+
"key_resource": "some_resource",
630+
"service.name": "unknown_service",
631+
}
632+
)
633+
634+
span = trace._Span(
635+
name="sampled",
636+
context=context,
637+
parent=None,
638+
resource=resource_with_default_name,
639+
)
640+
span.start()
641+
span.end()
642+
643+
# pylint: disable=protected-access
644+
exporter = datadog.DatadogSpanExporter(service="fallback_service_name")
645+
datadog_spans = [
646+
span.to_dict() for span in exporter._translate_to_datadog([span])
647+
]
648+
649+
self.assertEqual(len(datadog_spans), 1)
650+
651+
span = datadog_spans[0]
652+
self.assertEqual(span["service"], "fallback_service_name")

instrumentation/opentelemetry-instrumentation-aiohttp-client/setup.cfg

+4-4
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@ package_dir=
3838
=src
3939
packages=find_namespace:
4040
install_requires =
41-
opentelemetry-api == 1.4.0.dev0
42-
opentelemetry-semantic-conventions == 0.23.dev0
43-
opentelemetry-instrumentation == 0.23.dev0
44-
opentelemetry-util-http == 0.23.dev0
41+
opentelemetry-api ~= 1.3
42+
opentelemetry-semantic-conventions == 0.24.dev0
43+
opentelemetry-instrumentation == 0.24.dev0
44+
opentelemetry-util-http == 0.24.dev0
4545
wrapt >= 1.0.0, < 2.0.0
4646

4747
[options.packages.find]

0 commit comments

Comments
 (0)