Dependency Graph¶
Arrows point from dependent to dependency (A --> B means "A depends on B").
graph TD
J[meadows-jsonlogic]
C[meadows-client]
B[meadows-bot]
S[meadows-server]
W[meadows-web]
T[meadows-tui]
P[meadows-protocol]
J --> P
C --> P
C --> J
S --> P
S --> J
W --> P
T --> P
T --> C
B --> C
B --> P
Rules¶
meadows-protocolis the only leaf — everyone depends on it; it depends on nothing.meadows-serverandmeadows-botnever import each other — they meet only via protocol types.meadows-webdoes not depend onmeadows-client— it is a dumb HTTP host; the browser is the Socket.IO client.meadows-clientmakes the second implementation cheap — bots and (future non-browser) clients share transport.
Import paths¶
| Package | Import path |
|---|---|
meadows-protocol |
meadows.protocol |
meadows-client |
meadows.client |
meadows-bot |
meadows.bot |
meadows-server |
meadows.server |
meadows-web |
meadows.web |
meadows-tui |
meadows.tui |
Dependency details¶
| Package | Depends on | Install |
|---|---|---|
meadows-protocol |
pydantic only |
uv pip install -e . |
meadows-jsonlogic |
meadows-protocol |
uv pip install -e . |
meadows-client |
meadows-protocol, meadows-jsonlogic, python-socketio |
uv pip install -e . |
meadows-bot |
meadows-client, meadows-protocol |
uv pip install -e . |
meadows-server |
meadows-protocol, meadows-jsonlogic, python-socketio, endow |
uv pip install -e ".[dev]" |
meadows-web |
meadows-protocol, starlette |
uv pip install -e ".[dev]" |
meadows-tui |
meadows-client, meadows-protocol |
uv pip install -e ".[dev]" |
Editable dependencies¶
Each pyproject.toml maps sibling packages to editable paths:
[tool.uv.sources]
meadows-protocol = { path = "../meadows-protocol", editable = true }
This ensures local development uses the latest sibling code without publishing.