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]
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