def classedCmndsDict(): """ ** Should be done here, can not be done in icm library because of the evals. """ callDict = dict() for eachCmnd in icm.cmndList_mainsMethods().cmnd( interactive=False, importedCmnds=g_importedCmnds, mainFileName=__file__, ): try: callDict[eachCmnd] = eval("{}".format(eachCmnd)) continue except NameError: pass for mod in g_importedCmnds: try: eval("{mod}.{cmnd}".format(mod=mod, cmnd=eachCmnd)) except AttributeError: continue try: callDict[eachCmnd] = eval("{mod}.{cmnd}".format(mod=mod, cmnd=eachCmnd)) break except NameError: pass return callDict
def classedCmndsDict(importedCmndsModules): """ ** Should be done here, can not be done in icm library because of the evals. """ import importlib importedCmndsFilesList = [] importedTagsList = [] for moduleName in importedCmndsModules: #print(f"moduleName={moduleName}") moduleNameList = moduleName.split(".") importTag = moduleNameList.pop() importModule = ".".join(moduleNameList) #print(f"importTag= {importTag} -- moduleNameList={moduleNameList} -- importModule={importModule}") _tmp = importlib.import_module(importModule) exec(f"{importTag} = _tmp.{importTag}") # assignment is a statement #eval(f"print({importTag}.__file__)") # DEBUG eval(f"importedCmndsFilesList.append({importTag}.__file__)" ) # expression importedTagsList.append(importTag) #print(importedCmndsFilesList) #print(importedTagsList) callDict = dict() for eachCmnd in icm.cmndList_mainsMethods().cmnd( interactive=False, importedCmnds={}, # __main__.g_importedCmnds -- Being obsoleted mainFileName=__main__.__file__, importedCmndsFilesList=importedCmndsFilesList, ): #print(f"eachCmnd={eachCmnd}") try: callDict[eachCmnd] = eval("__main__.{}".format(eachCmnd)) except AttributeError: #print(f"AttributeError -- __main__.{eachCmnd} -- ignored") pass except NameError: #print(f"NameError -- __main__.{eachCmnd} -- ignored") pass else: #print(f"Added __main__.{eachCmnd}") continue for importTag in importedTagsList: #print(f"trying {importTag}") try: #print(f"Evaling -- {importTag}.{eachCmnd}") eval(f"{importTag}.{eachCmnd}") except AttributeError: #print(f"AttributeError -- {importTag}.{eachCmnd}") continue try: callDict[eachCmnd] = eval(f"{importTag}.{eachCmnd}") #print("callDict -- {importTag}.{eachCmnd}") break except NameError: pass return callDict