import logging
from gym.envs.registration import register

logger = logging.getLogger(__name__)

register(
    id='Sokoban-v0',
    entry_point='gym_sokoban.envs:SokobanEnv1',
    max_episode_steps=200
)

register(
    id='Sokoban-v1',
    entry_point='gym_sokoban.envs:SokobanEnv',
    max_episode_steps=250
)

register(
    id='Sokoban-v2',
    entry_point='gym_sokoban.envs:SokobanEnv2',
    max_episode_steps=250
)

register(
    id='Sokoban-small-v0',
    entry_point='gym_sokoban.envs:SokobanEnv_Small0',
    max_episode_steps=100
)

register(
    id='Sokoban-small-v1',
    entry_point='gym_sokoban.envs:SokobanEnv_Small1',
    max_episode_steps=100
)

register(
    id='Sokoban-large-v0',
    entry_point='gym_sokoban.envs:SokobanEnv_Large0',
    max_episode_steps=100
)

register(
    id='Sokoban-large-v1',
    entry_point='gym_sokoban.envs:SokobanEnv_Large1',
    max_episode_steps=250
)

register(
    id='Sokoban-large-v2',
    entry_point='gym_sokoban.envs:SokobanEnv_Large2',
    max_episode_steps=250
)

register(
    id='Sokoban-huge-v0',
    entry_point='gym_sokoban.envs:SokobanEnv_Huge0',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-v0',
    entry_point='gym_sokoban.envs:TW_SokobanEnv0',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-v1',
    entry_point='gym_sokoban.envs:TW_SokobanEnv1',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-v2',
    entry_point='gym_sokoban.envs:TW_SokobanEnv2',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-small-v0',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Small0',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-small-v1',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Small1',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-large-v0',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large0',
    max_episode_steps=200
)

register(
    id='TinyWorld-Sokoban-large-v1',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large1',
    max_episode_steps=200
)


register(
    id='TinyWorld-Sokoban-large-v2',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large2',
    max_episode_steps=200
)


register(
    id='TinyWorld-Sokoban-huge-v0',
    entry_point='gym_sokoban.envs:TW_SokobanEnv_Huge0',
    max_episode_steps=200
)

@@ -8,16 +8,49 @@
 logging%0A
+import pkg_resources%0Aimport json%0A
 from gym
@@ -129,2203 +129,361 @@
 %0A%0Are
-gister(%0A    id='Sokoban-v0',%0A    entry_point='gym_sokoban.envs:SokobanEnv1',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='Sokoban-v1',%0A    entry_point='gym_sokoban.envs:SokobanEnv',%0A    max_episode_steps=250%0A)%0A%0Aregister(%0A    id='Sokoban-v2',%0A    entry_point='gym_sokoban.envs:SokobanEnv2',%0A    max_episode_steps=250%0A)%0A%0Aregister(%0A    id='Sokoban-small-v0',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Small0',%0A    max_episode_steps=100%0A)%0A%0Aregister(%0A    id='Sokoban-small-v1',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Small1',%0A    max_episode_steps=100%0A)%0A%0Aregister(%0A    id='Sokoban-large-v0',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Large0',%0A    max_episode_steps=100%0A)%0A%0Aregister(%0A    id='Sokoban-large-v1',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Large1',%0A    max_episode_steps=250%0A)%0A%0Aregister(%0A    id='Sokoban-large-v2',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Large2',%0A    max_episode_steps=250%0A)%0A%0Aregister(%0A    id='Sokoban-huge-v0',%0A    entry_point='gym_sokoban.envs:SokobanEnv_Huge0',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-v0',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv0',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-v1',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv1',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-v2',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv2',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-small-v0',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Small0',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-small-v1',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Small1',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-large-v0',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large0',%0A    max_episode_steps=200%0A)%0A%0Aregister(%0A    id='TinyWorld-Sokoban-large-v1',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large1',%0A    max_episode_steps=200%0A)%0A%0A%0Aregister(%0A    id='TinyWorld-Sokoban-large-v2',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Large2',%0A    max_episode_steps=200%0A)%0A%0A%0Aregister(%0A    id='TinyWorld-Sokoban-huge-v0',%0A    entry_point='gym_sokoban.envs:TW_SokobanEnv_Huge0',%0A    max_episode_steps=200%0A
+source_package = __name__%0Aenv_json = pkg_resources.resource_filename(resource_package, '/'.join(('envs', 'available_envs.json')))%0A%0Awith open(env_json) as f:%0A%0A    envs = json.load(f)%0A%0A    for env in envs:%0A        register(%0A            id=env%5B%22id%22%5D,%0A            entry_point=env%5B%22entry_point%22%5D,%0A            max_episode_steps=env%5B%22max_episode_steps%22%5D%0A        
 )%0A

Add load in __init__