code: def parse_class_init_keys(
      cls: Type,
  ) -> Tuple[str, Optional[str], Optional[str]]:
      """Parse key words for standard ``self``, ``*args`` and ``**kwargs``.
  
      Examples:
  
          >>> class Model:
          ...     def __init__(self, hparams, *my_args, anykw=42, **my_kwargs):
          ...         pass
          >>> parse_class_init_keys(Model)
          ('self', 'my_args', 'my_kwargs')
  
      """
      init_parameters = inspect.signature(cls.__init__).parameters
      # docs claims the params are always ordered
      # https://docs.python.org/3/library/inspect.html#inspect.Signature.parameters
      init_params = list(init_parameters.values())
      # self is always first
      n_self = init_params[0].name
  
      def _get_first_if_any(
          params: List[inspect.Parameter],
          param_type: Literal[
              inspect._ParameterKind.VAR_POSITIONAL,
              inspect._ParameterKind.VAR_KEYWORD,
          ],
      ) -> Optional[str]:
          for p in params:
              if p.kind == param_type:
                  return p.name
          return None
  
      n_args = _get_first_if_any(
          init_params, inspect.Parameter.VAR_POSITIONAL
      )
      n_kwargs = _get_first_if_any(
          init_params, inspect.Parameter.VAR_KEYWORD
      )
  
      return n_self, n_args, n_kwargs
  
imports: import copy
  import inspect
  import pickle
  import types
  from dataclasses import fields, is_dataclass
  from typing import Any, Dict, List, Literal, MutableMapping, Optional, Sequence, Tuple, Type, Union
  from torch import nn
  import lightning.pytorch
  from lightning.fabric.utilities.data import AttributeDict
  from lightning.pytorch.utilities.rank_zero import rank_zero_warn
label_desc: Use image node_id 3 for calling a global function with example usage: parse_class_init_keys(cls) and returns: n_self,  n_args,  n_kwargs, None, p