diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-09 22:28:47 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-09 22:28:47 +0200 |
| commit | 82ce18ef9f45f817505b12e24c958beda45465f0 (patch) | |
| tree | 2e33da4474b33153a1071281b0c03af447a76ea7 /packages/meshbay-node | |
| parent | a4dbeb368d19f6afc0f6da3819c8e0d6242b0732 (diff) | |
| download | meshbay-82ce18ef9f45f817505b12e24c958beda45465f0.tar.gz | |
fix: complete pyproject.toml deps + graceful QUIC fallback
meshbay-node/pyproject.toml: add aioquic>=1.0 (was commented 'v2'),
websockets>=12.0 (revocation push). Both are production code since Phase 5.
meshbay-hub/pyproject.toml: add aiosqlite (tests without PostgreSQL),
slowapi (rate limiting), websockets (revocation push), PyJWT (explicit).
transport/__init__.py: QUIC imports wrapped in try/except — node works
without aioquic (TCP+TLS + HTTP fallback). QUIC_AVAILABLE flag exported.
QUICKSTART.md: replace manual pip list with 'pip install -e' that pulls
all deps from pyproject.toml automatically. Add dependency table.
CLAUDE.md: clarify that all deps go in pyproject.toml, not manual installs.
81/81 tests.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-node')
| -rw-r--r-- | packages/meshbay-node/pyproject.toml | 11 | ||||
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/transport/__init__.py | 19 |
2 files changed, 21 insertions, 9 deletions
diff --git a/packages/meshbay-node/pyproject.toml b/packages/meshbay-node/pyproject.toml index 48231ad..805871e 100644 --- a/packages/meshbay-node/pyproject.toml +++ b/packages/meshbay-node/pyproject.toml @@ -9,12 +9,13 @@ description = "MeshBay Node — local file host, streaming server, and group dae requires-python = ">=3.12" dependencies = [ "meshbay-common>=0.1.0", - "fastapi>=0.115", # local web UI on localhost:18000 + "fastapi>=0.115", # local web UI on localhost:18000 "uvicorn[standard]>=0.30", - "httpx>=0.28", # hub client - "watchdog>=5.0", # directory monitoring - "aioice>=0.9", # ICE/STUN for NAT traversal - # aioquic>=1.0 added in v2 (QUIC transport) + "httpx>=0.28", # hub client + "watchdog>=5.0", # directory monitoring + "aioice>=0.9", # ICE/STUN for NAT traversal + "aioquic>=1.0", # QUIC transport (MNP v2) — implemented in Phase 5 + "websockets>=12.0", # hub→node revocation push ] [project.optional-dependencies] diff --git a/packages/meshbay-node/src/meshbay_node/transport/__init__.py b/packages/meshbay-node/src/meshbay_node/transport/__init__.py index 8b49b22..b3144a6 100644 --- a/packages/meshbay-node/src/meshbay_node/transport/__init__.py +++ b/packages/meshbay-node/src/meshbay_node/transport/__init__.py @@ -2,8 +2,19 @@ from .server import ChunkServer from .client import ChunkClient from .http_server import create_http_app -from .quic_server import QuicChunkServer -from .quic_client import QuicChunkClient -__all__ = ["ChunkServer", "ChunkClient", "create_http_app", - "QuicChunkServer", "QuicChunkClient"] +# QUIC transport (MNP v2) — requires aioquic>=1.0 +# Falls back gracefully if not installed; node still works via TCP+TLS and HTTP. +try: + from .quic_server import QuicChunkServer + from .quic_client import QuicChunkClient + QUIC_AVAILABLE = True +except ImportError: + QuicChunkServer = None # type: ignore[assignment,misc] + QuicChunkClient = None # type: ignore[assignment,misc] + QUIC_AVAILABLE = False + +__all__ = [ + "ChunkServer", "ChunkClient", "create_http_app", + "QuicChunkServer", "QuicChunkClient", "QUIC_AVAILABLE", +] |