def test_get_message_interfaces(): # no input interfaces = get_message_interfaces() assert len(interfaces) > 0 assert INTERFACE_PACKAGE in interfaces assert MESSAGE_INTERFACE_ONLY_PACKAGE in interfaces assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces assert NON_INTERFACE_PACKAGE not in interfaces assert len(interfaces[INTERFACE_PACKAGE]) > 0 # one package interfaces = get_message_interfaces([INTERFACE_PACKAGE]) assert len(interfaces) > 0 assert INTERFACE_PACKAGE in interfaces assert MESSAGE_INTERFACE_ONLY_PACKAGE not in interfaces assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces assert NON_INTERFACE_PACKAGE not in interfaces assert len(interfaces[INTERFACE_PACKAGE]) > 0 # multiple packages interfaces = get_message_interfaces([ INTERFACE_PACKAGE, MESSAGE_INTERFACE_ONLY_PACKAGE, SERVICE_INTERFACE_ONLY_PACKAGE, NON_INTERFACE_PACKAGE ]) assert len(interfaces) > 0 assert INTERFACE_PACKAGE in interfaces assert MESSAGE_INTERFACE_ONLY_PACKAGE in interfaces assert SERVICE_INTERFACE_ONLY_PACKAGE not in interfaces assert NON_INTERFACE_PACKAGE not in interfaces assert len(interfaces[INTERFACE_PACKAGE]) > 0 # unknown package name with pytest.raises(LookupError): get_message_interfaces( ['test_not_package_name_you_are_bad_to_use_this_name'])
def message_type_completer(**kwargs): """Callable returning a list of message types.""" message_types = [] for package_name, message_names in get_message_interfaces().items(): for message_name in message_names: message_types.append(f'{package_name}/{message_name}') return message_types
def message_type_completer(**kwargs): """Callable returning a list of message types.""" message_types = [] message_types_dict = get_message_interfaces() for package_name in sorted(message_types_dict.keys()): for message_name in sorted(message_types_dict[package_name]): message_types.append(f'{package_name}/{message_name}') return message_types
def main(self, *, args): if args.only_msgs: print_packages(sorted(get_message_interfaces())) elif args.only_srvs: print_packages(sorted(get_service_interfaces())) elif args.only_actions: print_packages(sorted(get_action_interfaces())) else: print_packages(sorted(get_interface_packages()))
def type_completer(**kwargs): """Callable returning a list of message, service, and action types.""" types = [] for package_name, service_names in get_service_interfaces().items(): for service_name in service_names: types.append(f'{package_name}/{service_name}') for package_name, message_names in get_message_interfaces().items(): for message_name in message_names: types.append(f'{package_name}/{message_name}') for package_name, action_names in get_action_interfaces().items(): for action_name in action_names: types.append(f'{package_name}/{action_name}') return sorted(types)
def main(argv=sys.argv[1:]): """Parse the arguments and call the right logic.""" parser = argparse.ArgumentParser( description='Generate interfaces public API documentation', formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('--outputdir', type=str, default='api', help='Output directory') parser.add_argument( '--packages-select', default=[], nargs='*', help='Generate the documentation for the following package names') args = parser.parse_args(argv) html_dir = os.path.join(args.outputdir, 'html') os.makedirs(html_dir, exist_ok=True) try: messages = get_message_interfaces(args.packages_select) services = get_service_interfaces(args.packages_select) actions = get_action_interfaces(args.packages_select) except LookupError as e: print( f'Package name {args.packages_select} is not defined. Reason: {e}', file=sys.stderr) exit(-1) timestamp = time.gmtime() generate_interfaces_index(messages, services, actions, html_dir, timestamp) # generate msg interfaces generate_interfaces(messages, html_dir, 'msg.html.em', 'msg', timestamp) generate_interfaces(services, html_dir, 'srv.html.em', 'srv', timestamp) generate_interfaces(actions, html_dir, 'action.html.em', 'action', timestamp) utils.copy_css_style(html_dir)
def print_messages(): print('Messages:') message_interfaces = get_message_interfaces() for package_name in sorted(message_interfaces): for message_name in sorted(message_interfaces[package_name]): print(f' {package_name}/{message_name}')