primer_command.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
  2. # For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE
  3. # Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt
  4. from __future__ import annotations
  5. import abc
  6. import argparse
  7. import sys
  8. from pathlib import Path
  9. from typing import Dict
  10. from pylint.reporters.json_reporter import OldJsonExport
  11. from pylint.testutils._primer import PackageToLint
  12. if sys.version_info >= (3, 8):
  13. from typing import TypedDict
  14. else:
  15. from typing_extensions import TypedDict
  16. class PackageData(TypedDict):
  17. commit: str
  18. messages: list[OldJsonExport]
  19. PackageMessages = Dict[str, PackageData]
  20. class PrimerCommand:
  21. """Generic primer action with required arguments."""
  22. def __init__(
  23. self,
  24. primer_directory: Path,
  25. packages: dict[str, PackageToLint],
  26. config: argparse.Namespace,
  27. ) -> None:
  28. self.primer_directory = primer_directory
  29. self.packages = packages
  30. self.config = config
  31. @abc.abstractmethod
  32. def run(self) -> None:
  33. pass