4 from genmsg
import MsgContext, command_line, msg_loader
6 from .
import generator
7 from ._typing
import TYPE_CHECKING
10 from typing
import Callable, Dict, List, Optional
12 SrvMsgCallback = Callable[
13 [str, List[str], Optional[str], Dict[str, List[str]]],
None 24 msg_context = MsgContext.create_default()
26 for target_path
in package_files:
27 target_path = os.path.abspath(target_path)
29 if output_dir
is None:
30 output_dir = os.path.abspath(os.path.join(target_path, os.path.pardir))
32 generator.generate_stub(
34 msg_loader.load_msg_from_file,
35 generator.generate_message_stub,
50 msg_context = MsgContext.create_default()
52 for target_path
in package_files:
53 target_path = os.path.abspath(target_path)
55 if output_dir
is None:
56 output_dir = os.path.abspath(os.path.join(target_path, os.path.pardir))
58 generator.generate_stub(
60 msg_loader.load_srv_from_file,
61 generator.generate_service_stub,
75 generator.generate_module_stub(package_dir, outdir, module_finder)
80 search_paths = command_line.includepath_to_dict(
83 args.handler(args.package, args.files, args.out_dir, search_paths)
88 package_dir = args.package_dir
89 out_dir = args.out_dir
93 run_module(package_dir, out_dir, args.module_finder)
101 help=
"Package directory to create __init__.pyi",
106 choices=generator.GenPyModuleFinders.keys(),
108 "Method to find generated messages/services. " 109 "(genmsg: Files with .msg, .srv would be regarded as modules. " 110 "py: Python files starting with `_` would be regarded as modules.)" 119 "If the option is unset, __init__.pyi will be generated in the same " 120 "directory as package_dir." 123 parser.set_defaults(func=_start_module)
129 "package", type=str, help=
"Package name of given files", default=
"out" 131 parser.add_argument(
"files", type=str, help=
"Files to generate stubs", nargs=
"+")
137 "If the option is unset, each stub file will be generated in the same " 138 "directory as each input." 146 help=
"Include paths for processing given files",
148 parser.set_defaults(func=_start_msg_srv)
149 parser.set_defaults(handler=handler)
155 parser = argparse.ArgumentParser(
157 description=
"""Generate python stub files from genmsg specs 160 $ {0} msg custom_msgs custom_msgs/msg/Custom.msg 161 $ {0} msg sensor_msgs --out-dir out \\ 162 -Istd_msgs:/opt/ros/noetic/share/std_msgs/msg \\ 163 -Isensor_msgs:/opt/ros/noetic/share/sensor_msgs/msg \\ 164 /opt/ros/noetic/share/sensor_msgs/msg/PointCloud2.msg 165 $ {0} srv custom_msgs custom_msgs/srv/Custom.msg 166 $ {0} srv nav_msgs --out-dir out \\ 167 -Istd_msgs:/opt/ros/noetic/share/std_msgs/msg \\ 168 -Isensor_msgs:/opt/ros/noetic/share/sensor_msgs/msg \\ 169 /opt/ros/noetic/share/sensor_msgs/srv/SetCameraInfo.srv 170 $ {0} module custom_msgs/msg/""".format(
173 formatter_class=argparse.RawTextHelpFormatter,
175 subparser = parser.add_subparsers()
177 subparser.add_parser(
"msg", help=
"Generate stub files from .msg files"),
181 subparser.add_parser(
"srv", help=
"Generate stub files from .srv files"),
185 subparser.add_parser(
186 "module", help=
"Generate __init__.pyi from a msg/srv directory" 189 args = parser.parse_args()
def _setup_module_options(parser)
def run_service(package, package_files, outdir, search_paths)
def run_message(package, package_files, outdir, search_paths)
def run_module(package_dir, outdir, module_finder)
def _setup_msg_srv_options(parser, handler)