Source code for doitoml.sources.toml.pyproject

"""Handles path/task discovery in ``pyproject.toml``."""
import re
from pathlib import Path
from typing import Any, Dict, cast

from doitoml.constants import NAME
from doitoml.sources._config import ConfigParser, ConfigSource

from ._toml import TomlSource

#: the "Wild West" top-level key
TOOL = "tool"


[docs] class PyprojectToml(TomlSource, ConfigSource): """Finds tasks and paths in ``pyproject.toml``.""" @property def raw_config(self) -> Dict[str, Any]: """Load ``doitoml`` configuration from ``pyproject.toml``.""" return cast(Dict[str, Any], self.to_dict().get(TOOL, {}).get(NAME, {}))
[docs] class PyprojectTomlParser(ConfigParser): """Entry point for parsing configuration from ``pyproject.toml``.""" pattern = re.compile(r"pyproject.toml$") well_known = ("./pyproject.toml",) def __call__(self, path: Path) -> PyprojectToml: """Parse a ``doitoml`` configuration from ``pyproject.toml``.""" return PyprojectToml(path)