예제 #1
0
 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)
예제 #2
0
 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)
예제 #3
0
 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())
예제 #4
0
 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())
예제 #5
0
 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())
예제 #6
0
    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__