seeder.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from __future__ import annotations
  2. from abc import ABC, abstractmethod
  3. class Seeder(ABC):
  4. """A seeder will install some seed packages into a virtual environment."""
  5. def __init__(self, options, enabled) -> None:
  6. """
  7. Create.
  8. :param options: the parsed options as defined within :meth:`add_parser_arguments`
  9. :param enabled: a flag weather the seeder is enabled or not
  10. """
  11. self.enabled = enabled
  12. self.env = options.env
  13. @classmethod
  14. def add_parser_arguments(cls, parser, interpreter, app_data):
  15. """
  16. Add CLI arguments for this seed mechanisms.
  17. :param parser: the CLI parser
  18. :param app_data: the CLI parser
  19. :param interpreter: the interpreter this virtual environment is based of
  20. """
  21. raise NotImplementedError
  22. @abstractmethod
  23. def run(self, creator):
  24. """
  25. Perform the seed operation.
  26. :param creator: the creator (based of :class:`virtualenv.create.creator.Creator`) we used to create this \
  27. virtual environment
  28. """
  29. raise NotImplementedError
  30. __all__ = [
  31. "Seeder",
  32. ]