Skip to content

Releases: open-telemetry/opentelemetry-python

Version 1.44.0/0.65b0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 15:25
53a5a40

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: add MissingDependencyError exception 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: add force_flush method to LogRecordExporter ABC (#5294)
  • opentelemetry-sdk: Make it possible to limit the size of stored spans in InMemorySpanExporter (#5296)
  • opentelemetry-sdk: add log record limits environment variables OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT and OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT (#5300)
  • opentelemetry-sdk: add support for file exporter with declarative config (#5311)
  • opentelemetry-sdk: expose SynchronousMultiLogRecordProcessor and ConcurrentMultiLogRecordProcessor publicly (#5327)
  • opentelemetry-sdk: point the declarative configuration package README at the shared language support status matrix in the opentelemetry-configuration repo, 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 when OTEL_CONFIG_FILE is 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 the instrumentation/development.python section. Instrumentors can declare a configuration attribute to have their options validated through the same type-coercion pipeline used for SDK component configuration. (#5372)
  • opentelemetry-sdk: add record_min_max option to ExponentialBucketHistogramAggregation, matching the option already available on ExplicitBucketHistogramAggregation and 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 from opentelemetry.sdk._configuration into the new public opentelemetry-configuration package (opentelemetry.configuration namespace), published experimentally. opentelemetry-sdk[file-configuration] continues to work as an alias that installs opentelemetry-configuration alongside 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 the EnvironmentGetter.get first 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. Use LogRecord with the event_name field set instead. (#5293)

Fixed

  • opentelemetry-sdk: Optimize LogRecord memory in BatchLogRecordProcessor by clearing the Context object before buffering. This is a potentially breaking change for custom log exporters that access context from the exported ReadableLogRecord, as the context will now be an empty Context() 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: raise ValueError when ExplicitBucketHistogramAggregation boundaries are not strictly increasing or finite (#5340)
  • opentelemetry-sdk: ProcessResourceDetector no longer collects or emits process.command_args and process.command_line by default since the values are not sanitized and may contain sensitive information. Users who depend on these resource attributes must pass include_command_args=True. (#5364)
  • opentelemetry-exporter-otlp-proto-http: fix the OTLP HTTP metric exporter self-observability metrics over-counting data points when max_export_batch_size splits a batch; each split now reports its own data-point count instead of the whole-batch count. (#5370)
  • opentelemetry-api: Prevent in-place mutation of Context via inherited dict methods (#5399)

Version 1.43.0/0.64b0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 15:20
fcbbeb8

Added

  • opentelemetry-sdk: add add_metric_reader / remove_metric_reader public 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: Add composite/development samplers support to declarative file configuration (#5201)
  • opentelemetry-exporter-otlp-json-file: Add OTLP JSON File exporter implementation (#5207)
  • opentelemetry-sdk: add _resolve_component shared 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 the prometheus_development config 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: add ServiceInstanceIdResourceDetector for populating service.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: add configure_sdk(config) to the declarative configuration API. Single entry point that takes a parsed OpenTelemetryConfiguration, builds the resource, and applies the tracer/meter/logger providers and propagator globally. Honors the top-level disabled flag. (#5270)
  • opentelemetry-sdk: the SDK configurator now honors the OTEL_CONFIG_FILE environment 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 use ServiceInstanceIdResourceDetector (#5299)
  • opentelemetry-exporter-otlp-proto-common, opentelemetry-exporter-otlp-json-common: encoders now always accept null, and encode it as an empty AnyValue in accordance with the spec. (#5305)
  • opentelemetry-sdk: validate the declarative config file_format version — 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 for opentelemetry_context only if the OTEL_PYTHON_CONTEXT env variable is defined, return ContextVarsRuntimeContext otherwise (#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 unnecessary copy in 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.Union and typing.Optional with |. (#5277)
  • opentelemetry-sdk: remove generator in the accessor for links/events (#5287)
  • opentelemetry-api: remove unnecessary copy in iterator (#5288)
  • opentelemetry-api: update EnvironmentGetter to 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 _ in EnvironmentSetter and EnvironmentGetter (#5328)

Fixed

  • Add missing .rst files 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: make SynchronousMeasurementConsumer.consume_measurement lock free to avoid deadlocks (#5321)

Version 1.42.1/0.63b1

Choose a tag to compare

@github-actions github-actions released this 21 May 16:33
367e14d

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

Choose a tag to compare

@github-actions github-actions released this 19 May 09:46
013045e

Added

  • 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)
  • 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: Add create_logger_provider/configure_logger_provider to 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: Add service resource detector support to declarative file configuration via detection_development.detectors[].service (#5003)
  • opentelemetry-docker-tests: add docker-tests coverage of opentelemetry-exporter-otlp-proto-grpc and opentelemetry-exporter-otlp-proto-http metrics export (#5030)
  • Add registry keyword argument to PrometheusMetricReader to allow passing a custom Prometheus registry (#5055)
  • Add WeaverLiveCheck test util (#5088)
  • 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)
  • opentelemetry-sdk: add sampler plugin loading to declarative file configuration via the opentelemetry_sampler entry point group, matching the spec's PluginComponentProvider mechanism (#5095)
  • opentelemetry-sdk: add propagator plugin loading to declarative file configuration via the opentelemetry_propagator entry 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 the opentelemetry_*_exporter entry point groups, matching the spec's PluginComponentProvider mechanism (#5128)
  • opentelemetry-sdk: add generic resource detector plugin loading to declarative file configuration via the opentelemetry_resource_detector entry point group, matching the spec's PluginComponentProvider mechanism (#5129)
  • 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)
  • Add ability to selectively enable exporting of SDK internal metrics with the OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLED environment variable. (#5151)

Changed

  • opentelemetry-semantic-conventions: use X | Y union annotation (#5096)
  • opentelemetry-api: update EnvironmentGetter and EnvironmentSetter to use normalized environment variable names (#5119)
  • Apply fixes for UP ruff rule (#5133)
  • opentelemetry-sdk: only load entrypoints for resource detectors if they are configured via OTEL_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 of K8S_CONTAINER_CPU_LIMIT_UTILIZATION and K8S_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 map compression: deflate instead of rejecting it as unsupported. (#5075)
  • Fix incorrect code example in create_tracer() docstring (#5077)
  • 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 <module> runs (where sys.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 instrument add/record are 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 detectors parameter of get_aggregated_resources (#5135)
  • 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)
  • opentelemetry-sdk: fix multi-processor force_flush skipping remaining processors when one returns None (#5179)
  • opentelemetry-test-utils: fix weaver live check hanging when weaver log output fills the pipe buffer (#5208)

Version 1.41.1/0.62b1

Choose a tag to compare

@github-actions github-actions released this 24 Apr 13:15
760e024

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

Choose a tag to compare

@github-actions github-actions released this 09 Apr 14:38
1a178fc
  • opentelemetry-sdk: Add host resource detector support to declarative file configuration via detection_development.detectors[].host (#5002)
  • opentelemetry-sdk: Add container resource detector support to declarative file configuration via detection_development.detectors[].container, using entry point loading of the opentelemetry-resource-detector-containerid contrib package (#5004)
  • opentelemetry-sdk: Add create_tracer_provider/configure_tracer_provider to 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: Fix AttributeError in ExplicitBucketHistogramAggregation when applied to non-Histogram instruments without explicit boundaries (#5034)
  • Fix BatchLogRecordProcessor default schedule_delay_millis from 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 the OTEL_BLRP_SCHEDULE_DELAY env var). (#4998)
  • opentelemetry-sdk: Add process resource detector support to declarative file configuration via detection_development.detectors[].process (#5001)
  • opentelemetry-sdk: Add shared _parse_headers helper for declarative config OTLP exporters (#5021)
  • opentelemetry-api: Replace a broad exception in attribute cleaning tests to satisfy pylint in the lint-opentelemetry-api CI job
  • opentelemetry-sdk: Add create_meter_provider/configure_meter_provider to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars (#4987)
  • opentelemetry-sdk: Add create_resource and create_propagator/configure_propagator to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars (#4979)
  • opentelemetry-sdk: Map Python CRITICAL log level to OTel FATAL severity 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-started and tracecontext jobs 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 on MetricReader and 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 for BoundedAttributes and BoundedList (#4934)
  • opentelemetry-proto-json, opentelemetry-codegen-json: Implement custom protoc plugin to generate OTLP JSON class definitions (#4910)
  • Add configurable max_export_batch_size to 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_size to use real export (#5036)
  • opentelemetry-sdk: Implement experimental Logger configurator (#4980)

Version 1.40.0/0.61b0

Choose a tag to compare

@github-actions github-actions released this 04 Mar 14:17
dd22021

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: deprecate LoggingHandler in favor of opentelemetry-instrumentation-logging, see opentelemetry-instrumentation-logging documentation (#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_DETECTORS to * (#4819)
  • opentelemetry-sdk: Fix the type hint of the _metrics_data property to allow None (#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

Choose a tag to compare

@github-actions github-actions released this 11 Dec 13:32
b4c1327

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

Choose a tag to compare

@github-actions github-actions released this 03 Dec 13:20
dc0a9b3
  • 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-gcp as an optional dependency to opentelemetry-exporter-otlp-proto-grpc and opentelemetry-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:

    LogData has been removed. Users should update their code as follows:

    • For Log Exporters: Change from Sequence[LogData] to Sequence[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 ReadWriteLogRecord for processing, ReadableLogRecord for 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/ReadWriteLogRecord

      • log_record.log_record - The API LogRecord (contains body, severity, attributes, etc.)
      • log_record.resource - The Resource
      • log_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 LogRecord with the event_name field set (#4654).

  • Fix type checking for built-in metric exporters (#4820)

Version 1.38.0/0.59b0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:36
1f68134
  • Add rstcheck to pre-commit to stop introducing invalid RST (#4755)
  • logs: extend Logger.emit to accept separated keyword arguments (#4737)
  • logs: add warnings for classes that would be deprecated and renamed in 1.39.0 (#4771)