Skip to content

Commit b6ce7fe

Browse files
committed
Refactoring.
1 parent e1caa39 commit b6ce7fe

File tree

1 file changed

+22
-23
lines changed

1 file changed

+22
-23
lines changed

simple_rpc/simple_rpc.py

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ def __init__(
4747

4848
self._connection = serial_for_url(
4949
device, do_not_open=True, baudrate=baudrate)
50-
self._load = load
5150
self.device = {
5251
'endianness': '<',
5352
'methods': {},
@@ -56,7 +55,7 @@ def __init__(
5655
'version': (0, 0, 0)}
5756

5857
if autoconnect:
59-
self.open()
58+
self.open(load)
6059

6160
def __enter__(self: object) -> object:
6261
return self
@@ -105,11 +104,8 @@ def _read(self: object, obj_type: any) -> any:
105104
self._connection, self.device['endianness'], self.device['size_t'],
106105
obj_type)
107106

108-
def _get_methods(self: object) -> dict:
109-
"""Get remote procedure call methods.
110-
111-
:returns: Method objects indexed by name.
112-
"""
107+
def _get_methods(self: object) -> None:
108+
"""Get remote procedure call methods."""
113109
self._select(_list_req)
114110

115111
_assert_protocol(self._read_byte_string().decode())
@@ -122,26 +118,35 @@ def _get_methods(self: object) -> dict:
122118
self.device['endianness'], self.device['size_t'] = (
123119
chr(c) for c in self._read_byte_string())
124120

125-
methods = {}
126121
for index, line in enumerate(
127122
until(lambda x: x == b'', self._read_byte_string)):
128123
method = parse_line(index, line)
129-
methods[method['name']] = method
124+
self.device['methods'][method['name']] = method
130125

131-
return methods
126+
def _load(self: object, handle: TextIO=None) -> None:
127+
"""Load the interface definition from a file.
128+
129+
:arg handle: Open file handle.
130+
"""
131+
self.device = load(handle, Loader=FullLoader)
132+
_assert_protocol(self.device['protocol'])
133+
_assert_version(self.device['version'])
132134

133135
def is_open(self: object) -> bool:
134136
"""Query interface state."""
135137
pass
136138

137-
def open(self: object) -> None:
138-
"""Connect to device."""
139+
def open(self: object, handle: TextIO=None) -> None:
140+
"""Connect to device.
141+
142+
:arg handle: Open file handle.
143+
"""
139144
sleep(self._wait)
140145

141-
if self._load:
142-
self.load()
146+
if handle:
147+
self._load(handle)
143148
else:
144-
self.device['methods'] = self._get_methods()
149+
self._get_methods()
145150
for method in self.device['methods'].values():
146151
setattr(
147152
self, method['name'], MethodType(make_function(method), self))
@@ -190,12 +195,6 @@ def save(self: object, handle: TextIO) -> None:
190195
"""
191196
dump(self.device, handle, width=76, default_flow_style=False)
192197

193-
def load(self: object) -> None:
194-
"""Load the interface definition from a file."""
195-
self.device = load(self._load, Loader=FullLoader)
196-
_assert_protocol(self.device['protocol'])
197-
_assert_version(self.device['version'])
198-
199198

200199
class SerialInterface(_Interface):
201200
"""Serial simpleRPC interface."""
@@ -204,9 +203,9 @@ def is_open(self: object) -> bool:
204203
return self._connection.isOpen()
205204

206205
@wraps(_Interface.open)
207-
def open(self: object) -> None:
206+
def open(self: object, handle: TextIO=None) -> None:
208207
self._open()
209-
super().open()
208+
super().open(handle)
210209

211210
@wraps(_Interface.close)
212211
def close(self: object) -> None:

0 commit comments

Comments
 (0)