Skip to content

Hybrid core tracing rebased#1646

Open
hmstepanek wants to merge 95 commits intomainfrom
hybrid-core-tracing-rebased
Open

Hybrid core tracing rebased#1646
hmstepanek wants to merge 95 commits intomainfrom
hybrid-core-tracing-rebased

Conversation

@hmstepanek
Copy link
Contributor

Overview

Merge rebased develop-hybrid-core-tracing branch into main.

hmstepanek and others added 30 commits February 9, 2026 10:33
* Reorder inheritance on span nodes

Core tracing will be adding a bunch of logic to the span_event method which is called
via super on inheriting classes before those inheriting classes add additional
attributes. In order for the core tracing logic to work correctly, this inheritance
call order has to be reversed; the inheriting classes must first add the attributes
and THEN call super.

* Remove *args, **kwargs

* [MegaLinter] Apply linters fixes

---------

Co-authored-by: hmstepanek <30059933+hmstepanek@users.noreply.github.com>
* Fix removal of process attr call

* Add adaptive_sampling_target setting & fix logic

* Add a new setting: `distributed_tracing.sampler.adaptive_sampling_target` that can be
used to configure the sampling target.
* Previously the logic for remote parent sampled was slightly incorrect. The sampling
value from the tracestate header was used to determine remote parent sampled, instead of
from the parent header-this has been fixed. Additionally, the sampling value was only
grabbed from the trace state and newrelic headers if there was a priority-this has been
fixed too.
* Log statements have been added to assist with sampling debug.

---------

Co-authored-by: Lalleh Rafeei <84813886+lrafeei@users.noreply.github.com>
* Fix error when shutdown_agent called from harvest thread (#1552)

* fix(aiomysql): avoid wrapping pooled connections multiple times (#1553)

* fix(aiomysql): avoid wrapping pooled connections multiple times

* Move and rewrite regression test

* Tweak implementation of fix

---------

Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Fix structlog tests (#1556)

* Bump the github_actions group with 4 updates (#1555)

Bumps the github_actions group with 4 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact), [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) and [github/codeql-action](https://github.com/github/codeql-action).


Updates `actions/upload-artifact` from 4.6.2 to 5.0.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@ea165f8...330a01c)

Updates `actions/download-artifact` from 5.0.0 to 6.0.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@634f93c...018cc2c)

Updates `astral-sh/setup-uv` from 7.1.1 to 7.1.2
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@2ddd2b9...8585678)

Updates `github/codeql-action` from 4.30.9 to 4.31.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@16140ae...4e94bd1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github_actions
- dependency-name: actions/download-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github_actions
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
- dependency-name: github/codeql-action
  dependency-version: 4.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>

* Add instrumentation for new kinesis method (#1557)

* Add free-threaded Python to CI (#1562)

* Bump github/codeql-action in the github_actions group (#1566)

Bumps the github_actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 4.31.0 to 4.31.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@4e94bd1...0499de3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Region aware/ Claude 3+ bedrock support (#1561)

* Modify extractor logic.

* Add support for Claude Sonnet 3+ and region aware models.

* Update claude content extraction logic.

* Add support for Claude Sonnet 3+ and region aware models.

* Update claude content extraction logic.

* Add testing for aiobotocore.

* Restore newline.

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Fix notice_error logic for non-iterable exceptions. (#1564)

* Revert "Fix notice_error logic for non-iterable exceptions. (#1564)" (#1568)

This reverts commit b9d9d3b.

* Add additional trace points for AWS Kinesis (#1569)

* Enable environment variables for attribute filters (#1558)

* Enable env vars for attribute filters

* [MegaLinter] Apply linters fixes

* Trigger tests

* Change attribute filters to space delimited

* Fix test assertion

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Update version of cibuildwheel to latest (#1570)

* Force uv to use non-emulated Python on windows arm64 (#1567)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Add support 4 partial granularity tracing

* Move config consolidation into global settings

* [MegaLinter] Apply linters fixes

* Move inifinte tracing override to server side config

* [MegaLinter] Apply linters fixes

* Fix failing event loop tests

* Fixup: linter

* [MegaLinter] Apply linters fixes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: canonrock16 <35710450+canonrock16@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Lalleh Rafeei <84813886+lrafeei@users.noreply.github.com>
Co-authored-by: hmstepanek <30059933+hmstepanek@users.noreply.github.com>
* Fix error when shutdown_agent called from harvest thread (#1552)

* fix(aiomysql): avoid wrapping pooled connections multiple times (#1553)

* fix(aiomysql): avoid wrapping pooled connections multiple times

* Move and rewrite regression test

* Tweak implementation of fix

---------

Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Fix structlog tests (#1556)

* Bump the github_actions group with 4 updates (#1555)

Bumps the github_actions group with 4 updates: [actions/upload-artifact](https://github.com/actions/upload-artifact), [actions/download-artifact](https://github.com/actions/download-artifact), [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) and [github/codeql-action](https://github.com/github/codeql-action).

Updates `actions/upload-artifact` from 4.6.2 to 5.0.0
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@ea165f8...330a01c)

Updates `actions/download-artifact` from 5.0.0 to 6.0.0
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@634f93c...018cc2c)

Updates `astral-sh/setup-uv` from 7.1.1 to 7.1.2
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@2ddd2b9...8585678)

Updates `github/codeql-action` from 4.30.9 to 4.31.0
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@16140ae...4e94bd1)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github_actions
- dependency-name: actions/download-artifact
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github_actions
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
- dependency-name: github/codeql-action
  dependency-version: 4.31.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>

* Add instrumentation for new kinesis method (#1557)

* Add free-threaded Python to CI (#1562)

* Bump github/codeql-action in the github_actions group (#1566)

Bumps the github_actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).

Updates `github/codeql-action` from 4.31.0 to 4.31.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@4e94bd1...0499de3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.31.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Region aware/ Claude 3+ bedrock support (#1561)

* Modify extractor logic.

* Add support for Claude Sonnet 3+ and region aware models.

* Update claude content extraction logic.

* Add support for Claude Sonnet 3+ and region aware models.

* Update claude content extraction logic.

* Add testing for aiobotocore.

* Restore newline.

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Fix notice_error logic for non-iterable exceptions. (#1564)

* Revert "Fix notice_error logic for non-iterable exceptions. (#1564)" (#1568)

This reverts commit b9d9d3b.

* Add additional trace points for AWS Kinesis (#1569)

* Enable environment variables for attribute filters (#1558)

* Enable env vars for attribute filters

* [MegaLinter] Apply linters fixes

* Trigger tests

* Change attribute filters to space delimited

* Fix test assertion

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Update version of cibuildwheel to latest (#1570)

* Force uv to use non-emulated Python on windows arm64 (#1567)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Skip hypercorn tests for v0.18 (#1579)

* Skip hypercorn tests for v0.18

* Remove tornadomaster for 3.14

* Add support for *.adaptive.sampling_target

* Add adaptive sampler instances to SamplerProxy

* Fix instability in CI caused by health check tests (#1584)

* Bump the github_actions group across 1 directory with 5 updates (#1582)

Bumps the github_actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `5.0.0` | `5.0.1` |
| [docker/metadata-action](https://github.com/docker/metadata-action) | `5.8.0` | `5.9.0` |
| [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) | `3.6.0` | `3.7.0` |
| [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) | `7.1.2` | `7.1.3` |
| [github/codeql-action](https://github.com/github/codeql-action) | `4.31.2` | `4.31.3` |

Updates `actions/checkout` from 5.0.0 to 5.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@08c6903...93cb6ef)

Updates `docker/metadata-action` from 5.8.0 to 5.9.0
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](docker/metadata-action@c1e5197...318604b)

Updates `docker/setup-qemu-action` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](docker/setup-qemu-action@2910929...c7c5346)

Updates `astral-sh/setup-uv` from 7.1.2 to 7.1.3
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@8585678...5a7eac6)

Updates `github/codeql-action` from 4.31.2 to 4.31.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@0499de3...014f16e)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
- dependency-name: docker/metadata-action
  dependency-version: 5.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: docker/setup-qemu-action
  dependency-version: 3.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.1.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
- dependency-name: github/codeql-action
  dependency-version: 4.31.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Asyncio loop_factory fix (#1576)

* Runner instrumentation in asyncio

* Clean up asyncio instrumentation

* Add asyncio tests for loop_factory

* Modify uvicorn test for loop_factory

* Fix linter errors

* [MegaLinter] Apply linters fixes

* Apply suggestions from code review

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Fix issue in ASGI header consumption (#1578)

* Correct code for Sanic instrumentation

* Correct handling of headers in ASGIWebTransaction

* Correct handling of headers in ASGIBrowserMiddleware

* Add regression test for ASGI headers issues

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: canonrock16 <35710450+canonrock16@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Lalleh Rafeei <84813886+lrafeei@users.noreply.github.com>
* Add root config

* [MegaLinter] Apply linters fixes

---------

Co-authored-by: hmstepanek <30059933+hmstepanek@users.noreply.github.com>
* Initial otel trace/span implementation

* Add some hybrid cross agent tests

* Tweak some formatting and merge issues

* [MegaLinter] Apply linters fixes

* Fix application initialization bug

* [MegaLinter] Apply linters fixes

* Reviewer suggestions, part 1

* [MegaLinter] Apply linters fixes

* Fix hasattr syntax

* More reviewer suggestions/syntax fixes

* [MegaLinter] Apply linters fixes

* Apply suggestions from code review

Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>

* Reviewer suggestions, part 2

* Add fixture & enable/disable testing

* Log potential error instead of raising error

* Apply suggestions from code review

Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>

* Update newrelic/api/opentelemetry.py

Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>
…Bedrock support (#1580)

* Record the request message as the time the request started for LangChain.

* Tracking the original timestamp of the request for input messages that are
recorded as LlmChatCompletionMessage event types.

* First pass at preserving LlmChatCompletionMessage timestamp for the request
with Bedrock methods.

* the `kwargs` was being mapped directly to the OpenAI client
and having timestamp in there caused a problem. As a quick test,
only add the request timestamp after the wrapped function has been
invoked.

* Moved the request timestamp to its own variable instead of part of kwargs.

* OpenAI async request messages were not being assigned the correct timestamp.

* Trying to improve the passing of the request timestamp through for Bedrock.

* Passing too many parameters.

* Set a default role on input/output messages within LangChain.

* [MegaLinter] Apply linters fixes

* Fix request_timestamp for LlmChatCompletionSummary table

* Fix request_timestamp for LlmChatCompletionSummary table

* [MegaLinter] Apply linters fixes

* Bedrock Converse Streaming Support (#1565)

* Add more formatting to custom event validatators

* Add streamed responses to converse mock server

* Add streaming fixtures for testing for converse

* Rename other bedrock test files

* Add tests for converse streaming

* Instrument converse streaming

* Move GeneratorProxy adjacent functions to mixin

* Fix checking of supported models

* Reorganize converse error tests

* Port new converse botocore tests to aiobotocore

* Instrument response streaming in aiobotocore converse

* Fix suggestions from code review

* Port in converse changes from strands PR

* Delete commented code

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Bedrock Converse Streaming Support (#1565)

* Add more formatting to custom event validatators

* Add streamed responses to converse mock server

* Add streaming fixtures for testing for converse

* Rename other bedrock test files

* Add tests for converse streaming

* Instrument converse streaming

* Move GeneratorProxy adjacent functions to mixin

* Fix checking of supported models

* Reorganize converse error tests

* Port new converse botocore tests to aiobotocore

* Instrument response streaming in aiobotocore converse

* Fix suggestions from code review

* Port in converse changes from strands PR

* Delete commented code

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* [MegaLinter] Apply linters fixes

* request_timestamp is now passed across different method

* Fixed gemini model kwargs issue

* [MegaLinter] Apply linters fixes

* Update tests to validate presence of timestamp/ role and fix bugs in instrumentation.

* Update aiobotocore instrumentation to receive request timestamp.

---------

Co-authored-by: Josh Bonczkowski <jbonczkowski@newrelic.com>
Co-authored-by: sgoel-nr <236423107+sgoel-nr@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>
Co-authored-by: Lalleh Rafeei <84813886+lrafeei@users.noreply.github.com>
* priority +=2 when full granularity and sampled=true
* priority +=1 when partial granularity and sampled=true
* always_on sampler for full granularity sets priority=3 instead of 2
* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add Strands tools and agents instrumentation. (#1563)

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* [MegaLinter] Apply linters fixes

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* Handle additional args in mock model.

* Add test to force exception and exercise _handle_tool_streaming_completion_error.

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* Handle additional args in mock model.

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* [MegaLinter] Apply linters fixes

* Add test to force exception and exercise _handle_tool_streaming_completion_error.

* Implement strands context passing instrumentation.

* Address review feedback.

* [MegaLinter] Apply linters fixes

* Remove test_simple.py file.

---------

Co-authored-by: Tim Pansino <tpansino@newrelic.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Strands MultiAgent Instrumentation (#1590)

* Rename strands instrument functions

* Add instrumentation for strands multiagent

* Reorganize strands tests

* Strands multiagent tests

* Remove timestamp from test expected events.

---------

Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add Strands tools and agents instrumentation. (#1563)

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* [MegaLinter] Apply linters fixes

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* Handle additional args in mock model.

* Add test to force exception and exercise _handle_tool_streaming_completion_error.

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Add tests file.

* Cleanup instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* Handle additional args in mock model.

* Strands Mock Model (#1551)

* Add strands to tox.ini

* Add mock models for strands testing

* Add simple test file to validate strands mocking

* Add baseline instrumentation.

* Add tool and agent instrumentation.

* Cleanup.

Co-authored-by: Tim Pansino <tpansino@newrelic.com>

* [MegaLinter] Apply linters fixes

* Add test to force exception and exercise _handle_tool_streaming_completion_error.

* Implement strands context passing instrumentation.

* Address review feedback.

* [MegaLinter] Apply linters fixes

* Remove test_simple.py file.

---------

Co-authored-by: Tim Pansino <tpansino@newrelic.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>

* Strands MultiAgent Instrumentation (#1590)

* Rename strands instrument functions

* Add instrumentation for strands multiagent

* Reorganize strands tests

* Strands multiagent tests

* Remove timestamp from test expected events.

---------

Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>

* Fixed tool type bug  for strands

* Pin langchain & langchain_core (#1604)

* Add safeguarding to converse attr extraction. (#1603)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>

* Pin scikit-learn

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Timothy Pansino <11214426+TimPansino@users.noreply.github.com>
Co-authored-by: Uma Annamalai <uannamalai@newrelic.com>
Co-authored-by: Tim Pansino <tpansino@newrelic.com>
Co-authored-by: Tim Pansino <timpansino@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Shubham Goel <sgoel@newrelic.com>
Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>
* Context propagation/DT enabling

* Add accept/extract DT tests

* Propagation extract/accept tests & remote tracestate parsing

* Remove extra spaces

* Explanation for update flags

* Modify carrier and sampling logic

* Change test name

* Apply suggestions from code review

Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>

* Apply reviewer suggestions

* Default parent_span_trace_id to None

* Apply suggestions from code review

Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>

* Reviewer suggestions & cleanup

* [MegaLinter] Apply linters fixes

* Apply review suggestions (for real this time)

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Hannah Stepanek <hstepanek@newrelic.com>
@hmstepanek hmstepanek requested a review from a team as a code owner February 9, 2026 20:43
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

MegaLinter analysis: Success

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ ACTION actionlint 7 0 0 1.18s
✅ MARKDOWN markdownlint 7 0 0 0 1.28s
✅ PYTHON ruff 1037 0 0 0 1.22s
✅ PYTHON ruff-format 1037 0 0 0 0.36s
✅ YAML prettier 15 0 0 0 1.54s
✅ YAML v8r 15 0 0 6.24s
✅ YAML yamllint 15 0 0 0.66s

See detailed reports in MegaLinter artifacts

MegaLinter is graciously provided by OX Security

@mergify mergify bot added the tests-failing Tests failing in CI. label Feb 9, 2026
@codecov-commenter
Copy link

codecov-commenter commented Feb 9, 2026

Codecov Report

❌ Patch coverage is 82.70440% with 220 lines in your changes missing coverage. Please review.
✅ Project coverage is 80.27%. Comparing base (0474217) to head (02bb794).

Files with missing lines Patch % Lines
newrelic/api/opentelemetry.py 83.17% 39 Missing and 31 partials ⚠️
newrelic/config.py 66.41% 44 Missing ⚠️
newrelic/hooks/hybridagent_opentelemetry.py 73.10% 24 Missing and 15 partials ⚠️
newrelic/core/config.py 88.13% 10 Missing and 4 partials ⚠️
newrelic/api/time_trace.py 64.28% 5 Missing and 5 partials ⚠️
newrelic/core/agent.py 64.00% 6 Missing and 3 partials ⚠️
newrelic/core/node_mixin.py 92.96% 3 Missing and 6 partials ⚠️
newrelic/core/application.py 72.41% 3 Missing and 5 partials ⚠️
newrelic/api/transaction.py 95.18% 2 Missing and 2 partials ⚠️
newrelic/core/database_utils.py 75.00% 2 Missing and 2 partials ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1646      +/-   ##
==========================================
- Coverage   81.69%   80.27%   -1.42%     
==========================================
  Files         210      215       +5     
  Lines       24655    25827    +1172     
  Branches     3884     4108     +224     
==========================================
+ Hits        20141    20733     +592     
- Misses       3198     3642     +444     
- Partials     1316     1452     +136     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

mergify bot and others added 5 commits February 11, 2026 21:21
Bumps the github_actions group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.1` | `6.0.2` |
| [actions/setup-python](https://github.com/actions/setup-python) | `6.1.0` | `6.2.0` |
| [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `3.7.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `6.19.1` |
| [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) | `3.1.0` | `3.2.0` |
| [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) | `7.2.0` | `7.3.0` |
| [github/codeql-action](https://github.com/github/codeql-action) | `4.31.10` | `4.32.2` |



Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@8e8c483...de0fac2)

Updates `actions/setup-python` from 6.1.0 to 6.2.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@83679a8...a309ff8)

Updates `docker/login-action` from 3.6.0 to 3.7.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](docker/login-action@5e57cd1...c94ce9f)

Updates `docker/build-push-action` from 6.18.0 to 6.19.1
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@2634353...601a80b)

Updates `actions/attest-build-provenance` from 3.1.0 to 3.2.0
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](actions/attest-build-provenance@00014ed...96278af)

Updates `astral-sh/setup-uv` from 7.2.0 to 7.3.0
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](astral-sh/setup-uv@61cb8a9...eac588a)

Updates `github/codeql-action` from 4.31.10 to 4.32.2
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@cdefb33...45cbd0c)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github_actions
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: docker/login-action
  dependency-version: 3.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: docker/build-push-action
  dependency-version: 6.19.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: actions/attest-build-provenance
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: astral-sh/setup-uv
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
- dependency-name: github/codeql-action
  dependency-version: 4.32.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github_actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…relic-python-agent into hybrid-core-tracing-rebased
@hmstepanek hmstepanek force-pushed the hybrid-core-tracing-rebased branch from cfb052f to bd233c4 Compare February 13, 2026 18:17
@mergify mergify bot mentioned this pull request Feb 13, 2026
Comment on lines +98 to +101
# Context and Context Propagator Setup
otel_context_propagator = CompositePropagator(propagators=[NRTraceContextPropagator(), W3CBaggagePropagator()])

set_global_textmap(otel_context_propagator)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do these need to be done at import time? I would prefer if they were in an initialize function or something.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think of putting this logic in the agent initialization function (specifically the tracer_provider function)?


class NrTraceState(dict):
FIELDS = ("ty", "ac", "ap", "id", "tx", "sa", "pr")
FIELDS = ("v", "ty", "ac", "ap", "id", "tx", "sa", "pr")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we by chance annotate this class with a comment that defines what each of these field abbreviations are? All this is a bit incomprehensible if you don't have these abbreviations memorized.

Comment on lines 40 to 60
"ariadne": [
# "ariadne.asgi",
"ariadne.graphql",
# "ariadne.wsgi",
"graphql.graphql",
"graphql.execution.execute",
"graphql.execution.executor",
"graphql.execution.middleware",
"graphql.execution.utils",
"graphql.error.located_error",
"graphql.language.parser",
"graphql.validation.validate",
"graphql.validation.validation",
"graphql.type.schema",
# "starlette.requests",
# "starlette.routing",
# "starlette.applications",
# "starlette.middleware.errors",
# "starlette.middleware.exceptions",
# "starlette.exceptions",
# "starlette.background",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lot of commented out stuff in this file that should be trimmed out or enabled.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will leave a few commented out lines. starlette.concurrency needs to remain enabled, but it seems like an odd one out. I am leaving it in there along with the note for future reference.

Similarly, I will leave in the commented out spots for boto/botocore due to the notes accompanying them (and because these will need to be included in the future)

# OTel instrumentor and the list of targets in the
# NR hooks that need to be disabled if the OTel
# instrumentor is to be used instead.
HYBRID_AGENT_DEFAULT_INCLUDED_TRACERS_TO_NR_HOOKS = {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason this file exists separately and isn't part of the newrelic/api/opentelemetry.py file? If it needs to be separate, can we get rid of the otel abbreviation and make this file opentelemetry_tracers.py maybe?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only reason it is a separate file is just for readability. This file is going to get much larger in the near future (and so will newrelic/api/opentelemetry.py). But sure, I can change the file name.

return Agent._instance

@staticmethod
def otel_tracer_provider():
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we avoid the abbreviation and call this opentelemetry_tracer_provider instead?

@mergify mergify bot added merge-conflicts Merge conflicts detected. and removed merge-conflicts Merge conflicts detected. labels Feb 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tests-failing Tests failing in CI.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants