Skip to content

feat: Add observability plugin support.#109

Merged
kinyoklion merged 37 commits intomainfrom
rlamb/o11y-268/implement-python-plugin
Jul 16, 2025
Merged

feat: Add observability plugin support.#109
kinyoklion merged 37 commits intomainfrom
rlamb/o11y-268/implement-python-plugin

Conversation

@kinyoklion
Copy link
Member

@kinyoklion kinyoklion commented Jul 9, 2025

Summary

Adds a new python observability plugin.

I prefixed all the internal modules with _ which means that a number of changes are showing in the PR that are not real changes.

How did you test this change?

Are there any deployment considerations?

@github-actions
Copy link
Contributor

github-actions bot commented Jul 14, 2025

☂️ Python Coverage

current status: ✅

Overall Coverage

Lines Covered Coverage Threshold Status
881 680 77% 0% 🟢

New Files

File Coverage Status
sdk/@launchdarkly/observability-python/ldobserve/_graph/init.py 100% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_graph/get_sampling_config.py 29% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_otel/init.py 100% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_otel/_sampling/test_sample_logs.py 97% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_otel/configuration.py 51% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_util/init.py 100% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_util/dict.py 100% 🟢
sdk/@launchdarkly/observability-python/ldobserve/_util/test_dict.py 100% 🟢
sdk/@launchdarkly/observability-python/ldobserve/observe.py 49% 🟢
TOTAL 81% 🟢

Modified Files

File Coverage Status
sdk/@launchdarkly/observability-python/ldobserve/init.py 46% 🟢
sdk/@launchdarkly/observability-python/ldobserve/config.py 79% 🟢
TOTAL 62% 🟢

updated for commit: 02691a6 by action🐍

@kinyoklion kinyoklion marked this pull request as ready for review July 14, 2025 21:09
@kinyoklion kinyoklion requested a review from a team as a code owner July 14, 2025 21:09
@kinyoklion kinyoklion requested a review from keelerm84 July 14, 2025 21:09
cursor[bot]

This comment was marked as outdated.

cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

@Vadman97 Vadman97 left a comment

Choose a reason for hiding this comment

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

struggling to find time to do a detailed review, but this looks good to me at a high level. let me know if there are specific portions that would be useful to look into more closely

cursor[bot]

This comment was marked as outdated.

@kinyoklion kinyoklion enabled auto-merge (squash) July 16, 2025 22:47
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Bug: Handle Missing Package Metadata Gracefully

The metadata.version("launchdarkly-observability") call can raise a PackageNotFoundError if the package metadata is unavailable or corrupted, causing the OpenTelemetry (OTEL) configuration initialization to fail. While unlikely in normal usage, this can occur in development environments or with broken installations. The call should be wrapped in a try-catch block with a fallback value.

sdk/@launchdarkly/observability-python/ldobserve/_otel/configuration.py#L60-L61

attrs["telemetry.distro.name"] = "launchdarkly-observability"
attrs["telemetry.distro.version"] = metadata.version("launchdarkly-observability")

Fix in CursorFix in Web


Was this report helpful? Give feedback by reacting with 👍 or 👎

@kinyoklion kinyoklion merged commit 7bc32bb into main Jul 16, 2025
19 checks passed
@kinyoklion kinyoklion deleted the rlamb/o11y-268/implement-python-plugin branch July 16, 2025 23:07
kinyoklion added a commit that referenced this pull request Jul 18, 2025
🤖 I have created a release *beep* *boop*
---


## 0.1.0 (2025-07-18)


### Features

* Add observability plugin support.
([#109](#109))
([7bc32bb](7bc32bb))
* Add sampling exporters.
([#99](#99))
([86a4612](86a4612))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Vadman97 added a commit that referenced this pull request Jan 28, 2026
🤖 I have created a release *beep* *boop*
  ---


  <details><summary>go: 1.0.0</summary>

##
[1.0.0](go/v0.4.0...go/v1.0.0)
(2026-01-28)


  ### Features

* Add configuration to allow adjusting the batch and queue sizes for
logs and spans.
([abecbb6](abecbb6))
* Add export samplers.
([#143](#143))
([76fd41e](76fd41e))
* Add query for sampling config.
([#140](#140))
([6800fb1](6800fb1))
* Add trace based sampling for go plugin.
([#170](#170))
([dacbe76](dacbe76))
* Adjust the default export and queue batch sizes for logs and spans to
match the otel defaults.
([abecbb6](abecbb6))
* Basic go plugin implementation.
([#139](#139))
([48badda](48badda))
* Client-side event sampling custom sampler.
([#142](#142))
([82df812](82df812))
* Sample out children of spans that have been sampled out.
([#155](#155))
([a2d1d6e](a2d1d6e))
* Support Go observability initialization independent of plugins.
([#230](#230))
([ddd6d4b](ddd6d4b))


  ### Bug Fixes

* Fix an issue where logging configuration could over-match for log
records without a message or severity.
([#261](#261))
([500a6bf](500a6bf))
* Fix prealloc lint warning by preallocating slice capacity for error
attributes.
* **go:** configure default logger provider
([#192](#192))
([b97854d](b97854d))
  </details>

  <details><summary>launchdarkly-observability-dotnet: 1.0.0</summary>

##
[1.0.0](launchdarkly-observability-dotnet-0.3.0...launchdarkly-observability-dotnet-1.0.0)
(2026-01-28)


  ### Features

* Add basic config for dotnet plugin.
([#167](#167))
([3203e82](3203e82))
* Add custom sampler for dotnet.
([#175](#175))
([de74b20](de74b20))
* Add export/processor samplers.
([#178](#178))
([2431886](2431886))
* Add graphql query to get sampling config.
([#181](#181))
([ee51f80](ee51f80))
* Add initial plugin for dotnet.
([#173](#173))
([564536d](564536d))
* Add singleton for dotnet.
([#185](#185))
([c32cf1c](c32cf1c))
* Add support for environment variable configuration.
([#205](#205))
([5e3b1e1](5e3b1e1))
* Add support for non-core ASP.Net.
([#199](#199))
([b215109](b215109))
* Allow custom configuration of otel.
([#187](#187))
([54e7214](54e7214))
* Extend logging configuration. Format logs by default.
([#242](#242))
([2003517](2003517))


  ### Bug Fixes

* Make attributes optional for RecordLog.
([#202](#202))
([806ce08](806ce08))
  </details>

  <details><summary>launchdarkly-observability-python: 1.0.0</summary>

##
[1.0.0](launchdarkly-observability-python-0.1.1...launchdarkly-observability-python-1.0.0)
(2026-01-28)


  ### Features

* Add observability plugin support.
([#109](#109))
([7bc32bb](7bc32bb))
* Add sampling exporters.
([#99](#99))
([86a4612](86a4612))


  ### Bug Fixes

* Create span when no active span for error.
([#191](#191))
([0341b0f](0341b0f))
  </details>

  <details><summary>observability-node: 1.0.0</summary>

##
[1.0.0](observability-node-0.3.1...observability-node-1.0.0)
(2026-01-28)


  ### Features

* Update instrumentation configuration for ease of use.
([#112](#112))
([011032f](011032f))


  ### Bug Fixes

* Fix an issue where logging configuration could over-match for log
records without a message or severity.
([#261](#261))
([500a6bf](500a6bf))
  </details>

  <details><summary>observability: 1.0.0</summary>

##
[1.0.0](observability-0.5.2...observability-1.0.0)
(2026-01-28)


  ### Features

* publish umd for browser environments
([#334](#334))
([3e90673](3e90673))
* Version Packages
([#136](#136))
([c271dc8](c271dc8))
  </details>

  <details><summary>session-replay: 1.0.0</summary>

##
[1.0.0](session-replay-0.5.2...session-replay-1.0.0)
(2026-01-28)


  ### Features

* publish umd for browser environments
([#334](#334))
([3e90673](3e90673))
* Version Packages
([#136](#136))
([c271dc8](c271dc8))
  </details>

  <details><summary>launchdarkly-observability-android: 0.25.0</summary>

##
[0.25.0](launchdarkly-observability-android-0.24.0...launchdarkly-observability-android-0.25.0)
(2026-01-28)


  ### Features

* O11Y-969 - Add runtime control for Session Replay capture
([#355](#355))
([1d4398e](1d4398e))
  </details>

  ---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Mostly version/changelog updates generated by release tooling; the
only code change is a minor Go allocation tweak in error recording with
minimal behavioral risk.
> 
> **Overview**
> Publishes new release versions across the monorepo, marking the Go,
.NET, Node, Python, Browser Observability, and `session-replay` SDKs as
**1.0.0 stable**, and bumping Android to **0.25.0** (Release Please
changelog + manifest/version file updates).
> 
> Includes one small Go runtime change: `recordSpanError` now
preallocates the attribute slice capacity before appending exception
fields and tags (lint/perf-only, no behavior change intended).
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
f343da8. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Vadim Korolik <vkorolik@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants