MaplessNavigation
MaplessNavigation copied to clipboard
Suggest to loosen the dependency on stable-baselines3
Hi, your project MaplessNavigation requires "stable-baselines3==0.10.0" in its dependency. After analyzing the source code, we found that some other versions of stable-baselines3 can also be suitable without affecting your project, i.e., stable-baselines3 0.10.0a1, 0.11.0a4, 0.11.0a2, 0.11.0a1. Therefore, we suggest to loosen the dependency on stable-baselines3 from "stable-baselines3==0.10.0" to "stable-baselines3>=0.10.0a1,<=0.11.0a4" to avoid any possible conflict for importing more packages or for downstream projects that may use MaplessNavigation.
May I pull a request to loosen the dependency on stable-baselines3?
By the way, could you please tell us whether such dependency analysis may be potentially helpful for maintaining dependencies easier during your development?
For your reference, here are details in our analysis.
Your project MaplessNavigation(commit id: 0b140c4d4fae6475836d82e63c0feb1c383f8229) directly uses 1 APIs from package stable-baselines3.
stable_baselines3.common.env_checker.check_env
From which, 23 functions are then indirectly called, including -1 stable-baselines3's internal APIs and 24 outsider APIs, as follows (neglecting some repeated function occurrences).
[/LSTM-Kirigaya/MaplessNavigation]
+--stable_baselines3.common.env_checker.check_env
| +--stable_baselines3.common.env_checker._check_spaces
| +--stable_baselines3.common.env_checker._check_unsupported_spaces
| | +--warnings.warn
| | +--stable_baselines3.common.env_checker._is_numpy_array_space
| +--stable_baselines3.common.env_checker._check_image_input
| | +--warnings.warn
| | +--numpy.any
| +--warnings.warn
| +--numpy.any
| +--numpy.abs
| +--stable_baselines3.common.env_checker._check_returned_values
| | +--stable_baselines3.common.env_checker._check_obs
| | | +--stable_baselines3.common.env_checker._is_numpy_array_space
| +--stable_baselines3.common.env_checker._check_render
| | +--warnings.warn
| +--stable_baselines3.common.env_checker._is_numpy_array_space
| +--stable_baselines3.common.env_checker._check_nan
| | +--stable_baselines3.common.vec_env.vec_check_nan.VecCheckNan.__init__
| | | +--stable_baselines3.common.vec_env.base_vec_env.VecEnvWrapper.__init__
| | | | +--stable_baselines3.common.vec_env.base_vec_env.VecEnv.__init__
| | | | +--inspect.getmembers
| | +--stable_baselines3.common.vec_env.dummy_vec_env.DummyVecEnv.__init__
| | | +--stable_baselines3.common.vec_env.base_vec_env.VecEnv.__init__
| | | +--stable_baselines3.common.vec_env.util.obs_space_info
| | | +--collections.OrderedDict
| | | +--numpy.zeros
| | +--numpy.array
| | +--stable_baselines3.common.vec_env.base_vec_env.VecEnv.step
| | | +--stable_baselines3.common.vec_env.base_vec_env.VecEnv.step_async
| | | +--stable_baselines3.common.vec_env.base_vec_env.VecEnv.step_wait
We scan stable-baselines3's versions among [0.10.0a1, 0.11.0a4, 0.11.0a2, 0.11.0a1] and 0.10.0, the changing functions (diffs being listed below) have none intersection with any function or API we mentioned above (either directly or indirectly called by this project).
diff: 0.10.0(original) 0.10.0a1
['stable-baselines3.sac.policies.SACPolicy.make_critic', 'stable-baselines3.dqn.policies.DQNPolicy.make_q_net', 'stable-baselines3.sac.policies.SACPolicy.make_actor', 'stable-baselines3.sac.policies.SACPolicy.__init__', 'stable-baselines3.dqn.policies.DQNPolicy', 'stable-baselines3.common.base_class.BaseAlgorithm', 'stable-baselines3.common.policies.ContinuousCritic.forward', 'stable-baselines3.td3.policies.TD3Policy.make_critic', 'stable-baselines3.common.policies.ActorCriticCnnPolicy', 'stable-baselines3.common.policies.BaseModel.make_features_extractor', 'stable-baselines3.td3.policies.TD3Policy.make_actor', 'stable-baselines3.sac.policies.Actor', 'stable-baselines3.common.policies.ContinuousCritic.__init__', 'stable-baselines3.td3.policies.CnnPolicy.__init__', 'stable-baselines3.common.distributions.StateDependentNoiseDistribution', 'stable-baselines3.common.policies.BaseModel', 'stable-baselines3.common.policies.ActorCriticPolicy._build', 'stable-baselines3.td3.policies.CnnPolicy', 'stable-baselines3.sac.policies.SACPolicy', 'stable-baselines3.td3.policies.TD3Policy._get_data', 'stable-baselines3.sac.policies.SACPolicy._build', 'stable-baselines3.td3.policies.TD3Policy.__init__', 'stable-baselines3.sac.policies.CnnPolicy', 'stable-baselines3.common.torch_layers.get_actor_critic_arch', 'stable-baselines3.common.policies.ContinuousCritic', 'stable-baselines3.common.policies.ActorCriticPolicy', 'stable-baselines3.common.policies.BaseModel._update_features_extractor', 'stable-baselines3.common.policies.BaseModel.extract_features', 'stable-baselines3.sac.policies.CnnPolicy.__init__', 'stable-baselines3.td3.policies.TD3Policy._build', 'stable-baselines3.td3.policies.TD3Policy']
diff: 0.10.0(original) 0.11.0a4
['stable-baselines3.common.env_util.unwrap_wrapper', 'stable-baselines3.common.preprocessing.is_image_space_channels_first', 'stable-baselines3.common.atari_wrappers.MaxAndSkipEnv.__init__', 'stable-baselines3.common.policies.ActorCriticCnnPolicy.__init__', 'stable-baselines3.common.identity_env.FakeImageEnv.__init__', 'stable-baselines3.common.base_class.BaseAlgorithm', 'stable-baselines3.common.callbacks.EvalCallback._on_step', 'stable-baselines3.common.vec_env.__init__.is_vecenv_wrapped', 'stable-baselines3.common.atari_wrappers.ClipRewardEnv', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv', 'stable-baselines3.dqn.dqn.DQN.train', 'stable-baselines3.ppo.ppo.PPO.__init__', 'stable-baselines3.td3.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy._build', 'stable-baselines3.sac.policies.SACPolicy', 'stable-baselines3.common.save_util.save_to_pkl', 'stable-baselines3.common.utils.constant_fn', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv', 'stable-baselines3.common.policies.ActorCriticPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy', 'stable-baselines3.ddpg.ddpg.DDPG', 'stable-baselines3.common.callbacks.ConvertCallback', 'stable-baselines3.dqn.dqn.DQN', 'stable-baselines3.common.atari_wrappers.FireResetEnv.__init__', 'stable-baselines3.a2c.a2c.A2C.__init__', 'stable-baselines3.common.evaluation.evaluate_policy', 'stable-baselines3.common.base_class.BaseAlgorithm._wrap_env', 'stable-baselines3.common.callbacks.EvalCallback.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm', 'stable-baselines3.dqn.policies.QNetwork._get_data', 'stable-baselines3.ppo.ppo.PPO.train', 'stable-baselines3.a2c.a2c.A2C.train', 'stable-baselines3.her.her_replay_buffer.HerReplayBuffer', 'stable-baselines3.common.atari_wrappers.AtariWrapper', 'stable-baselines3.sac.policies.SACPolicy.__init__', 'stable-baselines3.a2c.a2c.A2C', 'stable-baselines3.sac.sac.SAC.train', 'stable-baselines3.common.base_class.BaseAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy', 'stable-baselines3.common.atari_wrappers.WarpFrame', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv.env_is_wrapped', 'stable-baselines3.dqn.dqn.DQN._on_step', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack', 'stable-baselines3.common.env_util.is_wrapped', 'stable-baselines3.dqn.dqn.DQN.__init__', 'stable-baselines3.common.atari_wrappers.MaxAndSkipEnv', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv.env_is_wrapped', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm', 'stable-baselines3.dqn.policies.CnnPolicy', 'stable-baselines3.common.callbacks.EvalCallback._log_success_callback', 'stable-baselines3.common.torch_layers.NatureCNN', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike.step', 'stable-baselines3.td3.policies.TD3Policy.__init__', 'stable-baselines3.dqn.policies.DQNPolicy.__init__', 'stable-baselines3.td3.td3.TD3.train', 'stable-baselines3.td3.policies.TD3Policy', 'stable-baselines3.common.atari_wrappers.FireResetEnv', 'stable-baselines3.common.torch_layers.NatureCNN.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy._build', 'stable-baselines3.common.atari_wrappers.EpisodicLifeEnv', 'stable-baselines3.common.atari_wrappers.EpisodicLifeEnv.__init__', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv.env_is_wrapped', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper.env_is_wrapped', 'stable-baselines3.common.atari_wrappers.NoopResetEnv.__init__', 'stable-baselines3.common.atari_wrappers.WarpFrame.__init__', 'stable-baselines3.common.buffers.RolloutBuffer', 'stable-baselines3.dqn.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticCnnPolicy', 'stable-baselines3.common.atari_wrappers.NoopResetEnv', 'stable-baselines3.sac.sac.SAC.__init__', 'stable-baselines3.common.env_util.make_atari_env', 'stable-baselines3.ppo.ppo.PPO', 'stable-baselines3.common.utils.get_linear_fn', 'stable-baselines3.ddpg.ddpg.DDPG.__init__', 'stable-baselines3.sac.policies.CnnPolicy', 'stable-baselines3.td3.td3.TD3', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper', 'stable-baselines3.sac.policies.CnnPolicy.__init__', 'stable-baselines3.common.base_class.maybe_make_env', 'stable-baselines3.common.callbacks.EvalCallback', 'stable-baselines3.dqn.policies.QNetwork', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.step_wait', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike', 'stable-baselines3.sac.sac.SAC', 'stable-baselines3.common.atari_wrappers.ClipRewardEnv.__init__', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm.__init__', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.reset', 'stable-baselines3.common.callbacks.ConvertCallback.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm._setup_learn', 'stable-baselines3.td3.policies.CnnPolicy', 'stable-baselines3.common.env_util.make_vec_env', 'stable-baselines3.sac.policies.SACPolicy._build', 'stable-baselines3.common.identity_env.FakeImageEnv', 'stable-baselines3.common.vec_env.__init__.is_wrapped', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv', 'stable-baselines3.td3.td3.TD3.__init__', 'stable-baselines3.td3.policies.TD3Policy._build', 'stable-baselines3.common.utils.get_schedule_fn']
diff: 0.10.0(original) 0.11.0a2
['stable-baselines3.common.env_util.unwrap_wrapper', 'stable-baselines3.common.preprocessing.is_image_space_channels_first', 'stable-baselines3.common.policies.ActorCriticCnnPolicy.__init__', 'stable-baselines3.common.identity_env.FakeImageEnv.__init__', 'stable-baselines3.common.base_class.BaseAlgorithm', 'stable-baselines3.common.callbacks.EvalCallback._on_step', 'stable-baselines3.common.vec_env.__init__.is_vecenv_wrapped', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv', 'stable-baselines3.ppo.ppo.PPO.__init__', 'stable-baselines3.td3.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy._build', 'stable-baselines3.sac.policies.SACPolicy', 'stable-baselines3.common.save_util.save_to_pkl', 'stable-baselines3.common.utils.constant_fn', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv', 'stable-baselines3.common.policies.ActorCriticPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy', 'stable-baselines3.ddpg.ddpg.DDPG', 'stable-baselines3.common.callbacks.ConvertCallback', 'stable-baselines3.dqn.dqn.DQN', 'stable-baselines3.a2c.a2c.A2C.__init__', 'stable-baselines3.common.evaluation.evaluate_policy', 'stable-baselines3.common.base_class.BaseAlgorithm._wrap_env', 'stable-baselines3.common.callbacks.EvalCallback.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm', 'stable-baselines3.ppo.ppo.PPO.train', 'stable-baselines3.a2c.a2c.A2C.train', 'stable-baselines3.her.her_replay_buffer.HerReplayBuffer', 'stable-baselines3.sac.policies.SACPolicy.__init__', 'stable-baselines3.a2c.a2c.A2C', 'stable-baselines3.common.base_class.BaseAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv.env_is_wrapped', 'stable-baselines3.dqn.dqn.DQN._on_step', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack', 'stable-baselines3.common.env_util.is_wrapped', 'stable-baselines3.dqn.dqn.DQN.__init__', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv.env_is_wrapped', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm', 'stable-baselines3.dqn.policies.CnnPolicy', 'stable-baselines3.common.callbacks.EvalCallback._log_success_callback', 'stable-baselines3.common.torch_layers.NatureCNN', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike.step', 'stable-baselines3.td3.policies.TD3Policy.__init__', 'stable-baselines3.dqn.policies.DQNPolicy.__init__', 'stable-baselines3.td3.policies.TD3Policy', 'stable-baselines3.common.torch_layers.NatureCNN.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy._build', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv.env_is_wrapped', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper.env_is_wrapped', 'stable-baselines3.common.buffers.RolloutBuffer', 'stable-baselines3.dqn.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticCnnPolicy', 'stable-baselines3.sac.sac.SAC.__init__', 'stable-baselines3.common.env_util.make_atari_env', 'stable-baselines3.ppo.ppo.PPO', 'stable-baselines3.common.utils.get_linear_fn', 'stable-baselines3.ddpg.ddpg.DDPG.__init__', 'stable-baselines3.sac.policies.CnnPolicy', 'stable-baselines3.td3.td3.TD3', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper', 'stable-baselines3.sac.policies.CnnPolicy.__init__', 'stable-baselines3.common.base_class.maybe_make_env', 'stable-baselines3.common.callbacks.EvalCallback', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.step_wait', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike', 'stable-baselines3.sac.sac.SAC', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm.__init__', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.reset', 'stable-baselines3.common.callbacks.ConvertCallback.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm._setup_learn', 'stable-baselines3.td3.policies.CnnPolicy', 'stable-baselines3.common.env_util.make_vec_env', 'stable-baselines3.sac.policies.SACPolicy._build', 'stable-baselines3.common.identity_env.FakeImageEnv', 'stable-baselines3.common.vec_env.__init__.is_wrapped', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv', 'stable-baselines3.td3.td3.TD3.__init__', 'stable-baselines3.td3.policies.TD3Policy._build', 'stable-baselines3.common.utils.get_schedule_fn']
diff: 0.10.0(original) 0.11.0a1
['stable-baselines3.common.env_util.unwrap_wrapper', 'stable-baselines3.common.preprocessing.is_image_space_channels_first', 'stable-baselines3.common.policies.ActorCriticCnnPolicy.__init__', 'stable-baselines3.common.identity_env.FakeImageEnv.__init__', 'stable-baselines3.common.base_class.BaseAlgorithm', 'stable-baselines3.common.callbacks.EvalCallback._on_step', 'stable-baselines3.common.vec_env.__init__.is_vecenv_wrapped', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv', 'stable-baselines3.ppo.ppo.PPO.__init__', 'stable-baselines3.td3.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy._build', 'stable-baselines3.sac.policies.SACPolicy', 'stable-baselines3.common.save_util.save_to_pkl', 'stable-baselines3.common.utils.constant_fn', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv', 'stable-baselines3.common.policies.ActorCriticPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticPolicy', 'stable-baselines3.ddpg.ddpg.DDPG', 'stable-baselines3.common.callbacks.ConvertCallback', 'stable-baselines3.dqn.dqn.DQN', 'stable-baselines3.a2c.a2c.A2C.__init__', 'stable-baselines3.common.evaluation.evaluate_policy', 'stable-baselines3.common.base_class.BaseAlgorithm._wrap_env', 'stable-baselines3.common.callbacks.EvalCallback.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm', 'stable-baselines3.ppo.ppo.PPO.train', 'stable-baselines3.a2c.a2c.A2C.train', 'stable-baselines3.her.her_replay_buffer.HerReplayBuffer', 'stable-baselines3.sac.policies.SACPolicy.__init__', 'stable-baselines3.a2c.a2c.A2C', 'stable-baselines3.common.base_class.BaseAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv.env_is_wrapped', 'stable-baselines3.dqn.dqn.DQN._on_step', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack', 'stable-baselines3.common.env_util.is_wrapped', 'stable-baselines3.dqn.dqn.DQN.__init__', 'stable-baselines3.common.vec_env.dummy_vec_env.DummyVecEnv.env_is_wrapped', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm', 'stable-baselines3.dqn.policies.CnnPolicy', 'stable-baselines3.common.torch_layers.NatureCNN', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike.step', 'stable-baselines3.td3.policies.TD3Policy.__init__', 'stable-baselines3.dqn.policies.DQNPolicy.__init__', 'stable-baselines3.td3.policies.TD3Policy', 'stable-baselines3.common.torch_layers.NatureCNN.__init__', 'stable-baselines3.common.on_policy_algorithm.OnPolicyAlgorithm.__init__', 'stable-baselines3.dqn.policies.DQNPolicy._build', 'stable-baselines3.common.vec_env.base_vec_env.VecEnv.env_is_wrapped', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper.env_is_wrapped', 'stable-baselines3.common.buffers.RolloutBuffer', 'stable-baselines3.dqn.policies.CnnPolicy.__init__', 'stable-baselines3.common.policies.ActorCriticCnnPolicy', 'stable-baselines3.sac.sac.SAC.__init__', 'stable-baselines3.common.env_util.make_atari_env', 'stable-baselines3.ppo.ppo.PPO', 'stable-baselines3.common.utils.get_linear_fn', 'stable-baselines3.ddpg.ddpg.DDPG.__init__', 'stable-baselines3.sac.policies.CnnPolicy', 'stable-baselines3.td3.td3.TD3', 'stable-baselines3.common.vec_env.base_vec_env.VecEnvWrapper', 'stable-baselines3.sac.policies.CnnPolicy.__init__', 'stable-baselines3.common.base_class.maybe_make_env', 'stable-baselines3.common.callbacks.EvalCallback', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.step_wait', 'stable-baselines3.common.sb2_compat.rmsprop_tf_like.RMSpropTFLike', 'stable-baselines3.sac.sac.SAC', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm.__init__', 'stable-baselines3.common.vec_env.vec_frame_stack.VecFrameStack.reset', 'stable-baselines3.common.callbacks.ConvertCallback.__init__', 'stable-baselines3.common.off_policy_algorithm.OffPolicyAlgorithm._setup_learn', 'stable-baselines3.td3.policies.CnnPolicy', 'stable-baselines3.common.env_util.make_vec_env', 'stable-baselines3.sac.policies.SACPolicy._build', 'stable-baselines3.common.identity_env.FakeImageEnv', 'stable-baselines3.common.vec_env.__init__.is_wrapped', 'stable-baselines3.common.vec_env.subproc_vec_env.SubprocVecEnv', 'stable-baselines3.td3.td3.TD3.__init__', 'stable-baselines3.td3.policies.TD3Policy._build', 'stable-baselines3.common.utils.get_schedule_fn']
As for other packages, the APIs of @outside_package_name are called by stable-baselines3 in the call graph and the dependencies on these packages also stay the same in our suggested versions, thus avoiding any outside conflict.
Therefore, we believe that it is quite safe to loose your dependency on stable-baselines3 from "stable-baselines3==0.10.0" to "stable-baselines3>=0.10.0a1,<=0.11.0a4". This will improve the applicability of MaplessNavigation and reduce the possibility of any further dependency conflict with other projects/packages.