예제 #1
0
 def __init__(self, pattern, flags):
     self.__binary = isinstance(pattern, bytes)
     self.pattern = pattern
     self.flags = flags
     flags_str = []
     for char, flag in FLAGS.items():
         if flags & flag:
             flags_str.append(char)
     self.flags_str = "".join(flags_str)
     self.__compiled_regexes = dict()
     self.groupindex = dict()
     if self.__tregex_compile(self.pattern).groups is not None:
         for group_name in dir(self.__tregex_compile(self.pattern).groups):
             groups = self.__tregex_compile(self.pattern).groups
             self.groups = _interop.__get_size__(_interop.__keys__(groups))
             self.groupindex[group_name] = groups[group_name]
예제 #2
0
    def test_get_size():
        called = False

        class LenObject():
            def __getitem__(self, k):
                if k == 0:
                    return 1
                else:
                    raise IndexError

            def __len__(self):
                nonlocal called
                called = True
                return 1

        assert polyglot.__get_size__(LenObject()) == 1
        assert called