feat: add support for aiobotocore instrumentation#4049
Conversation
|
@lukeina2z @yiyuan-he wdyt? |
d32315b to
d93357b
Compare
emdneto
left a comment
There was a problem hiding this comment.
I can imagine some ways to run tests separately for each package, but it requires some modifications to the tox.ini. In the way this is implemented, we need both packages installed to run tests
|
d93357b to
cd347e4
Compare
|
Could we also please have quick updates to the README and readthedocs about what's supported |
f80ec06 to
3f24703
Compare
@tammy-baylis-swi Done! |
a123507 to
6602525
Compare
xrmx
left a comment
There was a problem hiding this comment.
A bunch of nits but LGTM, thanks!
@xrmx Addressed all the comments. |
Automated update of OpenTelemetry dependencies. **Build Status:** ❌ [failure](https://github.com/aws-observability/aws-otel-python-instrumentation/actions/runs/27184408784) **Updated versions:** - [OpenTelemetry Python](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.42.1): 1.42.1 - [OpenTelemetry Contrib](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.63b1): 0.63b1 - [opentelemetry-sdk-extension-aws](https://pypi.org/project/opentelemetry-sdk-extension-aws/2.1.0/): 2.1.0 - [opentelemetry-propagator-aws-xray](https://pypi.org/project/opentelemetry-propagator-aws-xray/1.0.2/): 1.0.2 **Upstream releases with breaking changes:** Note: the mechanism to detect upstream breaking changes is not perfect. Be sure to check all new releases and understand if any additional changes need to be addressed. **opentelemetry-python-contrib:** - [Version 1.41.0/0.62b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.62b0) *Description of changes:* - Drops the `opentelemetry-instrumentation-boto` runtime dependency (legacy boto2 instrumentation), removed entirely upstream in: open-telemetry/opentelemetry-python-contrib#4303 - Drops Python 3.9 support to match upstream's new minimum (Python ≥3.10): open-telemetry/opentelemetry-python#5076 (core) and open-telemetry/opentelemetry-python-contrib#4412 (contrib) - Switches `from importlib_metadata import version` to stdlib `from importlib.metadata import version` after upstream dropped the third-party `importlib-metadata` package from `opentelemetry-api`: open-telemetry/opentelemetry-python#3234 - Refactors the botocore patches (`_botocore_patches.py`) to use the new `ExtensionRegistry` API. Upstream split `_KNOWN_EXTENSIONS` into `_BOTOCORE_EXTENSIONS` + `_AIOBOTOCORE_EXTENSIONS`, removed `_find_extension`, and moved `_safe_invoke` to `opentelemetry.instrumentation.botocore.utils` as part of adding aiobotocore instrumentation: open-telemetry/opentelemetry-python-contrib#4049 - Removes the Starlette ASGI `suppress_http_instrumentation` patch (which the existing ADOT TODO already flagged) since the ASGI middleware now natively honors `suppress_http_instrumentation` upstream: open-telemetry/opentelemetry-python-contrib#4375 - Adapts the configurator tests to upstream's renamed `BaggageSpanProcessor._baggage_key_predicate` → `_predicates` (now a list of callables, after the constructor was reworked to accept either a single predicate or a sequence): open-telemetry/opentelemetry-python-contrib#4371 - Adapts `test_otlp_attribute_vs_body_types` to upstream's `_VALID_ANY_VALUE_TYPES` switching `typing.Mapping`/`typing.Sequence` to `collections.abc.Mapping`/`collections.abc.Sequence`: open-telemetry/opentelemetry-python#5133 - Bumps the mysqlclient contract-test pin from `2.2.4` to `2.2.8` and updates the matching `db.name` assertion. The 0.62b0 dbapi semantic-convention migration (open-telemetry/opentelemetry-python-contrib#4109) added an empty-string filter inside `_set_db_name`, which exposed a latent gap: mysqlclient < 2.2.7 didn't expose a Python-level `conn.db` attribute (added upstream in PyMySQL/mysqlclient#752, shipped in mysqlclient 2.2.7), so OTel's dbapi instrumentation defaulted `database` to `""` and the empty value used to land on the span unconditionally. After 0.62b0 the empty value is dropped, so the assertion `db.name == ""` now fails with "key not found". Bumping mysqlclient lets `conn.db` flow through as the actual database name (`testdb`) so the assertion becomes meaningful. By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice. --------- Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: Steve Liu <liustve@amazon.com>
Description
Adds support for aiobotocore instrumentation, following the implementation approach outlined in issue #4048.
Type of change
Please delete options that are not relevant.
How Has This Been Tested?
Unit tests have been added.
Does This PR Require a Core Repo Change?
Checklist:
See contributing.md for styleguide, changelog guidelines, and more.