OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games.
This report presents the forensic synthetic code analysis of google-deepmind/open_spiel, a C++ project with 5,325 GitHub stars. SynthScan v2.0 examined 338,739 lines of code across 1311 source files, recording 3928 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 16.4 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3928 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # The core OpenSpiel pip dependencies. | COMMENT |
| LOW | install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | __init__.py | 1 | # Copyright 2019 DeepMind Technologies Limited | COMMENT |
| LOW | setup.py | 1 | # Copyright 2019 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/game_parameters.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/action_view.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/action_view.h | 81 | int num_actions(Player pl) const { return legal_actions.at(pl).size(); } | COMMENT |
| LOW | open_spiel/canonical_game_strings.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/canonical_game_strings.h | 21 | // can sent to LoadGame to load the game. | COMMENT |
| LOW | open_spiel/observer.h | 1 | // Copyright 2019 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/observer.h | 21 | COMMENT | |
| LOW | open_spiel/observer.h | 41 | // for accessing pieces of the observation tensor by name. See `observation.py` | COMMENT |
| LOW | open_spiel/observer.h | 221 | COMMENT | |
| LOW | open_spiel/observer.h | 241 | // within this sequence. | COMMENT |
| LOW | open_spiel/observer.h | 261 | // his hand in the reflection. Even if everyone was aware of the mirror, then | COMMENT |
| LOW | open_spiel/observer.h | 361 | return tensors_info_; | COMMENT |
| LOW | open_spiel/observer.h | 381 | // Different computer architectures may use different Endianness | COMMENT |
| LOW | open_spiel/observer.h | 441 | observers() { | COMMENT |
| LOW | open_spiel/policy.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/policy.h | 121 | // player at this state. If the policy is not available at the state, returns | COMMENT |
| LOW | open_spiel/tensor_game.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/tensor_game.h | 21 | #include <numeric> | COMMENT |
| LOW | open_spiel/__init__.py | 1 | # Copyright 2019 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/spiel.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/spiel.h | 21 | #include <memory> | COMMENT |
| LOW | open_spiel/spiel.h | 161 | || provides_observation_string; | COMMENT |
| LOW | open_spiel/spiel.h | 181 | // Information about a concrete Game instantiation. | COMMENT |
| LOW | open_spiel/spiel.h | 301 | class State { | COMMENT |
| LOW | open_spiel/spiel.h | 321 | // Change the state of the game by applying the specified action in turn-based | COMMENT |
| LOW | open_spiel/spiel.h | 361 | // be overridden by simultaneous-move games. At least one player should have a | COMMENT |
| LOW | open_spiel/spiel.h | 381 | // least one legal action. | COMMENT |
| LOW | open_spiel/spiel.h | 481 | // implemented. The default is to return 0 except at terminal states, where | COMMENT |
| LOW | open_spiel/spiel.h | 581 | // Is this a first state in the game, i.e. the initial state (root node)? | COMMENT |
| LOW | open_spiel/spiel.h | 601 | // well, like P1Jack and P2Jack. However prefixing by player number is not | COMMENT |
| LOW | open_spiel/spiel.h | 621 | // | COMMENT |
| LOW | open_spiel/spiel.h | 641 | return InformationStateString(CurrentPlayer()); | COMMENT |
| LOW | open_spiel/spiel.h | 681 | // Note that neither of these are valid information states, since the same | COMMENT |
| LOW | open_spiel/spiel.h | 741 | std::unique_ptr<State> child = Clone(); | COMMENT |
| LOW | open_spiel/spiel.h | 781 | // | COMMENT |
| LOW | open_spiel/spiel.h | 801 | outcome_list.push_back(pair.first); | COMMENT |
| LOW | open_spiel/spiel.h | 821 | // Resamples a new history from the information state from player_id's view. | COMMENT |
| LOW | open_spiel/spiel.h | 861 | return {}; | COMMENT |
| LOW | open_spiel/spiel.h | 921 | // Breakthrough(8x8). | COMMENT |
| LOW | open_spiel/spiel.h | 1001 | // give some information to algorithms that require it, and so their | COMMENT |
| LOW | open_spiel/spiel.h | 1061 | } | COMMENT |
| LOW | open_spiel/spiel.h | 1121 | // Returns true if these games are equal, false otherwise. | COMMENT |
| LOW | open_spiel/spiel.h | 1321 | // (with whitespace allowed). | COMMENT |
| LOW | open_spiel/spiel.h | 1341 | COMMENT | |
| LOW | open_spiel/spiel.h | 1361 | // parsed using LoadGame(string) and the state section is parsed using | COMMENT |
| LOW | open_spiel/spiel.h | 1381 | // LoadGame. | COMMENT |
| LOW | open_spiel/spiel_globals.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/spiel_utils.h | 1 | // Copyright 2021 DeepMind Technologies Limited | COMMENT |
| LOW | open_spiel/spiel_utils.h | 21 | #include <cstdint> | COMMENT |
| LOW | open_spiel/spiel_utils.h | 301 | __FILE__, ":", __LINE__, " CHECK_TRUE(", #x, "): ", e), \ | COMMENT |
| LOW | open_spiel/spiel_utils.h | 321 | #define SPIEL_DCHECK_EQ(x, y) SPIEL_CHECK_EQ(x, y) | COMMENT |
| LOW | open_spiel/spiel_utils.h | 341 | #define SPIEL_DCHECK_NE(x, y) | COMMENT |
| LOW | open_spiel/spiel_utils.h | 441 | int operator()(absl::Span<const double> probs); | COMMENT |
| LOW | open_spiel/spiel_utils.h | 461 | // SPIEL_DEFINE_STRUCT(TicTacToeStateStruct, StateStruct, | COMMENT |
| LOW | open_spiel/spiel_utils.h | 481 | // SPIEL_STRUCT_BOILERPLATE: Generates boilerplate for structs with inline | COMMENT |
| LOW | open_spiel/spiel_utils.h | 501 | nlohmann::json::parse(json_str).get_to(*this); \ | COMMENT |
| 2217 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | open_spiel/python/policy.py | 0 | returns the key to use to look up this (state, player) pair. | STRING |
| HIGH | open_spiel/python/algorithms/policy_aggregator_joint.py | 0 | returns the key to use to look up this (state, player) pair. | STRING |
| HIGH | open_spiel/python/algorithms/policy_aggregator.py | 0 | returns the key to use to look up this (state, player) pair. | STRING |
| HIGH | open_spiel/python/algorithms/noisy_policy.py | 0 | returns the key to use to look up this (state, player) pair. | STRING |
| HIGH | open_spiel/python/algorithms/policy_aggregator_joint.py | 0 | returns the policy for a player in a state. args: state: a `pyspiel.state` object. player_id: optional, the player id fo | STRING |
| HIGH | open_spiel/python/algorithms/policy_aggregator.py | 0 | returns the policy for a player in a state. args: state: a `pyspiel.state` object. player_id: optional, the player id fo | STRING |
| HIGH | open_spiel/python/algorithms/best_response.py | 0 | returns the policy for a player in a state. args: state: a `pyspiel.state` object. player_id: optional, the player id fo | STRING |
| HIGH | open_spiel/python/algorithms/noisy_policy.py | 0 | returns the policy for a player in a state. args: state: a `pyspiel.state` object. player_id: optional, the player id fo | STRING |
| HIGH | …_spiel/python/algorithms/boltzmann_tabular_qlearner.py | 0 | returns a selected action and the probabilities of legal actions. | STRING |
| HIGH | open_spiel/python/pytorch/boltzmann_dqn.py | 0 | returns a selected action and the probabilities of legal actions. | STRING |
| HIGH | open_spiel/python/jax/boltzmann_dqn.py | 0 | returns a selected action and the probabilities of legal actions. | STRING |
| HIGH | open_spiel/python/algorithms/wolf_phc.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/algorithms/tabular_qlearner.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/pytorch/eva.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/pytorch/policy_gradient.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/jax/policy_gradient.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/pytorch/nfsp.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/jax/nfsp.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/jax/dqn.py | 0 | returns the action to be taken and updates the q-network if needed. args: time_step: an instance of rl_environment.times | STRING |
| HIGH | open_spiel/python/algorithms/cfr_br.py | 0 | performs a single step of policy evaluation and policy improvement. | STRING |
| HIGH | open_spiel/python/algorithms/cfr.py | 0 | performs a single step of policy evaluation and policy improvement. | STRING |
| HIGH | open_spiel/python/algorithms/discounted_cfr.py | 0 | performs a single step of policy evaluation and policy improvement. | STRING |
| HIGH | open_spiel/python/algorithms/efr.py | 0 | performs a single step of policy evaluation and policy improvement. | STRING |
| HIGH | …l/python/algorithms/boltzmann_tabular_qlearner_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/algorithms/tabular_qlearner_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | …en_spiel/python/examples/rrps_poprl/impala_jax_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/pytorch/dqn_pytorch_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/pytorch/ppo_pytorch_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/pytorch/boltzmann_dqn_pytorch_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/jax/dqn_jax_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | open_spiel/python/jax/boltzmann_dqn_jax_test.py | 0 | efg 2 r "simple single-agent problem" { "player 1" } "" p "root" 1 1 "root" { "l" "r" } 0 t "l" 1 "outcome l" { -1.0 } t | STRING |
| HIGH | …python/algorithms/adidas_utils/solvers/symmetric/pg.py | 0 | regret matching does not minimize any exploitability so return nan. args: params: tuple of params (dist,) payoff_matrice | STRING |
| HIGH | …hon/algorithms/adidas_utils/solvers/nonsymmetric/pg.py | 0 | regret matching does not minimize any exploitability so return nan. args: params: tuple of params (dist,) payoff_matrice | STRING |
| HIGH | …/algorithms/adidas_utils/solvers/symmetric/regmatch.py | 0 | regret matching does not minimize any exploitability so return nan. args: params: tuple of params (dist,) payoff_matrice | STRING |
| HIGH | …gorithms/adidas_utils/solvers/symmetric/adam_anneal.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/ate.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …on/algorithms/adidas_utils/solvers/nonsymmetric/ate.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …thms/adidas_utils/solvers/nonsymmetric/ate_regmatch.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …gorithms/adidas_utils/solvers/nonsymmetric/ate_poly.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …lgorithms/adidas_utils/solvers/symmetric/qre_anneal.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …lgorithms/adidas_utils/solvers/symmetric/ate_anneal.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …rithms/adidas_utils/solvers/nonsymmetric/ate_anneal.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …hms/adidas_utils/solvers/symmetric/qre_anneal_noaux.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/qre.py | 0 | compute and return gradients (and exploitabilities) for all parameters. args: params: tuple of params (dist, y), see qre | STRING |
| HIGH | …gorithms/adidas_utils/solvers/symmetric/adam_anneal.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …lgorithms/adidas_utils/solvers/symmetric/qre_anneal.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …hms/adidas_utils/solvers/symmetric/qre_anneal_noaux.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/qre.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/ate.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …lgorithms/adidas_utils/solvers/symmetric/ate_anneal.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …on/algorithms/adidas_utils/solvers/nonsymmetric/ate.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …rithms/adidas_utils/solvers/nonsymmetric/ate_anneal.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …gorithms/adidas_utils/solvers/nonsymmetric/ate_poly.py | 0 | compute and return tsallis entropy regularized exploitability. args: params: tuple of params (dist, y), see ate.gradient | STRING |
| HIGH | …gorithms/adidas_utils/solvers/symmetric/adam_anneal.py | 0 | computes exploitablity gradient and aux variable gradients. args: dist: 1-d np.array, current estimate of nash distribut | STRING |
| HIGH | …lgorithms/adidas_utils/solvers/symmetric/qre_anneal.py | 0 | computes exploitablity gradient and aux variable gradients. args: dist: 1-d np.array, current estimate of nash distribut | STRING |
| HIGH | …hms/adidas_utils/solvers/symmetric/qre_anneal_noaux.py | 0 | computes exploitablity gradient and aux variable gradients. args: dist: 1-d np.array, current estimate of nash distribut | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/qre.py | 0 | computes exploitablity gradient and aux variable gradients. args: dist: 1-d np.array, current estimate of nash distribut | STRING |
| HIGH | …gorithms/adidas_utils/solvers/symmetric/adam_anneal.py | 0 | computes exploitablity gradient. assumption: eta_k = 1 for all k args: dist: 1-d np.array, current estimate of nash dist | STRING |
| HIGH | …thon/algorithms/adidas_utils/solvers/symmetric/adam.py | 0 | computes exploitablity gradient. assumption: eta_k = 1 for all k args: dist: 1-d np.array, current estimate of nash dist | STRING |
| HIGH | …ython/algorithms/adidas_utils/solvers/symmetric/sgd.py | 0 | computes exploitablity gradient. assumption: eta_k = 1 for all k args: dist: 1-d np.array, current estimate of nash dist | STRING |
| 283 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | open_spiel/bots/xinxin/xinxin_bot_test.py | 34 | def test_basic_xinxin_selfplay(self): | CODE |
| LOW | open_spiel/python/policy.py | 53 | def joint_action_probabilities_aux(state, policy): | CODE |
| LOW | open_spiel/python/policy.py | 76 | def joint_action_probabilities(state, policy): | CODE |
| LOW | open_spiel/python/policy.py | 473 | def get_tabular_policy_states(game): | CODE |
| LOW | open_spiel/python/policy.py | 495 | def tabular_policy_from_callable(game, callable_policy, players=None): | CODE |
| LOW | open_spiel/python/policy.py | 522 | def pyspiel_policy_to_python_policy(game, pyspiel_tabular_policy, players=None): | CODE |
| LOW | open_spiel/python/policy.py | 550 | def python_policy_to_pyspiel_policy(python_tabular_policy): | CODE |
| LOW | open_spiel/python/policy.py | 565 | def python_policies_to_pyspiel_policies(policies): | CODE |
| LOW | open_spiel/python/egt/dynamics_test.py | 28 | def _sum_j_x_j_ln_x_j_over_x_i(x): | CODE |
| LOW | open_spiel/python/egt/dynamics_test.py | 50 | def test__sum_j_x_j_ln_x_j_over_x_i(self): | CODE |
| LOW | open_spiel/python/egt/dynamics_test.py | 82 | def test_rd_rps_pure_fixed_points(self): | CODE |
| LOW⚡ | open_spiel/python/egt/dynamics_test.py | 94 | def test_dynamics_rps_mixed_fixed_point(self, func): | CODE |
| LOW⚡ | open_spiel/python/egt/dynamics_test.py | 101 | def test_multi_population_rps(self): | CODE |
| LOW⚡ | open_spiel/python/egt/dynamics_test.py | 109 | def test_multi_population_three_populations(self): | CODE |
| LOW⚡ | open_spiel/python/egt/dynamics_test.py | 116 | def test_multi_population_four_populations(self): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 86 | def test_distribution_equivalent_implementation(self, num_items, num_slots): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 95 | def test_sort_rows_lexicographically(self): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 136 | def test_get_valid_next_profiles(self): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 151 | def test_constant_sum_checker(self): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 162 | def test_game_payoffs_array_rps(self): | CODE |
| LOW | open_spiel/python/egt/utils_test.py | 171 | def test_game_payoffs_array_pd(self): | CODE |
| LOW | open_spiel/python/egt/alpharank.py | 256 | def _get_singlepop_transition_matrix(payoff_table, | CODE |
| LOW | open_spiel/python/egt/alpharank.py | 327 | def _get_multipop_transition_matrix(payoff_tables, | CODE |
| LOW | open_spiel/python/egt/alpharank.py | 692 | def compute_and_report_alpharank(payoff_tables, | CODE |
| LOW | open_spiel/python/egt/alpharank_visualizer.py | 314 | def generate_sorted_masses_strats(pi_list, curr_alpha_idx, strats_to_go): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table.py | 177 | def from_heuristic_payoff_table(hpt): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table.py | 195 | def _compute_win_probability_from_elo(rating_1, rating_2): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table.py | 483 | def get_distribution_from_profile(self, strat_profile): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table.py | 502 | def _multinomial_coefficients(distributions): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table_test.py | 29 | def test__multinomial_coefficients(self): | CODE |
| LOW | open_spiel/python/egt/heuristic_payoff_table_test.py | 79 | def test_from_heuristic_payoff_table(self): | CODE |
| LOW | open_spiel/python/egt/alpharank_test.py | 33 | def test_stationary_distribution(self): | CODE |
| LOW | open_spiel/python/egt/alpharank_test.py | 63 | def test_constant_sum_transition_matrix(self): | CODE |
| LOW | open_spiel/python/egt/utils.py | 146 | def sort_rows_lexicographically(array): | CODE |
| LOW | open_spiel/python/egt/utils.py | 185 | def get_num_strats_per_population(payoff_tables, payoffs_are_hpt_format): | CODE |
| LOW | open_spiel/python/egt/utils.py | 268 | def get_strat_profile_from_id(num_strats_per_population, profile_id): | CODE |
| LOW | open_spiel/python/egt/utils.py | 294 | def get_label_from_strat_profile(num_populations, strat_profile, strat_labels): | CODE |
| LOW | open_spiel/python/egt/utils.py | 321 | def get_id_from_strat_profile(num_strats_per_population, strat_profile): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 30 | def test_complete_session_east(self): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 92 | def test_complete_session_west(self): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 151 | def test_invalid_fixed_message(self): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 168 | def test_invalid_variable_message(self): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 189 | def test_string_to_action_to_string_roundtrip(self): | CODE |
| LOW | …ython/bots/bluechip_bridge_uncontested_bidding_test.py | 197 | def test_action_to_string_to_action_roundtrip(self): | CODE |
| LOW | open_spiel/python/environments/catch_test.py | 24 | def _select_random_legal_action(time_step): | CODE |
| LOW | open_spiel/python/environments/cliff_walking_test.py | 23 | def _select_random_legal_action(time_step): | CODE |
| LOW | open_spiel/python/voting/base_test.py | 26 | def test_basic_preference_profile(self): | CODE |
| LOW | open_spiel/python/voting/base_test.py | 45 | def test_basic_preference_profile_weighted(self): | CODE |
| LOW | open_spiel/python/voting/base_test.py | 62 | def test_preference_profile_incremental_group(self): | CODE |
| LOW | open_spiel/python/voting/base_test.py | 98 | def test_pref_margin_matrices_strong_condorcet(self): | CODE |
| LOW | open_spiel/python/voting/elo.py | 23 | def compute_ratings_from_preference_profile( | CODE |
| LOW | open_spiel/python/voting/maximal_lotteries_test.py | 31 | def test_maximal_lotteries_basic_run(self): | CODE |
| LOW | open_spiel/python/voting/maximal_lotteries_test.py | 45 | def test_maximal_lotteries_basic_iterative(self): | CODE |
| LOW | open_spiel/python/voting/maximal_lotteries_test.py | 67 | def test_maximal_lotteries_cycle(self): | CODE |
| LOW | open_spiel/python/voting/maximal_lotteries_test.py | 79 | def test_maximal_lotteries_iterative_cycle(self): | CODE |
| LOW | open_spiel/python/voting/stv.py | 82 | def _initial_scores_for_round( | CODE |
| LOW | open_spiel/python/voting/stv_test.py | 32 | def test_ranked_pairs_wikipedia_example(self): | CODE |
| LOW | open_spiel/python/voting/schulze_test.py | 28 | def test_shulze_wikipedia_example(self): | CODE |
| LOW | open_spiel/python/voting/elo_test.py | 47 | def test_meeple_pentathlon_with_integer_alternatives(self): | CODE |
| LOW | open_spiel/python/voting/ranked_pairs_test.py | 96 | def test_ranked_pairs_simple_cycle(self): | CODE |
| 728 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | open_spiel/python/algorithms/sequence_form_lp_test.py | 119 | # │ ├── P1: Stop ──────► Payoff (0, 0) | COMMENT |
| MEDIUM⚡ | open_spiel/python/algorithms/sequence_form_lp_test.py | 120 | # │ └── P1: Play ──────► P2 infoset (cannot see card) | COMMENT |
| MEDIUM⚡ | open_spiel/python/algorithms/sequence_form_lp_test.py | 124 | # ├── P1: Stop ──────► Payoff (0, 0) | COMMENT |
| MEDIUM⚡ | open_spiel/python/algorithms/sequence_form_lp_test.py | 125 | # └── P1: Play ──────► (same P2 infoset) | COMMENT |
| MEDIUM | open_spiel/python/examples/deep_cfr_pytorch.py | 32 | # --------------------------------------- | COMMENT |
| MEDIUM | open_spiel/python/examples/deep_cfr_jax.py | 39 | # --------------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/python/games/pokerkit_wrapper.py | 1473 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | open_spiel/python/games/pokerkit_wrapper.py | 1474 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | open_spiel/python/games/pokerkit_wrapper.py | 1475 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | open_spiel/python/games/pokerkit_wrapper.py | 265 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM | open_spiel/python/games/pokerkit_wrapper.py | 2077 | # ------------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 31 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 38 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 42 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 45 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 64 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 71 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 75 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 78 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 137 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 144 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 148 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 151 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 171 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 178 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 182 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 185 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 209 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 216 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 221 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 224 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 244 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 251 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 256 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 259 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 279 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 286 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 291 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 294 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 314 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 321 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 326 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 329 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 457 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 464 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 469 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 472 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 492 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 499 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 504 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 507 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 651 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 658 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 663 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 666 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 686 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 693 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 698 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 701 | # --------------------------------- | COMMENT |
| MEDIUM⚡ | open_spiel/integration_tests/playthroughs/cribbage.txt | 897 | # --------------------------------- | COMMENT |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | open_spiel/python/rl_environment.py | 338 | Updates the environment according to `actions` and returns a `TimeStep`. If the environment returned a `TimeStep` w | STRING |
| HIGH | open_spiel/python/egt/heuristic_payoff_table.py | 34 | Builds a heuristic payoff table from average win probabilities. Args: df: a Pandas dataframe of match results. Mu | STRING |
| HIGH | open_spiel/python/egt/heuristic_payoff_table.py | 214 | Computes the Elo win probability payoff matrix `X` from the Elo scores. Args: elo_ratings: The elo scores vector | STRING |
| HIGH | open_spiel/python/egt/heuristic_payoff_table.py | 281 | The expected payoff of each pure strategy against the mixed strategy. We define the expected payoff of a strategy A | STRING |
| HIGH | open_spiel/python/egt/utils.py | 223 | Returns strategy labels corresponding to a payoff_table. Namely, for games where strategies have no human-understanda | STRING |
| HIGH | open_spiel/python/algorithms/generate_playthrough.py | 466 | Returns the playthrough parameters from a playthrough record. Args: lines: The playthrough as a list of lines. | STRING |
| HIGH | open_spiel/python/algorithms/exploitability.py | 121 | Returns the exploitability of the policy in the game. This is implemented only for 2 players constant-sum games, and | STRING |
| HIGH | open_spiel/python/algorithms/exploitability.py | 165 | Returns a measure of closeness to Nash for a policy in the game. See https://arxiv.org/pdf/1711.00832.pdf for the Nas | STRING |
| HIGH | …iel/python/algorithms/psro_v2/abstract_meta_trainer.py | 31 | Process a callable or a string representing a callable. Args: string_or_callable: Either a string or a callable | STRING |
| HIGH | open_spiel/python/algorithms/psro_v2/rl_oracle.py | 148 | Randomly samples a set of policies to run during the next episode. Note : sampling is biased to select players & st | STRING |
| HIGH | open_spiel/python/algorithms/psro_v2/rl_oracle.py | 214 | Generates new policies to be trained into best responses. Args: training_parameters: list of list of training | STRING |
| HIGH | open_spiel/python/algorithms/psro_v2/rl_oracle.py | 245 | Call method for oracle, returns best responses against a set of policies. Args: game: The game on which the o | STRING |
| HIGH | …piel/python/algorithms/psro_v2/best_response_oracle.py | 97 | Call method for oracle, returns best responses for training_parameters. Args: game: The game on which the opt | STRING |
| HIGH | open_spiel/python/algorithms/alpha_zero/utils.py | 33 | Allows to choose an implementation API. Args: api_version (str): either of {AVIALABLE_APIS} Returns: model | STRING |
| HIGH | …en_spiel/python/algorithms/alpha_zero/replay_buffer.py | 100 | Returns `num_samples` uniformly sampled from the buffer. Args: rng: `chex.PRNGKey`, a random state state: `Re | STRING |
| HIGH | open_spiel/python/mfg/tabular_distribution.py | 37 | Returns the probability of the distribution on the state string given. Args: state_str: A string. defau | STRING |
| HIGH | open_spiel/python/mfg/algorithms/bandit_regret.py | 135 | Quick implementation of the power method. Args: w_nus: Returns: Highest eigenvalue of the system. Raise | STRING |
| HIGH | open_spiel/python/utils/reservoir_buffer.py | 54 | Returns `num_samples` uniformly sampled from the buffer. Args: num_samples: `int`, number of samples to draw. | STRING |
| HIGH | open_spiel/python/utils/replay_buffer.py | 50 | Returns `num_samples` uniformly sampled from the buffer. Args: num_samples: `int`, number of samples to draw. | STRING |
| HIGH | …el/python/examples/mcp_tool_server/open_spiel_tools.py | 80 | Get detailed information about a specific OpenSpiel game. Args: game_name: The short name of the game (e.g., | STRING |
| HIGH | open_spiel/python/pytorch/deep_cfr.py | 185 | Returns `num_samples` uniformly sampled from the buffer. Args: num_samples: `int`, number of samples to draw. | STRING |
| HIGH | open_spiel/python/pytorch/nfsp.py | 115 | Returns `num_samples` uniformly sampled from the buffer. Args: num_samples: `int`, number of samples to draw. | STRING |
| HIGH | open_spiel/python/pytorch/dqn.py | 97 | Returns `num_samples` uniformly sampled from the buffer. Args: num_samples: `int`, number of samples to draw. | STRING |
| HIGH | open_spiel/python/pytorch/rcfr.py | 169 | Returns a behavioral policy at `state` from sequence weights. Args: sequence_weights: An array of non-negativ | STRING |
| HIGH | open_spiel/python/pytorch/rcfr.py | 240 | Returns counterfactual regrets and reach weights as a tuple. Args: regret_player: The player for whom counter | STRING |
| HIGH | open_spiel/python/pytorch/rcfr.py | 265 | Compute `state`'s counterfactual regrets and reach weights. Args: state: An OpenSpiel `State`. re | STRING |
| HIGH | open_spiel/python/jax/deep_cfr.py | 153 | Returns `num_samples` uniformly sampled from the buffer. Args: rng: `chex.PRNGKey`, a random state stat | STRING |
| HIGH | open_spiel/python/jax/nfsp.py | 137 | Returns `num_samples` uniformly sampled from the buffer. Args: rng: `chex.PRNGKey`, a random state stat | STRING |
| HIGH | open_spiel/python/jax/rcfr.py | 179 | Returns a behavioral policy at `state` from sequence weights. Args: sequence_weights: An array of non-negativ | STRING |
| HIGH | open_spiel/python/jax/rcfr.py | 250 | Returns counterfactual regrets and reach weights as a tuple. Args: regret_player: The player for whom counter | STRING |
| HIGH | open_spiel/python/jax/rcfr.py | 279 | Compute `state`'s counterfactual regrets and reach weights. Args: state: An OpenSpiel `State`. re | STRING |
| HIGH | open_spiel/python/games/chat_games/chat_game_base.py | 1204 | Generates a list of distinct prompts from an initial list. Args: key: str, (descriptive) name of prompt type | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | open_spiel/python/policy.py | 250 | CODE | |
| LOW | open_spiel/python/egt/alpharank.py | 256 | CODE | |
| LOW | open_spiel/python/egt/alpharank.py | 327 | CODE | |
| LOW | open_spiel/python/egt/alpharank.py | 576 | CODE | |
| LOW | open_spiel/python/egt/alpharank_visualizer.py | 356 | CODE | |
| LOW | open_spiel/python/egt/alpharank_visualizer.py | 180 | CODE | |
| LOW | open_spiel/python/egt/visualization.py | 461 | CODE | |
| LOW | open_spiel/python/egt/visualization.py | 495 | CODE | |
| LOW | open_spiel/python/bots/bluechip_bridge.py | 116 | CODE | |
| LOW | open_spiel/python/bots/bluechip_bridge.py | 225 | CODE | |
| LOW | open_spiel/python/bots/bluechip_bridge.py | 323 | CODE | |
| LOW | open_spiel/python/voting/elo.py | 23 | CODE | |
| LOW | open_spiel/python/voting/stv.py | 111 | CODE | |
| LOW | open_spiel/python/voting/ranked_pairs.py | 57 | CODE | |
| LOW | open_spiel/python/voting/schulze.py | 33 | CODE | |
| LOW | open_spiel/python/voting/preflib_util.py | 21 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 50 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 81 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 122 | CODE | |
| LOW | open_spiel/python/algorithms/policy_aggregator_joint.py | 173 | CODE | |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 187 | CODE | |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 204 | CODE | |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 284 | CODE | |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 302 | CODE | |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 351 | CODE | |
| LOW | open_spiel/python/algorithms/minimax.py | 152 | CODE | |
| LOW | open_spiel/python/algorithms/best_response_test.py | 82 | CODE | |
| LOW | open_spiel/python/algorithms/jpsro.py | 148 | CODE | |
| LOW | open_spiel/python/algorithms/jpsro.py | 319 | CODE | |
| LOW | open_spiel/python/algorithms/jpsro.py | 1048 | CODE | |
| LOW | open_spiel/python/algorithms/jpsro.py | 1184 | CODE | |
| LOW | open_spiel/python/algorithms/evaluate_bots.py | 20 | CODE | |
| LOW | open_spiel/python/algorithms/policy_aggregator.py | 181 | CODE | |
| LOW | open_spiel/python/algorithms/fictitious_play.py | 196 | CODE | |
| LOW | open_spiel/python/algorithms/noisy_policy_test.py | 59 | CODE | |
| LOW | open_spiel/python/algorithms/value_iteration.py | 73 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 102 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 211 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 465 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 530 | CODE | |
| LOW | open_spiel/python/algorithms/ismcts.py | 161 | CODE | |
| LOW | open_spiel/python/algorithms/async_mcts.py | 664 | CODE | |
| LOW | open_spiel/python/algorithms/discounted_cfr.py | 190 | CODE | |
| LOW | open_spiel/python/algorithms/mmd_dilated.py | 232 | CODE | |
| LOW | open_spiel/python/algorithms/mcts.py | 370 | CODE | |
| LOW | open_spiel/python/algorithms/efr.py | 937 | CODE | |
| LOW | open_spiel/python/algorithms/efr.py | 1129 | CODE | |
| LOW | open_spiel/python/algorithms/efr.py | 1151 | CODE | |
| LOW | open_spiel/python/algorithms/efr.py | 1220 | CODE | |
| LOW | open_spiel/python/algorithms/efr.py | 442 | CODE | |
| LOW | …en_spiel/python/algorithms/response_graph_ucb_utils.py | 66 | CODE | |
| LOW | …en_spiel/python/algorithms/response_graph_ucb_utils.py | 200 | CODE | |
| LOW | open_spiel/python/algorithms/matrix_nash.py | 47 | CODE | |
| LOW | open_spiel/python/algorithms/matrix_nash.py | 106 | CODE | |
| LOW | open_spiel/python/algorithms/lp_solver.py | 520 | CODE | |
| LOW | …l/python/algorithms/psro_v2/strategy_selectors_test.py | 144 | CODE | |
| LOW | open_spiel/python/algorithms/psro_v2/psro_v2.py | 370 | CODE | |
| LOW | …ithms/adidas_utils/solvers/nonsymmetric/adam_anneal.py | 260 | CODE | |
| LOW | …on/algorithms/adidas_utils/solvers/nonsymmetric/sgd.py | 94 | CODE | |
| LOW | …n/algorithms/adidas_utils/solvers/nonsymmetric/adam.py | 157 | CODE | |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __init__.py | 21 | CODE | |
| LOW | open_spiel/python/voting/examples/atari.py | 19 | CODE | |
| LOW | open_spiel/python/voting/examples/atari.py | 23 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 19 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 21 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 24 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 26 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 31 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 32 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 34 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 36 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 38 | CODE | |
| LOW | open_spiel/python/voting/examples/chatbot_arena.py | 41 | CODE | |
| LOW | open_spiel/python/voting/examples/example.py | 19 | CODE | |
| LOW | open_spiel/python/voting/examples/example.py | 21 | CODE | |
| LOW | open_spiel/python/voting/examples/example.py | 22 | CODE | |
| LOW | …en_spiel/python/algorithms/expected_game_score_test.py | 20 | CODE | |
| LOW | open_spiel/python/algorithms/best_response_test.py | 22 | CODE | |
| LOW | open_spiel/python/algorithms/noisy_policy_test.py | 20 | CODE | |
| LOW | open_spiel/python/algorithms/get_all_states.py | 23 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 32 | CODE | |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 33 | CODE | |
| LOW | open_spiel/python/algorithms/best_response.py | 28 | CODE | |
| LOW | open_spiel/python/algorithms/async_mcts.py | 30 | CODE | |
| LOW | …python/algorithms/adidas_utils/solvers/symmetric/pg.py | 17 | CODE | |
| LOW | …gorithms/adidas_utils/solvers/symmetric/adam_anneal.py | 17 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/ate.py | 17 | CODE | |
| LOW | …/algorithms/adidas_utils/solvers/symmetric/regmatch.py | 17 | CODE | |
| LOW | …lgorithms/adidas_utils/solvers/symmetric/qre_anneal.py | 17 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/sgd.py | 17 | CODE | |
| LOW | …hms/adidas_utils/solvers/symmetric/qre_anneal_noaux.py | 17 | CODE | |
| LOW | …thon/algorithms/adidas_utils/solvers/symmetric/adam.py | 17 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/ped.py | 17 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/qre.py | 17 | CODE | |
| LOW | …lgorithms/adidas_utils/solvers/symmetric/ate_anneal.py | 17 | CODE | |
| LOW | …hon/algorithms/adidas_utils/solvers/nonsymmetric/pg.py | 17 | CODE | |
| LOW | …ithms/adidas_utils/solvers/nonsymmetric/adam_anneal.py | 17 | CODE | |
| LOW | …on/algorithms/adidas_utils/solvers/nonsymmetric/ate.py | 17 | CODE | |
| LOW | …thms/adidas_utils/solvers/nonsymmetric/ate_regmatch.py | 17 | CODE | |
| LOW | …gorithms/adidas_utils/solvers/nonsymmetric/regmatch.py | 17 | CODE | |
| LOW | …rithms/adidas_utils/solvers/nonsymmetric/qre_anneal.py | 17 | CODE | |
| LOW | …on/algorithms/adidas_utils/solvers/nonsymmetric/sgd.py | 17 | CODE | |
| LOW | …n/algorithms/adidas_utils/solvers/nonsymmetric/adam.py | 17 | CODE | |
| LOW | …on/algorithms/adidas_utils/solvers/nonsymmetric/ped.py | 17 | CODE | |
| LOW | …on/algorithms/adidas_utils/solvers/nonsymmetric/qre.py | 17 | CODE | |
| LOW | …rithms/adidas_utils/solvers/nonsymmetric/ate_anneal.py | 17 | CODE | |
| LOW | …gorithms/adidas_utils/solvers/nonsymmetric/ate_poly.py | 18 | CODE | |
| LOW | …en_spiel/python/algorithms/adidas_utils/games/gamut.py | 21 | CODE | |
| LOW | …n_spiel/python/algorithms/adidas_utils/helpers/misc.py | 17 | CODE | |
| LOW | …piel/python/algorithms/adidas_utils/helpers/simplex.py | 17 | CODE | |
| LOW | …n/algorithms/adidas_utils/helpers/symmetric/updates.py | 17 | CODE | |
| LOW | …ithms/adidas_utils/helpers/symmetric/exploitability.py | 17 | CODE | |
| LOW | …gorithms/adidas_utils/helpers/symmetric/game_runner.py | 18 | CODE | |
| LOW | …lgorithms/adidas_utils/helpers/nonsymmetric/updates.py | 17 | CODE | |
| LOW | …ms/adidas_utils/helpers/nonsymmetric/exploitability.py | 17 | CODE | |
| LOW | …ithms/adidas_utils/helpers/nonsymmetric/game_runner.py | 20 | CODE | |
| LOW | open_spiel/python/tests/games_sim_test.py | 25 | CODE | |
| LOW | open_spiel/python/tests/games_sim_test.py | 27 | CODE | |
| LOW | open_spiel/python/tests/policy_test.py | 19 | CODE | |
| LOW | open_spiel/python/tests/pyspiel_test.py | 22 | CODE | |
| 67 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | open_spiel/python/environments/iterated_matrix_game.py | 15 | """This module implements a generic environment for iterated normal form games. | STRING |
| MEDIUM | open_spiel/python/voting/base_test.py | 27 | # Create a preference profile from preferences: | COMMENT |
| MEDIUM | open_spiel/python/voting/base_test.py | 46 | # Create a weighted preference profile from preferences: | COMMENT |
| MEDIUM | open_spiel/python/voting/base_test.py | 63 | # Create a weighted preference profile from preferences: | COMMENT |
| MEDIUM | open_spiel/python/voting/ranked_pairs.py | 176 | # Create the top-ranked pair. This needs to be in a conditional block, | COMMENT |
| MEDIUM | open_spiel/python/voting/schulze.py | 64 | # Define the scores as the sum of preferences for everything it beats in | COMMENT |
| MEDIUM | open_spiel/python/voting/examples/example.py | 29 | # Create a preference profile that represents the following votes: | COMMENT |
| MEDIUM | open_spiel/python/algorithms/mcts_agent_test.py | 29 | # Create the MCTS bot. Both agents can share the same bot in this case since | COMMENT |
| MEDIUM | open_spiel/python/algorithms/ismcts_agent_test.py | 35 | # Create the MCTS bot. Both agents can share the same bot in this case since | COMMENT |
| MEDIUM | open_spiel/python/tests/pyspiel_test.py | 484 | # Create a reference state with one move applied | COMMENT |
| MEDIUM | …ython/mfg/algorithms/munchausen_deep_mirror_descent.py | 120 | # Create the replay buffer. | COMMENT |
| MEDIUM | …ython/mfg/algorithms/munchausen_deep_mirror_descent.py | 126 | # Create the Q-network. | COMMENT |
| MEDIUM | …ython/mfg/algorithms/munchausen_deep_mirror_descent.py | 150 | # Create the loss function and the optimizer. | COMMENT |
| MEDIUM | …algorithms/pytorch/mfg_proximal_policy_optimization.py | 282 | """This function is used to log the results to tensor board.""" | STRING |
| MEDIUM | …n_spiel/python/mfg/examples/mfg_munchausen_domd_jax.py | 135 | # Create the environments with uniform initial policy. | COMMENT |
| MEDIUM | …n_spiel/python/mfg/examples/mfg_munchausen_domd_jax.py | 153 | # Create the agents. | COMMENT |
| MEDIUM | …g/examples/mfg_proximal_policy_optimization_pytorch.py | 171 | # Create the game instance | COMMENT |
| MEDIUM | …piel/python/mfg/examples/mfg_average_network_fp_jax.py | 134 | # Create the environments with uniform initial policy. | COMMENT |
| MEDIUM | open_spiel/python/mfg/games/normal_form_game.py | 212 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/mfg/games/predator_prey.py | 482 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/mfg/games/periodic_aversion.py | 307 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/mfg/games/crowd_modelling.py | 210 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/mfg/games/factory.py | 124 | # Create a copy since we modify it below removing the network key. | COMMENT |
| MEDIUM | open_spiel/python/mfg/games/linear_quadratic.py | 282 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/mfg/games/crowd_avoidance.py | 502 | """This function is central and specific to the logic of the MFG. | STRING |
| MEDIUM | open_spiel/python/utils/metrics_test.py | 30 | # Create the writer. | COMMENT |
| MEDIUM | open_spiel/python/examples/example.py | 42 | # Create the initial state | COMMENT |
| MEDIUM | open_spiel/python/pytorch/dqn.py | 290 | # Create the Q-network instances | COMMENT |
| MEDIUM | open_spiel/python/jax/dqn.py | 314 | # Create the Q-network instances | COMMENT |
| MEDIUM | open_spiel/scripts/install.sh | 38 | # This function is only run on Github Actions! | COMMENT |
| MEDIUM | open_spiel/scripts/install.sh | 79 | # Create the cache directory. | COMMENT |
| MEDIUM | open_spiel/scripts/global_variables.sh | 17 | # This file contains the global variables that control conditional dependencies. | COMMENT |
| MEDIUM | open_spiel/scripts/test_wheel.sh | 17 | # This file is called by the wheels workflow .github/workflows/wheels.yml. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | open_spiel/python/egt/alpharank.py | 433 | CODE | |
| LOW | open_spiel/python/egt/alpharank.py | 576 | CODE | |
| LOW | open_spiel/python/algorithms/jpsro.py | 1420 | CODE | |
| LOW | open_spiel/python/algorithms/async_mcts.py | 365 | CODE | |
| LOW | open_spiel/python/algorithms/psro_v2/psro_v2.py | 69 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/ate.py | 30 | CODE | |
| LOW | …lgorithms/adidas_utils/solvers/symmetric/qre_anneal.py | 29 | CODE | |
| LOW | …hms/adidas_utils/solvers/symmetric/qre_anneal_noaux.py | 29 | CODE | |
| LOW | …ython/algorithms/adidas_utils/solvers/symmetric/qre.py | 29 | CODE | |
| LOW | …lgorithms/adidas_utils/solvers/symmetric/ate_anneal.py | 30 | CODE | |
| LOW | …rithms/adidas_utils/solvers/nonsymmetric/qre_anneal.py | 29 | CODE | |
| LOW | …rithms/adidas_utils/solvers/nonsymmetric/ate_anneal.py | 30 | CODE | |
| LOW | open_spiel/python/mfg/algorithms/bandit_regret.py | 190 | CODE | |
| LOW | open_spiel/python/mfg/algorithms/bandit_regret.py | 264 | CODE | |
| LOW | open_spiel/python/mfg/algorithms/bandit_regret.py | 516 | CODE | |
| LOW | …ython/mfg/algorithms/munchausen_deep_mirror_descent.py | 55 | CODE | |
| LOW | …thon/mfg/algorithms/average_network_fictitious_play.py | 56 | CODE | |
| LOW | open_spiel/python/mfg/algorithms/regret/hedge.py | 28 | CODE | |
| LOW | …spiel/python/mfg/algorithms/regret/regret_minimizer.py | 48 | CODE | |
| LOW | …_spiel/python/mfg/algorithms/regret/regret_matching.py | 62 | CODE | |
| LOW | …iel/python/mfg/algorithms/regret/nash_random_search.py | 54 | CODE | |
| LOW | …thon/mfg/algorithms/regret/nash_evolutionary_search.py | 56 | CODE | |
| LOW | …iel/python/mfg/algorithms/regret/polynomial_weights.py | 37 | CODE | |
| LOW | open_spiel/python/visualizations/treeviz.py | 130 | CODE | |
| LOW | open_spiel/python/examples/rrps_poprl/impala.py | 190 | CODE | |
| LOW | open_spiel/python/pytorch/deep_cfr.py | 230 | CODE | |
| LOW | open_spiel/python/pytorch/eva.py | 81 | CODE | |
| LOW | open_spiel/python/pytorch/policy_gradient.py | 123 | CODE | |
| LOW | open_spiel/python/pytorch/nfsp.py | 143 | CODE | |
| LOW | open_spiel/python/pytorch/dqn.py | 215 | CODE | |
| LOW | open_spiel/python/pytorch/ppo.py | 168 | CODE | |
| LOW | open_spiel/python/jax/opponent_shaping.py | 605 | CODE | |
| LOW | open_spiel/python/jax/deep_cfr.py | 233 | CODE | |
| LOW | open_spiel/python/jax/policy_gradient.py | 186 | CODE | |
| LOW | open_spiel/python/jax/nfsp.py | 164 | CODE | |
| LOW | open_spiel/python/jax/dqn.py | 237 | CODE | |
| LOW | open_spiel/python/games/chat_game.py | 90 | CODE | |
| LOW | open_spiel/python/games/chat_games/chat_game_base.py | 880 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | open_spiel/python/voting/base.py | 166 | # Check if any alternatives are registered for this profile. If not, then | COMMENT |
| LOW | open_spiel/python/algorithms/response_graph_ucb.py | 424 | # Add nodes to queue | COMMENT |
| LOW | open_spiel/python/algorithms/mmd_dilated_test.py | 96 | # Check if a QRE solution is a fixed point of MMD | COMMENT |
| LOW | open_spiel/python/examples/dqn_lewis_signaling.py | 247 | # Loop over data dimensions and create text annotations. | COMMENT |
| LOW | open_spiel/python/examples/lewis_signaling_qlearner.py | 266 | # Loop over data dimensions and create text annotations. | COMMENT |
| LOW | open_spiel/python/examples/rrps_poprl/poprl_main.py | 127 | # Set this to something specific for testing. List of IDs | COMMENT |
| LOW | open_spiel/python/examples/rrps_poprl/poprl_main.py | 128 | # Set back to None to use full population. | COMMENT |
| LOW | open_spiel/python/games/team_dominoes.py | 181 | # Check if all hands are of _HAND_SIZE | COMMENT |
| LOW | open_spiel/python/games/team_dominoes.py | 209 | # Check if a team has played all their tiles. | COMMENT |
| LOW | open_spiel/scripts/install.sh | 328 | # Set brew to use the specific python version | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | open_spiel/python/games/dynamic_routing_utils.py | 31 | # as requested by Open Spiel. | COMMENT |
| HIGH | …en_spiel/games/dynamic_routing/dynamic_routing_utils.h | 37 | // as requested by Open Spiel. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | open_spiel/normal_form_game.h | 30 | // also known as a one-shot game or strategic-form game. Essentially, all | COMMENT |
| MEDIUM | open_spiel/bots/roshambo/roshambo_bot.h | 48 | // results were remarkably robust, and increasing the match length to 10000 | COMMENT |
| LOW | open_spiel/python/games/pokerkit_wrapper.py | 1580 | # easier to just use it rather than checking the relevant values for | COMMENT |
| MEDIUM | open_spiel/python/games/repeated_pokerkit_test.py | 755 | # Definitely excessive, but triple checking this again just to be certain. | COMMENT |
| LOW | open_spiel/scripts/install.sh | 62 | # Instead, just call project-root install.sh file: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | open_spiel/python/egt/alpharank.py | 531 | print('Error: ', value_error, epsilon, min_epsilon) | CODE |
| LOW | open_spiel/python/algorithms/generate_playthrough.py | 555 | except Exception as e: # pylint: disable=broad-except | CODE |
| MEDIUM | open_spiel/python/algorithms/lp_solver.py | 326 | print(f"Something went wrong, as of {e}") | CODE |
| LOW | open_spiel/python/algorithms/alpha_zero/alpha_zero.py | 171 | except Exception as e: | CODE |
| LOW | open_spiel/python/tests/games_sim_test.py | 114 | except Exception: # pylint: disable=broad-except | CODE |
| LOW | open_spiel/python/tests/test_installation.py | 43 | except Exception as e: # pragma: no cover - diagnostic script | CODE |
| MEDIUM | open_spiel/python/tests/games_crossword_test.py | 174 | print(f"Error creating action struct: {e}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | open_spiel/games/oh_hell/oh_hell.h | 37 | // number of tricks they bid. In this implementation, a player scores 1 point | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __init__.py | 23 | __all__ = ["pyspiel"] | CODE |
| LOW | …spiel/python/examples/meta_cfr/sequential_games/cfr.py | 224 | def update_regrets(infostates: List[InfostateNode]) -> None: | CODE |
| LOW | open_spiel/python/pytorch/boltzmann_dqn.py | 107 | def update_prev_q_network(self) -> None: | CODE |
| LOW | open_spiel/python/jax/opponent_shaping.py | 743 | def update_params(self, state: TrainState, player_id: int) -> None: | CODE |
| LOW | open_spiel/python/games/pokerkit_wrapper.py | 1434 | def set_from(self, state, player) -> None: | CODE |
| LOW | open_spiel/python/games/repeated_pokerkit.py | 1144 | def set_from(self, state, player) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | open_spiel/python/egt/heuristic_payoff_table.py | 494 | # Usage: | COMMENT |
| LOW | open_spiel/scripts/argslib.sh | 29 | # Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | open_spiel/python/games/pokerkit_wrapper_test.py | 3072 | # As discussed above, the extra forced check by universal_poker does | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | open_spiel/python/policy.py | 530 | (the other player's policies will be undefined). Default value of `None` | STRING |