for verb in ('setattr', 'do', 'doafter'):
for task, tok_names in [t for t in ret['_tasks'].items()
if t[0].verb == verb]:
- node: Any = self
- for step in task.path:
+ path = list(task.path)
+ node: Any = (ret[path.pop(0)]
+ if task.path and path[0].isupper() else self)
+ for step in path:
key = ret[step] if step.isupper() else step
node = (node[key] if isinstance(node, Dict)
else (node(key) if callable(node)
elif ret['_verb'] == 'PONG':
assert self._expected_pong == ret['reply']
self._expected_pong = ''
- elif ret['_verb'] == 'QUIT':
- ret['quitter'].quit(ret['message'])
ClientsDb = dict[str, Client]
_MsgParseExpectation(
'QUIT',
- (_MsgTok.NICK_USER_HOST, ':quitter'),
- ((_MsgTok.ANY, ':message'),)),
+ (_MsgTok.NICK_USER_HOST, ':QUITTER'),
+ ((_MsgTok.ANY, 'do_QUITTER.quit:message'),)),
]