summaryrefslogtreecommitdiffstats
path: root/contrib/python/parso
diff options
context:
space:
mode:
authorshadchin <[email protected]>2024-03-04 21:16:16 +0300
committershadchin <[email protected]>2024-03-04 21:43:39 +0300
commit74819c4157bd388a7d429c870ea4b343a282dafa (patch)
tree4bff355b03dfb24b14d33581357cc8e624d170fd /contrib/python/parso
parentf64c28a5443395e3a8f27e6f1b15a3507812d2de (diff)
Extend support pyi files
Сейчас pyi файлы в макросе PY_SRCS используются исключительно в Arcadia плагине для продуктов JB, при сборке эти файлы просто игнорируются. В этом PR добавил шаг, который будет содержимое этих файлов складывать в ресурсы, секция PY_SRCS удобна тем, что позволяет раскладывать pyi файлы с учетом TOP_LEVEL/NAMESPACE, а это необходимо для правильной работы mypy. 3924b0556bc99947e6893cd79e5ce62ec72a18a9
Diffstat (limited to 'contrib/python/parso')
-rw-r--r--contrib/python/parso/py2/parso/__init__.pyi19
-rw-r--r--contrib/python/parso/py2/parso/grammar.pyi38
-rw-r--r--contrib/python/parso/py2/parso/pgen2/__init__.pyi1
-rw-r--r--contrib/python/parso/py2/parso/pgen2/generator.pyi38
-rw-r--r--contrib/python/parso/py2/parso/pgen2/grammar_parser.pyi20
-rw-r--r--contrib/python/parso/py2/parso/python/token.pyi30
-rw-r--r--contrib/python/parso/py2/parso/python/tokenize.pyi24
-rw-r--r--contrib/python/parso/py2/parso/utils.pyi29
8 files changed, 199 insertions, 0 deletions
diff --git a/contrib/python/parso/py2/parso/__init__.pyi b/contrib/python/parso/py2/parso/__init__.pyi
new file mode 100644
index 00000000000..5f72f07aab5
--- /dev/null
+++ b/contrib/python/parso/py2/parso/__init__.pyi
@@ -0,0 +1,19 @@
+from typing import Any, Optional, Union
+
+from parso.grammar import Grammar as Grammar, load_grammar as load_grammar
+from parso.parser import ParserSyntaxError as ParserSyntaxError
+from parso.utils import python_bytes_to_unicode as python_bytes_to_unicode, split_lines as split_lines
+
+__version__: str = ...
+
+def parse(
+ code: Optional[Union[str, bytes]],
+ *,
+ version: Optional[str] = None,
+ error_recovery: bool = True,
+ path: Optional[str] = None,
+ start_symbol: Optional[str] = None,
+ cache: bool = False,
+ diff_cache: bool = False,
+ cache_path: Optional[str] = None,
+) -> Any: ...
diff --git a/contrib/python/parso/py2/parso/grammar.pyi b/contrib/python/parso/py2/parso/grammar.pyi
new file mode 100644
index 00000000000..e5cd2eabd16
--- /dev/null
+++ b/contrib/python/parso/py2/parso/grammar.pyi
@@ -0,0 +1,38 @@
+from typing import Any, Callable, Generic, Optional, Sequence, TypeVar, Union
+from typing_extensions import Literal
+
+from parso.utils import PythonVersionInfo
+
+_Token = Any
+_NodeT = TypeVar("_NodeT")
+
+class Grammar(Generic[_NodeT]):
+ _default_normalizer_config: Optional[Any] = ...
+ _error_normalizer_config: Optional[Any] = None
+ _start_nonterminal: str = ...
+ _token_namespace: Optional[str] = None
+ def __init__(
+ self,
+ text: str,
+ tokenizer: Callable[[Sequence[str], int], Sequence[_Token]],
+ parser: Any = ...,
+ diff_parser: Any = ...,
+ ) -> None: ...
+ def parse(
+ self,
+ code: Union[str, bytes] = ...,
+ error_recovery: bool = ...,
+ path: Optional[str] = ...,
+ start_symbol: Optional[str] = ...,
+ cache: bool = ...,
+ diff_cache: bool = ...,
+ cache_path: Optional[str] = ...,
+ ) -> _NodeT: ...
+
+class PythonGrammar(Grammar):
+ version_info: PythonVersionInfo
+ def __init__(self, version_info: PythonVersionInfo, bnf_text: str) -> None: ...
+
+def load_grammar(
+ language: Literal["python"] = "python", version: Optional[str] = ..., path: str = ...
+) -> Grammar: ...
diff --git a/contrib/python/parso/py2/parso/pgen2/__init__.pyi b/contrib/python/parso/py2/parso/pgen2/__init__.pyi
new file mode 100644
index 00000000000..46c149f1362
--- /dev/null
+++ b/contrib/python/parso/py2/parso/pgen2/__init__.pyi
@@ -0,0 +1 @@
+from parso.pgen2.generator import generate_grammar as generate_grammar
diff --git a/contrib/python/parso/py2/parso/pgen2/generator.pyi b/contrib/python/parso/py2/parso/pgen2/generator.pyi
new file mode 100644
index 00000000000..0d67a18423b
--- /dev/null
+++ b/contrib/python/parso/py2/parso/pgen2/generator.pyi
@@ -0,0 +1,38 @@
+from typing import Any, Generic, Mapping, Sequence, Set, TypeVar, Union
+
+from parso.pgen2.grammar_parser import NFAState
+
+_TokenTypeT = TypeVar("_TokenTypeT")
+
+class Grammar(Generic[_TokenTypeT]):
+ nonterminal_to_dfas: Mapping[str, Sequence[DFAState[_TokenTypeT]]]
+ reserved_syntax_strings: Mapping[str, ReservedString]
+ start_nonterminal: str
+ def __init__(
+ self,
+ start_nonterminal: str,
+ rule_to_dfas: Mapping[str, Sequence[DFAState]],
+ reserved_syntax_strings: Mapping[str, ReservedString],
+ ) -> None: ...
+
+class DFAPlan:
+ next_dfa: DFAState
+ dfa_pushes: Sequence[DFAState]
+
+class DFAState(Generic[_TokenTypeT]):
+ from_rule: str
+ nfa_set: Set[NFAState]
+ is_final: bool
+ arcs: Mapping[str, DFAState] # map from all terminals/nonterminals to DFAState
+ nonterminal_arcs: Mapping[str, DFAState]
+ transitions: Mapping[Union[_TokenTypeT, ReservedString], DFAPlan]
+ def __init__(
+ self, from_rule: str, nfa_set: Set[NFAState], final: NFAState
+ ) -> None: ...
+
+class ReservedString:
+ value: str
+ def __init__(self, value: str) -> None: ...
+ def __repr__(self) -> str: ...
+
+def generate_grammar(bnf_grammar: str, token_namespace: Any) -> Grammar[Any]: ...
diff --git a/contrib/python/parso/py2/parso/pgen2/grammar_parser.pyi b/contrib/python/parso/py2/parso/pgen2/grammar_parser.pyi
new file mode 100644
index 00000000000..b73a5a6c72c
--- /dev/null
+++ b/contrib/python/parso/py2/parso/pgen2/grammar_parser.pyi
@@ -0,0 +1,20 @@
+from typing import Generator, List, Optional, Tuple
+
+from parso.python.token import TokenType
+
+class GrammarParser:
+ generator: Generator[TokenType, None, None]
+ def __init__(self, bnf_grammar: str) -> None: ...
+ def parse(self) -> Generator[Tuple[NFAState, NFAState], None, None]: ...
+
+class NFAArc:
+ next: NFAState
+ nonterminal_or_string: Optional[str]
+ def __init__(
+ self, next_: NFAState, nonterminal_or_string: Optional[str]
+ ) -> None: ...
+
+class NFAState:
+ from_rule: str
+ arcs: List[NFAArc]
+ def __init__(self, from_rule: str) -> None: ...
diff --git a/contrib/python/parso/py2/parso/python/token.pyi b/contrib/python/parso/py2/parso/python/token.pyi
new file mode 100644
index 00000000000..48e8dac8f9b
--- /dev/null
+++ b/contrib/python/parso/py2/parso/python/token.pyi
@@ -0,0 +1,30 @@
+from typing import Container, Iterable
+
+class TokenType:
+ name: str
+ contains_syntax: bool
+ def __init__(self, name: str, contains_syntax: bool) -> None: ...
+
+class TokenTypes:
+ def __init__(
+ self, names: Iterable[str], contains_syntax: Container[str]
+ ) -> None: ...
+
+# not an actual class in the source code, but we need this class to type the fields of
+# PythonTokenTypes
+class _FakePythonTokenTypesClass(TokenTypes):
+ STRING: TokenType
+ NUMBER: TokenType
+ NAME: TokenType
+ ERRORTOKEN: TokenType
+ NEWLINE: TokenType
+ INDENT: TokenType
+ DEDENT: TokenType
+ ERROR_DEDENT: TokenType
+ FSTRING_STRING: TokenType
+ FSTRING_START: TokenType
+ FSTRING_END: TokenType
+ OP: TokenType
+ ENDMARKER: TokenType
+
+PythonTokenTypes: _FakePythonTokenTypesClass = ...
diff --git a/contrib/python/parso/py2/parso/python/tokenize.pyi b/contrib/python/parso/py2/parso/python/tokenize.pyi
new file mode 100644
index 00000000000..1870bc2a7bf
--- /dev/null
+++ b/contrib/python/parso/py2/parso/python/tokenize.pyi
@@ -0,0 +1,24 @@
+from typing import Generator, Iterable, NamedTuple, Tuple
+
+from parso.python.token import TokenType
+from parso.utils import PythonVersionInfo
+
+class Token(NamedTuple):
+ type: TokenType
+ string: str
+ start_pos: Tuple[int, int]
+ prefix: str
+ @property
+ def end_pos(self) -> Tuple[int, int]: ...
+
+class PythonToken(Token):
+ def __repr__(self) -> str: ...
+
+def tokenize(
+ code: str, version_info: PythonVersionInfo, start_pos: Tuple[int, int] = (1, 0)
+) -> Generator[PythonToken, None, None]: ...
+def tokenize_lines(
+ lines: Iterable[str],
+ version_info: PythonVersionInfo,
+ start_pos: Tuple[int, int] = (1, 0),
+) -> Generator[PythonToken, None, None]: ...
diff --git a/contrib/python/parso/py2/parso/utils.pyi b/contrib/python/parso/py2/parso/utils.pyi
new file mode 100644
index 00000000000..12c77dab83d
--- /dev/null
+++ b/contrib/python/parso/py2/parso/utils.pyi
@@ -0,0 +1,29 @@
+from typing import NamedTuple, Optional, Sequence, Union
+
+class Version(NamedTuple):
+ major: int
+ minor: int
+ micro: int
+
+def split_lines(string: str, keepends: bool = ...) -> Sequence[str]: ...
+def python_bytes_to_unicode(
+ source: Union[str, bytes], encoding: str = ..., errors: str = ...
+) -> str: ...
+def version_info() -> Version:
+ """
+ Returns a namedtuple of parso's version, similar to Python's
+ ``sys.version_info``.
+ """
+ ...
+
+class PythonVersionInfo(NamedTuple):
+ major: int
+ minor: int
+
+def parse_version_string(version: Optional[str]) -> PythonVersionInfo:
+ """
+ Checks for a valid version number (e.g. `3.2` or `2.7.1` or `3`) and
+ returns a corresponding version info that is always two characters long in
+ decimal.
+ """
+ ...