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