Skip to content

Commit 0ad2a5d

Browse files
bluetechpgjones
authored andcommitted
Remove some type: ignores and fix the problems
1 parent c767c59 commit 0ad2a5d

File tree

8 files changed

+86
-92
lines changed

8 files changed

+86
-92
lines changed

test/test_client.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def test_connection_request_additional_headers() -> None:
6363
def test_connection_request_simple_extension() -> None:
6464
extension = FakeExtension(offer_response=True)
6565
request = _make_connection_request(
66-
Request(host="localhost", target="/", extensions=[extension]) # type: ignore
66+
Request(host="localhost", target="/", extensions=[extension])
6767
)
6868

6969
headers = normed_header_dict(request.headers)
@@ -73,23 +73,24 @@ def test_connection_request_simple_extension() -> None:
7373
def test_connection_request_simple_extension_no_offer() -> None:
7474
extension = FakeExtension(offer_response=False)
7575
request = _make_connection_request(
76-
Request(host="localhost", target="/", extensions=[extension]) # type: ignore
76+
Request(host="localhost", target="/", extensions=[extension])
7777
)
7878

7979
headers = normed_header_dict(request.headers)
8080
assert b"sec-websocket-extensions" not in headers
8181

8282

8383
def test_connection_request_parametrised_extension() -> None:
84-
extension = FakeExtension(offer_response="parameter1=value1; parameter2=value2")
84+
offer_response = "parameter1=value1; parameter2=value2"
85+
extension = FakeExtension(offer_response=offer_response)
8586
request = _make_connection_request(
86-
Request(host="localhost", target="/", extensions=[extension]) # type: ignore
87+
Request(host="localhost", target="/", extensions=[extension])
8788
)
8889

8990
headers = normed_header_dict(request.headers)
9091
assert headers[b"sec-websocket-extensions"] == b"%s; %s" % (
9192
extension.name.encode("ascii"),
92-
extension.offer_response.encode("ascii"), # type: ignore
93+
offer_response.encode("ascii"),
9394
)
9495

9596

test/test_connection.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ def test_send_message(client_sends: bool, final: bool) -> None:
3333
remote = client
3434

3535
data = b"x" * 23
36-
remote.receive_data(
37-
local.send(BytesMessage(data=data, message_finished=final)) # type: ignore
38-
)
36+
remote.receive_data(local.send(BytesMessage(data=data, message_finished=final)))
3937
event = next(remote.events())
4038
assert isinstance(event, BytesMessage)
4139
assert event.data == data
@@ -135,9 +133,7 @@ def test_data(split_message: bool) -> None:
135133

136134
data = "ƒñö®∂😎"
137135
server.receive_data(
138-
client.send(
139-
TextMessage(data=data, message_finished=not split_message) # type: ignore
140-
)
136+
client.send(TextMessage(data=data, message_finished=not split_message))
141137
)
142138
event = next(server.events())
143139
assert isinstance(event, TextMessage)

test/test_frame_protocol.py

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import struct
55
from binascii import unhexlify
66
from codecs import getincrementaldecoder
7-
from typing import Optional, Tuple, Union
7+
from typing import Dict, Optional, Tuple, Union
88

99
import pytest
1010

@@ -98,7 +98,6 @@ def test_follow_on_binary_frame(self) -> None:
9898
payload = b"x" * 23
9999
decoder = fp.MessageDecoder()
100100
decoder.opcode = fp.Opcode.BINARY
101-
decoder.seen_first_frame = True # type: ignore
102101
frame = fp.Frame(
103102
opcode=fp.Opcode.CONTINUATION,
104103
payload=payload,
@@ -132,7 +131,6 @@ def test_follow_on_text_frame(self) -> None:
132131
binary_payload = text_payload.encode("utf8")
133132
decoder = fp.MessageDecoder()
134133
decoder.opcode = fp.Opcode.TEXT
135-
decoder.seen_first_frame = True # type: ignore
136134
decoder.decoder = getincrementaldecoder("utf-8")()
137135

138136
assert decoder.decoder.decode(binary_payload[:4]) == text_payload[:2]
@@ -156,7 +154,6 @@ def test_final_text_frame(self) -> None:
156154
binary_payload = text_payload.encode("utf8")
157155
decoder = fp.MessageDecoder()
158156
decoder.opcode = fp.Opcode.TEXT
159-
decoder.seen_first_frame = True # type: ignore
160157
decoder.decoder = getincrementaldecoder("utf-8")()
161158

162159
assert decoder.decoder.decode(binary_payload[:-2]) == text_payload[:-1]
@@ -192,7 +189,6 @@ def test_missing_continuation_1(self) -> None:
192189
payload = b"x" * 23
193190
decoder = fp.MessageDecoder()
194191
decoder.opcode = fp.Opcode.BINARY
195-
decoder.seen_first_frame = True # type: ignore
196192
frame = fp.Frame(
197193
opcode=fp.Opcode.BINARY,
198194
payload=payload,
@@ -887,21 +883,21 @@ def test_outbound_handling_single_frame(self) -> None:
887883
proto = fp.FrameProtocol(client=False, extensions=[ext])
888884
payload = "😃😄🙃😉"
889885
data = proto.send_data(payload, fin=True)
890-
payload = (payload + "®").encode("utf8") # type: ignore
891-
assert data == b"\x91" + bytearray([len(payload)]) + payload # type: ignore
886+
payload_bytes = (payload + "®").encode("utf8")
887+
assert data == b"\x91" + bytearray([len(payload_bytes)]) + payload_bytes
892888

893889
def test_outbound_handling_multiple_frames(self) -> None:
894890
ext = self.FakeExtension()
895891
proto = fp.FrameProtocol(client=False, extensions=[ext])
896892
payload = "😃😄🙃😉"
897893
data = proto.send_data(payload, fin=False)
898-
payload = payload.encode("utf8") # type: ignore
899-
assert data == b"\x11" + bytearray([len(payload)]) + payload # type: ignore
894+
payload_bytes = payload.encode("utf8")
895+
assert data == b"\x11" + bytearray([len(payload_bytes)]) + payload_bytes
900896

901897
payload = r"¯\_(ツ)_/¯"
902898
data = proto.send_data(payload, fin=True)
903-
payload = (payload + "®").encode("utf8") # type: ignore
904-
assert data == b"\x80" + bytearray([len(payload)]) + payload # type: ignore
899+
payload_bytes = (payload + "®").encode("utf8")
900+
assert data == b"\x80" + bytearray([len(payload_bytes)]) + payload_bytes
905901

906902

907903
class TestFrameProtocolReceive:
@@ -1077,8 +1073,8 @@ def test_single_short_text_data(self) -> None:
10771073
proto = fp.FrameProtocol(client=False, extensions=[])
10781074
payload = "😃😄🙃😉"
10791075
data = proto.send_data(payload, fin=True)
1080-
payload = payload.encode("utf8") # type: ignore
1081-
assert data == b"\x81" + bytearray([len(payload)]) + payload # type: ignore
1076+
payload_bytes = payload.encode("utf8")
1077+
assert data == b"\x81" + bytearray([len(payload_bytes)]) + payload_bytes
10821078

10831079
def test_multiple_short_binary_data(self) -> None:
10841080
proto = fp.FrameProtocol(client=False, extensions=[])
@@ -1094,34 +1090,34 @@ def test_multiple_short_text_data(self) -> None:
10941090
proto = fp.FrameProtocol(client=False, extensions=[])
10951091
payload = "😃😄🙃😉"
10961092
data = proto.send_data(payload, fin=False)
1097-
payload = payload.encode("utf8") # type: ignore
1098-
assert data == b"\x01" + bytearray([len(payload)]) + payload # type: ignore
1093+
payload_bytes = payload.encode("utf8")
1094+
assert data == b"\x01" + bytearray([len(payload_bytes)]) + payload_bytes
10991095

11001096
payload = "🙈🙉🙊"
11011097
data = proto.send_data(payload, fin=True)
1102-
payload = payload.encode("utf8") # type: ignore
1103-
assert data == b"\x80" + bytearray([len(payload)]) + payload # type: ignore
1098+
payload_bytes = payload.encode("utf8")
1099+
assert data == b"\x80" + bytearray([len(payload_bytes)]) + payload_bytes
11041100

11051101
def test_mismatched_data_messages1(self) -> None:
11061102
proto = fp.FrameProtocol(client=False, extensions=[])
11071103
payload = "😃😄🙃😉"
11081104
data = proto.send_data(payload, fin=False)
1109-
payload = payload.encode("utf8") # type: ignore
1110-
assert data == b"\x01" + bytearray([len(payload)]) + payload # type: ignore
1105+
payload_bytes = payload.encode("utf8")
1106+
assert data == b"\x01" + bytearray([len(payload_bytes)]) + payload_bytes
11111107

1112-
payload = b"seriously, all ascii" # type: ignore
1108+
payload_bytes = b"seriously, all ascii"
11131109
with pytest.raises(TypeError):
1114-
proto.send_data(payload)
1110+
proto.send_data(payload_bytes)
11151111

11161112
def test_mismatched_data_messages2(self) -> None:
11171113
proto = fp.FrameProtocol(client=False, extensions=[])
11181114
payload = b"it's all just ascii, right?"
11191115
data = proto.send_data(payload, fin=False)
11201116
assert data == b"\x02" + bytearray([len(payload)]) + payload
11211117

1122-
payload = "✔️☑️✅✔︎☑" # type: ignore
1118+
payload_str = "✔️☑️✅✔︎☑"
11231119
with pytest.raises(TypeError):
1124-
proto.send_data(payload)
1120+
proto.send_data(payload_str)
11251121

11261122
def test_message_length_max_short(self) -> None:
11271123
proto = fp.FrameProtocol(client=False, extensions=[])
@@ -1188,7 +1184,8 @@ def test_control_frame_with_overly_long_payload(self) -> None:
11881184

11891185
def test_data_we_have_no_idea_what_to_do_with(self) -> None:
11901186
proto = fp.FrameProtocol(client=False, extensions=[])
1191-
payload = dict() # type: ignore
1187+
payload: Dict[str, str] = dict()
11921188

11931189
with pytest.raises(ValueError):
1190+
# Intentionally passing illegal type.
11941191
proto.send_data(payload) # type: ignore

test/test_server.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ def _make_connection_request(request_headers: Headers, method: str = "GET") -> R
3232
server.receive_data(
3333
client.send(h11.Request(method=method, target="/", headers=request_headers))
3434
)
35-
return next(server.events()) # type: ignore
35+
event = next(server.events())
36+
assert isinstance(event, Request)
37+
return event
3638

3739

3840
def test_connection_request() -> None:

wsproto/connection.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from collections import deque
1010
from enum import Enum
11-
from typing import Generator, List, Optional
11+
from typing import Deque, Generator, List, Optional
1212

1313
from .events import (
1414
BytesMessage,
@@ -78,7 +78,7 @@ def __init__(
7878
trailing_data: bytes = b"",
7979
) -> None:
8080
self.client = connection_type is ConnectionType.CLIENT
81-
self._events = deque() # type: ignore
81+
self._events: Deque[Event] = deque()
8282
self._proto = FrameProtocol(self.client, extensions or [])
8383
self._state = ConnectionState.OPEN
8484
self.receive_data(trailing_data)
@@ -148,29 +148,34 @@ def events(self) -> Generator[Event, None, None]:
148148
for frame in self._proto.received_frames():
149149
if frame.opcode is Opcode.PING:
150150
assert frame.frame_finished and frame.message_finished
151-
yield Ping(payload=frame.payload) # type: ignore
151+
assert isinstance(frame.payload, (bytes, bytearray))
152+
yield Ping(payload=frame.payload)
152153

153154
elif frame.opcode is Opcode.PONG:
154155
assert frame.frame_finished and frame.message_finished
155-
yield Pong(payload=frame.payload) # type: ignore
156+
assert isinstance(frame.payload, (bytes, bytearray))
157+
yield Pong(payload=frame.payload)
156158

157159
elif frame.opcode is Opcode.CLOSE:
160+
assert isinstance(frame.payload, tuple)
158161
code, reason = frame.payload
159162
if self.state is ConnectionState.LOCAL_CLOSING:
160163
self._state = ConnectionState.CLOSED
161164
else:
162165
self._state = ConnectionState.REMOTE_CLOSING
163-
yield CloseConnection(code=code, reason=reason) # type: ignore
166+
yield CloseConnection(code=code, reason=reason)
164167

165168
elif frame.opcode is Opcode.TEXT:
166-
yield TextMessage( # type: ignore
169+
assert isinstance(frame.payload, str)
170+
yield TextMessage(
167171
data=frame.payload,
168172
frame_finished=frame.frame_finished,
169173
message_finished=frame.message_finished,
170174
)
171175

172176
elif frame.opcode is Opcode.BINARY:
173-
yield BytesMessage( # type: ignore
177+
assert isinstance(frame.payload, (bytes, bytearray))
178+
yield BytesMessage(
174179
data=frame.payload,
175180
frame_finished=frame.frame_finished,
176181
message_finished=frame.message_finished,

wsproto/events.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"""
88
from abc import ABC
99
from dataclasses import dataclass, field
10-
from typing import Generic, List, Optional, TypeVar, Union
10+
from typing import Generic, List, Optional, Sequence, TypeVar, Union
1111

1212
from .extensions import Extension
1313
from .typing import Headers
@@ -55,7 +55,7 @@ class Request(Event):
5555

5656
host: str
5757
target: str
58-
extensions: Union[List[Extension], List[str]] = field( # type: ignore
58+
extensions: Union[Sequence[Extension], Sequence[str]] = field( # type: ignore
5959
default_factory=list
6060
)
6161
extra_headers: Headers = field(default_factory=list)
@@ -235,7 +235,8 @@ class TextMessage(Message[str]):
235235
236236
"""
237237

238-
pass
238+
# https://github.com/python/mypy/issues/5744
239+
data: str
239240

240241

241242
@dataclass(frozen=True)
@@ -253,7 +254,8 @@ class BytesMessage(Message[bytes]):
253254
reassemble these chunks to get the full message.
254255
"""
255256

256-
pass
257+
# https://github.com/python/mypy/issues/5744
258+
data: bytes
257259

258260

259261
@dataclass(frozen=True)

0 commit comments

Comments
 (0)