diff --git a/.changelog/4854.added b/.changelog/4854.added new file mode 100644 index 0000000000..032b877efa --- /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/4908.added b/.changelog/4908.added new file mode 100644 index 0000000000..e09de088a8 --- /dev/null +++ b/.changelog/4908.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 0000000000..fff01bc690 --- /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 0000000000..d003da8236 --- /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 0000000000..ca0c259fe3 --- /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 0000000000..5b426b4bad --- /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 0000000000..0192b6e7e1 --- /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/5076.removed b/.changelog/5076.removed new file mode 100644 index 0000000000..461f9bb978 --- /dev/null +++ b/.changelog/5076.removed @@ -0,0 +1 @@ +Drop Python 3.9 support diff --git a/.changelog/5077.fixed b/.changelog/5077.fixed new file mode 100644 index 0000000000..6219ae328b --- /dev/null +++ b/.changelog/5077.fixed @@ -0,0 +1 @@ +Fix incorrect code example in `create_tracer()` docstring diff --git a/.changelog/5083.fixed b/.changelog/5083.fixed new file mode 100644 index 0000000000..3ef0d60b37 --- /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 0000000000..d2e770a3ce --- /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 0000000000..eb60a21044 --- /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 0000000000..e3e2926d61 --- /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 0000000000..b9f24761f4 --- /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 0000000000..2a353c0d15 --- /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 0000000000..210d574006 --- /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 0000000000..5e32b8addc --- /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 0000000000..be5db4ef23 --- /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 0000000000..85a97b78e2 --- /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 0000000000..d415f31326 --- /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 0000000000..49e6f9def9 --- /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 0000000000..04eeb2eb16 --- /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 0000000000..eb70fff5e0 --- /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.fixed b/.changelog/5163.fixed new file mode 100644 index 0000000000..8a66499556 --- /dev/null +++ b/.changelog/5163.fixed @@ -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 0000000000..c02b345837 --- /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 0000000000..ce9febb97d --- /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 4875ec5917..7501f2a045 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)