class_docstr: Implementation of a configurable command line tool for pytorch-lightning.
class_docstr_tok: ["Implementation","of","a","configurable","command","line","tool","for","pytorch-lightning","."]
docstr: Receives as input pytorch-lightning classes (or callables which return pytorch-lightning classes), which are
  called / instantiated using a parsed configuration file and / or command line args and then runs trainer.fit.
  Parsing of configuration from environment variables can be enabled by setting ``env_parse=True``. A full
  configuration yaml would be parsed from ``PL_CONFIG`` if set. Individual settings are so parsed from variables
  named for example ``PL_TRAINER__MAX_EPOCHS``.
  
  Example, first implement the ``trainer.py`` tool as::
  
      from mymodels import MyModel
      from pytorch_lightning.utilities.cli import LightningCLI
      LightningCLI(MyModel)
  
  Then in a shell, run the tool with the desired configuration::
  
      $ python trainer.py --print_config > config.yaml
      $ nano config.yaml  # modify the config as desired
      $ python trainer.py --cfg config.yaml
  
  .. warning:: ``LightningCLI`` is in beta and subject to change.
  
  Args:
      model_class: :class:`~pytorch_lightning.core.lightning.LightningModule` class to train on or a callable
          which returns a :class:`~pytorch_lightning.core.lightning.LightningModule` instance when called.
      datamodule_class: An optional :class:`~pytorch_lightning.core.datamodule.LightningDataModule` class or a
          callable which returns a :class:`~pytorch_lightning.core.datamodule.LightningDataModule` instance when
          called.
      save_config_callback: A callback class to save the training config.
      save_config_filename: Filename for the config file.
      save_config_overwrite: Whether to overwrite an existing config file.
      trainer_class: An optional subclass of the :class:`~pytorch_lightning.trainer.trainer.Trainer` class or a
          callable which returns a :class:`~pytorch_lightning.trainer.trainer.Trainer` instance when called.
      trainer_defaults: Set to override Trainer defaults or add persistent callbacks.
      seed_everything_default: Default value for the :func:`~pytorch_lightning.utilities.seed.seed_everything`
          seed argument.
      description: Description of the tool shown when running ``--help``.
      env_prefix: Prefix for environment variables.
      env_parse: Whether environment variable parsing is enabled.
      parser_kwargs: Additional arguments to instantiate LightningArgumentParser.
      subclass_mode_model: Whether model can be any `subclass
          <https://jsonargparse.readthedocs.io/en/stable/#class-type-and-sub-classes>`_
          of the given class.
      subclass_mode_data: Whether datamodule can be any `subclass
          <https://jsonargparse.readthedocs.io/en/stable/#class-type-and-sub-classes>`_
          of the given class.
code: def __init__(
      self,
      model_class: Union[
          Type[LightningModule], Callable[..., LightningModule]
      ],
      datamodule_class: Optional[
          Union[
              Type[LightningDataModule],
              Callable[..., LightningDataModule],
          ]
      ] = None,
      save_config_callback: Optional[
          Type[SaveConfigCallback]
      ] = SaveConfigCallback,
      save_config_filename: str = "config.yaml",
      save_config_overwrite: bool = False,
      trainer_class: Union[
          Type[Trainer], Callable[..., Trainer]
      ] = Trainer,
      trainer_defaults: Dict[str, Any] = None,
      seed_everything_default: int = None,
      description: str = "pytorch-lightning trainer command line tool",
      env_prefix: str = "PL",
      env_parse: bool = False,
      parser_kwargs: Dict[str, Any] = None,
      subclass_mode_model: bool = False,
      subclass_mode_data: bool = False,
  ) -> None:
      """Receives as input pytorch-lightning classes (or callables which return pytorch-lightning classes), which are
      called / instantiated using a parsed configuration file and / or command line args and then runs trainer.fit.
      Parsing of configuration from environment variables can be enabled by setting ``env_parse=True``. A full
      configuration yaml would be parsed from ``PL_CONFIG`` if set. Individual settings are so parsed from variables
      named for example ``PL_TRAINER__MAX_EPOCHS``.
  
      Example, first implement the ``trainer.py`` tool as::
  
          from mymodels import MyModel
          from pytorch_lightning.utilities.cli import LightningCLI
          LightningCLI(MyModel)
  
      Then in a shell, run the tool with the desired configuration::
  
          $ python trainer.py --print_config > config.yaml
          $ nano config.yaml  # modify the config as desired
          $ python trainer.py --cfg config.yaml
  
      .. warning:: ``LightningCLI`` is in beta and subject to change.
  
      Args:
          model_class: :class:`~pytorch_lightning.core.lightning.LightningModule` class to train on or a callable
              which returns a :class:`~pytorch_lightning.core.lightning.LightningModule` instance when called.
          datamodule_class: An optional :class:`~pytorch_lightning.core.datamodule.LightningDataModule` class or a
              callable which returns a :class:`~pytorch_lightning.core.datamodule.LightningDataModule` instance when
              called.
          save_config_callback: A callback class to save the training config.
          save_config_filename: Filename for the config file.
          save_config_overwrite: Whether to overwrite an existing config file.
          trainer_class: An optional subclass of the :class:`~pytorch_lightning.trainer.trainer.Trainer` class or a
              callable which returns a :class:`~pytorch_lightning.trainer.trainer.Trainer` instance when called.
          trainer_defaults: Set to override Trainer defaults or add persistent callbacks.
          seed_everything_default: Default value for the :func:`~pytorch_lightning.utilities.seed.seed_everything`
              seed argument.
          description: Description of the tool shown when running ``--help``.
          env_prefix: Prefix for environment variables.
          env_parse: Whether environment variable parsing is enabled.
          parser_kwargs: Additional arguments to instantiate LightningArgumentParser.
          subclass_mode_model: Whether model can be any `subclass
              <https://jsonargparse.readthedocs.io/en/stable/#class-type-and-sub-classes>`_
              of the given class.
          subclass_mode_data: Whether datamodule can be any `subclass
              <https://jsonargparse.readthedocs.io/en/stable/#class-type-and-sub-classes>`_
              of the given class.
  
      """
      self.model_class = model_class
      self.datamodule_class = datamodule_class
      self.save_config_callback = save_config_callback
      self.save_config_filename = save_config_filename
      self.save_config_overwrite = save_config_overwrite
      self.trainer_class = trainer_class
      self.trainer_defaults = (
          {} if trainer_defaults is None else trainer_defaults
      )
      self.seed_everything_default = seed_everything_default
      self.subclass_mode_model = subclass_mode_model
      self.subclass_mode_data = subclass_mode_data
      self.parser_kwargs = (
          {} if parser_kwargs is None else parser_kwargs
      )
      self.parser_kwargs.update(
          {
              "description": description,
              "env_prefix": env_prefix,
              "default_env": env_parse,
          }
      )
  
      self.init_parser()
      self.add_core_arguments_to_parser()
      self.add_arguments_to_parser(self.parser)
      self.link_optimizers_and_lr_schedulers()
      self.parse_arguments()
      if self.config["seed_everything"] is not None:
          seed_everything(self.config["seed_everything"], workers=True)
      self.before_instantiate_classes()
      self.instantiate_classes()
      self.add_configure_optimizers_method_to_model()
      self.prepare_fit_kwargs()
      self.before_fit()
      self.fit()
      self.after_fit()
  
imports: import inspect
  import os
  import warnings
  from argparse import Namespace
  from types import MethodType
  from typing import Any, Callable, Dict, List, Optional, Tuple, Type, Union, cast
  import torch
  from jsonargparse import ActionConfigFile, ArgumentParser, class_from_function, set_config_read_mode
  from pytorch_lightning import LightningDataModule, LightningModule, Trainer
  from pytorch_lightning.callbacks import Callback
  from pytorch_lightning.utilities.cloud_io import get_filesystem
  from pytorch_lightning.utilities.model_helpers import is_overridden
  from pytorch_lightning.utilities.seed import seed_everything
  from torch.optim import Optimizer
label_desc: Use image node_id 1 to create a new LightningCLI object  with example: obj = LightningCLI(model_class, datamodule_class, save_config_callback, save_config_filename, save_config_overwrite, trainer_class, trainer_defaults, seed_everything_default, description, env_prefix, env_parse, parser_kwargs, subclass_mode_model, subclass_mode_data)