A standard API for multi-agent reinforcement learning environments, with popular reference environments and related utilities
This report summarizes scanner evidence for Farama-Foundation/PettingZoo, a Python project with 3,531 GitHub stars. SynthScan examined 46,707 lines of code across 382 source files, recording 871 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 22.4 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 486 finding(s).
Are imports declared and package/API names verified? 320 finding(s).
Are wrappers, guards, and repeated structures necessary? 443 finding(s).
Which changes need focused human review? 871 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 871 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 1 | def pytest_markdown_docs_globals(): | CODE |
| LOW⚡ | test/deprecated_module_test.py | 7 | def test_removed_env_raises_with_guidance(): | CODE |
| LOW⚡ | test/deprecated_module_test.py | 13 | def test_unknown_env_raises_attribute_error(): | CODE |
| LOW⚡ | test/deprecated_module_test.py | 19 | def test_getattr_default_still_works(): | CODE |
| LOW⚡ | test/deprecated_module_test.py | 24 | def test_outdated_version_still_deprecated(): | CODE |
| LOW | test/wrapper_record_video_test.py | 13 | def test_video_folder_and_filenames_base( | CODE |
| LOW | test/wrapper_record_video_test.py | 49 | def test_video_folder_and_filenames_parallel( | CODE |
| LOW | test/wrapper_record_video_test.py | 88 | def test_incompatible_render_mode(wrapper, env_fn): | CODE |
| LOW⚡ | test/test_registry.py | 75 | def test_pettingzoo_suffix_to_gymnasium_suffix(self): | CODE |
| LOW⚡ | test/test_registry.py | 78 | def test_internal_underscore_in_name_is_preserved(self): | CODE |
| LOW⚡ | test/test_registry.py | 84 | def test_non_version_suffix_is_preserved(self): | CODE |
| LOW⚡ | test/test_registry.py | 110 | def test_register_warns_on_override(self): | CODE |
| LOW⚡ | test/test_registry.py | 116 | def test_register_with_kwargs(self): | CODE |
| LOW⚡ | test/test_registry.py | 121 | def test_register_normalizes_pettingzoo_version_suffix(self): | CODE |
| LOW⚡ | test/test_registry.py | 181 | def test_builtin_canonical_id_uses_gymnasium_suffix(self): | CODE |
| LOW⚡ | test/test_registry.py | 187 | def test_builtin_pettingzoo_suffix_alias_resolves(self): | CODE |
| LOW⚡ | test/test_registry.py | 193 | def test_builtin_unversioned_resolves_latest(self): | CODE |
| LOW⚡ | test/test_registry.py | 201 | def test_unversioned_exact_match(self): | CODE |
| LOW⚡ | test/test_registry.py | 208 | def test_unversioned_namespace_not_found(self): | CODE |
| LOW⚡ | test/test_registry.py | 212 | def test_unversioned_name_not_found_no_namespace(self): | CODE |
| LOW⚡ | test/test_registry.py | 222 | def test_load_env_creator_none(self): | CODE |
| LOW⚡ | test/test_registry.py | 228 | def test_load_env_creator_string_success(self): | CODE |
| LOW⚡ | test/test_registry.py | 234 | def test_load_env_creator_non_callable(self): | CODE |
| LOW | test/test_registry.py | 26 | def test_simple_name_with_version(self): | CODE |
| LOW | test/test_registry.py | 32 | def test_namespaced_with_version(self): | CODE |
| LOW | test/test_registry.py | 50 | def test_pettingzoo_version_suffix_alias(self): | CODE |
| LOW | test/test_registry.py | 56 | def test_no_namespace_no_version(self): | CODE |
| LOW | test/test_registry.py | 150 | def test_explicit_pettingzoo_version_suffix_alias(self): | CODE |
| LOW | test/test_registry.py | 267 | def test_envspec_make_with_max_cycles(self): | CODE |
| LOW | test/test_registry.py | 301 | def test_make_with_envspec_directly(self): | CODE |
| LOW | test/test_registry.py | 327 | def test_make_max_cycles_override(self): | CODE |
| LOW | test/test_registry.py | 354 | def test_make_max_cycles_disable(self): | CODE |
| LOW | test/test_registry.py | 387 | def test_make_type_mismatch_warns(self): | CODE |
| LOW | test/test_registry.py | 452 | def test_make_kwargs_override(self): | CODE |
| LOW | test/frame_skip_test.py | 127 | def test_aec_repeats_action_and_keeps_turn_order(): | CODE |
| LOW | test/frame_skip_test.py | 155 | def test_aec_accumulates_rewards_since_agent_last_acted(): | CODE |
| LOW | test/frame_skip_test.py | 172 | def test_aec_num_frames_one_is_unchanged(): | CODE |
| LOW | test/frame_skip_test.py | 181 | def test_aec_stops_replaying_when_episode_ends(truncate): | CODE |
| LOW | test/frame_skip_test.py | 204 | def test_aec_agent_removed_while_replaying(): | CODE |
| LOW | test/frame_skip_test.py | 229 | def test_aec_added_agent_gets_its_first_action_from_caller(): | CODE |
| LOW | test/frame_skip_test.py | 249 | def test_aec_reset_clears_pending_actions_and_rewards(): | CODE |
| LOW | test/frame_skip_test.py | 266 | def test_aec_rejects_invalid_num_frames(num_frames): | CODE |
| LOW | test/frame_skip_test.py | 271 | def test_aec_rejects_parallel_env(): | CODE |
| LOW | test/frame_skip_test.py | 347 | def test_parallel_repeats_actions_and_sums_rewards(): | CODE |
| LOW | test/frame_skip_test.py | 364 | def test_parallel_stops_when_episode_ends(truncate): | CODE |
| LOW | test/frame_skip_test.py | 378 | def test_parallel_agent_removed_partway_keeps_final_transition(): | CODE |
| LOW | test/frame_skip_test.py | 396 | def test_parallel_added_agent_uses_default_action(): | CODE |
| LOW | test/frame_skip_test.py | 408 | def test_parallel_added_agent_without_default_action_raises(): | CODE |
| LOW | test/frame_skip_test.py | 415 | def test_parallel_drops_agent_added_and_removed_within_one_step(): | CODE |
| LOW | test/frame_skip_test.py | 427 | def test_parallel_random_num_frames_uses_env_rng(): | CODE |
| LOW | test/frame_skip_test.py | 447 | def test_parallel_rejects_invalid_num_frames(num_frames): | CODE |
| LOW | test/agents_done_test.py | 24 | def test_agents_empty_only_after_dead_steps(env_fn): | CODE |
| LOW | test/agents_done_test.py | 72 | def test_connect_four_user_mischeck_timing(): | CODE |
| LOW⚡ | test/sticky_action_test.py | 309 | def test_aec_first_action_is_never_repeated(probability): | CODE |
| LOW⚡ | test/sticky_action_test.py | 318 | def test_parallel_first_action_is_never_repeated(probability): | CODE |
| LOW⚡ | test/sticky_action_test.py | 326 | def test_aec_zero_probability_never_repeats(): | CODE |
| LOW⚡ | test/sticky_action_test.py | 335 | def test_parallel_zero_probability_never_repeats(): | CODE |
| LOW⚡ | test/sticky_action_test.py | 404 | def test_parallel_reset_clears_previous_actions(): | CODE |
| LOW⚡ | test/sticky_action_test.py | 414 | def test_aec_reset_forwards_seed_to_the_inner_env(): | CODE |
| LOW⚡ | test/sticky_action_test.py | 420 | def test_parallel_reset_forwards_seed_to_the_inner_env(): | CODE |
| 310 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/wrapper_record_video_test.py | 1 | CODE | |
| LOW | test/frame_skip_test.py | 1 | CODE | |
| LOW | test/unwrapped_test.py | 1 | CODE | |
| LOW | test/agents_done_test.py | 12 | CODE | |
| LOW | test/sticky_action_test.py | 1 | CODE | |
| LOW | test/agent_indicator_test.py | 1 | CODE | |
| LOW | test/rescale_observation_test.py | 1 | CODE | |
| LOW | test/frame_stack_test.py | 1 | CODE | |
| LOW | test/black_death_test.py | 1 | CODE | |
| LOW | test/flatten_test.py | 1 | CODE | |
| LOW | test/pickle_test.py | 1 | CODE | |
| LOW | test/wrapper_test.py | 1 | CODE | |
| LOW | test/all_parameter_combs_test.py | 1 | CODE | |
| LOW | test/seed_test_test.py | 3 | CODE | |
| LOW | test/turn_based_conversion_test.py | 1 | CODE | |
| LOW | test/delay_observation_test.py | 1 | CODE | |
| LOW | test/doc_examples_test.py | 1 | CODE | |
| LOW | test/scale_action_test.py | 1 | CODE | |
| LOW | test/clip_out_of_bounds_test.py | 1 | CODE | |
| LOW | test/reshape_test.py | 1 | CODE | |
| LOW | test/pad_action_space_test.py | 1 | CODE | |
| LOW | test/nan_zeros_test.py | 1 | CODE | |
| LOW | test/pad_observations_test.py | 1 | CODE | |
| LOW | test/color_reduction_test.py | 1 | CODE | |
| LOW | test/variable_env_test.py | 1 | CODE | |
| LOW | test/nan_noop_test.py | 1 | CODE | |
| LOW | test/api_spaces_test.py | 1 | CODE | |
| LOW | test/max_observation_test.py | 1 | CODE | |
| LOW | test/pygame_init_test.py | 1 | CODE | |
| LOW | test/nan_random_test.py | 1 | CODE | |
| LOW | test/dtype_test.py | 1 | CODE | |
| LOW | test/clip_reward_test.py | 1 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 5 | CODE | |
| LOW | pettingzoo/__init__.py | 14 | CODE | |
| LOW | pettingzoo/__init__.py | 14 | CODE | |
| LOW | pettingzoo/butterfly/knights_archers_zombies_v11.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/knights_archers_zombies_v11.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/knights_archers_zombies_v11.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/knights_archers_zombies_v11.py | 8 | CODE | |
| LOW | pettingzoo/butterfly/pistonball_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/pistonball_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/pistonball_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/pistonball_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/cooperative_pong_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/cooperative_pong_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/cooperative_pong_v6.py | 3 | CODE | |
| LOW | pettingzoo/butterfly/cooperative_pong_v6.py | 8 | CODE | |
| LOW | pettingzoo/butterfly/pistonball/pistonball.py | 94 | CODE | |
| LOW | …tingzoo/butterfly/cooperative_pong/cooperative_pong.py | 91 | CODE | |
| LOW | …fly/knights_archers_zombies/knights_archers_zombies.py | 185 | CODE | |
| LOW | …ttingzoo/butterfly/knights_archers_zombies/test_kaz.py | 3 | CODE | |
| LOW | …ngzoo/butterfly/knights_archers_zombies/src/players.py | 3 | CODE | |
| LOW | …ngzoo/butterfly/knights_archers_zombies/src/weapons.py | 13 | CODE | |
| LOW | …ngzoo/butterfly/knights_archers_zombies/src/weapons.py | 13 | CODE | |
| 254 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/all_parameter_combs_test.py | 280 | except NotImplementedError: | CODE |
| HIGH | pettingzoo/__init__.py | 45 | except Exception: # nosec | CODE |
| HIGH | pettingzoo/test/state_test.py | 33 | except ModuleNotFoundError: | CODE |
| HIGH | pettingzoo/test/save_obs_test.py | 20 | except ModuleNotFoundError: | CODE |
| HIGH | pettingzoo/test/bombardment_test.py | 31 | except ModuleNotFoundError: | CODE |
| HIGH | pettingzoo/test/api_test.py | 60 | except ModuleNotFoundError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 121 | except AttributeError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 136 | except AttributeError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 260 | except AttributeError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 266 | except AttributeError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 431 | except AttributeError: | CODE |
| HIGH | pettingzoo/utils/conversions.py | 439 | except AttributeError: | CODE |
| HIGH | pettingzoo/sisl/pursuit/pursuit_base.py | 200 | except AttributeError: | CODE |
| HIGH | pettingzoo/sisl/pursuit/pursuit_base.py | 198 | except AttributeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/action_mask_test.py | 18 | CODE | |
| LOW | test/frame_stack_test.py | 256 | CODE | |
| LOW | test/frame_stack_test.py | 349 | CODE | |
| LOW | test/turn_based_conversion_test.py | 48 | CODE | |
| LOW | test/max_observation_test.py | 208 | CODE | |
| LOW | test/print_test.py | 4 | CODE | |
| LOW | pettingzoo/butterfly/pistonball/manual_policy.py | 21 | CODE | |
| LOW | …tingzoo/butterfly/cooperative_pong/cooperative_pong.py | 376 | CODE | |
| LOW | pettingzoo/butterfly/cooperative_pong/manual_policy.py | 50 | CODE | |
| LOW | …fly/knights_archers_zombies/knights_archers_zombies.py | 490 | CODE | |
| LOW | …fly/knights_archers_zombies/knights_archers_zombies.py | 639 | CODE | |
| LOW | …zoo/butterfly/knights_archers_zombies/manual_policy.py | 23 | CODE | |
| LOW | …ngzoo/butterfly/knights_archers_zombies/src/players.py | 69 | CODE | |
| LOW | pettingzoo/test/parallel_test.py | 26 | CODE | |
| LOW | pettingzoo/test/performance_benchmark.py | 7 | CODE | |
| LOW | pettingzoo/test/bombardment_test.py | 35 | CODE | |
| LOW | pettingzoo/test/render_test.py | 9 | CODE | |
| LOW | pettingzoo/test/api_test.py | 393 | CODE | |
| LOW | pettingzoo/test/api_test.py | 533 | CODE | |
| LOW | …mple_envs/generated_agents_parallel_cust_agentid_v0.py | 115 | CODE | |
| LOW | pettingzoo/test/example_envs/generated_agents_env_v0.py | 112 | CODE | |
| LOW | …gzoo/test/example_envs/generated_agents_parallel_v0.py | 115 | CODE | |
| LOW | …ample_envs/generated_agents_env_action_mask_info_v0.py | 118 | CODE | |
| LOW | …xample_envs/generated_agents_env_action_mask_obs_v0.py | 120 | CODE | |
| LOW | …t/example_envs/generated_agents_env_cust_agentid_v0.py | 112 | CODE | |
| LOW | pettingzoo/classic/hanabi/rendering.py | 58 | CODE | |
| LOW | pettingzoo/classic/go/go_base.py | 108 | CODE | |
| LOW | pettingzoo/classic/go/go.py | 336 | CODE | |
| LOW | pettingzoo/classic/rps/rps.py | 219 | CODE | |
| LOW | pettingzoo/classic/rps/rps.py | 451 | CODE | |
| LOW | pettingzoo/classic/rlcard_envs/texas_holdem.py | 137 | CODE | |
| LOW | pettingzoo/classic/rlcard_envs/leduc_holdem.py | 123 | CODE | |
| LOW | pettingzoo/classic/chess/chess_utils.py | 74 | CODE | |
| LOW | pettingzoo/utils/average_total_reward.py | 11 | CODE | |
| LOW | pettingzoo/utils/random_demo.py | 11 | CODE | |
| LOW | pettingzoo/utils/deprecated_module.py | 56 | CODE | |
| LOW | pettingzoo/utils/wrappers/frame_skip.py | 168 | CODE | |
| LOW | pettingzoo/sisl/pursuit/pursuit_base.py | 521 | CODE | |
| LOW | pettingzoo/sisl/pursuit/manual_policy.py | 22 | CODE | |
| LOW | pettingzoo/sisl/pursuit/utils/agent_utils.py | 65 | CODE | |
| LOW | pettingzoo/sisl/pursuit/utils/two_d_maps.py | 5 | CODE | |
| LOW | pettingzoo/sisl/multiwalker/multiwalker_base.py | 59 | CODE | |
| LOW | pettingzoo/sisl/multiwalker/multiwalker_base.py | 85 | CODE | |
| LOW | pettingzoo/sisl/multiwalker/multiwalker_base.py | 570 | CODE | |
| LOW | pettingzoo/sisl/multiwalker/multiwalker_base.py | 742 | CODE | |
| LOW | docs/_scripts/generate_gif_image.py | 12 | CODE | |
| LOW | docs/_scripts/graph_gen.py | 9 | CODE | |
| LOW | docs/_scripts/gen_envs_docstrings.py | 12 | CODE | |
| LOW | tutorials/AgileRL/agilerl_dqn_curriculum.py | 41 | CODE | |
| LOW | …rials/SB3/connect_four/sb3_connect_four_action_mask.py | 107 | CODE | |
| LOW | tutorials/SB3/pistonball/sb3_pistonball_vector.py | 69 | CODE | |
| LOW | …rials/CustomEnvironment/tutorial2_adding_game_logic.py | 86 | CODE | |
| LOW | tutorials/CustomEnvironment/tutorial3_action_masking.py | 93 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pettingzoo/__init__.py | 16 | __all__ = [ | CODE |
| LOW | pettingzoo/butterfly/knights_archers_zombies_v11.py | 13 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/butterfly/pistonball_v6.py | 13 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/butterfly/cooperative_pong_v6.py | 13 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/butterfly/pistonball/pistonball.py | 100 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | …tingzoo/butterfly/cooperative_pong/cooperative_pong.py | 112 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | …fly/knights_archers_zombies/knights_archers_zombies.py | 219 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | …ngzoo/butterfly/knights_archers_zombies/src/players.py | 115 | def _update_image(self) -> None: | CODE |
| LOW | pettingzoo/classic/chess_v6.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/connect_four_v3.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/go_v5.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/texas_holdem_v4.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/tictactoe_v3.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/leduc_holdem_v4.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/rps_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/hanabi_v5.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/classic/texas_holdem_no_limit_v6.py | 8 | __all__ = ["env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/ice_hockey_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/joust_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/warlords_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/double_dunk_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/basketball_pong_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/entombed_competitive_v3.py | 12 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/surround_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/space_war_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/video_checkers_v4.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/pong_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/combat_tank_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/space_invaders_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/volleyball_pong_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/foozpong_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/othello_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/mario_bros_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/maze_craze_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/quadrapong_v4.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/entombed_cooperative_v3.py | 12 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/combat_plane_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/flag_capture_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/tennis_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/wizard_of_wor_v3.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/atari/base_atari_env.py | 20 | __all__ = [ | CODE |
| LOW | pettingzoo/atari/boxing_v2.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/utils/__init__.py | 21 | __all__ = [ | CODE |
| LOW | pettingzoo/utils/wrappers/delay_observation.py | 79 | def _update_selected_agent_observation(self) -> None: | CODE |
| LOW | pettingzoo/utils/wrappers/__init__.py | 68 | __all__ = [ | CODE |
| LOW | pettingzoo/sisl/pursuit_v6.py | 8 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/sisl/multiwalker_v9.py | 8 | __all__ = ["env", "parallel_env", "raw_env"] | CODE |
| LOW | pettingzoo/sisl/pursuit/pursuit.py | 112 | __all__ = ["ManualPolicy", "env", "parallel_env", "raw_env"] | CODE |
| LOW | tutorials/AgileRL/agilerl_dqn_curriculum.py | 358 | def update_top(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tutorials/AgileRL/agilerl_dqn_curriculum.py | 542 | # Define the network configuration | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_dqn_curriculum.py | 554 | # Define the initial hyperparameters | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_dqn_curriculum.py | 578 | # Define the connect four environment | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_dqn_curriculum.py | 606 | # Create a population ready for evolutionary hyper-parameter optimisation | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 24 | # Define the network configuration | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 31 | # Define the initial hyperparameters | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 53 | # Define the simple speaker listener environment as a parallel environment | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 80 | # Create a population ready for evolutionary hyper-parameter optimisation | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 24 | # Define the network configuration | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 34 | # Define the initial hyperparameters | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 55 | # Define the space invaders environment as a parallel environment | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 89 | # Create a population ready for evolutionary hyper-parameter optimisation | COMMENT |
| MEDIUM | tutorials/Tianshou/2_training_agents.py | 65 | """This function is needed to provide callables for DummyVectorEnv.""" | STRING |
| MEDIUM | tutorials/CleanRL/cleanrl_advanced.py | 382 | # Create a fresh non-vectorized Atari env with RGB rendering. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pettingzoo/sisl/pursuit/utils/agent_utils.py | 6 | # Implements utility functions for multi-agent DRL | COMMENT |
| MEDIUM | pettingzoo/sisl/pursuit/utils/controllers.py | 6 | # Implements multi-agent controllers | COMMENT |
| MEDIUM | docs/environments/third_party_envs.md | 353 | [//]: # (Set of two environments with numerous multi-agent equilibria popular with researchers) | CODE |
| MEDIUM | docs/api/parallel.md | 8 | In addition to the main API, we have a secondary parallel API for environments where all agents have simultaneous action | CODE |
| MEDIUM | docs/api/wrappers/supersuit_wrappers.md | 127 | [//]: # (Note that a multi-agent environment has a similar interface to a vector environment. Give each possible agent a | CODE |
| MEDIUM | docs/api/wrappers/supersuit_wrappers.md | 230 | [//]: # (* `action_lambda_v1(env, change_action_fn, change_space_fn)` allows you to define arbitrary changes to | CODE |
| MEDIUM | docs/api/wrappers/supersuit_wrappers.md | 233 | [//]: # (* `observation_lambda_v0(env, observation_fn, observation_space_fn)` allows you to define arbitrary cha | CODE |
| MEDIUM | docs/api/wrappers/shimmy_wrappers.md | 9 | ## Supported multi-agent environments: | COMMENT |
| MEDIUM | docs/tutorials/rllib/index.md | 19 | * [PettingZoo Env](https://docs.ray.io/en/latest/rllib/rllib-env.html#pettingzoo-multi-agent-environments) | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 58 | # Configure the multi-agent algo input arguments | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_matd3.py | 93 | # Configure the multi-agent replay buffer | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 68 | # Configure the multi-agent algo input arguments | COMMENT |
| MEDIUM | tutorials/AgileRL/agilerl_maddpg.py | 102 | # Configure the multi-agent replay buffer | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/dtype_test.py | 257 | """Casting an infinite bound to an int dtype is undefined, as in SuperSuit.""" | STRING |
| HIGH | pettingzoo/classic/hanabi/rendering.py | 12 | R1 || XX|RYGWB12345 | STRING |
| HIGH | pettingzoo/classic/hanabi/rendering.py | 15 | Y3 || XX|RYGWB12345 | STRING |
| HIGH | pettingzoo/classic/chess/chess.py | 276 | self.board.push(chosen_move) | CODE |
| HIGH | pettingzoo/classic/chess/chess_utils.py | 259 | if (history_idx < 0 && fill_empty_history == FillEmptyHistory::NO) break; | STRING |
| HIGH | pettingzoo/classic/chess/chess_utils.py | 261 | if (history_idx < 0 && fill_empty_history == FillEmptyHistory::FEN_ONLY && | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 19 | # Step 1: Load the PettingZoo environment | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 22 | # Step 2: Wrap the environment for Tianshou interfacing | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 25 | # Step 3: Define policies for each agent | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 28 | # Step 4: Convert the env to vector format | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 31 | # Step 5: Construct the Collector, which interfaces the policies with the vectorised environment | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 34 | # Step 6: Execute the environment with the agents playing for 1 episode, and render a frame every 0.1 seconds | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 19 | # Step 1: Load the PettingZoo environment | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 22 | # Step 2: Wrap the environment for Tianshou interfacing | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 25 | # Step 3: Define policies for each agent | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 28 | # Step 4: Convert the env to vector format | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 31 | # Step 5: Construct the Collector, which interfaces the policies with the vectorised environment | COMMENT |
| LOW⚡ | tutorials/Tianshou/1_basic_api_usage.py | 34 | # Step 6: Execute the environment with the agents playing for 1 episode, and render a frame every 0.1 seconds | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pettingzoo/butterfly/pistonball/pistonball.py | 597 | # Check if the ball is touching/within the left-most wall. | COMMENT |
| LOW | pettingzoo/classic/hanabi/hanabi.py | 285 | # Check if all possible dictionary values are within a certain ranges. | COMMENT |
| LOW | pettingzoo/env_registry/helpers.py | 22 | # Check if the env name exists at all | COMMENT |
| LOW | tutorials/AgileRL/agilerl_dqn_curriculum.py | 766 | # Check if game is over (Player 0 win) | COMMENT |
| LOW | tutorials/AgileRL/agilerl_dqn_curriculum.py | 857 | # Check if game is over (Player 1 win) | COMMENT |
| LOW | tutorials/SB3/kaz/sb3_kaz_vector.py | 128 | # Set obs_method to "image" in order to use visual observations (significantly longer training time) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pettingzoo/butterfly/pistonball/pistonball.py | 135 | CODE | |
| LOW | …tingzoo/butterfly/cooperative_pong/cooperative_pong.py | 167 | CODE | |
| LOW | …fly/knights_archers_zombies/knights_archers_zombies.py | 263 | CODE | |
| LOW | pettingzoo/classic/hanabi/hanabi.py | 211 | CODE | |
| LOW | pettingzoo/classic/go/go_base.py | 317 | CODE | |
| LOW | pettingzoo/atari/base_atari_env.py | 52 | CODE | |
| LOW | pettingzoo/sisl/pursuit/pursuit_base.py | 19 | CODE | |
| LOW | pettingzoo/sisl/multiwalker/multiwalker_base.py | 294 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …rials/SB3/connect_four/sb3_connect_four_action_mask.py | 73 | # for the current env. In this example, we assume the env has a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 41 | # args: | COMMENT |
| LOW | pyproject.toml | 81 | # Match the historical black line length (88) so `ruff format` reproduces it. | COMMENT |
| LOW | pettingzoo/butterfly/cooperative_pong/test_ball.py | 81 | # the paddles occupy the entire side walls, so it should not be | COMMENT |
| LOW | pettingzoo/classic/go/coords.py | 1 | # Copyright 2018 Google LLC | COMMENT |
| LOW | pettingzoo/classic/go/go_base.py | 1 | # Copyright 2018 Google LLC | COMMENT |
| LOW | docs/conf.py | 1 | # Configuration file for the Sphinx documentation builder. | COMMENT |
| LOW | docs/_scripts/generate_gifs.py | 21 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/code_examples/parallel_rps.py | 150 | # If a user passes in actions with no agents, then just return empty observations, etc. | COMMENT |
| MEDIUM | …rials/SB3/connect_four/sb3_connect_four_action_mask.py | 67 | """Separate function used in order to access the action mask.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pettingzoo/__init__.py | 45 | except Exception: # nosec | CODE |
| LOW | pettingzoo/test/manual_control_test.py | 28 | except Exception as e: | CODE |