You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs(planning): refresh the launch playbook against current reality (#47)
The copy was drafted in June and the projects have moved. Verified every
claim against PyPI, the GitHub API and each repo's README on 2026-07-13.
Corrections:
- httpware wraps httpx2 (2.5.0), not httpx, and now ships sync as well as
async clients. The copy said "wraps httpx", which is simply false and is
exactly what a Show HN thread would catch.
- modern-di has 13 official integrations, not the 4 the copy listed
(adds Starlette, Flask, aiohttp, Celery, arq, taskiq, aiogram, gRPC).
- The Dishka comparison conceded "many more integrations". Dishka has ~15 to
modern-di's 13, so that undersold the project. Reframed to what is still
true and checkable: Dishka is considerably more established (~1.2k stars),
supports async resolution and custom scopes, and integration coverage is
now roughly comparable.
- 100+ releases -> 116. lite-bootstrap adds FastMCP and Pyroscope.
- faststream-outbox is no longer "~weeks old" (first commit 2026-05-07,
now 0.10.5 across 29 releases); httpware is still 0.x, so keep the pin advice.
Adds a dated facts-checked banner, since these threads are one-shot and the
numbers go stale again.
> -**Type-based autowiring** — your constructor type hints *are* the graph; no `Provide[...]` markers or string keys.
32
39
> -**Explicit scopes** (APP → REQUEST → …) with **build-time** cycle- and scope-violation checks.
33
40
> -**Sync resolution by design** — async setup/teardown lives in the framework lifespan, not in resolution. This is deliberate and permanent, not a missing feature.
34
-
> -**Official integrations** for FastAPI, Litestar, FastStream, and Typer, plus a first-party pytest plugin that turns any dependency into a fixture.
35
-
> - Zero-dependency core, MIT, 100+ releases.
41
+
> -**Official integrations** for FastAPI, Litestar, Starlette, Flask, aiohttp, FastStream, Celery, arq, taskiq, aiogram, gRPC, and Typer — plus a first-party pytest plugin that turns any dependency into a fixture.
42
+
> - Zero-dependency core, MIT, 116 releases.
36
43
>
37
44
> Where it honestly stands:
38
45
> - If you're building a single FastAPI service and everything is request-scoped, FastAPI's `Depends` is enough — you don't need this.
39
-
> - The closest library is **Dishka**, which is more established, has many more integrations, and supports async resolution + custom scopes. If you need those, use Dishka. modern-di's bets are a simpler sync-only model, the first-party pytest plugin, and being one consistent small stack.
40
-
> - It's young but actively developed.
46
+
> - The closest library is **Dishka**, which is considerably more established (~1.2k stars to my ~60) and supports async resolution and custom scopes. If you need either, use Dishka. Integration coverage is now roughly comparable between the two. modern-di's bets are a simpler sync-only model, the first-party pytest plugin, and being one consistent small stack.
47
+
> - It's young but actively developed, and deliberately conservative — the docs have a "design decisions" page for what it leaves out on purpose (auto-binding, in-package integrations, graph rendering).
41
48
>
42
49
> Docs include a full comparison and a "do you even need a DI container?" page: https://modern-di.modern-python.org
@@ -51,20 +58,20 @@ comment; the honest "when not to use it" is what earns goodwill.
51
58
52
59
## 2. r/Python (Showcase format — three required sections)
53
60
54
-
**Title:**`modern-di – typed dependency injection with scopes and one wiring across FastAPI, Litestar, FastStream, and Typer`
61
+
**Title:**`modern-di – typed dependency injection with scopes and one wiring across FastAPI, Litestar, FastStream, Celery, and Typer`
55
62
56
63
**Body:**
57
64
58
65
> **What My Project Does**
59
-
> modern-di is a dependency-injection framework. You declare providers once (type-based autowiring from constructor hints), and resolve them with explicit scopes (APP → REQUEST → …) and build-time cycle/scope checks. The same container wires your FastAPI app, your FastStream workers, your Typer CLI, and your tests — via official integrations and a first-party pytest plugin that turns any dependency into a fixture. Sync resolution by design; async lives in the framework lifespan.
66
+
> modern-di is a dependency-injection framework. You declare providers once (type-based autowiring from constructor hints), and resolve them with explicit scopes (APP → REQUEST → …) and build-time cycle/scope checks. The same container wires your FastAPI app, your FastStream workers, your Celery/arq/taskiq tasks, your Typer CLI, and your tests — via 13 official integrations and a first-party pytest plugin that turns any dependency into a fixture. Sync resolution by design; async lives in the framework lifespan.
60
67
>
61
68
> **Target Audience**
62
69
> Python teams whose business logic runs behind *more than one entrypoint* (an API plus workers/CLIs) and who want one wiring instead of three. It's production-intended but young — early adopters welcome. If you have a single web service where everything is request-scoped, framework-native `Depends`/`Provide` is enough and modern-di is overkill.
63
70
>
64
71
> **Comparison**
65
72
> -**vs FastAPI `Depends` / Litestar `Provide`:** great inside one app, but don't span workers/CLIs or give typed app-scoped singletons; modern-di shares one wiring across all entrypoints.
> -**vs Dishka** (the closest library): Dishka is more established, has more integrations, and supports async resolution + custom scopes — pick it if you need those. modern-di bets on a simpler sync-only model and a first-party pytest plugin.
74
+
> -**vs Dishka** (the closest library): Dishka is considerably more established (~1.2k stars) and supports async resolution + custom scopes — pick it if you need those. Integration coverage is now roughly comparable. modern-di bets on a simpler sync-only model and a first-party pytest plugin.
68
75
> -**vs `that-depends`** (my earlier framework): modern-di adds explicit scopes and drops global state; that-depends stays maintained for async resolution.
- "One typed DI wiring for your FastAPI app, FastStream workers, and Typer CLI — not three. modern-di, sync-by-design: https://modern-di.modern-python.org"
200
+
- "One typed DI wiring for your FastAPI app, FastStream workers, Celery tasks, and Typer CLI — not four. modern-di, sync-by-design: https://modern-di.modern-python.org"
187
201
- "Dual-write problem in your event-driven service? faststream-outbox does the transactional outbox for FastStream + Postgres in one decorator."
188
-
- "httpx, but your 404s are typed exceptions and retry/bulkhead/circuit-breaker are composable middleware. httpware."
202
+
- "An HTTP client framework where your 404s are typed exceptions and retry/bulkhead/circuit-breaker are composable middleware. Sync and async. httpware."
0 commit comments