From 93a28c27a57deb1d499a65552ec09ab6230b722e Mon Sep 17 00:00:00 2001 From: Mike Goldsmith Date: Fri, 15 May 2026 10:46:44 +0100 Subject: [PATCH 1/2] migrate unreleased changelog entries to towncrier fragments Convert 26 existing entries from the ## Unreleased section of CHANGELOG.md into towncrier fragment files in .changelog/, completing the migration started in #5187. The ## Unreleased section is removed since towncrier now manages changelog generation from fragment files at release time. Assisted-by: Claude Opus 4.6 --- .changelog/4854.added | 1 + .changelog/4907.added | 1 + .changelog/4917.added | 1 + .changelog/4990.added | 1 + .changelog/4996.added | 1 + .changelog/5003.added | 1 + .changelog/5055.added | 1 + .changelog/5072.fixed | 1 + .changelog/5076.removed | 1 + .changelog/5083.fixed | 1 + .changelog/5088.added | 1 + .changelog/5091.fixed | 1 + .changelog/5093.added | 1 + .changelog/5095.added | 1 + .changelog/5096.changed | 1 + .changelog/5119.changed | 1 + .changelog/5120.fixed | 1 + .changelog/5131.added | 1 + .changelog/5133.changed | 1 + .changelog/5135.fixed | 1 + .changelog/5145.changed | 1 + .changelog/5149.changed | 1 + .changelog/5151.added | 1 + .changelog/5163.changed | 1 + .changelog/5177.changed | 1 + .changelog/5179.fixed | 1 + CHANGELOG.md | 55 ----------------------------------------- 27 files changed, 26 insertions(+), 55 deletions(-) create mode 100644 .changelog/4854.added create mode 100644 .changelog/4907.added create mode 100644 .changelog/4917.added create mode 100644 .changelog/4990.added create mode 100644 .changelog/4996.added create mode 100644 .changelog/5003.added create mode 100644 .changelog/5055.added create mode 100644 .changelog/5072.fixed create mode 100644 .changelog/5076.removed create mode 100644 .changelog/5083.fixed create mode 100644 .changelog/5088.added create mode 100644 .changelog/5091.fixed create mode 100644 .changelog/5093.added create mode 100644 .changelog/5095.added create mode 100644 .changelog/5096.changed create mode 100644 .changelog/5119.changed create mode 100644 .changelog/5120.fixed create mode 100644 .changelog/5131.added create mode 100644 .changelog/5133.changed create mode 100644 .changelog/5135.fixed create mode 100644 .changelog/5145.changed create mode 100644 .changelog/5149.changed create mode 100644 .changelog/5151.added create mode 100644 .changelog/5163.changed create mode 100644 .changelog/5177.changed create mode 100644 .changelog/5179.fixed diff --git a/.changelog/4854.added b/.changelog/4854.added new file mode 100644 index 00000000000..032b877efac --- /dev/null +++ b/.changelog/4854.added @@ -0,0 +1 @@ +`opentelemetry-api`, `opentelemetry-sdk`: add support for 'random-trace-id' flags in W3C traceparent header trace flags. Implementations of `IdGenerator` that do randomly generate the 56 least significant bits, should also implement a `is_trace_id_random` methods that returns `True`. diff --git a/.changelog/4907.added b/.changelog/4907.added new file mode 100644 index 00000000000..e09de088a8b --- /dev/null +++ b/.changelog/4907.added @@ -0,0 +1 @@ +logs: add exception support to Logger emit and LogRecord attributes diff --git a/.changelog/4917.added b/.changelog/4917.added new file mode 100644 index 00000000000..fff01bc6907 --- /dev/null +++ b/.changelog/4917.added @@ -0,0 +1 @@ +`opentelemetry-exporter-otlp-proto-grpc`: make retryable gRPC error codes configurable for gRPC exporters diff --git a/.changelog/4990.added b/.changelog/4990.added new file mode 100644 index 00000000000..d003da82363 --- /dev/null +++ b/.changelog/4990.added @@ -0,0 +1 @@ +`opentelemetry-sdk`: Add `create_logger_provider`/`configure_logger_provider` to declarative file configuration, enabling LoggerProvider instantiation from config files without reading env vars diff --git a/.changelog/4996.added b/.changelog/4996.added new file mode 100644 index 00000000000..ca0c259fe3b --- /dev/null +++ b/.changelog/4996.added @@ -0,0 +1 @@ +`opentelemetry-exporter-otlp-json-common`: add 'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters diff --git a/.changelog/5003.added b/.changelog/5003.added new file mode 100644 index 00000000000..5b426b4bad0 --- /dev/null +++ b/.changelog/5003.added @@ -0,0 +1 @@ +`opentelemetry-sdk`: Add `service` resource detector support to declarative file configuration via `detection_development.detectors[].service` diff --git a/.changelog/5055.added b/.changelog/5055.added new file mode 100644 index 00000000000..0192b6e7e12 --- /dev/null +++ b/.changelog/5055.added @@ -0,0 +1 @@ +Add `registry` keyword argument to `PrometheusMetricReader` to allow passing a custom Prometheus registry diff --git a/.changelog/5072.fixed b/.changelog/5072.fixed new file mode 100644 index 00000000000..6219ae328b2 --- /dev/null +++ b/.changelog/5072.fixed @@ -0,0 +1 @@ +Fix incorrect code example in `create_tracer()` docstring diff --git a/.changelog/5076.removed b/.changelog/5076.removed new file mode 100644 index 00000000000..461f9bb9784 --- /dev/null +++ b/.changelog/5076.removed @@ -0,0 +1 @@ +Drop Python 3.9 support diff --git a/.changelog/5083.fixed b/.changelog/5083.fixed new file mode 100644 index 00000000000..3ef0d60b378 --- /dev/null +++ b/.changelog/5083.fixed @@ -0,0 +1 @@ +`opentelemetry-sdk`: Fix `ProcessResourceDetector` to use `sys.orig_argv` so that `process.command`, `process.command_line`, and `process.command_args` reflect the original invocation for `python -m ` runs (where `sys.argv[0]` is rewritten to the module path) diff --git a/.changelog/5088.added b/.changelog/5088.added new file mode 100644 index 00000000000..d2e770a3cec --- /dev/null +++ b/.changelog/5088.added @@ -0,0 +1 @@ +Add WeaverLiveCheck test util diff --git a/.changelog/5091.fixed b/.changelog/5091.fixed new file mode 100644 index 00000000000..eb60a210448 --- /dev/null +++ b/.changelog/5091.fixed @@ -0,0 +1 @@ +`opentelemetry-sdk`: fix YAML structure injection via environment variable substitution in declarative file configuration; values containing newlines are now emitted as quoted YAML scalars per spec requirement diff --git a/.changelog/5093.added b/.changelog/5093.added new file mode 100644 index 00000000000..e3e2926d614 --- /dev/null +++ b/.changelog/5093.added @@ -0,0 +1 @@ +`opentelemetry-sdk`: add `load_entry_point` shared utility to declarative file configuration for loading plugins via entry points; refactor propagator loading to use it diff --git a/.changelog/5095.added b/.changelog/5095.added new file mode 100644 index 00000000000..b9f24761f49 --- /dev/null +++ b/.changelog/5095.added @@ -0,0 +1 @@ +`opentelemetry-sdk`: add sampler plugin loading to declarative file configuration via the `opentelemetry_sampler` entry point group, matching the spec's PluginComponentProvider mechanism diff --git a/.changelog/5096.changed b/.changelog/5096.changed new file mode 100644 index 00000000000..2a353c0d154 --- /dev/null +++ b/.changelog/5096.changed @@ -0,0 +1 @@ +`opentelemetry-semantic-conventions`: use `X | Y` union annotation diff --git a/.changelog/5119.changed b/.changelog/5119.changed new file mode 100644 index 00000000000..210d574006f --- /dev/null +++ b/.changelog/5119.changed @@ -0,0 +1 @@ +`opentelemetry-api`: update `EnvironmentGetter` and `EnvironmentSetter` to use normalized environment variable names diff --git a/.changelog/5120.fixed b/.changelog/5120.fixed new file mode 100644 index 00000000000..5e32b8addcd --- /dev/null +++ b/.changelog/5120.fixed @@ -0,0 +1 @@ +`opentelemetry-sdk`: make resource detector ordering deterministic diff --git a/.changelog/5131.added b/.changelog/5131.added new file mode 100644 index 00000000000..be5db4ef23c --- /dev/null +++ b/.changelog/5131.added @@ -0,0 +1 @@ +`opentelemetry-sdk`: add `additional_properties` support to generated config models via custom `datamodel-codegen` template, enabling plugin/custom component names to flow through typed dataclasses diff --git a/.changelog/5133.changed b/.changelog/5133.changed new file mode 100644 index 00000000000..85a97b78e20 --- /dev/null +++ b/.changelog/5133.changed @@ -0,0 +1 @@ +Apply fixes for `UP` ruff rule diff --git a/.changelog/5135.fixed b/.changelog/5135.fixed new file mode 100644 index 00000000000..d415f313269 --- /dev/null +++ b/.changelog/5135.fixed @@ -0,0 +1 @@ +Fix incorrect type annotation on `detectors` parameter of `get_aggregated_resources` diff --git a/.changelog/5145.changed b/.changelog/5145.changed new file mode 100644 index 00000000000..49e6f9def98 --- /dev/null +++ b/.changelog/5145.changed @@ -0,0 +1 @@ +`opentelemetry-sdk`: only load entrypoints for resource detectors if they are configured via `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS` diff --git a/.changelog/5149.changed b/.changelog/5149.changed new file mode 100644 index 00000000000..04eeb2eb168 --- /dev/null +++ b/.changelog/5149.changed @@ -0,0 +1 @@ +ci: wait for tracecontext server readiness instead of a fixed sleep in `scripts/tracecontext-integration-test.sh` diff --git a/.changelog/5151.added b/.changelog/5151.added new file mode 100644 index 00000000000..eb70fff5e03 --- /dev/null +++ b/.changelog/5151.added @@ -0,0 +1 @@ +Add ability to selectively enable exporting of SDK internal metrics with the `OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLED` environment variable. diff --git a/.changelog/5163.changed b/.changelog/5163.changed new file mode 100644 index 00000000000..8a664995565 --- /dev/null +++ b/.changelog/5163.changed @@ -0,0 +1 @@ +`opentelemetry-api`: Enforce W3C Baggage size limits on outbound propagation in `W3CBaggagePropagator.inject()`. Previously only inbound extraction enforced limits; now inject also caps entries at 180, individual pairs at 4096 bytes, and total header at 8192 bytes per the W3C Baggage spec. The extract path max_pairs limit now counts all size-valid entries rather than only successfully parsed ones. diff --git a/.changelog/5177.changed b/.changelog/5177.changed new file mode 100644 index 00000000000..c02b3458371 --- /dev/null +++ b/.changelog/5177.changed @@ -0,0 +1 @@ +Switch to SPDX license headers and add CI enforcement diff --git a/.changelog/5179.fixed b/.changelog/5179.fixed new file mode 100644 index 00000000000..ce9febb97df --- /dev/null +++ b/.changelog/5179.fixed @@ -0,0 +1 @@ +`opentelemetry-sdk`: fix multi-processor `force_flush` skipping remaining processors when one returns `None` diff --git a/CHANGELOG.md b/CHANGELOG.md index 4875ec59176..7501f2a0450 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,61 +20,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 -## Unreleased - -- `opentelemetry-sdk`: fix multi-processor `force_flush` skipping remaining processors when one returns `None` - ([#5179](https://github.com/open-telemetry/opentelemetry-python/pull/5179)) -- Apply fixes for `UP` ruff rule - ([#5133](https://github.com/open-telemetry/opentelemetry-python/pull/5133)) -- Switch to SPDX license headers and add CI enforcement - ([#5177](https://github.com/open-telemetry/opentelemetry-python/pull/5177)) -- `opentelemetry-api`: Enforce W3C Baggage size limits on outbound propagation in `W3CBaggagePropagator.inject()`. Previously only inbound extraction enforced limits; now inject also caps entries at 180, individual pairs at 4096 bytes, and total header at 8192 bytes per the W3C Baggage spec. The extract path max_pairs limit now counts all size-valid entries rather than only successfully parsed ones. - ([#5163](https://github.com/open-telemetry/opentelemetry-python/pull/5163)) -- `opentelemetry-sdk`: add `additional_properties` support to generated config models via custom `datamodel-codegen` template, enabling plugin/custom component names to flow through typed dataclasses - ([#5131](https://github.com/open-telemetry/opentelemetry-python/pull/5131)) -- Fix incorrect code example in `create_tracer()` docstring - ([#5072](https://github.com/open-telemetry/opentelemetry-python/issues/5072)) -- `opentelemetry-sdk`: add `load_entry_point` shared utility to declarative file configuration for loading plugins via entry points; refactor propagator loading to use it - ([#5093](https://github.com/open-telemetry/opentelemetry-python/pull/5093)) -- `opentelemetry-sdk`: fix YAML structure injection via environment variable substitution in declarative file configuration; values containing newlines are now emitted as quoted YAML scalars per spec requirement - ([#5091](https://github.com/open-telemetry/opentelemetry-python/pull/5091)) -- `opentelemetry-sdk`: Add `create_logger_provider`/`configure_logger_provider` to declarative file configuration, enabling LoggerProvider instantiation from config files without reading env vars - ([#4990](https://github.com/open-telemetry/opentelemetry-python/pull/4990)) -- `opentelemetry-sdk`: Add `service` resource detector support to declarative file configuration via `detection_development.detectors[].service` - ([#5003](https://github.com/open-telemetry/opentelemetry-python/pull/5003)) -- logs: add exception support to Logger emit and LogRecord attributes - ([#4907](https://github.com/open-telemetry/opentelemetry-python/issues/4907)) -- Drop Python 3.9 support - ([#5076](https://github.com/open-telemetry/opentelemetry-python/pull/5076)) -- `opentelemetry-semantic-conventions`: use `X | Y` union annotation - ([#5096](https://github.com/open-telemetry/opentelemetry-python/pull/5096)) -- `opentelemetry-sdk`: Fix `ProcessResourceDetector` to use `sys.orig_argv` so that `process.command`, `process.command_line`, and `process.command_args` reflect the original invocation for `python -m ` runs (where `sys.argv[0]` is rewritten to the module path) - ([#5083](https://github.com/open-telemetry/opentelemetry-python/pull/5083)) -- `opentelemetry-sdk`: make resource detector ordering deterministic - ([#5120](https://github.com/open-telemetry/opentelemetry-python/pull/5120)) -- Add WeaverLiveCheck test util - ([#5088](https://github.com/open-telemetry/opentelemetry-python/pull/5088)) -- Fix incorrect type annotation on `detectors` parameter of `get_aggregated_resources` - ([#5135](https://github.com/open-telemetry/opentelemetry-python/pull/5135)) -- ci: wait for tracecontext server readiness instead of a fixed sleep in `scripts/tracecontext-integration-test.sh` - ([#5149](https://github.com/open-telemetry/opentelemetry-python/pull/5149)) -- `opentelemetry-api`: update `EnvironmentGetter` and `EnvironmentSetter` to use normalized environment variable names - ([#5119](https://github.com/open-telemetry/opentelemetry-python/pull/5119)) -- `opentelemetry-sdk`: only load entrypoints for resource detectors if they are configured via `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS` - ([#5145](https://github.com/open-telemetry/opentelemetry-python/pull/5145)) -- `opentelemetry-exporter-otlp-json-common`: add 'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters - ([#4996](https://github.com/open-telemetry/opentelemetry-python/pull/4996)) -- `opentelemetry-exporter-otlp-proto-grpc`: make retryable gRPC error codes configurable for gRPC exporters - ([#4917](https://github.com/open-telemetry/opentelemetry-python/pull/4917)) -- `opentelemetry-sdk`: add sampler plugin loading to declarative file configuration via the `opentelemetry_sampler` entry point group, matching the spec's PluginComponentProvider mechanism - ([#5095](https://github.com/open-telemetry/opentelemetry-python/pull/5095)) -- Add `registry` keyword argument to `PrometheusMetricReader` to allow passing a custom Prometheus registry - ([#5055](https://github.com/open-telemetry/opentelemetry-python/pull/5055)) -- Add ability to selectively enable exporting of SDK internal metrics with the `OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLED` environment variable. - ([#5151](https://github.com/open-telemetry/opentelemetry-python/pull/5151)) -- `opentelemetry-api`, `opentelemetry-sdk`: add support for 'random-trace-id' flags in W3C traceparent header trace flags. Implementations of `IdGenerator` that do randomly generate the 56 least significant bits, should also implement a `is_trace_id_random` methods that returns `True`. - ([#4854](https://github.com/open-telemetry/opentelemetry-python/pull/4854)) - ## Version 1.41.0/0.62b0 (2026-04-09) From e19d7c95dbac8a09fb52729ad2099d6ab3efe742 Mon Sep 17 00:00:00 2001 From: Mike Goldsmith Date: Fri, 15 May 2026 12:31:51 +0100 Subject: [PATCH 2/2] fix fragment PR numbers and categorization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 5072.fixed → 5077.fixed (5072 was the issue, 5077 is the PR) - 4907.added → 4908.added (4907 was the issue, 4908 is the PR) - 5163.changed → 5163.fixed (recategorize as fix) Per review from @xrmx. Assisted-by: Claude Opus 4.6 --- .changelog/{4907.added => 4908.added} | 0 .changelog/{5072.fixed => 5077.fixed} | 0 .changelog/{5163.changed => 5163.fixed} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename .changelog/{4907.added => 4908.added} (100%) rename .changelog/{5072.fixed => 5077.fixed} (100%) rename .changelog/{5163.changed => 5163.fixed} (100%) diff --git a/.changelog/4907.added b/.changelog/4908.added similarity index 100% rename from .changelog/4907.added rename to .changelog/4908.added diff --git a/.changelog/5072.fixed b/.changelog/5077.fixed similarity index 100% rename from .changelog/5072.fixed rename to .changelog/5077.fixed diff --git a/.changelog/5163.changed b/.changelog/5163.fixed similarity index 100% rename from .changelog/5163.changed rename to .changelog/5163.fixed