def test_bool(self): """Test magic __bool__ method""" flag = Flag(diz=dict(name="a")) flag.value = True self.assertTrue(True if flag else False) flag.value = False self.assertFalse(True if flag else False)
def test_bool(self): """Test magic __bool__ method""" flag = Flag(diz=dict(name='a')) flag.value = True self.assertTrue(True if flag else False) flag.value = False self.assertFalse(True if flag else False)
def test_get_python(self): """Test get_python method""" flag = Flag(diz=dict(name="a")) self.assertFalse(flag.value) self.assertEqual("", flag.get_python()) flag.special = True self.assertEqual("", flag.get_python()) flag.value = True self.assertEqual("a=True", flag.get_python()) flag.special = False self.assertEqual("a", flag.get_python())
def test_get_bash(self): """Test get_bash method""" flag = Flag(diz=dict(name='a')) self.assertFalse(flag.value) self.assertEqual('', flag.get_bash()) flag.special = True self.assertEqual('', flag.get_bash()) flag.value = True self.assertEqual('--a', flag.get_bash()) flag.special = False self.assertEqual('-a', flag.get_bash())
def test_get_python(self): """Test get_python method""" flag = Flag(diz=dict(name='a')) self.assertFalse(flag.value) self.assertEqual('', flag.get_python()) flag.special = True self.assertEqual('', flag.get_python()) flag.value = True self.assertEqual('a=True', flag.get_python()) flag.special = False self.assertEqual('a', flag.get_python())
def __init__(self, cmd, *args, **kargs): if isinstance(cmd, unicode): self.name = str(cmd) elif isinstance(cmd, str): self.name = cmd else: raise GrassError( "Problem initializing the module {s}".format(s=cmd)) try: # call the command with --interface-description get_cmd_xml = Popen([cmd, "--interface-description"], stdout=PIPE) except OSError as e: print("OSError error({0}): {1}".format(e.errno, e.strerror)) str_err = "Error running: `%s --interface-description`." raise GrassError(str_err % self.name) # get the xml of the module self.xml = get_cmd_xml.communicate()[0] # transform and parse the xml into an Element class: # http://docs.python.org/library/xml.etree.elementtree.html tree = fromstring(self.xml) for e in tree: if e.tag not in ('parameter', 'flag'): self.__setattr__(e.tag, GETFROMTAG[e.tag](e)) # # extract parameters from the xml # self.params_list = [Parameter(p) for p in tree.findall("parameter")] self.inputs = TypeDict(Parameter) self.outputs = TypeDict(Parameter) self.required = [] # Insert parameters into input/output and required for par in self.params_list: if par.input: self.inputs[par.name] = par else: self.outputs[par.name] = par if par.required: self.required.append(par.name) # # extract flags from the xml # flags_list = [Flag(f) for f in tree.findall("flag")] self.flags = TypeDict(Flag) for flag in flags_list: self.flags[flag.name] = flag # # Add new attributes to the class # self.run_ = True self.finish_ = True self.env_ = None self.stdin_ = None self.stdin = None self.stdout_ = None self.stderr_ = None diz = { 'name': 'stdin', 'required': False, 'multiple': False, 'type': 'all', 'value': None } self.inputs['stdin'] = Parameter(diz=diz) diz['name'] = 'stdout' self.outputs['stdout'] = Parameter(diz=diz) diz['name'] = 'stderr' self.outputs['stderr'] = Parameter(diz=diz) self.popen = None self.time = None if args or kargs: self.__call__(*args, **kargs) self.__call__.__func__.__doc__ = self.__doc__