docs: def load_python_file(moduleobject):
      """ Try to create an indexable instance from a module"""
      if isinstance(moduleobject, str):
          moduleobject = load_module(moduleobject)
      if not hasattr(moduleobject, "iclass"):
          raise KeyError("Element" + str(moduleobject))
      iclass = getattr(moduleobject, "iclass")
      mylist = getattr(moduleobject, "__all__", None) or list(filter(lambda x:x[:1] != "_", (dir(moduleobject))))
      mylist.remove('iclass')
      resultdic = {}
      for x in mylist:
          resultdic[x] = getattr(moduleobject, x)
      if iclass == "SymbolGrammar":
          from pydsl.grammar.BNF import BNFGrammar
          return BNFGrammar(**resultdic)
      elif iclass == "PLY":
          from pydsl.grammar.definition import PLYGrammar
          return PLYGrammar(moduleobject)
      elif iclass in ["PythonGrammar"]:
          from pydsl.grammar.definition import PythonGrammar
          return PythonGrammar(resultdic)
      elif iclass == "PythonTranslator":
          return resultdic
      elif iclass == "parsley":
          from pydsl.grammar.parsley import ParsleyGrammar
          return ParsleyGrammar(**resultdic)
      elif iclass == "pyparsing":
          return resultdic['root_symbol']
      else:
          raise ValueError(str(moduleobject))