from pathlib import Path from typing import Optional from ..entry import Entry from .command import PoetryCommand class PythonEntry(Entry): TYPE: str = "python" def __init__(self, basepath: Path): super().__init__(self.TYPE, basepath) def setup(self): self._logger.info(f"setup {self}") PoetryCommand.env_use("3.8").run(self._basepath) PoetryCommand.install().run(self._basepath) def lint(self): self._logger.info(f"lint {self}") PoetryCommand("run", "black", "--check", "--diff", "./").run(self._basepath) PoetryCommand("run", "isort", "--profile", "black", "--check-only", "./").run( self._basepath ) def format(self): self._logger.info(f"format {self}") PoetryCommand("run", "isort", "./").run(self._basepath) PoetryCommand("run", "black", "./").run(self._basepath) @classmethod def detect(cls, basepath: Path) -> Optional["PythonEntry"]: if (basepath / "pyproject.toml").exists(): return cls(basepath)