class ArgVar:
    meta = "bob"
    def __init__(self):
        pass

class VarArg(ArgVar):
    meta = "bob"
    def __init__(self):
        self.meta = "joe"

print(VarArg().meta)

exit(0)
import gym
from supersuit.gym_wrappers import color_reduction_v0, frame_stack
from supersuit.vector.gym_rollout import RolloutBuilder,transpose_rollout,split_rollouts_on_dones
from supersuit.vector.gym_rollout import RandomPolicy
from stable_baselines.common.vec_env import DummyVecEnv
def make_gym_env():
    env = gym.make('SpaceInvaders-v0')

    env = frame_stack(color_reduction_v0(env, 'full'), 4)
    return env

num_envs = 4
envs = DummyVecEnv([make_gym_env]*num_envs)
policy = RandomPolicy(envs.action_space, num_envs)
rolloutbuilder = RolloutBuilder(envs)
rolloutbuilder.restart(policy)
n_steps = 5
obs,rew,done,infos = rolloutbuilder.rollout(policy,n_steps)
assert obs.shape[:2] == (n_steps,num_envs)
assert rew.shape == (n_steps,num_envs)
assert done.shape == (n_steps,num_envs)
tobs,trew,tdone,tinfos = transpose_rollout(obs,rew,done,infos)
assert tobs.shape[:2] == (num_envs,n_steps)
assert trew.shape == (num_envs,n_steps)
assert tdone.shape == (num_envs,n_steps)
tobs,trew,tinfos = split_rollouts_on_dones(tobs,trew,tdone,tinfos)
assert len(tobs) == num_envs
# exit(0)
# import pettingzoo.gamma
# from supersuit.aec_wrappers import color_reduction_v0, frame_stack
#
# def make_env():
#     env = pettingzoo.gamma.pistonball_v0.env()
#
#     env = frame_stack(color_reduction_v0(env, 'full'), 4)
#     return env
#
# envs = gym.vector.SyncVectorEnv([make_env]*4)
