Releases: open-telemetry/opentelemetry-python
Release list
Version 1.44.0/0.65b0
Added
opentelemetry-docker-tests: Refactor Docker tests to properly validate contents of exported telemetry (#5220)opentelemetry-exporter-otlp-common: add shared package for common OTLP utilities (#5252)opentelemetry-sdk: addMissingDependencyErrorexception for declarative configuration and use it for missing optional dependency errors (#5265)opentelemetry-sdk: Add ability to refresh process dependent Resource attributes (#5280)opentelemetry-sdk: addforce_flushmethod toLogRecordExporterABC (#5294)opentelemetry-sdk: Make it possible to limit the size of stored spans in InMemorySpanExporter (#5296)opentelemetry-sdk: add log record limits environment variablesOTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMITandOTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT(#5300)opentelemetry-sdk: add support for file exporter with declarative config (#5311)opentelemetry-sdk: exposeSynchronousMultiLogRecordProcessorandConcurrentMultiLogRecordProcessorpublicly (#5327)opentelemetry-sdk: point the declarative configuration package README at the shared language support status matrix in theopentelemetry-configurationrepo, so Python conformance status lives alongside the other languages instead of being duplicated per language SDK. (#5347)opentelemetry-sdk: document that Python-implementation extensions (OTEL_PYTHON_*variables) are bypassed whenOTEL_CONFIG_FILEis set. The env-var initialisation path is skipped entirely in favour of the declarative file; honouring these alongside a config file is tracked as a follow-up. (#5353)opentelemetry-sdk: wire id_generator from declarative configuration to TracerProvider (#5363)opentelemetry-sdk: Add support for activating instrumentors from a declarative configuration file via theinstrumentation/development.pythonsection. Instrumentors can declare aconfigurationattribute to have their options validated through the same type-coercion pipeline used for SDK component configuration. (#5372)opentelemetry-sdk: addrecord_min_maxoption toExponentialBucketHistogramAggregation, matching the option already available onExplicitBucketHistogramAggregationand required by the specification (#5377)
Changed
- opentelemetry-sdk: revert BoundedAttributes RLock back to Lock (#5329)
- docs: update logs example to use
opentelemetry-instrumentation-logging(#5344) opentelemetry-sdk: bump declarative configuration schema to v1.1.0 (#5345)opentelemetry-configuration: declarative configuration moves fromopentelemetry.sdk._configurationinto the new publicopentelemetry-configurationpackage (opentelemetry.configurationnamespace), published experimentally.opentelemetry-sdk[file-configuration]continues to work as an alias that installsopentelemetry-configurationalongside the SDK. (#5356)opentelemetry-api: remove env carrier environment snapshot caching, you now have to pass explicitly the mapping where to get the environment variables from as theEnvironmentGetter.getfirst argument. (#5366)opentelemetry-semantic-conventions: bump to 1.42.0 (#5410)opentelemetry-semantic-conventions: bump to 1.43.0 (#5413)
Removed
opentelemetry-api,opentelemetry-sdk: Removed deprecated Events API/SDK. UseLogRecordwith theevent_namefield set instead. (#5293)
Fixed
opentelemetry-sdk: OptimizeLogRecordmemory inBatchLogRecordProcessorby clearing theContextobject before buffering. This is a potentially breaking change for custom log exporters that accesscontextfrom the exportedReadableLogRecord, as the context will now be an emptyContext()instead of the original. (#4977)opentelemetry-sdk: drop non-finite measurements (NaN and Inf) at the instrument level to prevent permanent aggregation poisoning (#5336)opentelemetry-sdk: raiseValueErrorwhenExplicitBucketHistogramAggregationboundaries are not strictly increasing or finite (#5340)opentelemetry-sdk:ProcessResourceDetectorno longer collects or emitsprocess.command_argsandprocess.command_lineby default since the values are not sanitized and may contain sensitive information. Users who depend on these resource attributes must passinclude_command_args=True. (#5364)opentelemetry-exporter-otlp-proto-http: fix the OTLP HTTP metric exporter self-observability metrics over-counting data points whenmax_export_batch_sizesplits a batch; each split now reports its own data-point count instead of the whole-batch count. (#5370)opentelemetry-api: Prevent in-place mutation ofContextvia inheriteddictmethods (#5399)
Version 1.43.0/0.64b0
Added
opentelemetry-sdk: addadd_metric_reader/remove_metric_readerpublic APIs to register / unregister metric readers at runtime. (#4863)opentelemetry-exporter-prometheus: add support for configuring metric scope labels (#5123)opentelemetry-exporter-otlp-proto-grpc: Add grpc error details to the log message that's written when the grpc call fails. (#5143)opentelemetry-exporter-http-transport: add 'opentelemetry-exporter-http-transport' package for HTTP exporters (#5194)opentelemetry-sdk: Addcomposite/developmentsamplers support to declarative file configuration (#5201)opentelemetry-exporter-otlp-json-file: Add OTLP JSON File exporter implementation (#5207)opentelemetry-sdk: add_resolve_componentshared utility for declarative config plugin loading, reducing boilerplate in exporter factory functions (#5215)opentelemetry-sdk: add pull metric reader support to declarative file configuration, including Prometheus metric reader via theprometheus_developmentconfig field (#5216)opentelemetry-proto-json: update to use opentelemetry-proto v1.10.0 (#5224)opentelemetry-proto: bump maximum supported protobuf version to 7.x.x (#5251)opentelemetry-sdk: addServiceInstanceIdResourceDetectorfor populatingservice.instance.id(#5259)opentelemetry-sdk: declarative config loader now recursively converts parsed dicts into typed dataclass instances, including nested dataclasses, lists of dataclasses, and enum values. End-to-end YAML/JSON → SDK configuration now works via the factory functions. (#5269)opentelemetry-sdk: addconfigure_sdk(config)to the declarative configuration API. Single entry point that takes a parsedOpenTelemetryConfiguration, builds the resource, and applies the tracer/meter/logger providers and propagator globally. Honors the top-leveldisabledflag. (#5270)opentelemetry-sdk: the SDK configurator now honors theOTEL_CONFIG_FILEenvironment variable. When set, the SDK loads and applies the referenced declarative configuration file (YAML or JSON) in place of the env-var-based init path. (#5271)opentelemetry-sdk: update declarative config to useServiceInstanceIdResourceDetector(#5299)opentelemetry-exporter-otlp-proto-common,opentelemetry-exporter-otlp-json-common: encoders now always accept null, and encode it as an emptyAnyValuein accordance with the spec. (#5305)opentelemetry-sdk: validate the declarative configfile_formatversion — reject an unsupported major version and warn on a newer minor version, per the configuration spec versioning rules (#5315)opentelemetry-exporter-http-transport: enable entry-point loading of transport implementations (#5320)
Changed
opentelemetry-sdk: introduce experimental entry points for OpAMP agent integration (#4646)opentelemetry-api: conditionally import entrypoints foropentelemetry_contextonly if theOTEL_PYTHON_CONTEXTenv variable is defined, returnContextVarsRuntimeContextotherwise (#5144)opentelemetry-sdk: rename "known/unknown" to "built-in/user-defined" terminology in declarative config component loading code (#5214)opentelemetry-proto: regenerate protobuf code from opentelemetry-proto v1.10.0 (#5223)opentelemetry-sdk: remove unnecessarycopyin Span creation (#5272)- opentelemetry-sdk: remove unnecessary dict in set_attribute method (#5274)
opentelemetry-sdk: inline the method_clean_attribute_value(#5275)- Remove typing aliases deprecated in python 3.9 and replace all usages of
typing.Unionandtyping.Optionalwith|. (#5277) - opentelemetry-sdk: remove generator in the accessor for links/events (#5287)
- opentelemetry-api: remove unnecessary copy in iterator (#5288)
opentelemetry-api: updateEnvironmentGetterto ignore non-normalized environment variable names (#5289)- opentelemetry-sdk: update iterator for BoundedList (#5297)
- opentelemetry-sdk: reduce lock contention in attributes (#5298)
- opentelemetry-sdk: merge doesn't need a copy, dict already does this (#5326)
opentelemetry-api: normalize empty environment propagation names to_inEnvironmentSetterandEnvironmentGetter(#5328)
Fixed
- Add missing
.rstfiles to Sphinx documentation build for SDK logs, propagators, and exporter submodules. (#5017) - Preserve the random trace ID flag when creating child spans instead of always setting the random trace id bit depending on the available trace id generator. (#5241)
opentelemetry-api: fix SelectableGroups deprecation warning (#5250)opentelemetry-sdk: makeSynchronousMeasurementConsumer.consume_measurementlock free to avoid deadlocks (#5321)
Version 1.42.1/0.63b1
This is a patch release on the previous 1.42.0/0.63b0 release, fixing the issue(s) below.
Fixed
- Preserve the random trace ID flag when creating child spans instead of always setting the random trace id bit depending on the available trace id generator. (#5241)
Version 1.42.0/0.63b0
Added
opentelemetry-api,opentelemetry-sdk: add support for 'random-trace-id' flags in W3C traceparent header trace flags. Implementations ofIdGeneratorthat do randomly generate the 56 least significant bits, should also implement ais_trace_id_randommethods that returnsTrue. (#4854)- logs: add exception support to Logger emit and LogRecord attributes (#4908)
opentelemetry-exporter-otlp-proto-grpc: make retryable gRPC error codes configurable for gRPC exporters (#4917)opentelemetry-sdk: Addcreate_logger_provider/configure_logger_providerto declarative file configuration, enabling LoggerProvider instantiation from config files without reading env vars (#4990)opentelemetry-exporter-otlp-json-common: add 'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters (#4996)opentelemetry-sdk: Addserviceresource detector support to declarative file configuration viadetection_development.detectors[].service(#5003)opentelemetry-docker-tests: add docker-tests coverage ofopentelemetry-exporter-otlp-proto-grpcandopentelemetry-exporter-otlp-proto-httpmetrics export (#5030)- Add
registrykeyword argument toPrometheusMetricReaderto allow passing a custom Prometheus registry (#5055) - Add WeaverLiveCheck test util (#5088)
opentelemetry-sdk: addload_entry_pointshared utility to declarative file configuration for loading plugins via entry points; refactor propagator loading to use it (#5093)opentelemetry-sdk: add sampler plugin loading to declarative file configuration via theopentelemetry_samplerentry point group, matching the spec's PluginComponentProvider mechanism (#5095)opentelemetry-sdk: add propagator plugin loading to declarative file configuration via theopentelemetry_propagatorentry point group, matching the spec's PluginComponentProvider mechanism (#5098)opentelemetry-sdk: add exporter plugin loading to declarative file configuration for all three signals (traces, metrics, logs) via theopentelemetry_*_exporterentry point groups, matching the spec's PluginComponentProvider mechanism (#5128)opentelemetry-sdk: add generic resource detector plugin loading to declarative file configuration via theopentelemetry_resource_detectorentry point group, matching the spec's PluginComponentProvider mechanism (#5129)opentelemetry-sdk: addadditional_propertiessupport to generated config models via customdatamodel-codegentemplate, enabling plugin/custom component names to flow through typed dataclasses (#5131)- Add ability to selectively enable exporting of SDK internal metrics with the
OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLEDenvironment variable. (#5151)
Changed
opentelemetry-semantic-conventions: useX | Yunion annotation (#5096)opentelemetry-api: updateEnvironmentGetterandEnvironmentSetterto use normalized environment variable names (#5119)- Apply fixes for
UPruff rule (#5133) opentelemetry-sdk: only load entrypoints for resource detectors if they are configured viaOTEL_EXPERIMENTAL_RESOURCE_DETECTORS(#5145)- ci: wait for tracecontext server readiness instead of a fixed sleep in
scripts/tracecontext-integration-test.sh(#5149) - Switch to SPDX license headers and add CI enforcement (#5177)
opentelemetry-semantic-conventions: Bump semantic conventions to 1.41.1, this changes the metrics name ofK8S_CONTAINER_CPU_LIMIT_UTILIZATIONandK8S_CONTAINER_CPU_REQUEST_UTILIZATION. (#5200)
Removed
opentelemetry-api: remove third-party importlib-metadata in favor of standard library since Python >= 3.10 is now required (#3234)- Drop Python 3.9 support (#5076)
Fixed
opentelemetry-sdk: Allow declarative OTLP HTTP exporters to mapcompression: deflateinstead of rejecting it as unsupported. (#5075)- Fix incorrect code example in
create_tracer()docstring (#5077) opentelemetry-sdk: FixProcessResourceDetectorto usesys.orig_argvso thatprocess.command,process.command_line, andprocess.command_argsreflect the original invocation forpython -m <module>runs (wheresys.argv[0]is rewritten to the module path) (#5083)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)opentelemetry-sdk: Fix mutable attributes reference in metrics, attributes passed to instrumentadd/recordare now copied so that subsequent mutations do not affect recorded data points (#5106)opentelemetry-sdk: make resource detector ordering deterministic (#5120)- Fix incorrect type annotation on
detectorsparameter ofget_aggregated_resources(#5135) opentelemetry-api: Enforce W3C Baggage size limits on outbound propagation inW3CBaggagePropagator.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)opentelemetry-sdk: fix multi-processorforce_flushskipping remaining processors when one returnsNone(#5179)opentelemetry-test-utils: fix weaver live check hanging when weaver log output fills the pipe buffer (#5208)
Version 1.41.1/0.62b1
This is a patch release on the previous 1.41.0/0.62b0 release, fixing the issue(s) below.
Version 1.41.0/0.62b0
opentelemetry-sdk: Addhostresource detector support to declarative file configuration viadetection_development.detectors[].host(#5002)opentelemetry-sdk: Addcontainerresource detector support to declarative file configuration viadetection_development.detectors[].container, using entry point loading of theopentelemetry-resource-detector-containeridcontrib package (#5004)opentelemetry-sdk: Addcreate_tracer_provider/configure_tracer_providerto declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars (#4985)- Enabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules. (#5019)
opentelemetry-sdk: FixAttributeErrorinExplicitBucketHistogramAggregationwhen applied to non-Histogram instruments without explicit boundaries (#5034)- Fix
BatchLogRecordProcessordefaultschedule_delay_millisfrom 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set theOTEL_BLRP_SCHEDULE_DELAYenv var). (#4998) opentelemetry-sdk: Addprocessresource detector support to declarative file configuration viadetection_development.detectors[].process(#5001)opentelemetry-sdk: Add shared_parse_headershelper for declarative config OTLP exporters (#5021)opentelemetry-api: Replace a broad exception in attribute cleaning tests to satisfy pylint in thelint-opentelemetry-apiCI jobopentelemetry-sdk: Addcreate_meter_provider/configure_meter_providerto declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars (#4987)opentelemetry-sdk: Addcreate_resourceandcreate_propagator/configure_propagatorto declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars (#4979)opentelemetry-sdk: Map PythonCRITICALlog level to OTelFATALseverity text per the specification (#4984)opentelemetry-sdk: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema (#4898)- Fix intermittent CI failures in
getting-startedandtracecontextjobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone (#4958) opentelemetry-sdk: fix type annotations onMetricReaderand related types (#4938)opentelemetry-sdk: implement log creation metric (#4935)opentelemetry-sdk: implement metric reader metrics (#4970)opentelemetry-sdk: implement processor metrics (#5012)opentelemetry-sdk: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0 (#4965)- improve check-links ci job (#4978)
- Resolve some Pyright type errors in Span/ReadableSpan and utility stubs (#4973)
opentelemetry-exporter-prometheus: Fix metric name prefix (#4895)opentelemetry-api,opentelemetry-sdk: Add deepcopy support forBoundedAttributesandBoundedList(#4934)opentelemetry-proto-json,opentelemetry-codegen-json: Implement custom protoc plugin to generate OTLP JSON class definitions (#4910)- Add configurable
max_export_batch_sizeto OTLP HTTP metrics exporter (#4576) opentelemetry-sdk: Implement experimental Meter configurator (#4966)opentelemetry-exporter-otlp-proto-http: use consistent protobuf for export request (#5015)opentelemetry-sdk: cache TracerConfig into the tracer, this changes an internal interface. Only one Tracer with the same instrumentation scope will be created (#5007)- Redo OTLPMetricExporter unit tests of
max_export_batch_sizeto use realexport(#5036) opentelemetry-sdk: Implement experimental Logger configurator (#4980)
Version 1.40.0/0.61b0
BREAKING CHANGE
As part of #4861, start_span and start_as_current_span as part of NoOpTracer were fixed such that they no longer strictly return an INVALID_SPAN if there is a valid span context as the current span context, instead it propagates the span context properly even at the absence of the sdk installed.
opentelemetry-sdk: deprecateLoggingHandlerin favor ofopentelemetry-instrumentation-logging, seeopentelemetry-instrumentation-loggingdocumentation (#4919)opentelemetry-sdk: Clarify log processor error handling expectations in documentation (#4915)- bump semantic-conventions to v1.40.0 (#4941)
- Add stale PR GitHub Action (#4926)
opentelemetry-sdk: Drop unused Jaeger exporter environment variables (exporter removed in 1.22.0) (#4918)opentelemetry-sdk: Clarify timeout units in environment variable documentation (#4906)opentelemetry-exporter-otlp-proto-grpc: Fix re-initialization of gRPC channel on UNAVAILABLE error (#4825)opentelemetry-exporter-prometheus: Fix duplicate HELP/TYPE declarations for metrics with different label sets (#4868)- Allow loading all resource detectors by setting
OTEL_EXPERIMENTAL_RESOURCE_DETECTORSto*(#4819) opentelemetry-sdk: Fix the type hint of the_metrics_dataproperty to allowNone(#4837).- Regenerate opentelemetry-proto code with v1.9.0 release (#4840)
- Add python 3.14 support (#4798)
- Silence events API warnings for internal users (#4847)
- opentelemetry-sdk: make it possible to override the default processors in the SDK configurator (#4806)
- Prevent possible endless recursion from happening in
SimpleLogRecordProcessor.on_emit, (#4799) and (#4867). - Implement span start/end metrics (#4880)
- Add environment variable carriers to API (#4609)
- Add experimental composable rule based sampler (#4882)
- Make ConcurrentMultiSpanProcessor fork safe (#4862)
opentelemetry-exporter-otlp-proto-http: fix retry logic and error handling for connection failures in trace, metric, and log exporters (#4709)opentelemetry-sdk: avoid RuntimeError during iteration of view instrument match dictionary in MetricReaderStorage.collect() (#4891)- Implement experimental TracerConfigurator (#4861)
opentelemetry-sdk: Fix instrument creation race condition (#4913)- bump semantic-conventions to v1.39.0 (#4914)
opentelemetry-sdk: automatically generate configuration models using OTel config JSON schema (#4879)
Version 1.39.1/0.60b1
This is a patch release on the previous 1.39.0/0.60b0 release, fixing the issue(s) below.
- Silence events API warnings for internal users (#4847)
Version 1.39.0/0.60b0
-
opentelemetry-api: Convert objects of any type other than AnyValue in attributes to string to be exportable (#4808) -
docs: Added sqlcommenter example (#4734)
-
build: bump ruff to 0.14.1 (#4782)
-
Add
opentelemetry-exporter-credential-provider-gcpas an optional dependency toopentelemetry-exporter-otlp-proto-grpcandopentelemetry-exporter-otlp-proto-http(#4760) -
semantic-conventions: Bump to 1.38.0 (#4791)
-
[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope (#4676)
-
[BREAKING] Rename several classes from Log to LogRecord
(#4647)Migration Guide:
LogDatahas been removed. Users should update their code as follows:-
For Log Exporters: Change from
Sequence[LogData]toSequence[ReadableLogRecord]# Before from opentelemetry.sdk._logs import LogData def export(self, batch: Sequence[LogData]) -> LogRecordExportResult: ... # After from opentelemetry.sdk._logs import ReadableLogRecord def export(self, batch: Sequence[ReadableLogRecord]) -> LogRecordExportResult: ...
-
For Log Processors: Use
ReadWriteLogRecordfor processing,ReadableLogRecordfor exporting# Before from opentelemetry.sdk._logs import LogData def on_emit(self, log_data: LogData): ... # After from opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord def on_emit(self, log_record: ReadWriteLogRecord): # Convert to ReadableLogRecord before exporting readable = ReadableLogRecord( log_record=log_record.log_record, resource=log_record.resource or Resource.create({}), instrumentation_scope=log_record.instrumentation_scope, limits=log_record.limits, ) ...
-
Accessing log data: Use the same attributes on
ReadableLogRecord/ReadWriteLogRecordlog_record.log_record- The API LogRecord (contains body, severity, attributes, etc.)log_record.resource- The Resourcelog_record.instrumentation_scope- The InstrumentationScope (now included, was in LogData before)log_record.limits- The LogRecordLimits
-
-
Mark the Events API/SDK as deprecated. The Logs API/SDK should be used instead, an event is now a
LogRecordwith theevent_namefield set (#4654). -
Fix type checking for built-in metric exporters (#4820)