Source code for project_config.types

"""Types."""

from __future__ import annotations

import typing as t

from project_config.compat import NotRequired, TypeAlias, TypedDict


[docs]class ErrorDict(TypedDict): """Error data type.""" message: str definition: str file: NotRequired[str] hint: NotRequired[str] fixed: NotRequired[bool] fixable: NotRequired[bool]
[docs]class Rule(TypedDict, total=False): """Style rule.""" files: t.List[str]
StrictResultType: TypeAlias = t.Tuple[str, t.Union[bool, ErrorDict]] # Note that the real second item in the tuple would be # `t.Union[bool, ErrorDict]`, but mypy does not like multiple types. # TODO: investigate a generic type here? LazyGenericResultType: TypeAlias = t.Tuple[str, t.Any] Results: TypeAlias = t.Iterator[LazyGenericResultType]
[docs]class ActionsContext(t.NamedTuple): """Context of global data passed to rule verbs.""" fix: bool
__all__ = ("Rule", "Results", "ErrorDict", "ActionsContext")