Skip to content

fix: prevent FastStream bootstrap NameError when optional extras are missing#88

Merged
lesnik512 merged 1 commit into
mainfrom
87-faststream-bootstrapper-nameerror-when-prometheus-opentelemetry-extras-are-not-installed
May 13, 2026
Merged

fix: prevent FastStream bootstrap NameError when optional extras are missing#88
lesnik512 merged 1 commit into
mainfrom
87-faststream-bootstrapper-nameerror-when-prometheus-opentelemetry-extras-are-not-installed

Conversation

@lesnik512
Copy link
Copy Markdown
Member

Two code paths in FastStreamBootstrapper referenced symbols from optional extras unconditionally, bypassing the check_dependencies skip-with-warning machinery and raising NameError at bootstrap time when prometheus_client or opentelemetry was absent (issue #87).

  • BaseBootstrapper._register_or_skip now calls check_dependencies on the instrument class before instantiation, so an instrument whose init references gated symbols (e.g. FastStreamPrometheusInstrument's collector_registry default_factory) is skipped cleanly.
  • FastStreamHealthChecksInstrument.bootstrap guards the tracer reference with import_checker.is_opentelemetry_installed so the default opentelemetry_generate_health_check_spans=True no longer crashes installs without the opentelemetry extra.
  • Adds regression tests plus a conftest helper that wipes the bootstrapper module's globals before reload, so the conditional-import branches re-evaluate against the patched import_checker flags.

…missing

Two code paths in FastStreamBootstrapper referenced symbols from optional
extras unconditionally, bypassing the check_dependencies skip-with-warning
machinery and raising NameError at bootstrap time when prometheus_client
or opentelemetry was absent (issue #87).

- BaseBootstrapper._register_or_skip now calls check_dependencies on the
  instrument class before instantiation, so an instrument whose __init__
  references gated symbols (e.g. FastStreamPrometheusInstrument's
  collector_registry default_factory) is skipped cleanly.
- FastStreamHealthChecksInstrument.bootstrap guards the tracer reference
  with import_checker.is_opentelemetry_installed so the default
  opentelemetry_generate_health_check_spans=True no longer crashes
  installs without the opentelemetry extra.
- Adds regression tests plus a conftest helper that wipes the bootstrapper
  module's globals before reload, so the conditional-import branches
  re-evaluate against the patched import_checker flags.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@lesnik512 lesnik512 self-assigned this May 13, 2026
@lesnik512 lesnik512 merged commit 57d2c59 into main May 13, 2026
7 checks passed
@lesnik512 lesnik512 deleted the 87-faststream-bootstrapper-nameerror-when-prometheus-opentelemetry-extras-are-not-installed branch May 13, 2026 16:40
@codecov
Copy link
Copy Markdown

codecov Bot commented May 13, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
unittests 100.00% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
lite_bootstrap/bootstrappers/base.py 100.00% <100.00%> (ø)
...bootstrap/bootstrappers/faststream_bootstrapper.py 100.00% <100.00%> (ø)
tests/conftest.py 100.00% <100.00%> (ø)
tests/test_faststream_bootstrap.py 100.00% <100.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

hasansezertasan added a commit to PaketMutfak/croupier that referenced this pull request May 13, 2026
Bumps lite-bootstrap to 0.28.1, which ships the upstream fix
(modern-python/lite-bootstrap#88): check_dependencies() is now consulted
before instrument instantiation, and the FastStreamHealthChecksInstrument
tracer reference is gated behind is_opentelemetry_installed. Removes the
_Bootstrapper subclass, the opentelemetry_generate_health_check_spans=False
override, and the related CLAUDE.md section.
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.

FastStream bootstrapper NameError when prometheus / opentelemetry extras are not installed

1 participant