class_docstr: Defines a configuration class from which an APPO Algorithm can be built.
  
  .. testcode::
  
      from ray.rllib.algorithms.appo import APPOConfig
      config = APPOConfig().training(lr=0.01, grad_clip=30.0, train_batch_size=50)
      config = config.resources(num_gpus=0)
      config = config.rollouts(num_rollout_workers=1)
      config = config.environment("CartPole-v1")
  
      # Build an Algorithm object from the config and run 1 training iteration.
      algo = config.build()
      algo.train()
      del algo
  
  .. testcode::
  
      from ray.rllib.algorithms.appo import APPOConfig
      from ray import air
      from ray import tune
  
      config = APPOConfig()
      # Update the config object.
      config = config.training(lr=tune.grid_search([0.001,]))
      # Set the config object's env.
      config = config.environment(env="CartPole-v1")
      # Use to_dict() to get the old-style python config dict
      # when running with tune.
      tune.Tuner(
          "APPO",
          run_config=air.RunConfig(stop={"training_iteration": 1},
                                   verbose=0),
          param_space=config.to_dict(),
  
      ).fit()
  
  .. testoutput::
      :hide:
  
      ...
code: def get_default_rl_module_spec(self) -> SingleAgentRLModuleSpec:
      if self.framework_str == "torch":
          from ray.rllib.algorithms.appo.torch.appo_torch_rl_module import (
              APPOTorchRLModule as RLModule,
          )
      elif self.framework_str == "tf2":
          from ray.rllib.algorithms.appo.tf.appo_tf_rl_module import (
              APPOTfRLModule as RLModule,
          )
      else:
          raise ValueError(
              f"The framework {self.framework_str} is not supported. "
              "Use either 'torch' or 'tf2'."
          )
  
      from ray.rllib.algorithms.appo.appo_catalog import APPOCatalog
  
      return SingleAgentRLModuleSpec(
          module_class=RLModule, catalog_class=APPOCatalog
      )
  
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 4 for calling the APPOConfig obj's underlying member method code with example usage: obj.get_default_rl_module_spec() and returns: SingleAgentRLModuleSpec