seeders.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. from __future__ import annotations
  2. from typing import TYPE_CHECKING
  3. from .base import ComponentBuilder
  4. if TYPE_CHECKING:
  5. from collections.abc import Sequence
  6. from python_discovery import PythonInfo
  7. from virtualenv.config.cli.parser import VirtualEnvConfigParser, VirtualEnvOptions
  8. from virtualenv.seed.seeder import Seeder
  9. class SeederSelector(ComponentBuilder):
  10. def __init__(self, interpreter: PythonInfo, parser: VirtualEnvConfigParser) -> None:
  11. possible = self.options("virtualenv.seed")
  12. super().__init__(interpreter, parser, "seeder", possible)
  13. def add_selector_arg_parse(self, name: str, choices: Sequence[str]) -> None:
  14. self.parser.add_argument(
  15. f"--{name}",
  16. choices=choices,
  17. default=self._get_default(),
  18. required=False,
  19. help="seed packages install method",
  20. )
  21. self.parser.add_argument(
  22. "--no-seed",
  23. "--without-pip",
  24. help="do not install seed packages",
  25. action="store_true",
  26. dest="no_seed",
  27. )
  28. @staticmethod
  29. def _get_default() -> str:
  30. return "app-data"
  31. def handle_selected_arg_parse(self, options: VirtualEnvOptions) -> str:
  32. return super().handle_selected_arg_parse(options)
  33. def create(self, options: VirtualEnvOptions) -> Seeder:
  34. assert self._impl_class is not None # noqa: S101 # Set by handle_selected_arg_parse
  35. return self._impl_class(options)
  36. __all__ = [
  37. "SeederSelector",
  38. ]