class_docstr: Supports the creation of instances from configuration, that can be plugged into the environments
  (like demand generators or reward schemes).
  
  :param base_type: A common interface (parent class) of the registered types (e.g. DemandGenerator)
class_docstr_tok: ["Supports","the","creation","of","instances","from","configuration",",","that","can","be","plugged","into","the","environments","(","like","demand","generators","or","reward","schemes",")",".",":","param","base_type",":","A","common","interface","(","parent","class",")","of","the","registered","types","(","e.g",".","DemandGenerator",")"]
docstr: try to split module and class name from path
  
  :param path: path in the form package1.package2.MyClass
  :return: tuple (path, class_name), e.g. ("package1.package2", "MyClass")
docstr_tok: ["try","to","split","module","and","class","name","from","path",":","param","path",":","path","in","the","form","package1.package2.MyClass",":","return",":","tuple","(","path",",","class_name",")",",","e.g",".","(","``","package1.package2","''",",","``","MyClass","''",")"]
code: def _split_module_and_class(cls, path) -> Tuple[str, str]:
      """try to split module and class name from path
  
      :param path: path in the form package1.package2.MyClass
      :return: tuple (path, class_name), e.g. ("package1.package2", "MyClass")
      """
      split_path = path.split(".")
      path = ".".join(split_path[:-1])
      class_name = split_path[-1]
  
      return path, class_name
  
file_path: maze/maze/core/utils/factory.py
imports: import copy
  import importlib
  from typing import TypeVar, Type, Dict, Union, Any, List, Mapping, Generic, Tuple, Sequence, Callable
  import omegaconf
  from hydra.utils import instantiate
  from omegaconf import open_dict, DictConfig
label_desc: Use image node_id 4 for calling the Factory obj's underlying member method code with example usage: obj._split_module_and_class(cls, path) and returns: path,  class_name