Skip to content

Commit e75a257

Browse files
committed
refactor: MocketSocket - make instance-variables private and move into constructor
1 parent fcbb432 commit e75a257

File tree

2 files changed

+49
-35
lines changed

2 files changed

+49
-35
lines changed

mocket/socket.py

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,8 @@ def _hash_request(h, req):
112112

113113

114114
class MocketSocket:
115-
timeout = None
116-
family = None
117-
type = None
118-
proto = None
119-
_host = None
120-
_port = None
121-
_address = None
122115
cipher = lambda s: ("ADH", "AES256", "SHA")
123116
compression = lambda s: ssl.OP_NO_COMPRESSION
124-
_secure_socket = False
125-
_did_handshake = False
126-
_sent_non_empty_bytes = False
127-
_io = None
128117

129118
def __init__(
130119
self,
@@ -134,14 +123,27 @@ def __init__(
134123
fileno: int | None = None,
135124
**kwargs: Any,
136125
) -> None:
137-
self.true_socket = true_socket(family, type, proto)
126+
self._family = family
127+
self._type = type
128+
self._proto = proto
129+
130+
self._kwargs = kwargs
131+
self._true_socket = true_socket(family, type, proto)
132+
self._truesocket_recording_dir = None
133+
138134
self._buflen = 65536
135+
self._timeout: float | None = None
136+
137+
self._secure_socket = False
138+
self._did_handshake = False
139+
self._sent_non_empty_bytes = False
140+
141+
self._host = None
142+
self._port = None
143+
self._address = None
144+
145+
self._io = None
139146
self._entry = None
140-
self.family = int(family)
141-
self.type = int(type)
142-
self.proto = int(proto)
143-
self._truesocket_recording_dir = None
144-
self.kwargs = kwargs
145147

146148
def __str__(self) -> str:
147149
return f"({self.__class__.__name__})(family={self.family} type={self.type} protocol={self.proto})"
@@ -157,6 +159,18 @@ def __exit__(
157159
) -> None:
158160
self.close()
159161

162+
@property
163+
def family(self) -> int:
164+
return self._family
165+
166+
@property
167+
def type(self) -> int:
168+
return self._type
169+
170+
@property
171+
def proto(self) -> int:
172+
return self._proto
173+
160174
@property
161175
def io(self) -> MocketSocketCore:
162176
if self._io is None:
@@ -172,19 +186,19 @@ def fileno(self) -> int:
172186
return r_fd
173187

174188
def gettimeout(self) -> float | None:
175-
return self.timeout
189+
return self._timeout
176190

177191
# FIXME the arguments here seem wrong. they should be `level: int, optname: int, value: int | ReadableBuffer | None`
178192
def setsockopt(self, family: int, type: int, proto: int) -> None:
179-
self.family = family
180-
self.type = type
181-
self.proto = proto
193+
self._family = family
194+
self._type = type
195+
self._proto = proto
182196

183-
if self.true_socket:
184-
self.true_socket.setsockopt(family, type, proto)
197+
if self._true_socket:
198+
self._true_socket.setsockopt(family, type, proto)
185199

186200
def settimeout(self, timeout: float | None) -> None:
187-
self.timeout = timeout
201+
self._timeout = timeout
188202

189203
@staticmethod
190204
def getsockopt(level: int, optname: int, buflen: int | None = None) -> int:
@@ -343,23 +357,23 @@ def true_sendall(self, data: ReadableBuffer, *args: Any, **kwargs: Any) -> int:
343357
host, port = self._host, self._port
344358
host = true_gethostbyname(host)
345359

346-
if isinstance(self.true_socket, true_socket) and self._secure_socket:
347-
self.true_socket = true_urllib3_ssl_wrap_socket(
348-
self.true_socket,
349-
**self.kwargs,
360+
if isinstance(self._true_socket, true_socket) and self._secure_socket:
361+
self._true_socket = true_urllib3_ssl_wrap_socket(
362+
self._true_socket,
363+
**self._kwargs,
350364
)
351365

352366
with contextlib.suppress(OSError, ValueError):
353367
# already connected
354-
self.true_socket.connect((host, port))
355-
self.true_socket.sendall(data, *args, **kwargs)
368+
self._true_socket.connect((host, port))
369+
self._true_socket.sendall(data, *args, **kwargs)
356370
encoded_response = b""
357371
# https://github.com/kennethreitz/requests/blob/master/tests/testserver/server.py#L12
358372
while True:
359-
more_to_read = select.select([self.true_socket], [], [], 0.1)[0]
373+
more_to_read = select.select([self._true_socket], [], [], 0.1)[0]
360374
if not more_to_read and encoded_response:
361375
break
362-
new_content = self.true_socket.recv(self._buflen)
376+
new_content = self._true_socket.recv(self._buflen)
363377
if not new_content:
364378
break
365379
encoded_response += new_content
@@ -398,8 +412,8 @@ def send(
398412
return len(data)
399413

400414
def close(self) -> None:
401-
if self.true_socket and not self.true_socket._closed:
402-
self.true_socket.close()
415+
if self._true_socket and not self._true_socket._closed:
416+
self._true_socket.close()
403417

404418
def __getattr__(self, name: str) -> Any:
405419
"""Do nothing catchall function, for methods like shutdown()"""

mocket/ssl/context.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def check_hostname(self, _: bool) -> None:
8282

8383
@staticmethod
8484
def wrap_socket(sock: MocketSocket, *args: Any, **kwargs: Any) -> MocketSocket:
85-
sock.kwargs = kwargs
85+
sock._kwargs = kwargs
8686
sock._secure_socket = True
8787
return sock
8888

0 commit comments

Comments
 (0)