def edit_wrappers()

in robogym/wrappers/named_wrappers.py [0:0]


def edit_wrappers(*, wrappers, insert_above=[], insert_below=[], replace=[], delete=[]):
    """
        Edit list of wrappers with 4 operations. Order of operations is insert_above, insert_below, replace, delete.
        Args:
        - insert_above (list): list of lists, where each item contains wrapper name where we are inserting above and the wrapper to insert.
                e.g. insert_above=[["RandomizedCubeSizeWrapper", ["RandomizedTimestepWrapper", wrapper_args_dict]], ...]
        - insert_below (list): same as insert_above except inserts below
        - replace (list): same as insert_above syntax except replaces the target wrapper
        - delete (list): list of wrapper names. e.g. delete=["RandomizedCubeSizeWrapper", "RandomizedTimestepWrapper"] to turn of those two wrappers
        Returns: list of wrappers
    """
    # Insert Above
    for _insert_above in insert_above:
        try:
            ind = [wrapper[0] for wrapper in wrappers].index(_insert_above[0])
            wrappers.insert(ind, _insert_above[1])
        except ValueError:
            logger.warning(_insert_above[0] + " not found in wrappers!!!")
            assert False

    # Insert Below
    for _insert_below in insert_below:
        try:
            ind = [wrapper[0] for wrapper in wrappers].index(_insert_below[0]) + 1
            wrappers.insert(ind, _insert_below[1])
        except ValueError:
            logger.warning(_insert_below[0] + " not found in wrappers!!!")
            assert False

    # Replace
    for _replace in replace:
        try:
            ind = [wrapper[0] for wrapper in wrappers].index(_replace[0])
            wrappers[ind] = _replace[1]
        except ValueError:
            logger.warning(_replace[0] + " not found in wrappers!!!")
            assert False

    # Delete
    for _delete in delete:
        try:
            ind = [wrapper[0] for wrapper in wrappers].index(_delete)
            wrappers.pop(ind)
        except ValueError:
            logger.warning(_delete + " not found in wrappers!!!")
            assert False

    return wrappers