def generate_all()

in rtfm/tasks/groups.py [0:0]


def generate_all(all_monsters, all_groups, all_modifiers):
    # all monster assignments
    monster_groupings = set()
    monsters_per_group = len(all_monsters) // len(all_groups)
    for monsters in itertools.permutations(all_monsters, len(all_monsters)):
        groups = []
        for i in range(0, len(monsters), monsters_per_group):
            group = monsters[i:i+monsters_per_group]
            groups.append(frozenset(group))
        monster_groupings.add(frozenset(groups))
    monster_assignments = set()
    for groups in itertools.permutations(all_groups, len(all_groups)):
        for monster_grouping in monster_groupings:
            assignment = set()
            for g, mg in zip(groups, monster_grouping):
                assignment.add((g, tuple(sorted(list(mg)))))
            monster_assignments.add(frozenset(assignment))

    # all item assignments
    modifier_groupings = set()
    modifiers_per_element = len(all_modifiers) // len(ALL_TYPES)
    for modifiers in itertools.permutations(all_modifiers, len(all_modifiers)):
        groups = []
        for i in range(0, len(modifiers), modifiers_per_element):
            group = modifiers[i:i+modifiers_per_element]
            groups.append(frozenset(group))
        modifier_groupings.add(frozenset(groups))
    modifier_assignments = set()
    for elements in itertools.permutations(list(range(len(ALL_TYPES))), len(ALL_TYPES)):
        for modifier_grouping in modifier_groupings:
            assignment = []
            for e, mg in zip(elements, modifier_grouping):
                assignment.append((e, tuple(sorted(list(mg)))))
            modifier_assignments.add(frozenset(assignment))

    all_assignments = []
    for m in monster_assignments:
        for mm in modifier_assignments:
            all_assignments.append((m, mm))
    all_assignments.sort()

    random.Random(0).shuffle(all_assignments)

    n = len(all_assignments) // 2
    train = all_assignments[:n]
    dev = all_assignments[n:]
    return train, dev