Skip to content

chore(deps): drop otel optional extra (YAGNI)#24

Merged
lesnik512 merged 1 commit into
mainfrom
chore/drop-otel-extra
Jun 5, 2026
Merged

chore(deps): drop otel optional extra (YAGNI)#24
lesnik512 merged 1 commit into
mainfrom
chore/drop-otel-extra

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Summary

Removes the `otel` optional extra from `pyproject.toml`. It declared `opentelemetry-api>=1.20` + `opentelemetry-sdk>=1.20` but zero httpware code imported them — it existed as a placeholder for Epic 5 (Observability) which hasn't started.

As declared, the extra had three concrete downsides:

  1. Misleads users. `pip install httpware[otel]` advertises OTel integration that doesn't exist.
  2. `httpware[all]` pulled ~30MB of OTel deps that no code used (`opentelemetry-api`, `opentelemetry-sdk`, `opentelemetry-semantic-conventions`, plus transitive).
  3. Pre-committed version bounds may not match what Epic 5 eventually needs (e.g., `opentelemetry-instrumentation` might be more appropriate than the SDK).

Add it back at the same time as the code that uses it lands — same pattern `pydantic` and `msgspec` follow.

Changes

  • `pyproject.toml`: remove `otel = [...]` block; drop `otel` from `all` extra
  • `planning/engineering.md`: update §3 Seam C, §7 optional-extras pattern, §8 Epic 5-4
  • `README.md`: drop the "(pydantic, msgspec, otel)" parenthetical and the "otel extra is declared but unshipped" line

Test Plan

  • `just install` — uv re-locks; OTel packages removed from lockfile
  • `just lint-ci` — clean
  • `just test` — 183 tests pass at 100% coverage (no functional change)

Breaking?

No. `pip install httpware[otel]` was never documented as a stable interface (pre-1.0). The extra was declared but advertised nothing. The `all` extra now installs strictly less, which is the desirable change.

🤖 Generated with Claude Code

The `otel` extra declared `opentelemetry-api>=1.20` + `opentelemetry-sdk>=1.20`
but zero httpware code imported them. It existed as a placeholder for Epic 5
(Observability) which hasn't started.

Three downsides as currently declared:

1. Misleads users: `pip install httpware[otel]` advertises OTel integration
   that doesn't exist.
2. `httpware[all]` pulled ~30MB of OTel deps that no code used.
3. Pre-committed version bounds may not match what Epic 5 eventually needs
   (might want opentelemetry-instrumentation rather than the SDK).

Drop now; add back at the same time as the code that uses it lands. This is
the same pattern pydantic/msgspec extras follow.

- pyproject.toml: remove `otel = [...]` block; drop otel from `all` extra.
- planning/engineering.md: update §3 Seam C contract (drop preemptive otel
  example), §7 optional-extras pattern (note the lesson), §8 Epic 5-4
  description.
- README.md: drop "(pydantic, msgspec, otel)" parenthetical from the [all]
  description and the "otel extra is declared but unshipped" line.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@lesnik512 lesnik512 self-assigned this Jun 5, 2026
@lesnik512 lesnik512 merged commit 5c9c184 into main Jun 5, 2026
5 checks passed
@lesnik512 lesnik512 deleted the chore/drop-otel-extra branch June 5, 2026 11:54
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