code: def get_default_policy_class(
      cls, config: AlgorithmConfig
  ) -> Optional[Type[Policy]]:
      if config["framework"] == "torch":
          from ray.rllib.algorithms.appo.appo_torch_policy import (
              APPOTorchPolicy,
          )
  
          return APPOTorchPolicy
      elif config["framework"] == "tf":
          if config._enable_new_api_stack:
              raise ValueError(
                  "RLlib's RLModule and Learner API is not supported for"
                  " tf1. Use "
                  "framework='tf2' instead."
              )
          from ray.rllib.algorithms.appo.appo_tf_policy import (
              APPOTF1Policy,
          )
  
          return APPOTF1Policy
      else:
          from ray.rllib.algorithms.appo.appo_tf_policy import (
              APPOTF2Policy,
          )
  
          return APPOTF2Policy
  
imports: from typing import Optional, Type
  import logging
  from ray.rllib.algorithms.algorithm_config import AlgorithmConfig, NotProvided
  from ray.rllib.algorithms.impala.impala import Impala, ImpalaConfig
  from ray.rllib.core.rl_module.rl_module import SingleAgentRLModuleSpec
  from ray.rllib.policy.policy import Policy
  from ray.rllib.utils.annotations import override
  from ray.rllib.utils.metrics import LAST_TARGET_UPDATE_TS, NUM_AGENT_STEPS_SAMPLED, NUM_ENV_STEPS_SAMPLED, NUM_TARGET_UPDATES
  from ray.rllib.utils.metrics import ALL_MODULES, LEARNER_STATS_KEY
  from ray.rllib.utils.typing import ResultDict
label_desc: Use image node_id 6 for calling the APPO obj's underlying member method code with example usage: obj.get_default_policy_class(cls, config) and returns: APPOTorchPolicy, APPOTF1Policy, APPOTF2Policy