Skip to content

Add optional faust[opentelemetry] extra + docs for OpenTelemetry via the OpenTracing shim#688

Open
wbarnha wants to merge 1 commit into
masterfrom
claude/opentelemetry-shim
Open

Add optional faust[opentelemetry] extra + docs for OpenTelemetry via the OpenTracing shim#688
wbarnha wants to merge 1 commit into
masterfrom
claude/opentelemetry-shim

Conversation

@wbarnha

@wbarnha wbarnha commented Jul 18, 2026

Copy link
Copy Markdown
Member

Description

A small, non-breaking step toward OpenTelemetry: package + document the bridge that already works.

Faust's app.tracer accepts any OpenTracing-compatible tracer, and OpenTelemetry ships an official OpenTracing shim (opentelemetry.shim.opentracing_shim.create_tracer) that exposes exactly that, backed by an OTel TracerProvider. So OpenTelemetry works today with no change to Faust's tracing internals or public API — this PR just makes it a first-class, discoverable path.

Changes

  • requirements/extras/opentelemetry.txt + the opentelemetry bundle in setup.pypip install "faust[opentelemetry]" (pulls opentelemetry-opentracing-shim + opentelemetry-sdk).
  • docs/userguide/sensors.rst — a new Distributed Tracing section showing how to build an app.tracer from an OpenTelemetry TracerProvider via create_tracer(), so Faust's stream/agent/rebalance spans flow out to any OTel exporter (OTLP/Jaeger/Zipkin).

Verification

  • Installed the extra and ran the exact docs example: wiring app.tracer = OpenTelemetryTracer(provider) and exercising it the way Faust does internally (get_tracer(...).start_span(operation_name=…, tags=…), set_tag, finish, and app.tracer.trace(...)) — all work end-to-end, emitting OTel spans (TracerShim/SpanShim).
  • setup.py lint clean (flake8/black); the RST parses cleanly and uses the file's existing .. sourcecode:: convention.

Context

This is step 2 of a phased OpenTracing→OpenTelemetry plan: #686 makes opentracing optional; this documents/packages the OTel bridge (no breaking change); a future major could do a native OTel rewrite or drop built-in tracing in favor of opentelemetry-instrumentation-faust. It complements #681 (which documents the external auto-instrumentation package) by covering the app.tracer wiring path.


Generated by Claude Code

Faust's app.tracer accepts any OpenTracing-compatible tracer, so
OpenTelemetry works today via its OpenTracing shim -- no code change
needed. Make that a first-class, documented path:

- requirements/extras/opentelemetry.txt + the 'opentelemetry' setup.py
  bundle -> pip install faust[opentelemetry] (pulls
  opentelemetry-opentracing-shim + opentelemetry-sdk).
- docs/userguide/sensors.rst: a 'Distributed Tracing' section showing how
  to build an app.tracer from an OpenTelemetry TracerProvider via
  create_tracer(), so Faust's spans flow out to any OTel exporter.

Non-breaking: no change to faust's tracing internals or public API; this
just documents and packages the bridge. Verified the example wires
app.tracer through the shim and start_span/set_tag/finish/trace() all
work end-to-end.
@codecov

codecov Bot commented Jul 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.14%. Comparing base (f3019aa) to head (1387a6e).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #688   +/-   ##
=======================================
  Coverage   94.14%   94.14%           
=======================================
  Files         104      104           
  Lines       11136    11136           
  Branches     1201     1201           
=======================================
  Hits        10484    10484           
  Misses        551      551           
  Partials      101      101           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

wbarnha added a commit that referenced this pull request Jul 19, 2026
Per review, the v0.12.0 changelog/release notes should describe only what is
already on master, not work still in open PRs.

- Remove the not-yet-merged items: the offset-commit data-loss fixes
  (#606/#707, #316/#692), the optional OpenTracing/OpenTelemetry extras
  (#685/#686, #688/#681), web_application_options (#704), and the reported-issue
  fix stack (#693-#703, #705). These will be added back as they merge.
- Add a Dependencies section noting the current runtime/client libraries:
  mode-streaming >= 0.4.0, aiokafka >= 0.10.0 (compatible with recent 0.13/0.14
  releases), the new confluent-kafka >= 2.0.0 for faust[ckafka], and the
  faust-cchardet fork replacing unmaintained cchardet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL
wbarnha added a commit to SpencerWhitehead7/faust that referenced this pull request Jul 21, 2026
…st-streaming#708)

* docs: prepare v0.12.0 release notes and changelog

Resume the Keep a Changelog format (dormant since v0.8.10) with a v0.12.0
section, and add standalone GitHub release notes covering the changes since
v0.11.3 plus the pending fix stack.

Highlights: two offset data-loss fixes (faust-streaming#606/faust-streaming#707, faust-streaming#316/faust-streaming#692), the
re-added confluent-kafka driver, Python 3.14 support (3.8/3.9 dropped),
OpenTracing/OpenTelemetry made optional, and a live-broker CI harness.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL

* docs: drop closed codecov.yml PR (faust-streaming#683) from v0.12.0 notes

PR faust-streaming#683 (codecov.yml with a 1% coverage threshold) was closed without
merging, so remove it from the changelog and release notes to keep the
v0.12.0 change list accurate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL

* docs: derive Sphinx version from the package instead of a stale constant

`docs/conf.py` hardcoded `version_dev='1.1'` / `version_stable='1.0'` -
robinhood-era values that never matched faust-streaming's 0.x line, so the
published GitHub Pages docs advertised the wrong version.

Derive the documented major.minor from `faust.__version__` (which
setuptools_scm resolves from the git tag), so the docs always report the real
version and this can't silently drift between releases.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL

* docs: scope v0.12.0 notes to merged work; note dependency updates

Per review, the v0.12.0 changelog/release notes should describe only what is
already on master, not work still in open PRs.

- Remove the not-yet-merged items: the offset-commit data-loss fixes
  (faust-streaming#606/faust-streaming#707, faust-streaming#316/faust-streaming#692), the optional OpenTracing/OpenTelemetry extras
  (faust-streaming#685/faust-streaming#686, faust-streaming#688/faust-streaming#681), web_application_options (faust-streaming#704), and the reported-issue
  fix stack (faust-streaming#693-faust-streaming#703, faust-streaming#705). These will be added back as they merge.
- Add a Dependencies section noting the current runtime/client libraries:
  mode-streaming >= 0.4.0, aiokafka >= 0.10.0 (compatible with recent 0.13/0.14
  releases), the new confluent-kafka >= 2.0.0 for faust[ckafka], and the
  faust-cchardet fork replacing unmaintained cchardet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL

* docs: set v0.12.0 changelog date to 2026-07-19

Replace the UNRELEASED placeholder with the release date and drop the
now-satisfied "set the date at tag time" note.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HHPL4VFWQRQPpjR1gXSKyL

* Delete RELEASE_NOTES_v0.12.0.md

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@wbarnha
wbarnha enabled auto-merge July 21, 2026 19:43
@wbarnha
wbarnha disabled auto-merge July 21, 2026 19:43
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