gabriel / muse public
fix BREAKING dev
AI Agent gabriel · 151 days ago · Apr 23, 2026 · Diff

fix: Wall 17 — WriteError diagnostic + gRPC test fixtures + iter_wire_frames_grpc logging

- transport.py: WriteError with empty str(exc) now walks __cause__/__context__ chain; empty message → 'H2 RST_STREAM ({cause})' or 'H2 RST_STREAM (no error details)' instead of the useless trailing-space form - tests/test_wire_h2_wall17.py: T25 (zero-object push) + T26 (WriteError diagnostic) - musewire-performance.md: Wall 17 documented with atomic TDD items W17-A0–A2 done - test_wire_h2_strict.py: removed stale urllib negative tests (urllib is gone) - test_core_transport.py / test_transport_http2.py / test_wire_h2_async_push.py: updated for urllib removal (req.headers dict, req.method, no http.client)

sha256:05c80eb57b90ae163456afdc9a70b950e081a5b25b959989daa16e1fd16ea7dc sha
+26 ~70 −51 symbols
sha256:346f4cebd888cc47a288552300a4b60708b38cd43b01ab341a57d84553a8b8b1 snapshot
+26
symbols added
~70
symbols modified
−51
symbols removed
0
dead code introduced
Semantic Changes 147 symbols
~ tests/test_wire_h2_wall17.py .py 20 symbols added
+ TestT25ZeroObjectPush class class TestT25ZeroObjectPush L74–127
+ test_zero_object_push_result_has_expected_shape method method test_zero_object_push_result_has_expected_shape L97–111
+ test_zero_object_push_sends_exactly_one_post method method test_zero_object_push_sends_exactly_one_post L113–127
+ test_zero_object_push_succeeds method method test_zero_object_push_succeeds L83–95
+ TestT26WriteErrorDiagnostic class class TestT26WriteErrorDiagnostic L135–223
+ _make_resp_that_raises method method _make_resp_that_raises L145–158
+ test_empty_write_error_no_cause_reports_rst_stream method method test_empty_write_error_no_cause_reports_rst_stream L184–203
+ test_empty_write_error_with_cause_includes_cause_text method method test_empty_write_error_with_cause_includes_cause_text L160–182
+ test_non_empty_write_error_passes_through_unchanged method method test_non_empty_write_error_passes_through_unchanged L205–223
+ _async_mock_httpx_streaming_response function function _async_mock_httpx_streaming_response L31–43
+ _mock_httpx_client function function _mock_httpx_client L46–51
+ _push_zero_objects function function _push_zero_objects L54–66
+ _result_frame function function _result_frame L27–28
+ AsyncMock import import AsyncMock L14–14
+ MagicMock import import MagicMock L14–14
+ PushResult import import PushResult L19–19
+ annotations import import annotations L12–12
+ msgpack import import msgpack L16–16
+ patch import import patch L14–14
+ pytest import import pytest L17–17
~ docs/protocol/musewire-performance.md .md 3 symbols added, 4 symbols modified
+ Wall 17 — Empty WriteError on push_stream after all R2 PUTs succeed section Wall 17 — Empty WriteError on push_stream after all R2 PUTs succeed L634–706
+ code@L638 variable variable code@L638 L638–642
+ code[python]@L674 variable variable code[python]@L674 L674–679
~ muse/core/transport.py .py 2 symbols added, 22 symbols removed, 13 symbols modified
_execute_fetch method method _execute_fetch L1121–1170
_push_stream_httpx method method _push_stream_httpx L1327–1441
_HttpHeaders class class _HttpHeaders L507–510
get method method get L510–510
_HttpResponse class class _HttpResponse L514–532
__enter__ method method __enter__ L525–525
__exit__ method method __exit__ L527–532
read method method read L523–523
_NoRedirectHandler class class _NoRedirectHandler L568–601
redirect_request method method redirect_request L583–601
_STRICT_OPENER variable variable _STRICT_OPENER L606–606
_get_wire_client function function _get_wire_client L175–201
_http_error_message function function _http_error_message L540–560
_open_url function function _open_url L642–655
_wire_client variable variable _wire_client L172–172
IO import import IO L113–113
client import import http.client L101–101
runtime_checkable import import runtime_checkable L113–113
types import import types L108–108
error import import urllib.error L109–109
request import import urllib.request L111–111
response import import urllib.response L112–112
+ _Request class class _Request L180–186
+ _httpx_mod import import _httpx_mod L156–156
~ tests/test_transport_http2.py .py 9 symbols removed, 6 symbols modified
TestT11HttpxFlag class class TestT11HttpxFlag L56–72
test_httpx_available_is_bool method method test_httpx_available_is_bool L59–61
test_httpx_available_true_when_httpx_installed method method test_httpx_available_true_when_httpx_installed L63–72
test_no_httpx_raises_transport_error method method test_no_httpx_raises_transport_error L155–171
_mock_httpx_response function function _mock_httpx_response L35–42
Any import import Any L13–13
call import import call L14–14
io import import io L11–11
pathlib import import pathlib L12–12
~ _push
~ patch
~ tests/test_wire_h2_strict.py .py 1 symbol added, 16 symbols removed, 18 symbols modified
test_fetch_stream_does_not_use_urllib method method test_fetch_stream_does_not_use_urllib L234–244
test_fetch_stream_uses_http2_true method method test_fetch_stream_uses_http2_true L222–232
test_negotiate_does_not_use_urllib method method test_negotiate_does_not_use_urllib L270–280
test_fetch_remote_info_does_not_use_urllib method method test_fetch_remote_info_does_not_use_urllib L310–320
test_presign_does_not_use_urllib method method test_presign_does_not_use_urllib L347–358
TestT21SharedClient class class TestT21SharedClient L365–409
test_get_wire_client_exists method method test_get_wire_client_exists L368–372
test_get_wire_client_no_redirects method method test_get_wire_client_no_redirects L403–409
test_get_wire_client_returns_httpx_client method method test_get_wire_client_returns_httpx_client L374–378
test_get_wire_client_returns_same_instance method method test_get_wire_client_returns_same_instance L380–384
test_get_wire_client_uses_http2 method method test_get_wire_client_uses_http2 L386–401
TestT23NoHttpxRaises class class TestT23NoHttpxRaises L450–471
test_no_httpx_push_raises_transport_error method method test_no_httpx_push_raises_transport_error L453–471
test_no_existing_client_still_works method method test_no_existing_client_still_works L513–541
call import import call L20–20
types import import types L18–18
+ test_push_result_ok method method test_push_result_ok L351–375
~ patch
← Older Oldest on dev
All commits
Newer → Latest on dev

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:05c80eb57b90ae163456afdc9a70b950e081a5b25b959989daa16e1fd16ea7dc --body "your comment"