code: def __init__(self):
      super().__init__()
      # All policies in the league.
      self.main_policies = {"main", "main_0"}
      self.main_exploiters = {"main_exploiter_0", "main_exploiter_1"}
      self.league_exploiters = {
          "league_exploiter_0",
          "league_exploiter_1",
      }
      # Set of currently trainable policies in the league.
      self.trainable_policies = {
          "main",
          "main_exploiter_1",
          "league_exploiter_1",
      }
      # Set of currently non-trainable (frozen) policies in the league.
      self.non_trainable_policies = {
          "main_0",
          "league_exploiter_0",
          "main_exploiter_0",
      }
      # Store the win rates for league overview printouts.
      self.win_rates = {}
  
imports: import argparse
  import os
  import re
  import numpy
  import ray
  from ray import air, tune
  from ray.rllib.algorithms.callbacks import DefaultCallbacks
  from ray.rllib.algorithms.ppo import PPOConfig
  from ray.rllib.env.utils import try_import_pyspiel, try_import_open_spiel
  from ray.rllib.env.wrappers.open_spiel import OpenSpielEnv
  from ray.rllib.examples.policy.random_policy import RandomPolicy
  from ray.rllib.examples.self_play_with_open_spiel import ask_user_for_action
  from ray.rllib.policy.policy import PolicySpec
  from ray.tune import register_env
  from open_spiel.python.rl_environment import Environment
label_desc: Use image node_id 1 to create a new LeagueBasedSelfPlayCallback object from inherited base classes: DefaultCallbacks with example: obj = LeagueBasedSelfPlayCallback()