def _get_class_constants(msg_class): from genmsg.base import InvalidMsgSpec from genmsg.msg_loader import _load_constant_line, _strip_comments constants = {} lines = msg_class._full_text.splitlines() for line in lines: clean_line = _strip_comments(line) if not clean_line or not "=" in clean_line: continue # ignore empty/field lines try: constant = _load_constant_line(line) constants[constant.name] = _make_literal( constant.val, get_type(constant.type)) except InvalidMsgSpec as e: pass return constants
def test__load_constant_line(): from genmsg.msgs import Constant, InvalidMsgSpec from genmsg.msg_loader import _load_constant_line try: _load_constant_line("int8 field=alpha") assert False, "should have raised" except InvalidMsgSpec: pass try: _load_constant_line("int8 field=") assert False, "should have raised" except InvalidMsgSpec: pass try: _load_constant_line("faketype field=1") assert False, "should have raised" except InvalidMsgSpec: pass c = _load_constant_line("int8 field=1") assert c == Constant('int8', 'field', 1, '1') c = _load_constant_line("string val=hello #world") assert c == Constant('string', 'val', 'hello #world', 'hello #world')