Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.machine = attributes.get("machine")
self.respawn = attributes.get("respawn", False)
self.respawn_delay = attributes.get("respawn_delay", 0.0)
self.required = attributes.get("required", False)
self.namespace = attributes.get("ns")
self.clear_params = attributes.get("clear_params", False)
self.output = attributes.get("output", "log")
self.cwd = attributes.get("cwd", "ROS_HOME")
self.prefix = attributes.get("launch-prefix")
@property
def tag(self):
return "node"
class IncludeTag(BaseLaunchTag):
CHILDREN = ("arg", "env")
REQUIRED = ("file",)
ATTRIBUTES = {
"if": bool,
"unless": bool,
"file": str,
"ns": str,
"clear_params": bool,
"pass_all_args": bool
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.file = attributes["file"]
self.namespace = attributes.get("ns")
self.clear_params = attributes.get("clear_params", False)
self.condition = (False, attributes["unless"])
else:
self.condition = (True, attributes.get("if", True))
@property
def tag(self):
raise NotImplementedError("subclasses must override 'tag'")
def append(self, child):
if child.tag in self.CHILDREN or child.tag == "error":
self.children.append(child)
else:
self.children.append(ErrorTag("invalid child tag: " + child.tag))
class LaunchTag(BaseLaunchTag):
CHILDREN = ("node", "include", "remap", "param", "rosparam",
"group", "arg", "env", "machine", "test")
ATTRIBUTES = {}
@property
def tag(self):
return "launch"
class NodeTag(BaseLaunchTag):
CHILDREN = ("remap", "param", "rosparam", "env")
REQUIRED = ("pkg", "type")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"pkg": str,
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.command = attributes.get("command", "load")
self.file = attributes.get("file")
self.name = attributes.get("param")
self.namespace = attributes.get("ns")
self.substitute = attributes.get("subst_value", False)
if self.command == "load":
if self.file is None and not text:
raise LaunchParserError("missing required attribute: file")
elif self.command == "dump":
if self.file is None:
raise LaunchParserError("missing required attribute: file")
elif self.command == "delete" and self.name is None:
raise LaunchParserError("missing required attribute: name")
"pass_all_args": bool
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.file = attributes["file"]
self.namespace = attributes.get("ns")
self.clear_params = attributes.get("clear_params", False)
self.pass_all_args = attributes.get("pass_all_args", False)
@property
def tag(self):
return "include"
class RemapTag(BaseLaunchTag):
REQUIRED = ("from", "to")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"from": str,
"to": str
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.origin = attributes["from"]
self.target = attributes["to"]
@property
def tag(self):
return "remap"
"unless": bool,
"from": str,
"to": str
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.origin = attributes["from"]
self.target = attributes["to"]
@property
def tag(self):
return "remap"
class ParamTag(BaseLaunchTag):
REQUIRED = ("name",)
ATTRIBUTES = {
"if": bool,
"unless": bool,
"name": str,
"value": str,
"type": str,
"textfile": str,
"binfile": str,
"command": str
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.value = attributes.get("value")
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.value = attributes.get("value")
self.default = attributes.get("default")
self.description = attributes.get("doc")
if not self.value is None and not self.default is None:
raise LaunchParserError("incompatible attributes: value, default")
@property
def tag(self):
return "arg"
class EnvTag(BaseLaunchTag):
REQUIRED = ("name", "value")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"name": str,
"value": str
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.value = attributes["value"]
@property
def tag(self):
return "env"
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.address = attributes["address"]
self.loader = attributes.get("env-loader")
self.default = attributes.get("default", "false")
self.user = attributes.get("user")
self.password = attributes.get("password")
self.timeout = attributes.get("timeout", 10.0)
@property
def tag(self):
return "machine"
class TestTag(BaseLaunchTag):
CHILDREN = ("remap", "param", "rosparam", "env")
REQUIRED = ("test-name", "pkg", "type")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"test-name": str,
"pkg": str,
"type": str,
"name": str,
"args": str,
"ns": str,
"clear_params": bool,
"cwd": str,
"launch-prefix": str,
"retry": int,
"time-limit": float
self.name = attributes["name"]
self.value = attributes.get("value")
self.type = attributes.get("type")
self.textfile = attributes.get("textfile")
self.binfile = attributes.get("binfile")
self.command = attributes.get("command")
if (self.value is None and self.textfile is None
and self.binfile is None and self.command is None):
raise LaunchParserError("missing required attribute: value")
@property
def tag(self):
return "param"
class RosParamTag(BaseLaunchTag):
ATTRIBUTES = {
"if": bool,
"unless": bool,
"command": str,
"file": str,
"param": str,
"ns": str,
"subst_value": bool
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.command = attributes.get("command", "load")
self.file = attributes.get("file")
self.name = attributes.get("param")
self.namespace = attributes.get("ns")
"unless": bool,
"name": str,
"value": str
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.value = attributes["value"]
@property
def tag(self):
return "env"
class MachineTag(BaseLaunchTag):
REQUIRED = ("name", "address")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"name": str,
"address": str,
"env-loader": str,
"default": bool,
"user": str,
"password": str,
"timeout": float
}
def __init__(self, text, attributes, line, col):
BaseLaunchTag.__init__(self, text, attributes, line, col)
self.name = attributes["name"]
self.children.append(child)
else:
self.children.append(ErrorTag("invalid child tag: " + child.tag))
class LaunchTag(BaseLaunchTag):
CHILDREN = ("node", "include", "remap", "param", "rosparam",
"group", "arg", "env", "machine", "test")
ATTRIBUTES = {}
@property
def tag(self):
return "launch"
class NodeTag(BaseLaunchTag):
CHILDREN = ("remap", "param", "rosparam", "env")
REQUIRED = ("pkg", "type")
ATTRIBUTES = {
"if": bool,
"unless": bool,
"pkg": str,
"type": str,
"name": str,
"args": str,
"machine": str,
"respawn": bool,
"respawn_delay": float,
"required": bool,
"ns": str,
"clear_params": bool,
"output": str,