Example #1
0
    def __init__(self, executable):
        # Convert the colors to plumbum.colors on the instance (class remains the same)
        for item in ('COLOR_PROGNAME', 'COLOR_DISCRIPTION', 'COLOR_VERSION',
                     'COLOR_HEADING', 'COLOR_USAGE', 'COLOR_SUBCOMMANDS'):
            setattr(self, item, colors(getattr(type(self), item)))

        self.COLOR_GROUPS = defaultdict(lambda: colors())
        self.COLOR_GROUPS_BODY = defaultdict(lambda: colors())
        for item in type(self).COLOR_GROUPS:
            self.COLOR_GROUPS[item] = colors(type(self).COLOR_GROUPS[item])
        for item in type(self).COLOR_GROUPS_BODY:
            self.COLOR_GROUPS_BODY[item] = colors(
                type(self).COLOR_GROUPS_BODY[item])

        if self.PROGNAME is None:
            self.PROGNAME = os.path.basename(executable)
        if self.DESCRIPTION is None:
            self.DESCRIPTION = inspect.getdoc(self)

        self.executable = executable
        self._switches_by_name = {}
        self._switches_by_func = {}
        self._switches_by_envar = {}
        self._subcommands = {}

        for cls in reversed(type(self).mro()):
            for obj in cls.__dict__.values():
                if isinstance(obj, Subcommand):
                    if obj.name.startswith("-"):
                        raise SubcommandError(
                            "Subcommand names cannot start with '-'")
                    # it's okay for child classes to override subcommands set by their parents
                    self._subcommands[obj.name] = obj
                    continue

                swinfo = getattr(obj, "_switch_info", None)
                if not swinfo:
                    continue
                for name in swinfo.names:
                    if name in self._unbound_switches:
                        continue
                    if name in self._switches_by_name and not self._switches_by_name[
                            name].overridable:
                        raise SwitchError(
                            "Switch %r already defined and is not overridable"
                            % (name, ))
                    self._switches_by_name[name] = swinfo
                    self._switches_by_func[swinfo.func] = swinfo
                    if swinfo.envname:
                        self._switches_by_envar[swinfo.envname] = swinfo
Example #2
0
    def testUndoColor(self):
        assert '\033[39m' == ~colors.fg
        assert '\033[49m' == ~colors.bg
        assert '\033[22m' == ~colors.bold
        assert '\033[22m' == ~colors.dim
        for i in range(7):
            assert '\033[39m' == ~colors(i)
            assert '\033[49m' == ~colors.bg(i)
            assert '\033[39m' == ~colors.fg(i)
            assert '\033[49m' == ~colors.bg(i)
        for i in range(256):
            assert '\033[39m' == ~colors.fg[i]
            assert '\033[49m' == ~colors.bg[i]
        assert '\033[0m' == ~colors.reset
        assert colors.do_nothing == ~colors.do_nothing

        assert colors.bold.reset == ~colors.bold
Example #3
0
    def testUndoColor(self):
        assert "\033[39m" == ~colors.fg
        assert "\033[49m" == ~colors.bg
        assert "\033[22m" == ~colors.bold
        assert "\033[22m" == ~colors.dim
        for i in range(7):
            assert "\033[39m" == ~colors(i)
            assert "\033[49m" == ~colors.bg(i)
            assert "\033[39m" == ~colors.fg(i)
            assert "\033[49m" == ~colors.bg(i)
        for i in range(256):
            assert "\033[39m" == ~colors.fg[i]
            assert "\033[49m" == ~colors.bg[i]
        assert "\033[0m" == ~colors.reset
        assert colors.do_nothing == ~colors.do_nothing

        assert colors.bold.reset == ~colors.bold
Example #4
0
    def testUndoColor(self):
        self.assertEqual('\033[39m', ~colors.fg)
        self.assertEqual('\033[49m', ~colors.bg)
        self.assertEqual('\033[21m', ~colors.bold)
        self.assertEqual('\033[22m', ~colors.dim)
        for i in range(7):
            self.assertEqual('\033[39m', ~colors(i))
            self.assertEqual('\033[49m', ~colors.bg(i))
            self.assertEqual('\033[39m', ~colors.fg(i))
            self.assertEqual('\033[49m', ~colors.bg(i))
        for i in range(256):
            self.assertEqual('\033[39m', ~colors.fg[i])
            self.assertEqual('\033[49m', ~colors.bg[i])
        self.assertEqual('\033[0m', ~colors.reset)
        self.assertEqual(colors.do_nothing, ~colors.do_nothing)

        self.assertEqual(colors.bold.reset, ~colors.bold)
Example #5
0
    def testUndoColor(self):
        self.assertEqual('\033[39m', ~colors.fg)
        self.assertEqual('\033[49m', ~colors.bg)
        self.assertEqual('\033[21m', ~colors.bold)
        self.assertEqual('\033[22m', ~colors.dim)
        for i in range(7):
            self.assertEqual('\033[39m', ~colors(i))
            self.assertEqual('\033[49m', ~colors.bg(i))
            self.assertEqual('\033[39m', ~colors.fg(i))
            self.assertEqual('\033[49m', ~colors.bg(i))
        for i in range(256):
            self.assertEqual('\033[39m', ~colors.fg[i])
            self.assertEqual('\033[49m', ~colors.bg[i])
        self.assertEqual('\033[0m', ~colors.reset)
        self.assertEqual(colors.do_nothing, ~colors.do_nothing)

        self.assertEqual(colors.bold.reset, ~colors.bold)
Example #6
0
 def testFromCode(self):
     self.assertEqual(colors('\033[31m'),colors.red)
Example #7
0
 def testFromPreviousColor(self):
     self.assertEqual(colors(colors.red), colors.red)
     self.assertEqual(colors(colors.bg.red), colors.bg.red)
     self.assertEqual(colors(colors.bold), colors.bold)
Example #8
0
 def testLoadNumericalColor(self):
     self.assertEqual(colors.full(2), colors[2])
     self.assertEqual(colors.simple(2), colors(2))
     self.assertEqual(colors(54), colors[54])
     self.assertEqual(colors(1,30,77),colors.rgb(1,30,77))
     self.assertEqual(colors[1,30,77],colors.rgb(1,30,77))
 def testEmptyStyle(self):
     assert str(colors()) == ''
     assert str(colors('')) == ''
     assert str(colors(None)) == ''
Example #10
0
 def testEmptyStyle(self):
     assert str(colors()) == ""
     assert str(colors("")) == ""
     assert str(colors(None)) == ""
Example #11
0
 def testLoadNumericalColor(self):
     self.assertEqual(colors.full(2), colors[2])
     self.assertEqual(colors.simple(2), colors(2))
     self.assertEqual(colors(54), colors[54])
     self.assertEqual(colors(1, 30, 77), colors.rgb(1, 30, 77))
     self.assertEqual(colors[1, 30, 77], colors.rgb(1, 30, 77))
Example #12
0
 def testFromCode(self):
     self.assertEqual(colors('\033[31m'), colors.red)
Example #13
0
 def testEmptyStyle(self):
     self.assertEqual(str(colors()), '')
     self.assertEqual(str(colors('')), '')
     self.assertEqual(str(colors(None)), '')
Example #14
0
 def testEmptyStyle(self):
     assert str(colors()) == ''
     assert str(colors('')) == ''
     assert str(colors(None)) == ''
Example #15
0
 def testFromCode(self):
     assert colors('\033[31m') == colors.red
Example #16
0
 def testFromPreviousColor(self):
     assert colors(colors.red) == colors.red
     assert colors(colors.bg.red) == colors.bg.red
     assert colors(colors.bold) == colors.bold
Example #17
0
 def testLoadNumericalColor(self):
     assert colors.full(2) == colors[2]
     assert colors.simple(2) == colors(2)
     assert colors(54) == colors[54]
     assert colors(1,30,77) == colors.rgb(1,30,77)
     assert colors[1,30,77] == colors.rgb(1,30,77)
Example #18
0
 def testLoadNumericalColor(self):
     assert colors.full(2) == colors[2]
     assert colors.simple(2) == colors(2)
     assert colors(54) == colors[54]
     assert colors(1, 30, 77) == colors.rgb(1, 30, 77)
     assert colors[1, 30, 77] == colors.rgb(1, 30, 77)
Example #19
0
 def testFromPreviousColor(self):
     assert colors(colors.red) == colors.red
     assert colors(colors.bg.red) == colors.bg.red
     assert colors(colors.bold) == colors.bold
Example #20
0
 def testFromPreviousColor(self):
     self.assertEqual(colors(colors.red), colors.red)
     self.assertEqual(colors(colors.bg.red), colors.bg.red)
     self.assertEqual(colors(colors.bold), colors.bold)
Example #21
0
 def testFromCode(self):
     assert colors("\033[31m") == colors.red
Example #22
0
 def testEmptyStyle(self):
     self.assertEqual(str(colors()), '')
     self.assertEqual(str(colors('')), '')
     self.assertEqual(str(colors(None)), '')
 def testFromCode(self):
     assert colors('\033[31m') == colors.red