def canonicalPurePythonModule(): if canonicalPurePythonModuleCache_[0] is None: path = os.path.join(os.path.abspath(os.path.split(pyfora.__file__)[0]), "fora") moduleTree = ModuleDirectoryStructure.ModuleDirectoryStructure.read(path, "purePython", "fora") canonicalPurePythonModuleCache_[0] = ModuleImporter.importModuleFromMDS( moduleTree, "fora", "purePython", searchForFreeVariables=True ) return canonicalPurePythonModuleCache_[0]
def initialize(self, purePythonMDSAsJson): """Initialize the converter assuming a set of pyfora builtins""" try: import pyfora.ObjectRegistry as ObjectRegistry import ufora.FORA.python.PurePython.Converter as Converter import ufora.FORA.python.PurePython.PyforaSingletonAndExceptionConverter as PyforaSingletonAndExceptionConverter import ufora.native.FORA as ForaNative import ufora.FORA.python.ModuleImporter as ModuleImporter logging.info("Initializing the PyforaObjectConverter") objectRegistry_[0] = ObjectRegistry.ObjectRegistry() if purePythonMDSAsJson is None: converter_[0] = Converter.Converter() else: purePythonModuleImplval = ModuleImporter.importModuleFromMDS( ModuleDirectoryStructure.ModuleDirectoryStructure.fromJson(purePythonMDSAsJson), "fora", "purePython", searchForFreeVariables=True ) singletonAndExceptionConverter = \ PyforaSingletonAndExceptionConverter.PyforaSingletonAndExceptionConverter( purePythonModuleImplval ) primitiveTypeMapping = { bool: purePythonModuleImplval.getObjectMember("PyBool"), str: purePythonModuleImplval.getObjectMember("PyString"), int: purePythonModuleImplval.getObjectMember("PyInt"), float: purePythonModuleImplval.getObjectMember("PyFloat"), type(None): purePythonModuleImplval.getObjectMember("PyNone"), } nativeConstantConverter = ForaNative.PythonConstantConverter( primitiveTypeMapping ) nativeListConverter = ForaNative.makePythonListConverter( purePythonModuleImplval.getObjectMember("PyList") ) nativeTupleConverter = ForaNative.makePythonTupleConverter( purePythonModuleImplval.getObjectMember("PyTuple") ) nativeDictConverter = ForaNative.makePythonDictConverter( purePythonModuleImplval.getObjectMember("PyDict") ) foraBuiltinsImplVal = ModuleImporter.builtinModuleImplVal() converter_[0] = Converter.Converter( nativeListConverter=nativeListConverter, nativeTupleConverter=nativeTupleConverter, nativeDictConverter=nativeDictConverter, nativeConstantConverter=nativeConstantConverter, singletonAndExceptionConverter=singletonAndExceptionConverter, vdmOverride=ComputedValueGateway.getGateway().vdm, purePythonModuleImplVal=purePythonModuleImplval, foraBuiltinsImplVal=foraBuiltinsImplVal ) except: logging.critical("Failed to initialize the PyforaObjectConverter: %s", traceback.format_exc()) raise