summaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-08-09 22:28:47 +0200
committerChristophe Besson <cbesson@gmail.com>2026-08-09 22:28:47 +0200
commit82ce18ef9f45f817505b12e24c958beda45465f0 (patch)
tree2e33da4474b33153a1071281b0c03af447a76ea7 /packages/meshbay-node
parenta4dbeb368d19f6afc0f6da3819c8e0d6242b0732 (diff)
downloadmeshbay-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.toml11
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/__init__.py19
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",
+]