def add_arguments(self): """ Add the class-specific arguments.""" sub = self.add_subparsers(help="Distributed job modes.") # Server. if self.server_func: p_server = sub.add_parser("server", description="Server options.") self.add_det(p_server) self.add_au(p_server) self.add_s(p_server) self.add_f(p_server) func = lambda args: self.server_func( *self.parse_det(args), **cat_dict(self.parse_au(args), self.parse_s(args), self.parse_f(args))) p_server.set_defaults(func=func) # Client. if self.client_func: p_client = sub.add_parser("client", description="Client options.") self.add_g(p_client) self.add_T(p_client) self.add_au(p_client) def func(args): dct = cat_dict(self.parse_g(args), self.parse_au(args), self.parse_T(args)) self.client_func(**dct) p_client.set_defaults(func=func) # Debug. if self.debug_func: p_debug = sub.add_parser("debug", description="Debug options.") self.add_det(p_debug) self.add_f(p_debug) self.add_s(p_debug) self.add_g(p_debug) func = lambda args: self.debug_func( *self.parse_det(args), **cat_dict(self.parse_f(args), self.parse_s(args), self.parse_g(args))) p_debug.set_defaults(func=func)
def func(args): dct = cat_dict(self.parse_g(args), self.parse_au(args), self.parse_T(args)) self.client_func(**dct)
params = {"Job": TestJob} tasks = {i: {"task_name": i, "out_pth": "test_{}.res".format(i), "complete": False} for i in xrange(5)} ## TODO: complete raise NotImplementedError() if __name__ == "__main__": parser = BaseParser() sub = parser.add_subparsers(help="Modes.") # Server. p_server = sub.add_parser("server", description="Server options.") parser.add_au(p_server) parser.add_s(p_server) func = lambda args: server_func(**cat_dict(parser.parse_au(args), parser.parse_s(args))) p_server.set_defaults(func=func) # Client. p_client = sub.add_parser("client", description="Client options.") parser.add_au(p_client) func = lambda args: client_func(**parser.parse_au(args)) p_client.set_defaults(func=func) # Parse the args. args = parser.parse() args.func(args) ## TODO: # # - Secure shared objects. # -- OR use fabric to run tasks.