def _generate()

in train/compute/python/lib/iterator.py [0:0]


    def _generate(self):
        # loop operator args in each input variants
        # check for special arg index and kwargs handling
        var_id = 0
        # each input has: a list of range arg names, a list of args (some with range info).
        for config in self.configs[self.key]:
            # create iterables for each arg with ranges.
            config_generator = {}
            args = config["args"] if "args" in config else None
            kwargs = config["kwargs"] if "kwargs" in config else None

            if args:
                arg_iters = []
                for arg in args:
                    arg_iters.append(create_range_iter(arg))
                config_generator["args"] = ListProduct(arg_iters)
            if kwargs:
                kwarg_iters = {}
                for kw, arg in kwargs.items():
                    kwarg_iters[kw] = create_range_iter(arg)
                config_generator["kwargs"] = TableProduct(kwarg_iters)

            # start generating combinations
            config_id = 0
            for arg_config in TableProduct(config_generator):
                logger.debug(arg_config)
                # apply __copy__
                self._apply_copy(arg_config)

                # remove meta attributes
                actual_config = remove_meta_attr(arg_config)

                yield (
                    f"{var_id}_{config_id}",
                    actual_config,
                )
                config_id += 1
            var_id += 1