Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
session.py90 linesDownload Raw Back to run
1from __future__ import annotations2 3import json4import logging5 6 7class Session:8    """Represents a virtual environment creation session."""9 10    def __init__(self, verbosity, app_data, interpreter, creator, seeder, activators) -> None:  # noqa: PLR091311        self._verbosity = verbosity12        self._app_data = app_data13        self._interpreter = interpreter14        self._creator = creator15        self._seeder = seeder16        self._activators = activators17 18    @property19    def verbosity(self):20        """The verbosity of the run."""21        return self._verbosity22 23    @property24    def interpreter(self):25        """Create a virtual environment based on this reference interpreter."""26        return self._interpreter27 28    @property29    def creator(self):30        """The creator used to build the virtual environment (must be compatible with the interpreter)."""31        return self._creator32 33    @property34    def seeder(self):35        """The mechanism used to provide the seed packages (pip, setuptools, wheel)."""36        return self._seeder37 38    @property39    def activators(self):40        """Activators used to generate activations scripts."""41        return self._activators42 43    def run(self):44        self._create()45        self._seed()46        self._activate()47        self.creator.pyenv_cfg.write()48 49    def _create(self):50        logging.info("create virtual environment via %s", self.creator)51        self.creator.run()52        logging.debug(_DEBUG_MARKER)53        logging.debug("%s", _Debug(self.creator))54 55    def _seed(self):56        if self.seeder is not None and self.seeder.enabled:57            logging.info("add seed packages via %s", self.seeder)58            self.seeder.run(self.creator)59 60    def _activate(self):61        if self.activators:62            active = ", ".join(type(i).__name__.replace("Activator", "") for i in self.activators)63            logging.info("add activators for %s", active)64            for activator in self.activators:65                activator.generate(self.creator)66 67    def __enter__(self):68        return self69 70    def __exit__(self, exc_type, exc_val, exc_tb):71        self._app_data.close()72 73 74_DEBUG_MARKER = "=" * 30 + " target debug " + "=" * 3075 76 77class _Debug:78    """lazily populate debug."""79 80    def __init__(self, creator) -> None:81        self.creator = creator82 83    def __repr__(self) -> str:84        return json.dumps(self.creator.debug, indent=2)85 86 87__all__ = [88    "Session",89]90 
codekingpro/portable-devtools · Team Ai