Skip to content

Commit c6ed27c

Browse files
authored
Merge pull request #1296 from mhils/ctors
Make h2.events more typing-friendly
2 parents 1feb271 + 1ed6c61 commit c6ed27c

File tree

5 files changed

+250
-202
lines changed

5 files changed

+250
-202
lines changed

CHANGELOG.rst

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ dev
88

99
-
1010

11+
**API Changes (Backward Compatible)**
12+
13+
- h2 events now have tighter type bounds, e.g. `stream_id` is guaranteed to not be `None` for most events now.
14+
This simplifies downstream type checking.
15+
1116
**Bugfixes**
1217

1318
-

src/h2/connection.py

+4-8
Original file line numberDiff line numberDiff line change
@@ -1806,9 +1806,7 @@ def _receive_window_update_frame(self, frame: WindowUpdateFrame) -> tuple[list[F
18061806
)
18071807

18081808
# FIXME: Should we split this into one event per active stream?
1809-
window_updated_event = WindowUpdated()
1810-
window_updated_event.stream_id = 0
1811-
window_updated_event.delta = frame.window_increment
1809+
window_updated_event = WindowUpdated(stream_id=0, delta=frame.window_increment)
18121810
stream_events = [window_updated_event]
18131811
frames = []
18141812

@@ -1825,17 +1823,16 @@ def _receive_ping_frame(self, frame: PingFrame) -> tuple[list[Frame], list[Event
18251823

18261824
evt: PingReceived | PingAckReceived
18271825
if "ACK" in frame.flags:
1828-
evt = PingAckReceived()
1826+
evt = PingAckReceived(ping_data=frame.opaque_data)
18291827
else:
1830-
evt = PingReceived()
1828+
evt = PingReceived(ping_data=frame.opaque_data)
18311829

18321830
# automatically ACK the PING with the same 'opaque data'
18331831
f = PingFrame(0)
18341832
f.flags.add("ACK")
18351833
f.opaque_data = frame.opaque_data
18361834
frames.append(f)
18371835

1838-
evt.ping_data = frame.opaque_data
18391836
events.append(evt)
18401837

18411838
return frames, events
@@ -1974,8 +1971,7 @@ def _receive_unknown_frame(self, frame: ExtensionFrame) -> tuple[list[Frame], li
19741971
self.config.logger.debug(
19751972
"Received unknown extension frame (ID %d)", frame.stream_id,
19761973
)
1977-
event = UnknownFrameReceived()
1978-
event.frame = frame
1974+
event = UnknownFrameReceived(frame=frame)
19791975
return [], [event]
19801976

19811977
def _local_settings_acked(self) -> dict[SettingCodes | int, ChangedSetting]:

0 commit comments

Comments
 (0)