Releases: open-telemetry/opentelemetry-python
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).
Version 1.35.0/0.56b0
- Update OTLP proto to v1.7 #4645.
- Add
event_nameas a top level field in theLogRecord. Events are now simply logs with theevent_namefield set, the logs SDK should be used to emit events (#4652). - Update OTLP gRPC/HTTP exporters: the export timeout is now inclusive of all retries and backoffs. A +/-20% jitter was added to all backoffs. A pointless 32 second sleep that occurred after all retries had completed/failed was removed. (#4564).
- Update ConsoleLogExporter.export to handle LogRecord's containing bytes type in the body (#4614).
- opentelemetry-sdk: Fix invalid
type: ignorethat causes mypy to ignore the whole file (#4618) - Add
span_exporterproperty back toBatchSpanProcessorclass (#4621) - Fix license field in pyproject.toml files (#4625)
- Update logger level to NOTSET in logs example (#4637)
- Logging API accepts optional
context; deprecatestrace_id,span_id,trace_flags. (#4597) and (#4668) - sdk: use context instead of trace_id,span_id for initializing LogRecord (#4653)
- Rename LogRecordProcessor.emit to on_emit (#4648)
- Logging API hide std_to_otel function to convert python logging severity to otel severity (#4649)
- proto: relax protobuf version requirement to support v6 (#4620)
- Bump semantic-conventions to 1.36.0 (#4669)
- Set expected User-Agent in HTTP headers for grpc OTLP exporter (#4658)
Breaking Changes
We are working on stabilizing the Log signal that would require making deprecations and breaking changes. We will try to reduce the releases that may require an update to your code, especially for instrumentations or for sdk developers.
- Rename LogRecordProcessor.emit to on_emit (#4648)
Version 1.34.1/0.55b1
Version 1.34.0/0.55b0
- typecheck: add sdk/resources and drop mypy (#4578)
- Refactor
BatchLogRecordProcessorto simplify code and make the control flow more clear (#4562 and #4535). - Use PEP702 for marking deprecations (#4522)
- Refactor
BatchLogRecordProcessorandBatchSpanProcessorto simplify code and make the control flow more clear (#4562 #4535, and #4580). - Remove log messages from
BatchLogRecordProcessor.emit, this caused the program to crash at shutdown with a max recursion error (#4586). - Configurable max retry timeout for grpc exporter (#4333)
- opentelemetry-api: allow importlib-metadata 8.7.0 (#4593)
- opentelemetry-test-utils: assert explicit bucket boundaries in histogram metrics (#4595)
- Bump semantic conventions to 1.34.0 (#4599)
- Drop support for Python 3.8 (#4520)