Releases: open-telemetry/opentelemetry-python
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)
Version 1.38.0/0.59b0
Version 1.37.0/0.58b0
- Add experimental composite samplers (#4714)
- Add new environment variables to the SDK
OTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDERthat can be used to inject arequests.Sessionorgrpc.ChannelCredentialsobject into OTLP exporters created during auto instrumentation #4689. - Filter duplicate logs out of some internal
logger's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception. (#4695). - docs: linked the examples with their github source code location and added Prometheus example (#4728)
- Permit to override default HTTP OTLP exporters headers (#4634)
- semantic-conventions: Bump to 1.37.0 (#4731)
- opentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs (#4677)
- Performance: Cache
importlib_metadata.entry_points(#4735) - opentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance (#4741)
Version 1.36.0/0.57b0
-
Add missing Prometheus exporter documentation (#4485)
-
Overwrite logging.config.fileConfig and logging.config.dictConfig to ensure the OTLP
LogHandlerremains attached to the root logger. Fix a bug that can cause a deadlock to occur overlogging._lockin some cases (#4636). -
otlp-http-exporter: set default value for param
timeout_secin_exportmethod (#4691) -
Update OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping before a retry attempt, and cause them to return failure immediately. Update BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish exporting any buffered telemetry, instead of continuing to export until all telemetry was exported. (#4638).