def _createTriggerLoadedModule(module, trigger_name, code): from nuitka.tree.Building import createModuleTree from nuitka.nodes.ModuleNodes import CompiledPythonModule from nuitka.plugins.Plugins import Plugins module_name = module.getName() + trigger_name source_ref = fromFilename(module.getCompileTimeFilename() + trigger_name) mode = Plugins.decideCompilation(module_name, source_ref) trigger_module = CompiledPythonModule( name = module_name, package_name = module.getPackage(), mode = mode, source_ref = source_ref ) createModuleTree( module = trigger_module, source_ref = module.getSourceReference(), source_code = code, is_main = False ) return trigger_module
def _createTriggerLoadedModule(module, trigger_name, code): from nuitka.tree.Building import createModuleTree from nuitka.nodes.ModuleNodes import CompiledPythonModule from .Plugins import Plugins module_name = module.getName() + trigger_name source_ref = fromFilename(module.getCompileTimeFilename() + trigger_name) mode = Plugins.decideCompilation(module_name, source_ref) trigger_module = CompiledPythonModule( name=module_name, package_name=module.getPackage(), is_top=False, mode=mode, future_spec=None, source_ref=source_ref, ) createModuleTree( module=trigger_module, source_ref=module.getSourceReference(), source_code=code, is_main=False, ) return trigger_module
def makeUncompiledPythonModule(module_name, filename, bytecode, is_package, user_provided, technical): parts = module_name.rsplit(".", 1) name = parts[-1] package_name = parts[0] if len(parts) == 2 else None source_ref = fromFilename(filename) if is_package: return UncompiledPythonPackage( name=name, package_name=package_name, bytecode=bytecode, filename=filename, user_provided=user_provided, technical=technical, source_ref=source_ref, ) else: return UncompiledPythonModule( name=name, package_name=package_name, bytecode=bytecode, filename=filename, user_provided=user_provided, technical=technical, source_ref=source_ref, )
def makeUncompiledPythonModule(module_name, filename, bytecode, is_package, user_provided): parts = module_name.rsplit('.', 1) name = parts[-1] package_name = parts[0] if len(parts) == 2 else None source_ref = fromFilename(filename) if is_package: return UncompiledPythonPackage( name = name, package_name = package_name, bytecode = bytecode, filename = filename, user_provided = user_provided, source_ref = source_ref ) else: return UncompiledPythonModule( name = name, package_name = package_name, bytecode = bytecode, filename = filename, user_provided = user_provided, source_ref = source_ref )
def onModuleDiscovered(self, module): post_code, reason = self.createPostModuleLoadCode(module) if post_code: info( "Injecting plug-in based post load code for module '%s':" % \ module.getFullName() ) for line in reason.split('\n'): info(" " + line) from nuitka.tree.Building import createModuleTree post_module = PythonModule( name = module.getName() + "-onLoad", package_name = module.getPackage(), source_ref = fromFilename(module.getCompileTimeFilename() + "-onLoad") ) createModuleTree( module = post_module, source_ref = module.getSourceReference(), source_code = post_code, is_main = False ) post_modules[module.getFullName()] = post_module
def _createTriggerLoadedModule(module, trigger_name, code, flags): """Create a "trigger" for a module to be imported. Notes: The trigger will incorpaorate the code to be prepended / appended. Called by @onModuleDiscovered. Args: module: the module object (serves as dict key) trigger_name: string ("-preload"/"-postload") code: the code string Returns trigger_module """ from nuitka.nodes.ModuleNodes import CompiledPythonModule from nuitka.tree.Building import createModuleTree from .Plugins import Plugins module_name = ModuleName(module.getFullName() + trigger_name) source_ref = fromFilename(module.getCompileTimeFilename() + trigger_name) mode = Plugins.decideCompilation(module_name, source_ref) trigger_module = CompiledPythonModule( module_name=module_name, is_top=False, mode=mode, future_spec=None, source_ref=source_ref, ) createModuleTree( module=trigger_module, source_ref=module.getSourceReference(), source_code=code, is_main=False, ) if mode == "bytecode": trigger_module.setSourceCode(code) # In debug mode, put the files in the build folder, so they can be looked up easily. if Options.is_debug and "HIDE_SOURCE" not in flags: source_path = os.path.join( OutputDirectories.getSourceDirectoryPath(), module_name + ".py") putTextFileContents(filename=source_path, contents=code) return trigger_module
def _createTriggerLoadedModule(module, trigger_name, code): """Create a "trigger" for a module to be imported. Notes: The trigger will incorpaorate the code to be prepended / appended. Called by @onModuleDiscovered. Args: module: the module object (serves as dict key) trigger_name: string ("-preload"/"-postload") code: the code string Returns trigger_module """ from nuitka.nodes.ModuleNodes import CompiledPythonModule from nuitka.tree.Building import createModuleTree from .Plugins import Plugins module_name = ModuleName(module.getFullName() + trigger_name) source_ref = fromFilename(module.getCompileTimeFilename() + trigger_name) mode = Plugins.decideCompilation(module_name, source_ref) trigger_module = CompiledPythonModule( module_name=module_name, is_top=False, mode=mode, future_spec=None, source_ref=source_ref, ) createModuleTree( module=trigger_module, source_ref=module.getSourceReference(), source_code=code, is_main=False, ) if mode == "bytecode": trigger_module.setSourceCode(code) if Options.isDebug(): source_path = os.path.join( OutputDirectories.getSourceDirectoryPath(), module_name + ".py") with open(source_path, "w") as output: output.write(code) return trigger_module
def _createTriggerLoadedModule(module, trigger_name, code): from nuitka.tree.Building import createModuleTree from nuitka.nodes.ModuleNodes import CompiledPythonModule trigger_module = CompiledPythonModule( name=module.getName() + trigger_name, package_name=module.getPackage(), source_ref=fromFilename(module.getCompileTimeFilename() + trigger_name)) createModuleTree(module=trigger_module, source_ref=module.getSourceReference(), source_code=code, is_main=False) return trigger_module
def onModuleDiscovered(self, module): post_code = self.createPostModuleLoadCode(module) if post_code: from nuitka.tree.Building import createModuleTree post_module = PythonModule( name=module.getName() + "-onLoad", package_name=module.getPackage(), source_ref=fromFilename(module.getName() + "-onLoad")) createModuleTree(module=post_module, source_ref=module.getSourceReference(), source_code=post_code, is_main=False) post_modules[module.getFullName()] = post_module
def _createTriggerLoadedModule(module, trigger_name, code): """ Create a "trigger" for a module to be imported. Notes: The trigger will incorpaorate the code to be prepended / appended. Called by @onModuleDiscovered. Args: module: the module object (serves as dict key) trigger_name: string ("-preload"/"-postload") code: the code string Returns trigger_module """ from nuitka.tree.Building import createModuleTree from nuitka.nodes.ModuleNodes import CompiledPythonModule from .Plugins import Plugins module_name = module.getName() + trigger_name source_ref = fromFilename(module.getCompileTimeFilename() + trigger_name) mode = Plugins.decideCompilation(module_name, source_ref) trigger_module = CompiledPythonModule( name=module_name, package_name=module.getPackage(), is_top=False, mode=mode, future_spec=None, source_ref=source_ref, ) createModuleTree( module=trigger_module, source_ref=module.getSourceReference(), source_code=code, is_main=False, ) if mode == "bytecode": trigger_module.setSourceCode(code) return trigger_module
def onModuleDiscovered(self, module): post_code = self.createPostModuleLoadCode(module) if post_code: from nuitka.tree.Building import createModuleTree post_module = PythonModule( name = module.getName() + "-onLoad", package_name = module.getPackage(), source_ref = fromFilename(module.getName() + "-onLoad") ) createModuleTree( module = post_module, source_ref = module.getSourceReference(), source_code = post_code, is_main = False ) post_modules[module.getFullName()] = post_module
def makeUncompiledPythonModule(module_name, filename, bytecode, is_package, user_provided, technical): source_ref = fromFilename(filename) if is_package: return UncompiledPythonPackage( module_name=module_name, bytecode=bytecode, filename=filename, user_provided=user_provided, technical=technical, source_ref=source_ref, ) else: return UncompiledPythonModule( module_name=module_name, bytecode=bytecode, filename=filename, user_provided=user_provided, technical=technical, source_ref=source_ref, )
# See the License for the specific language governing permissions and # limitations under the License. # """ Internal module This is a container for helper functions that are shared across modules. It may not exist, and is treated specially in code generation. This avoids to own these functions to a random module. """ from nuitka.nodes.ModuleNodes import PythonInternalModule from nuitka.SourceCodeReferences import fromFilename internal_module = None internal_source_ref = fromFilename("internal").atInternal() # Cache result. def once_decorator(func): func.cached_value = None # TODO: This doesn't much specific anymore. def replacement(): if func.cached_value is None: func.cached_value = func() return func.cached_value return replacement
# limitations under the License. # """ Internal module This is a container for helper functions that are shared across modules. It may not exist, and is treated specially in code generation. This avoids to own these functions to a random module. """ from nuitka.nodes.ModuleNodes import PythonInternalModule from nuitka.SourceCodeReferences import fromFilename internal_module = None internal_source_ref = fromFilename("internal").atInternal() # Cache result. def once_decorator(func): func.cached_value = None # TODO: This doesn't much specific anymore. def replacement(): if func.cached_value is None: func.cached_value = func() return func.cached_value return replacement