Skip to content

Commit 0216433

Browse files
committed
convert events.ResponseReceived into a dataclass
1 parent 6892580 commit 0216433

File tree

3 files changed

+26
-21
lines changed

3 files changed

+26
-21
lines changed

src/h2/events.py

+21-17
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def __repr__(self) -> str:
9292
return f"<RequestReceived stream_id:{self.stream_id}, headers:{self.headers}>"
9393

9494

95+
@dataclass(**kw_only)
9596
class ResponseReceived(Event):
9697
"""
9798
The ResponseReceived event is fired whenever response headers are received.
@@ -106,26 +107,29 @@ class ResponseReceived(Event):
106107
Added ``stream_ended`` and ``priority_updated`` properties.
107108
"""
108109

109-
def __init__(self) -> None:
110-
#: The Stream ID for the stream this response was made on.
111-
self.stream_id: int | None = None
110+
stream_id: int
111+
"""The Stream ID for the stream this response was made on."""
112112

113-
#: The response headers.
114-
self.headers: list[Header] | None = None
113+
headers: list[Header] = _LAZY_INIT
114+
"""The response headers."""
115115

116-
#: If this response also ended the stream, the associated
117-
#: :class:`StreamEnded <h2.events.StreamEnded>` event will be available
118-
#: here.
119-
#:
120-
#: .. versionadded:: 2.4.0
121-
self.stream_ended: StreamEnded | None = None
116+
stream_ended: StreamEnded | None = None
117+
"""
118+
If this response also ended the stream, the associated
119+
:class:`StreamEnded <h2.events.StreamEnded>` event will be available
120+
here.
122121
123-
#: If this response also had associated priority information, the
124-
#: associated :class:`PriorityUpdated <h2.events.PriorityUpdated>`
125-
#: event will be available here.
126-
#:
127-
#: .. versionadded:: 2.4.0
128-
self.priority_updated: PriorityUpdated | None = None
122+
.. versionadded:: 2.4.0
123+
"""
124+
125+
priority_updated: PriorityUpdated | None = None
126+
"""
127+
If this response also had associated priority information, the
128+
associated :class:`PriorityUpdated <h2.events.PriorityUpdated>`
129+
event will be available here.
130+
131+
.. versionadded:: 2.4.0
132+
"""
129133

130134
def __repr__(self) -> str:
131135
return f"<ResponseReceived stream_id:{self.stream_id}, headers:{self.headers}>"

src/h2/stream.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def response_received(self, previous_state: StreamState) -> list[Event]:
207207
if not self.headers_received:
208208
assert self.client is True
209209
self.headers_received = True
210-
event = ResponseReceived()
210+
event = ResponseReceived(stream_id=self.stream_id)
211211
else:
212212
assert not self.trailers_received
213213
self.trailers_received = True

tests/test_events.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,10 @@ def test_responsereceived_repr(self) -> None:
132132
"""
133133
ResponseReceived has a useful debug representation.
134134
"""
135-
e = h2.events.ResponseReceived()
136-
e.stream_id = 500
137-
e.headers = self.example_response_headers
135+
e = h2.events.ResponseReceived(
136+
stream_id=500,
137+
headers=self.example_response_headers,
138+
)
138139

139140
assert repr(e) == (
140141
"<ResponseReceived stream_id:500, headers:["

0 commit comments

Comments
 (0)