Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
pyckles / contexts / python.py
Size: Mime:
# -*- coding: utf-8 -*-

from freckles.context.config import ContextConfig
from freckles.context.freckles_context import FrecklesContext
from freckles.frecklet.vars import VarsInventory
from pyckles.contexts import PycklesContext


class PythonContext(PycklesContext):
    """A PycklesContext that uses the freckles python library to run frecklets.
    """

    def __init__(
        self, pycklets_package_names=None, config=None, alias=None, debug=None
    ):

        super(PythonContext, self).__init__(
            pycklets_package_names=pycklets_package_names, config=config, debug=debug
        )

        if alias is None:
            alias = "_".join(pycklets_package_names)

        repo_config = {"repos": self.context_repos}
        cc = ContextConfig(
            alias=alias,
            config_chain=[self.context_config, repo_config],
            extra_repos=[],
            use_community=False,
            config_unlocked=True,
        )

        self._context = FrecklesContext(alias, cc)

    def _run(self, frecklet_list, inventory=None, run_config=None):

        frecklet = self._context.load_frecklet(frecklet_list)[0]

        fx = frecklet.create_frecklecutable(context=self._context)

        inv = VarsInventory()
        result = fx.run_frecklecutable(inventory=inv, run_config=run_config)

        return result[-1].result