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