code: def __get_type(self):
      key, pos = 0, 0
  
      for p in self.params:
          if p.kind == p.POSITIONAL_OR_KEYWORD:
              pos += 1
          elif p.kind == p.KEYWORD_ONLY:
              key += 1
          else:
              raise ConfigsError(
                  f"Only positional or keyword only arguments should be accepted: "
                  f"{self.config_names} - {self.option_name}"
              )
  
      if self.pass_params is not None:
          if key > 0:
              raise ConfigsError(
                  f"No keyword arguments are supported when passing configs: "
                  f"{self.config_names} - {self.option_name}"
              )
  
          if pos != len(self.pass_params):
              raise ConfigsError(
                  "Number of arguments to function should match the number of "
                  "configs to be passed: "
                  f"{self.config_names} - {self.option_name}"
              )
          return FunctionKind.pass_params
  
      if pos == 1:
          if key != 0:
              raise ConfigsError(
                  "No keyword arguments are allowed when passing a config object: "
                  f"{self.config_names} - {self.option_name}"
              )
          return FunctionKind.pass_configs
      elif pos == 0 and key == 0:
          return FunctionKind.pass_nothing
      else:
          warnings.warn(
              f"Accept configs object to your function, because it's easier to refactor, find usage etc: "
              f"{self.config_names}: {self.option_name}."
              f"LabML supports configs function that accept keyword arguments but this is not recommended.",
              FutureWarning,
              stacklevel=5,
          )
          if pos != 0:
              raise ConfigsError(
                  f"{self.config_names} - {self.option_name}"
              )
          return FunctionKind.pass_kwargs
  
file_path: labml/client/labml/internal/configs/config_function.py
imports: import inspect
  import warnings
  from enum import Enum
  from typing import List, Callable, cast, Union, Optional
  from typing import TYPE_CHECKING
  from .config_item import ConfigItem
  from .utils import get_config_names
  from ...utils.errors import ConfigsError
label_desc: Use image node_id 1 for calling the ConfigFunction obj's underlying member method code with example usage: obj.__get_type() and returns: FunctionKind, FunctionKind, FunctionKind, FunctionKind