def build_iterators()

in src/simplify_docx/iterators/generic.py [0:0]


def build_iterators() -> None:
    """
    Build the iterators for the current iteration
    """

    _resovled: List[str] = []
    def _resolve(x: str):

        if x in _resovled:
            return

        xdef = __definitions__[x]
        if not xdef.extends:
            __built__[x] = xdef
            _resovled.append(x)
            return

        TAGS_TO_YIELD = dict(xdef.TAGS_TO_YIELD) if xdef.TAGS_TO_YIELD else {}
        TAGS_TO_NEST = dict(xdef.TAGS_TO_NEST) if xdef.TAGS_TO_NEST else {}
        TAGS_TO_IGNORE = list(xdef.TAGS_TO_IGNORE) if xdef.TAGS_TO_IGNORE else []
        TAGS_TO_WARN = dict(xdef.TAGS_TO_WARN) if xdef.TAGS_TO_WARN else {}
        TAGS_TO_SKIP = dict(xdef.TAGS_TO_SKIP) if xdef.TAGS_TO_SKIP else {}

        for dependency in xdef.extends:
            try:
                _resolve(dependency)
            except KeyError:
                msg = "Iterator for '%s' depends on undefined group '%s'" % (x, dependency,)
                raise RuntimeError(msg)

            ddef = __built__[dependency]
            if ddef.TAGS_TO_YIELD:
                TAGS_TO_YIELD.update(ddef.TAGS_TO_YIELD)
            if ddef.TAGS_TO_NEST:
                TAGS_TO_NEST.update(ddef.TAGS_TO_NEST)
            if ddef.TAGS_TO_IGNORE:
                TAGS_TO_IGNORE.extend(ddef.TAGS_TO_IGNORE)
            if ddef.TAGS_TO_WARN:
                TAGS_TO_WARN.update(ddef.TAGS_TO_WARN)
            if ddef.TAGS_TO_SKIP:
                TAGS_TO_SKIP.update(ddef.TAGS_TO_SKIP)

        __built__[x] = ElementHandlers(
                TAGS_TO_YIELD=TAGS_TO_YIELD,
                TAGS_TO_NEST=TAGS_TO_NEST,
                TAGS_TO_IGNORE=TAGS_TO_IGNORE,
                TAGS_TO_WARN=TAGS_TO_WARN,
                TAGS_TO_SKIP=TAGS_TO_SKIP,
                )

        _resovled.append(x)

    for name in __definitions__:
        _resolve(name)