feat(transport): async HTTP/2 push via httpx.AsyncClient
- Replace sync httpx.Client streaming POST with httpx.AsyncClient + asyncio.run() to eliminate bidirectional H2 deadlock - Add _httpx_verify() helper: returns local self-signed cert path for localhost URLs, True (system CA) for everything else - Drop HTTP/1.1 chunked fallback; TransportError raised if httpx absent - Fix mpack.py MuseWireFrameWriter docstring: b'muse'/0x01 (was b'MWP2'/0x02)
Tests (TDD — all green): - test_wire_h2_async_push.py: T25-T28 (16 new tests) T25 AsyncClient used with http2=True T26 bidirectional streaming completes without deadlock T27 MWP frame sequence H→O*→C→E, magic b'muse', version 0x01 T28 WriteError maps to TransportError - test_transport_http2.py: updated T11-T12 mocks to AsyncClient pattern - test_wire_h2_strict.py: updated T16/T22/T24 push mocks to async; fixed __enter__ lambda → MagicMock(return_value=resp) for reliable context manager behaviour; added WriteError to mock_mod
0 comments
muse hub commit comment sha256:8ee0f6b7f37cf2ced51deeb495cf2db81d0497953ffdc114a5219267f1be90f5 --body "your comment"
No comments yet. Be the first to start the discussion.