Skip to content

Pure-Python otlp-proto-common encoding (no protobuf) [2/4 RFC] - #5504

Draft
ocelotl wants to merge 2 commits into
open-telemetry:mainfrom
ocelotl:pure-python-otlp-2-common
Draft

Pure-Python otlp-proto-common encoding (no protobuf) [2/4 RFC]#5504
ocelotl wants to merge 2 commits into
open-telemetry:mainfrom
ocelotl:pure-python-otlp-2-common

Conversation

@ocelotl

@ocelotl ocelotl commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

What

Point opentelemetry-exporter-otlp-proto-common (the shared OTLP encoders for traces/metrics/logs) at the pure-Python protobuf backend from #5503. No google.protobuf anywhere in the OTLP encode path.

The public opentelemetry.exporter.otlp.proto.common.* API is preserved via re-export shims over a private opentelemetry.exporter.otlp._proto.common implementation, mirroring the structure used for opentelemetry-proto in #5503.

Stacked series (merge in order)

  1. opentelemetry-proto → pure-Python
  2. opentelemetry-exporter-otlp-proto-common → pure-Python backend (this PR)
  3. opentelemetry-exporter-otlp-proto-http → pure-Python + stdlib urllib
  4. opentelemetry-exporter-otlp-proto-grpc → pure-Python gRPC

This PR depends on #5503 and its diff includes #5503's changes (cumulative, since we can't host intermediate base branches in the upstream repo). To review only the common-package changes, see the fork compare:
https://github.com/ocelotl/opentelemetry-python/compare/pure-python-otlp-1-proto...pure-python-otlp-2-common

Notes


Stack (merge in order): #5503 (proto) → #5504 (common) → #5505 (http) → #5506 (grpc)

ocelotl added 2 commits August 2, 2026 21:33
Swap the google.protobuf-generated message classes for hand-written pure-Python
encoders under opentelemetry._proto, keeping the public opentelemetry.proto.*
import namespace via thin re-export shims. Removes the protobuf (and native upb)
dependency entirely; only the serialize path used by the OTLP exporters is
implemented (plus the empty export-service response decode).
Point the shared OTLP encoders at the pure-Python opentelemetry-proto package.
No google.protobuf dependency; public opentelemetry.exporter.otlp.proto.common.*
API preserved via re-export shims over the private _proto implementation.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant