From e07553c3627b80f20cdc81a35030bf0540924db8 Mon Sep 17 00:00:00 2001 From: jesopo Date: Tue, 30 Oct 2018 14:58:48 +0000 Subject: Add type/return hints throughout src/ and, in doing so, fix some cyclical references. --- src/Socket.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/Socket.py') diff --git a/src/Socket.py b/src/Socket.py index f405b0a9..474336d0 100644 --- a/src/Socket.py +++ b/src/Socket.py @@ -1,7 +1,9 @@ - +import socket, typing class Socket(object): - def __init__(self, socket, on_read, encoding="utf8"): + def __init__(self, socket: socket.socket, + on_read: typing.Callable[["Socket", str], None], + encoding: str="utf8"): self.socket = socket self._on_read = on_read self.encoding = encoding @@ -12,18 +14,18 @@ class Socket(object): self.length = None self.connected = True - def fileno(self): + def fileno(self) -> int: return self.socket.fileno() def disconnect(self): self.connected = False - def _decode(self, s): - return s.decode(self.encoding) if self.encoding else s - def _encode(self, s): - return s.encode(self.encoding) if self.encoding else s + def _decode(self, s: bytes) -> str: + return s.decode(self.encoding) + def _encode(self, s: str) -> bytes: + return s.encode(self.encoding) - def read(self): + def read(self) -> typing.Optional[typing.List[str]]: data = self.socket.recv(1024) if not data: return None @@ -35,17 +37,17 @@ class Socket(object): if data_split[-1]: self._read_buffer = data_split.pop(-1) return [self._decode(data) for data in data_split] - return [data.decode(self.encoding)] + return [self._decode(data)] - def parse_data(self, data): + def parse_data(self, data: str): self._on_read(self, data) - def send(self, data): + def send(self, data: str): self._write_buffer += self._encode(data) def _send(self): self._write_buffer = self._write_buffer[self.socket.send( self._write_buffer):] - def waiting_send(self): + def waiting_send(self) -> bool: return bool(len(self._write_buffer)) -- cgit v1.3.1-10-gc9f91