d = dict()
for a in dir(self):
h = getattr(self, a)
+ if a == 'parent': continue # Skip parents in SubHandlers
if is_handler(h) or isinstance(h, Handler):
d[a] = h.handler_help
return d
# A command was specified
+ if command == 'parent': # Skip parents in SubHandlers
+ raise HelpNotFoundError(command)
if not hasattr(self, command.encode('utf-8')):
raise HelpNotFoundError(command)
handler = getattr(self, command.encode('utf-8'))
- if not is_handler(handler) and not hasattr(handler):
+ if not is_handler(handler) and not hasattr(handler, 'handler_help'):
raise HelpNotFoundError(command)
return handler.handler_help
+ def handle_timer(self):
+ r"""handle_timer() -> None :: Do periodic tasks.
+
+ By default we do nothing but calling handle_timer() on subhandlers.
+ """
+ for a in dir(self):
+ if a == 'parent': continue # Skip parents in SubHandlers
+ h = getattr(self, a)
+ if isinstance(h, Handler):
+ h.handle_timer()
+
def parse_command(command):
r"""parse_command(command) -> (args, kwargs) :: Parse a command.
raise CommandIsAHandlerError(command)
raise CommandNotFoundError(command)
command.append(route[0])
+ if route[0] == 'parent':
+ raise CommandNotFoundError(command)
if not hasattr(handler, route[0].encode('utf-8')):
if isinstance(handler, Handler) and len(command) > 1:
raise CommandNotInHandlerError(command)