Skip to content

Commit c472671

Browse files
committed
convert ping events into a dataclasses
1 parent 51d64fd commit c472671

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

src/h2/connection.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -1823,17 +1823,16 @@ def _receive_ping_frame(self, frame: PingFrame) -> tuple[list[Frame], list[Event
18231823

18241824
evt: PingReceived | PingAckReceived
18251825
if "ACK" in frame.flags:
1826-
evt = PingAckReceived()
1826+
evt = PingAckReceived(ping_data=frame.opaque_data)
18271827
else:
1828-
evt = PingReceived()
1828+
evt = PingReceived(ping_data=frame.opaque_data)
18291829

18301830
# automatically ACK the PING with the same 'opaque data'
18311831
f = PingFrame(0)
18321832
f.flags.add("ACK")
18331833
f.opaque_data = frame.opaque_data
18341834
frames.append(f)
18351835

1836-
evt.ping_data = frame.opaque_data
18371836
events.append(evt)
18381837

18391838
return frames, events

src/h2/events.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,7 @@ def __repr__(self) -> str:
403403
)
404404

405405

406+
@dataclass(**kw_only)
406407
class PingReceived(Event):
407408
"""
408409
The PingReceived event is fired whenever a PING is received. It contains
@@ -412,14 +413,14 @@ class PingReceived(Event):
412413
.. versionadded:: 3.1.0
413414
"""
414415

415-
def __init__(self) -> None:
416-
#: The data included on the ping.
417-
self.ping_data: bytes | None = None
416+
ping_data: bytes
417+
"""The data included on the ping."""
418418

419419
def __repr__(self) -> str:
420420
return f"<PingReceived ping_data:{_bytes_representation(self.ping_data)}>"
421421

422422

423+
@dataclass(**kw_only)
423424
class PingAckReceived(Event):
424425
"""
425426
The PingAckReceived event is fired whenever a PING acknowledgment is
@@ -432,9 +433,8 @@ class PingAckReceived(Event):
432433
Removed deprecated but equivalent ``PingAcknowledged``.
433434
"""
434435

435-
def __init__(self) -> None:
436-
#: The data included on the ping.
437-
self.ping_data: bytes | None = None
436+
ping_data: bytes
437+
"""The data included on the ping."""
438438

439439
def __repr__(self) -> str:
440440
return f"<PingAckReceived ping_data:{_bytes_representation(self.ping_data)}>"

tests/test_events.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -222,17 +222,15 @@ def test_pingreceived_repr(self) -> None:
222222
"""
223223
PingReceived has a useful debug representation.
224224
"""
225-
e = h2.events.PingReceived()
226-
e.ping_data = b"abcdefgh"
225+
e = h2.events.PingReceived(ping_data=b"abcdefgh")
227226

228227
assert repr(e) == "<PingReceived ping_data:6162636465666768>"
229228

230229
def test_pingackreceived_repr(self) -> None:
231230
"""
232231
PingAckReceived has a useful debug representation.
233232
"""
234-
e = h2.events.PingAckReceived()
235-
e.ping_data = b"abcdefgh"
233+
e = h2.events.PingAckReceived(ping_data=b"abcdefgh")
236234

237235
assert repr(e) == "<PingAckReceived ping_data:6162636465666768>"
238236

0 commit comments

Comments
 (0)