| # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html |
| # For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE |
| # Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt |
| |
| """A collection of typing utilities.""" |
| |
| from __future__ import annotations |
| |
| import argparse |
| from pathlib import Path |
| from typing import ( |
| TYPE_CHECKING, |
| Any, |
| Callable, |
| Dict, |
| Iterable, |
| Literal, |
| NamedTuple, |
| Optional, |
| Pattern, |
| Protocol, |
| Tuple, |
| Type, |
| TypedDict, |
| Union, |
| ) |
| |
| if TYPE_CHECKING: |
| from pylint.config.callback_actions import _CallbackAction |
| from pylint.pyreverse.inspector import Project |
| from pylint.reporters.ureports.nodes import Section |
| from pylint.utils import LinterStats |
| |
| |
| class FileItem(NamedTuple): |
| """Represents data about a file handled by pylint. |
| |
| Each file item has: |
| - name: full name of the module |
| - filepath: path of the file |
| - modname: module name |
| """ |
| |
| name: str |
| filepath: str |
| modpath: str |
| |
| |
| class ModuleDescriptionDict(TypedDict): |
| """Represents data about a checked module.""" |
| |
| path: str |
| name: str |
| isarg: bool |
| basepath: str |
| basename: str |
| |
| |
| class ErrorDescriptionDict(TypedDict): |
| """Represents data about errors collected during checking of a module.""" |
| |
| key: Literal["fatal"] |
| mod: str |
| ex: ImportError | SyntaxError |
| |
| |
| class MessageLocationTuple(NamedTuple): |
| """Tuple with information about the location of a to-be-displayed message.""" |
| |
| abspath: str |
| path: str |
| module: str |
| obj: str |
| line: int |
| column: int |
| end_line: int | None = None |
| end_column: int | None = None |
| |
| |
| class ManagedMessage(NamedTuple): |
| """Tuple with information about a managed message of the linter.""" |
| |
| name: str | None |
| msgid: str |
| symbol: str |
| line: int | None |
| is_disabled: bool |
| |
| |
| MessageTypesFullName = Literal[ |
| "convention", "error", "fatal", "info", "refactor", "statement", "warning" |
| ] |
| """All possible message categories.""" |
| |
| |
| OptionDict = Dict[ |
| str, |
| Union[ |
| None, |
| str, |
| bool, |
| int, |
| Pattern[str], |
| Iterable[Union[str, int, Pattern[str]]], |
| Type["_CallbackAction"], |
| Callable[[Any], Any], |
| Callable[[Any, Any, Any, Any], Any], |
| ], |
| ] |
| Options = Tuple[Tuple[str, OptionDict], ...] |
| |
| |
| ReportsCallable = Callable[["Section", "LinterStats", Optional["LinterStats"]], None] |
| """Callable to create a report.""" |
| |
| |
| class ExtraMessageOptions(TypedDict, total=False): |
| """All allowed keys in the extra options for message definitions.""" |
| |
| scope: str |
| old_names: list[tuple[str, str]] |
| maxversion: tuple[int, int] |
| minversion: tuple[int, int] |
| shared: bool |
| default_enabled: bool |
| |
| |
| MessageDefinitionTuple = Union[ |
| Tuple[str, str, str], |
| Tuple[str, str, str, ExtraMessageOptions], |
| ] |
| DirectoryNamespaceDict = Dict[Path, Tuple[argparse.Namespace, "DirectoryNamespaceDict"]] |
| |
| |
| class GetProjectCallable(Protocol): |
| def __call__( |
| self, module: str, name: str | None = "No Name" |
| ) -> Project: ... # pragma: no cover |