コード例 #1
0
ファイル: PluginBase.py プロジェクト: 601040605/Nuitka
    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
コード例 #2
0
ファイル: PluginBase.py プロジェクト: tommyli3318/Nuitka
    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
コード例 #3
0
ファイル: ModuleNodes.py プロジェクト: t03r1cht/unforgettable
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,
        )
コード例 #4
0
ファイル: ModuleNodes.py プロジェクト: shenglinmei/Nuitka
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
        )
コード例 #5
0
ファイル: PluginBase.py プロジェクト: justus922/Nuitka
    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
コード例 #6
0
    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
コード例 #7
0
ファイル: PluginBase.py プロジェクト: xlizzard/Nuitka
    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
コード例 #8
0
    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
コード例 #9
0
ファイル: PluginBase.py プロジェクト: bussiere/Nuitka
    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
コード例 #10
0
    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
コード例 #11
0
ファイル: PluginBase.py プロジェクト: Xzarh/Nuitka
    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
コード例 #12
0
ファイル: ModuleNodes.py プロジェクト: txf626/Nuitka
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,
        )
コード例 #13
0
#     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
コード例 #14
0
ファイル: InternalModule.py プロジェクト: fluxer/spm
#     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