Skip to content

Releases: open-telemetry/opentelemetry-python

Version 1.41.0/0.62b0

09 Apr 14:38
1a178fc

Choose a tag to compare

  • 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

04 Mar 14:17
dd22021

Choose a tag to compare

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

11 Dec 13:32
b4c1327

Choose a tag to compare

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

03 Dec 13:20
dc0a9b3

Choose a tag to compare

  • 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

16 Oct 08:36
1f68134

Choose a tag to compare

  • 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)

Version 1.37.0/0.58b0

11 Sep 10:29
bc413fc

Choose a tag to compare

  • Add experimental composite samplers (#4714)
  • Add new environment variables to the SDK OTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER that can be used to inject a requests.Session or grpc.ChannelCredentials object 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

29 Jul 15:12
1aaa2a2

Choose a tag to compare

  • Add missing Prometheus exporter documentation (#4485)

  • Overwrite logging.config.fileConfig and logging.config.dictConfig to ensure the OTLP LogHandler remains attached to the root logger. Fix a bug that can cause a deadlock to occur over logging._lock in some cases (#4636).

  • otlp-http-exporter: set default value for param timeout_sec in _export method (#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

11 Jul 12:23
ad266aa

Choose a tag to compare

  • Update OTLP proto to v1.7 #4645.
  • Add event_name as a top level field in the LogRecord. Events are now simply logs with the event_name field 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: ignore that causes mypy to ignore the whole file (#4618)
  • Add span_exporter property back to BatchSpanProcessor class (#4621)
  • Fix license field in pyproject.toml files (#4625)
  • Update logger level to NOTSET in logs example (#4637)
  • Logging API accepts optional context; deprecates trace_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

10 Jun 08:55
f55810d

Choose a tag to compare

This is a patch release on the previous 1.34.0/0.55b0 release, fixing the issue(s) below.

  • opentelemetry-sdk: Fix invalid type: ignore that causes mypy to ignore the whole file (#4618)
  • Add span_exporter property back to BatchSpanProcessor class (#4621)

Version 1.34.0/0.55b0

04 Jun 13:31
74645c0

Choose a tag to compare

  • typecheck: add sdk/resources and drop mypy (#4578)
  • Refactor BatchLogRecordProcessor to simplify code and make the control flow more clear (#4562 and #4535).
  • Use PEP702 for marking deprecations (#4522)
  • Refactor BatchLogRecordProcessor and BatchSpanProcessor to 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)