From ec2b0a2444fd13be82304daa59db1a2fed6761c5 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sat, 12 Mar 2022 23:40:02 +0000 Subject: [PATCH 01/17] Parsimonious stubs --- stubs/parsimonious/METADATA.toml | 1 + stubs/parsimonious/parsimonious/__init__.pyi | 3 + .../parsimonious/parsimonious/exceptions.pyi | 24 +++++++ .../parsimonious/parsimonious/expressions.pyi | 68 ++++++++++++++++++ stubs/parsimonious/parsimonious/grammar.pyi | 69 +++++++++++++++++++ stubs/parsimonious/parsimonious/nodes.pyi | 40 +++++++++++ stubs/parsimonious/parsimonious/utils.pyi | 10 +++ 7 files changed, 215 insertions(+) create mode 100644 stubs/parsimonious/METADATA.toml create mode 100644 stubs/parsimonious/parsimonious/__init__.pyi create mode 100644 stubs/parsimonious/parsimonious/exceptions.pyi create mode 100644 stubs/parsimonious/parsimonious/expressions.pyi create mode 100644 stubs/parsimonious/parsimonious/grammar.pyi create mode 100644 stubs/parsimonious/parsimonious/nodes.pyi create mode 100644 stubs/parsimonious/parsimonious/utils.pyi diff --git a/stubs/parsimonious/METADATA.toml b/stubs/parsimonious/METADATA.toml new file mode 100644 index 000000000000..29511ee7d5a7 --- /dev/null +++ b/stubs/parsimonious/METADATA.toml @@ -0,0 +1 @@ +version = "0.8.*" diff --git a/stubs/parsimonious/parsimonious/__init__.pyi b/stubs/parsimonious/parsimonious/__init__.pyi new file mode 100644 index 000000000000..87bba12db804 --- /dev/null +++ b/stubs/parsimonious/parsimonious/__init__.pyi @@ -0,0 +1,3 @@ +from parsimonious.exceptions import BadGrammar, IncompleteParseError, ParseError, UndefinedLabel +from parsimonious.grammar import Grammar, TokenGrammar +from parsimonious.nodes import NodeVisitor, VisitationError, rule diff --git a/stubs/parsimonious/parsimonious/exceptions.pyi b/stubs/parsimonious/parsimonious/exceptions.pyi new file mode 100644 index 000000000000..243b0a4589a8 --- /dev/null +++ b/stubs/parsimonious/parsimonious/exceptions.pyi @@ -0,0 +1,24 @@ +from parsimonious.expressions import Expression +from parsimonious.grammar import LazyReference +from parsimonious.nodes import Node +from parsimonious.utils import StrAndRepr + +class ParseError(StrAndRepr, Exception): + text: str + pos: int + expr: Expression | None + def __init__(self, text: str, pos: int = ..., expr: Expression | None = ...) -> None: ... + def line(self) -> int: ... + def column(self) -> int: ... + +class IncompleteParseError(ParseError): ... + +class VisitationError(Exception): + original_class: type[BaseException] + def __init__(self, exc: BaseException, exc_class: type[BaseException], node: Node) -> None: ... + +class BadGrammar(StrAndRepr, Exception): ... + +class UndefinedLabel(BadGrammar): + label: LazyReference + def __init__(self, label: LazyReference) -> None: ... diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi new file mode 100644 index 000000000000..0933b920b87b --- /dev/null +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -0,0 +1,68 @@ +import typing +from typing import Any, Callable, Pattern + +from parsimonious.exceptions import IncompleteParseError, ParseError +from parsimonious.grammar import Grammar +from parsimonious.nodes import Node, RegexNode +from parsimonious.utils import StrAndRepr + +MARKER: Any + +def is_callable(value: Any) -> bool: ... + +_CALLABLE_RETURN_TYPE = int | tuple[int, list[Node]] | Node | None +_CALLABLE_TYPE = ( + Callable[[str, int], _CALLABLE_RETURN_TYPE] + | Callable[[str, int, dict[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] + | Callable[[Any, str, int], _CALLABLE_RETURN_TYPE] + | Callable[[Any, str, int, dict[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] +) + +def expression(callable: _CALLABLE_TYPE, rule_name: str, grammar: Grammar) -> Expression: ... + +class Expression(StrAndRepr): + name: str + identity_tuple: tuple[str] + def __init__(self, name: str = ...) -> None: ... + def parse(self, text: str, pos: int = ...) -> Node: ... + def match(self, text: str, pos: int = ...) -> Node: ... + def match_core(self, text: str, pos: int, cache: dict[tuple[int, int], Node], error: ParseError) -> Node: ... + def as_rule(self) -> str: ... + +class Literal(Expression): + literal: str + identity_tuple: tuple[str, str] + def __init__(self, literal: str, name: str = ...) -> None: ... + +class TokenMatcher(Literal): ... + +class Regex(Expression): + re: Pattern[str] + identity_tuple: tuple[str, Pattern[str]] + def __init__( + self, + pattern: str, + name: str = ..., + ignore_case: bool = ..., + locale: bool = ..., + multiline: bool = ..., + dot_all: bool = ..., + unicode: bool = ..., + verbose: bool = ..., + ascii: bool = ..., + ) -> None: ... + +class Compound(Expression): + members: typing.Sequence + def __init__(self, *members: typing.Sequence[Expression], **kwargs: Any) -> None: ... + +class Sequence(Compound): ... +class OneOf(Compound): ... +class Lookahead(Compound): ... +class Not(Compound): ... +class Optional(Compound): ... +class ZeroOrMore(Compound): ... + +class OneOrMore(Compound): + min: int + def __init__(self, member: Expression, name: str = ..., min: int = ...) -> None: ... diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi new file mode 100644 index 000000000000..1c198619793e --- /dev/null +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -0,0 +1,69 @@ +from collections import OrderedDict +from typing import Any, Callable, Mapping, NoReturn +from typing_extensions import Self + +from parsimonious.exceptions import BadGrammar, UndefinedLabel +from parsimonious.expressions import ( + _CALLABLE_TYPE, + Expression, + Literal, + Lookahead, + Not, + OneOf, + OneOrMore, + Optional, + Regex, + Sequence, + TokenMatcher, + ZeroOrMore, + expression, + is_callable, +) +from parsimonious.nodes import Node, NodeVisitor +from parsimonious.utils import evaluate_string +from six import text_type + +class Grammar(OrderedDict): + default_rule: Expression | Any + def __init__(self, rules: str = ..., **more_rules: Expression | _CALLABLE_TYPE) -> None: ... + def default(self, rule_name: str) -> Grammar: ... + def parse(self, text: str, pos: int = ...) -> Node: ... + def match(self, text: str, pos: int = ...) -> Node: ... + +class TokenGrammar(Grammar): ... +class BootstrappingGrammar(Grammar): ... + +rule_syntax: str + +class LazyReference(text_type): + name: str + +class RuleVisitor(NodeVisitor): + quantifier_classes: dict[str, Expression] + visit_expression: Callable[[Self, Node, list[Any]], Any] + visit_term: Callable[[Self, Node, list[Any]], Any] + visit_atom: Callable[[Self, Node, list[Any]], Any] + custom_rules: dict[str, Expression] + def __init__(self, custom_rules: Mapping[str, Expression] | None = ...) -> None: ... + def visit_rules(self, node: Node, rules_list: list[Any]) -> tuple[OrderedDict[str, Expression], Expression | None]: ... + def visit_rule(self, node: Node, rule: list[Any]) -> Expression: ... + def visit_label(self, node: Node, label: list[Any]) -> str: ... + def visit_ored(self, node: Node, ored: list[Any]) -> OneOf: ... + def visit_or_term(self, node: Node, or_term: list[Any]) -> Expression: ... + def visit_sequence(self, node: Node, sequence: list[Any]) -> Sequence: ... + def visit_not_term(self, node: Node, not_term: list[Any]) -> Not: ... + def visit_lookahead_term(self, node: Node, lookahead_term: list[Any]) -> Lookahead: ... + def visit_quantified(self, node: Node, quantified: list[Any]) -> Expression: ... + def visit_quantifier(self, node: Node, quantifier: list[Any]) -> Node: ... + def visit_reference(self, node: Node, reference: list[Any]) -> LazyReference: ... + def visit_literal(self, node: Node, literal: list[Any]) -> Literal: ... + def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: list[Any]) -> Literal: ... + def visit_regex(self, node: Node, regex: list[Any]) -> Regex: ... + def visit_parenthesized(self, node: Node, parenthesized: list[Any]) -> Expression: ... + def generic_visit(self, node: Node, visited_children: list[Any]) -> list[Any] | Node: ... + +class TokenRuleVisitor(RuleVisitor): + def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: list[Any]) -> TokenMatcher: ... + def visit_regex(self, node: Node, regex: list[Any]) -> NoReturn: ... + +rule_grammar: Grammar diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi new file mode 100644 index 000000000000..832ce7781c36 --- /dev/null +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -0,0 +1,40 @@ +from re import Match +from typing import Any, Callable, Iterator, NoReturn, TypeVar +from typing_extensions import Self + +from parsimonious.exceptions import UndefinedLabel, VisitationError +from parsimonious.expressions import Expression +from parsimonious.grammar import Grammar + +class Node: + expr: Expression + full_text: str + start: int + end: int + children: list[Node] + def __init__(self, expr: Expression, full_text: str, start: int, end: int, children: list[Node] | None = ...) -> None: ... + @property + def expr_name(self) -> str: ... + def __iter__(self) -> Iterator[Node]: ... + @property + def text(self) -> str: ... + def prettily(self, error: Node | None = ...) -> str: ... + +class RegexNode(Node): + match: Match[str] + +class RuleDecoratorMeta(type): + def __new__(metaclass: type[Self], name: str, bases: tuple[type, ...], namespace: dict[str, Any]) -> Self: ... + +class NodeVisitor(type): + grammar: Grammar | Any + unwrapped_exceptions: tuple[Exception] + def visit(self, node: Node) -> Any: ... + def generic_visit(self, node: Node, visited_children: list[Any]) -> NoReturn: ... + def parse(self, text: str, pos: int = ...) -> Node: ... + def match(self, text: str, pos: int = ...) -> Node: ... + def lift_child(self, node: Node, children: list[Any]) -> Any: ... + +_T = TypeVar("_T") + +def rule(rule_string: str) -> Callable[[Callable[..., _T]], Callable[..., _T]]: ... diff --git a/stubs/parsimonious/parsimonious/utils.pyi b/stubs/parsimonious/parsimonious/utils.pyi new file mode 100644 index 000000000000..eea5d11851d9 --- /dev/null +++ b/stubs/parsimonious/parsimonious/utils.pyi @@ -0,0 +1,10 @@ +import ast +from typing import Any + +class StrAndRepr: ... + +def evaluate_string(string: str | ast.AST) -> Any: ... + +class Token(StrAndRepr): + type: str + def __init__(self, type: str) -> None: ... From b5635029a155a98af344869625a19a5210d14494 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sat, 12 Mar 2022 23:52:51 +0000 Subject: [PATCH 02/17] Alias unused imports --- stubs/parsimonious/parsimonious/__init__.pyi | 11 ++++-- .../parsimonious/parsimonious/exceptions.pyi | 8 ++--- .../parsimonious/parsimonious/expressions.pyi | 8 ++--- stubs/parsimonious/parsimonious/grammar.pyi | 34 +++++++++---------- stubs/parsimonious/parsimonious/nodes.pyi | 6 ++-- 5 files changed, 36 insertions(+), 31 deletions(-) diff --git a/stubs/parsimonious/parsimonious/__init__.pyi b/stubs/parsimonious/parsimonious/__init__.pyi index 87bba12db804..56b4f008deb8 100644 --- a/stubs/parsimonious/parsimonious/__init__.pyi +++ b/stubs/parsimonious/parsimonious/__init__.pyi @@ -1,3 +1,8 @@ -from parsimonious.exceptions import BadGrammar, IncompleteParseError, ParseError, UndefinedLabel -from parsimonious.grammar import Grammar, TokenGrammar -from parsimonious.nodes import NodeVisitor, VisitationError, rule +from parsimonious.exceptions import ( + BadGrammar as BadGrammar, + IncompleteParseError as IncompleteParseError, + ParseError as ParseError, + UndefinedLabel as UndefinedLabel, +) +from parsimonious.grammar import Grammar as Grammar, TokenGrammar as TokenGrammar +from parsimonious.nodes import NodeVisitor as NodeVisitor, rule as rule diff --git a/stubs/parsimonious/parsimonious/exceptions.pyi b/stubs/parsimonious/parsimonious/exceptions.pyi index 243b0a4589a8..2bf224248d28 100644 --- a/stubs/parsimonious/parsimonious/exceptions.pyi +++ b/stubs/parsimonious/parsimonious/exceptions.pyi @@ -1,7 +1,7 @@ -from parsimonious.expressions import Expression -from parsimonious.grammar import LazyReference -from parsimonious.nodes import Node -from parsimonious.utils import StrAndRepr +from parsimonious.expressions import Expression as Expression +from parsimonious.grammar import LazyReference as LazyReference +from parsimonious.nodes import Node as Node +from parsimonious.utils import StrAndRepr as StrAndRepr class ParseError(StrAndRepr, Exception): text: str diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index 0933b920b87b..ae6891ebee7b 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -1,10 +1,10 @@ import typing from typing import Any, Callable, Pattern -from parsimonious.exceptions import IncompleteParseError, ParseError -from parsimonious.grammar import Grammar -from parsimonious.nodes import Node, RegexNode -from parsimonious.utils import StrAndRepr +from parsimonious.exceptions import IncompleteParseError as IncompleteParseError, ParseError as ParseError +from parsimonious.grammar import Grammar as Grammar +from parsimonious.nodes import Node as Node, RegexNode as RegexNode +from parsimonious.utils import StrAndRepr as StrAndRepr MARKER: Any diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index 1c198619793e..dd82c5db3b3d 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -2,25 +2,25 @@ from collections import OrderedDict from typing import Any, Callable, Mapping, NoReturn from typing_extensions import Self -from parsimonious.exceptions import BadGrammar, UndefinedLabel +from parsimonious.exceptions import BadGrammar as BadGrammar, UndefinedLabel as UndefinedLabel from parsimonious.expressions import ( - _CALLABLE_TYPE, - Expression, - Literal, - Lookahead, - Not, - OneOf, - OneOrMore, - Optional, - Regex, - Sequence, - TokenMatcher, - ZeroOrMore, - expression, - is_callable, + _CALLABLE_TYPE as _CALLABLE_TYPE, + Expression as Expression, + Literal as Literal, + Lookahead as Lookahead, + Not as Not, + OneOf as OneOf, + OneOrMore as OneOrMore, + Optional as Optional, + Regex as Regex, + Sequence as Sequence, + TokenMatcher as TokenMatcher, + ZeroOrMore as ZeroOrMore, + expression as expression, + is_callable as is_callable, ) -from parsimonious.nodes import Node, NodeVisitor -from parsimonious.utils import evaluate_string +from parsimonious.nodes import Node as Node, NodeVisitor as NodeVisitor +from parsimonious.utils import evaluate_string as evaluate_string from six import text_type class Grammar(OrderedDict): diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 832ce7781c36..1497da68d73c 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -2,9 +2,9 @@ from re import Match from typing import Any, Callable, Iterator, NoReturn, TypeVar from typing_extensions import Self -from parsimonious.exceptions import UndefinedLabel, VisitationError -from parsimonious.expressions import Expression -from parsimonious.grammar import Grammar +from parsimonious.exceptions import UndefinedLabel as UndefinedLabel, VisitationError as VisitationError +from parsimonious.expressions import Expression as Expression +from parsimonious.grammar import Grammar as Grammar class Node: expr: Expression From 1a12accd14a010babf249c14e28871b2c7a88b8e Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sat, 12 Mar 2022 23:54:17 +0000 Subject: [PATCH 03/17] missing typing.Sequence type argument --- stubs/parsimonious/parsimonious/expressions.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index ae6891ebee7b..836663bf277b 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -53,7 +53,7 @@ class Regex(Expression): ) -> None: ... class Compound(Expression): - members: typing.Sequence + members: typing.Sequence[Expression] def __init__(self, *members: typing.Sequence[Expression], **kwargs: Any) -> None: ... class Sequence(Compound): ... From 3d8f8f4dbe06bafb35effc3e6281b0f9ff3564b9 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sat, 12 Mar 2022 23:59:39 +0000 Subject: [PATCH 04/17] Add type args to OrderedDict --- stubs/parsimonious/parsimonious/grammar.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index dd82c5db3b3d..1886abf081e8 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -23,7 +23,7 @@ from parsimonious.nodes import Node as Node, NodeVisitor as NodeVisitor from parsimonious.utils import evaluate_string as evaluate_string from six import text_type -class Grammar(OrderedDict): +class Grammar(OrderedDict[str, Expression]): default_rule: Expression | Any def __init__(self, rules: str = ..., **more_rules: Expression | _CALLABLE_TYPE) -> None: ... def default(self, rule_name: str) -> Grammar: ... From b27aef3f69e317d36b1834bc891185afafbc3479 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 00:02:09 +0000 Subject: [PATCH 05/17] allow metaclass instead of cls in RuleDecoratorMeta.__new__ --- stubs/parsimonious/@tests/stubtest_allowlist.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 stubs/parsimonious/@tests/stubtest_allowlist.txt diff --git a/stubs/parsimonious/@tests/stubtest_allowlist.txt b/stubs/parsimonious/@tests/stubtest_allowlist.txt new file mode 100644 index 000000000000..0da166241c76 --- /dev/null +++ b/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -0,0 +1 @@ +parsimonious.nodes.RuleDecoratorMeta.__new__ From 821f311870992e2482500229d3a0f6f05f69d73b Mon Sep 17 00:00:00 2001 From: Joseph Young <80432516+jpy-git@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:25:34 +0000 Subject: [PATCH 06/17] Update stubs/parsimonious/parsimonious/nodes.pyi Co-authored-by: Jelle Zijlstra --- stubs/parsimonious/parsimonious/nodes.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 1497da68d73c..7b471ecaee85 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -28,7 +28,7 @@ class RuleDecoratorMeta(type): class NodeVisitor(type): grammar: Grammar | Any - unwrapped_exceptions: tuple[Exception] + unwrapped_exceptions: tuple[type[Exception], ...] def visit(self, node: Node) -> Any: ... def generic_visit(self, node: Node, visited_children: list[Any]) -> NoReturn: ... def parse(self, text: str, pos: int = ...) -> Node: ... From 78eb2251529b07c9a5e076b50fd8ab897d0fd2c5 Mon Sep 17 00:00:00 2001 From: Joseph Young <80432516+jpy-git@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:25:49 +0000 Subject: [PATCH 07/17] Update stubs/parsimonious/parsimonious/nodes.pyi Co-authored-by: Jelle Zijlstra --- stubs/parsimonious/parsimonious/nodes.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 7b471ecaee85..34b4a978f470 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -35,6 +35,6 @@ class NodeVisitor(type): def match(self, text: str, pos: int = ...) -> Node: ... def lift_child(self, node: Node, children: list[Any]) -> Any: ... -_T = TypeVar("_T") +_CallableT = TypeVar("_CallableT", bound=Callable[..., Any]) -def rule(rule_string: str) -> Callable[[Callable[..., _T]], Callable[..., _T]]: ... +def rule(rule_string: str) -> Callable[[_CallableT], _CallableT]: ... From 160c884467a54b69a3499e81d57119681c792ab5 Mon Sep 17 00:00:00 2001 From: Joseph Young <80432516+jpy-git@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:25:54 +0000 Subject: [PATCH 08/17] Update stubs/parsimonious/parsimonious/nodes.pyi Co-authored-by: Jelle Zijlstra --- stubs/parsimonious/parsimonious/nodes.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 34b4a978f470..fb39f0f6caa9 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -26,7 +26,7 @@ class RegexNode(Node): class RuleDecoratorMeta(type): def __new__(metaclass: type[Self], name: str, bases: tuple[type, ...], namespace: dict[str, Any]) -> Self: ... -class NodeVisitor(type): +class NodeVisitor(metaclass=RuleDecoratorMeta): grammar: Grammar | Any unwrapped_exceptions: tuple[type[Exception], ...] def visit(self, node: Node) -> Any: ... From b4b26d81d0abbf85b3bb16f192dd937576faff83 Mon Sep 17 00:00:00 2001 From: Joseph Young <80432516+jpy-git@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:28:00 +0000 Subject: [PATCH 09/17] Update stubs/parsimonious/parsimonious/grammar.pyi Co-authored-by: Jelle Zijlstra --- stubs/parsimonious/parsimonious/grammar.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index 1886abf081e8..835db548c373 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -39,7 +39,7 @@ class LazyReference(text_type): name: str class RuleVisitor(NodeVisitor): - quantifier_classes: dict[str, Expression] + quantifier_classes: dict[str, type[Expression]] visit_expression: Callable[[Self, Node, list[Any]], Any] visit_term: Callable[[Self, Node, list[Any]], Any] visit_atom: Callable[[Self, Node, list[Any]], Any] From 68a20a6727831f7e429c93403bb57985041939b8 Mon Sep 17 00:00:00 2001 From: Joseph Young <80432516+jpy-git@users.noreply.github.com> Date: Sun, 13 Mar 2022 00:29:04 +0000 Subject: [PATCH 10/17] Update stubs/parsimonious/parsimonious/expressions.pyi Co-authored-by: Jelle Zijlstra --- stubs/parsimonious/parsimonious/expressions.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index 836663bf277b..97fa2ab2794a 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -54,7 +54,7 @@ class Regex(Expression): class Compound(Expression): members: typing.Sequence[Expression] - def __init__(self, *members: typing.Sequence[Expression], **kwargs: Any) -> None: ... + def __init__(self, *members: Expression, **kwargs: Any) -> None: ... class Sequence(Compound): ... class OneOf(Compound): ... From 74e01c5994672c39e442af000fac8ce111dc1a48 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 00:42:01 +0000 Subject: [PATCH 11/17] PR feedback pt1 --- stubs/parsimonious/parsimonious/__init__.pyi | 2 +- .../parsimonious/parsimonious/exceptions.pyi | 8 +- .../parsimonious/parsimonious/expressions.pyi | 8 +- stubs/parsimonious/parsimonious/grammar.pyi | 73 +++++++++---------- stubs/parsimonious/parsimonious/nodes.pyi | 14 ++-- 5 files changed, 48 insertions(+), 57 deletions(-) diff --git a/stubs/parsimonious/parsimonious/__init__.pyi b/stubs/parsimonious/parsimonious/__init__.pyi index 56b4f008deb8..31f99b479767 100644 --- a/stubs/parsimonious/parsimonious/__init__.pyi +++ b/stubs/parsimonious/parsimonious/__init__.pyi @@ -5,4 +5,4 @@ from parsimonious.exceptions import ( UndefinedLabel as UndefinedLabel, ) from parsimonious.grammar import Grammar as Grammar, TokenGrammar as TokenGrammar -from parsimonious.nodes import NodeVisitor as NodeVisitor, rule as rule +from parsimonious.nodes import NodeVisitor as NodeVisitor, VisitationError as VisitationError, rule as rule diff --git a/stubs/parsimonious/parsimonious/exceptions.pyi b/stubs/parsimonious/parsimonious/exceptions.pyi index 2bf224248d28..243b0a4589a8 100644 --- a/stubs/parsimonious/parsimonious/exceptions.pyi +++ b/stubs/parsimonious/parsimonious/exceptions.pyi @@ -1,7 +1,7 @@ -from parsimonious.expressions import Expression as Expression -from parsimonious.grammar import LazyReference as LazyReference -from parsimonious.nodes import Node as Node -from parsimonious.utils import StrAndRepr as StrAndRepr +from parsimonious.expressions import Expression +from parsimonious.grammar import LazyReference +from parsimonious.nodes import Node +from parsimonious.utils import StrAndRepr class ParseError(StrAndRepr, Exception): text: str diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index 836663bf277b..fe80d4a718bb 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -1,10 +1,10 @@ import typing from typing import Any, Callable, Pattern -from parsimonious.exceptions import IncompleteParseError as IncompleteParseError, ParseError as ParseError -from parsimonious.grammar import Grammar as Grammar -from parsimonious.nodes import Node as Node, RegexNode as RegexNode -from parsimonious.utils import StrAndRepr as StrAndRepr +from parsimonious.exceptions import ParseError +from parsimonious.grammar import Grammar +from parsimonious.nodes import Node +from parsimonious.utils import StrAndRepr MARKER: Any diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index 1886abf081e8..a175bcd9793e 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -1,27 +1,20 @@ from collections import OrderedDict +import typing from typing import Any, Callable, Mapping, NoReturn from typing_extensions import Self -from parsimonious.exceptions import BadGrammar as BadGrammar, UndefinedLabel as UndefinedLabel from parsimonious.expressions import ( - _CALLABLE_TYPE as _CALLABLE_TYPE, - Expression as Expression, - Literal as Literal, - Lookahead as Lookahead, - Not as Not, - OneOf as OneOf, - OneOrMore as OneOrMore, - Optional as Optional, - Regex as Regex, - Sequence as Sequence, - TokenMatcher as TokenMatcher, - ZeroOrMore as ZeroOrMore, - expression as expression, - is_callable as is_callable, + _CALLABLE_TYPE, + Expression, + Literal, + Lookahead, + Not, + OneOf, + Regex, + Sequence, + TokenMatcher, ) -from parsimonious.nodes import Node as Node, NodeVisitor as NodeVisitor -from parsimonious.utils import evaluate_string as evaluate_string -from six import text_type +from parsimonious.nodes import Node, NodeVisitor class Grammar(OrderedDict[str, Expression]): default_rule: Expression | Any @@ -35,35 +28,35 @@ class BootstrappingGrammar(Grammar): ... rule_syntax: str -class LazyReference(text_type): +class LazyReference(str): name: str class RuleVisitor(NodeVisitor): quantifier_classes: dict[str, Expression] - visit_expression: Callable[[Self, Node, list[Any]], Any] - visit_term: Callable[[Self, Node, list[Any]], Any] - visit_atom: Callable[[Self, Node, list[Any]], Any] + visit_expression: Callable[[Self, Node, typing.Sequence[Any]], Any] + visit_term: Callable[[Self, Node, typing.Sequence[Any]], Any] + visit_atom: Callable[[Self, Node, typing.Sequence[Any]], Any] custom_rules: dict[str, Expression] def __init__(self, custom_rules: Mapping[str, Expression] | None = ...) -> None: ... - def visit_rules(self, node: Node, rules_list: list[Any]) -> tuple[OrderedDict[str, Expression], Expression | None]: ... - def visit_rule(self, node: Node, rule: list[Any]) -> Expression: ... - def visit_label(self, node: Node, label: list[Any]) -> str: ... - def visit_ored(self, node: Node, ored: list[Any]) -> OneOf: ... - def visit_or_term(self, node: Node, or_term: list[Any]) -> Expression: ... - def visit_sequence(self, node: Node, sequence: list[Any]) -> Sequence: ... - def visit_not_term(self, node: Node, not_term: list[Any]) -> Not: ... - def visit_lookahead_term(self, node: Node, lookahead_term: list[Any]) -> Lookahead: ... - def visit_quantified(self, node: Node, quantified: list[Any]) -> Expression: ... - def visit_quantifier(self, node: Node, quantifier: list[Any]) -> Node: ... - def visit_reference(self, node: Node, reference: list[Any]) -> LazyReference: ... - def visit_literal(self, node: Node, literal: list[Any]) -> Literal: ... - def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: list[Any]) -> Literal: ... - def visit_regex(self, node: Node, regex: list[Any]) -> Regex: ... - def visit_parenthesized(self, node: Node, parenthesized: list[Any]) -> Expression: ... - def generic_visit(self, node: Node, visited_children: list[Any]) -> list[Any] | Node: ... + def visit_rules(self, node: Node, rules_list: typing.Sequence[Any]) -> tuple[OrderedDict[str, Expression], Expression | None]: ... + def visit_rule(self, node: Node, rule: typing.Sequence[Any]) -> Expression: ... + def visit_label(self, node: Node, label: typing.Sequence[Any]) -> str: ... + def visit_ored(self, node: Node, ored: typing.Sequence[Any]) -> OneOf: ... + def visit_or_term(self, node: Node, or_term: typing.Sequence[Any]) -> Expression: ... + def visit_sequence(self, node: Node, sequence: typing.Sequence[Any]) -> Sequence: ... + def visit_not_term(self, node: Node, not_term: typing.Sequence[Any]) -> Not: ... + def visit_lookahead_term(self, node: Node, lookahead_term: typing.Sequence[Any]) -> Lookahead: ... + def visit_quantified(self, node: Node, quantified: typing.Sequence[Any]) -> Expression: ... + def visit_quantifier(self, node: Node, quantifier: typing.Sequence[Any]) -> Node: ... + def visit_reference(self, node: Node, reference: typing.Sequence[Any]) -> LazyReference: ... + def visit_literal(self, node: Node, literal: typing.Sequence[Any]) -> Literal: ... + def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: typing.Sequence[Any]) -> Literal: ... + def visit_regex(self, node: Node, regex: typing.Sequence[Any]) -> Regex: ... + def visit_parenthesized(self, node: Node, parenthesized: typing.Sequence[Any]) -> Expression: ... + def generic_visit(self, node: Node, visited_children: typing.Sequence[Any]) -> typing.Sequence[Any] | Node: ... class TokenRuleVisitor(RuleVisitor): - def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: list[Any]) -> TokenMatcher: ... - def visit_regex(self, node: Node, regex: list[Any]) -> NoReturn: ... + def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: typing.Sequence[Any]) -> TokenMatcher: ... + def visit_regex(self, node: Node, regex: typing.Sequence[Any]) -> NoReturn: ... rule_grammar: Grammar diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index fb39f0f6caa9..0c74c0366fa4 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -1,6 +1,5 @@ from re import Match -from typing import Any, Callable, Iterator, NoReturn, TypeVar -from typing_extensions import Self +from typing import Any, Callable, Iterator, NoReturn, Sequence, TypeVar from parsimonious.exceptions import UndefinedLabel as UndefinedLabel, VisitationError as VisitationError from parsimonious.expressions import Expression as Expression @@ -11,8 +10,8 @@ class Node: full_text: str start: int end: int - children: list[Node] - def __init__(self, expr: Expression, full_text: str, start: int, end: int, children: list[Node] | None = ...) -> None: ... + children: Sequence[Node] + def __init__(self, expr: Expression, full_text: str, start: int, end: int, children: Sequence[Node] | None = ...) -> None: ... @property def expr_name(self) -> str: ... def __iter__(self) -> Iterator[Node]: ... @@ -23,17 +22,16 @@ class Node: class RegexNode(Node): match: Match[str] -class RuleDecoratorMeta(type): - def __new__(metaclass: type[Self], name: str, bases: tuple[type, ...], namespace: dict[str, Any]) -> Self: ... +class RuleDecoratorMeta(type): ... class NodeVisitor(metaclass=RuleDecoratorMeta): grammar: Grammar | Any unwrapped_exceptions: tuple[type[Exception], ...] def visit(self, node: Node) -> Any: ... - def generic_visit(self, node: Node, visited_children: list[Any]) -> NoReturn: ... + def generic_visit(self, node: Node, visited_children: Sequence[Any]) -> NoReturn: ... def parse(self, text: str, pos: int = ...) -> Node: ... def match(self, text: str, pos: int = ...) -> Node: ... - def lift_child(self, node: Node, children: list[Any]) -> Any: ... + def lift_child(self, node: Node, children: Sequence[Any]) -> Any: ... _CallableT = TypeVar("_CallableT", bound=Callable[..., Any]) From 143cdc65d19e0e433a2ab9f47ea99a83585ba3e5 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 00:55:44 +0000 Subject: [PATCH 12/17] black/isort --- stubs/parsimonious/parsimonious/grammar.pyi | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index ebb1c7690c9d..42b05e0d8fe1 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -1,19 +1,9 @@ -from collections import OrderedDict import typing +from collections import OrderedDict from typing import Any, Callable, Mapping, NoReturn from typing_extensions import Self -from parsimonious.expressions import ( - _CALLABLE_TYPE, - Expression, - Literal, - Lookahead, - Not, - OneOf, - Regex, - Sequence, - TokenMatcher, -) +from parsimonious.expressions import _CALLABLE_TYPE, Expression, Literal, Lookahead, Not, OneOf, Regex, Sequence, TokenMatcher from parsimonious.nodes import Node, NodeVisitor class Grammar(OrderedDict[str, Expression]): @@ -38,7 +28,9 @@ class RuleVisitor(NodeVisitor): visit_atom: Callable[[Self, Node, typing.Sequence[Any]], Any] custom_rules: dict[str, Expression] def __init__(self, custom_rules: Mapping[str, Expression] | None = ...) -> None: ... - def visit_rules(self, node: Node, rules_list: typing.Sequence[Any]) -> tuple[OrderedDict[str, Expression], Expression | None]: ... + def visit_rules( + self, node: Node, rules_list: typing.Sequence[Any] + ) -> tuple[OrderedDict[str, Expression], Expression | None]: ... def visit_rule(self, node: Node, rule: typing.Sequence[Any]) -> Expression: ... def visit_label(self, node: Node, label: typing.Sequence[Any]) -> str: ... def visit_ored(self, node: Node, ored: typing.Sequence[Any]) -> OneOf: ... From fd2a9a91f02ab36bb50f3b9175205fee69e9b92d Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 01:06:01 +0000 Subject: [PATCH 13/17] Update allowlist for subclasses not matching superclass --- stubs/parsimonious/@tests/stubtest_allowlist.txt | 4 +++- stubs/parsimonious/parsimonious/grammar.pyi | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/stubs/parsimonious/@tests/stubtest_allowlist.txt b/stubs/parsimonious/@tests/stubtest_allowlist.txt index 0da166241c76..2c031dd35d8d 100644 --- a/stubs/parsimonious/@tests/stubtest_allowlist.txt +++ b/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -1 +1,3 @@ -parsimonious.nodes.RuleDecoratorMeta.__new__ +parsimonious.expressions.Grammar.generic_visit +parsimonious.expressions.Literal.identity_tuple +parsimonious.expressions.Regex.identity_tuple diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index 42b05e0d8fe1..04002e6a93d0 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -1,7 +1,6 @@ import typing from collections import OrderedDict from typing import Any, Callable, Mapping, NoReturn -from typing_extensions import Self from parsimonious.expressions import _CALLABLE_TYPE, Expression, Literal, Lookahead, Not, OneOf, Regex, Sequence, TokenMatcher from parsimonious.nodes import Node, NodeVisitor @@ -23,9 +22,9 @@ class LazyReference(str): class RuleVisitor(NodeVisitor): quantifier_classes: dict[str, type[Expression]] - visit_expression: Callable[[Self, Node, typing.Sequence[Any]], Any] - visit_term: Callable[[Self, Node, typing.Sequence[Any]], Any] - visit_atom: Callable[[Self, Node, typing.Sequence[Any]], Any] + visit_expression: Callable[[RuleVisitor, Node, typing.Sequence[Any]], Any] + visit_term: Callable[[RuleVisitor, Node, typing.Sequence[Any]], Any] + visit_atom: Callable[[RuleVisitor, Node, typing.Sequence[Any]], Any] custom_rules: dict[str, Expression] def __init__(self, custom_rules: Mapping[str, Expression] | None = ...) -> None: ... def visit_rules( From f93ad4d654b1ae0efbd07a1b755d9a0243b68284 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 01:18:28 +0000 Subject: [PATCH 14/17] allowlist typo --- stubs/parsimonious/@tests/stubtest_allowlist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/parsimonious/@tests/stubtest_allowlist.txt b/stubs/parsimonious/@tests/stubtest_allowlist.txt index 2c031dd35d8d..4c4796d61e53 100644 --- a/stubs/parsimonious/@tests/stubtest_allowlist.txt +++ b/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -1,3 +1,3 @@ -parsimonious.expressions.Grammar.generic_visit +parsimonious.grammar.Grammar.generic_visit parsimonious.expressions.Literal.identity_tuple parsimonious.expressions.Regex.identity_tuple From 1eb11dc428dfde9a9c03228bd67effd5e09e2732 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 01:40:57 +0000 Subject: [PATCH 15/17] Attempt to resolve mypy issues --- stubs/parsimonious/@tests/stubtest_allowlist.txt | 3 --- stubs/parsimonious/parsimonious/expressions.pyi | 14 +++++++------- stubs/parsimonious/parsimonious/grammar.pyi | 2 +- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/stubs/parsimonious/@tests/stubtest_allowlist.txt b/stubs/parsimonious/@tests/stubtest_allowlist.txt index 4c4796d61e53..e69de29bb2d1 100644 --- a/stubs/parsimonious/@tests/stubtest_allowlist.txt +++ b/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -1,3 +0,0 @@ -parsimonious.grammar.Grammar.generic_visit -parsimonious.expressions.Literal.identity_tuple -parsimonious.expressions.Regex.identity_tuple diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index 0c0280f8f6f1..3ecbed92d515 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -1,5 +1,5 @@ import typing -from typing import Any, Callable, Pattern +from typing import Any, Callable, Mapping, Pattern, Tuple, Union from parsimonious.exceptions import ParseError from parsimonious.grammar import Grammar @@ -10,12 +10,12 @@ MARKER: Any def is_callable(value: Any) -> bool: ... -_CALLABLE_RETURN_TYPE = int | tuple[int, list[Node]] | Node | None +_CALLABLE_RETURN_TYPE = Union[int, Tuple[int, list[Node]], Node, None] _CALLABLE_TYPE = ( Callable[[str, int], _CALLABLE_RETURN_TYPE] - | Callable[[str, int, dict[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] + | Callable[[str, int, Mapping[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] | Callable[[Any, str, int], _CALLABLE_RETURN_TYPE] - | Callable[[Any, str, int, dict[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] + | Callable[[Any, str, int, Mapping[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] ) def expression(callable: _CALLABLE_TYPE, rule_name: str, grammar: Grammar) -> Expression: ... @@ -26,19 +26,19 @@ class Expression(StrAndRepr): def __init__(self, name: str = ...) -> None: ... def parse(self, text: str, pos: int = ...) -> Node: ... def match(self, text: str, pos: int = ...) -> Node: ... - def match_core(self, text: str, pos: int, cache: dict[tuple[int, int], Node], error: ParseError) -> Node: ... + def match_core(self, text: str, pos: int, cache: Mapping[tuple[int, int], Node], error: ParseError) -> Node: ... def as_rule(self) -> str: ... class Literal(Expression): literal: str - identity_tuple: tuple[str, str] + identity_tuple: tuple[str, str] # type: ignore def __init__(self, literal: str, name: str = ...) -> None: ... class TokenMatcher(Literal): ... class Regex(Expression): re: Pattern[str] - identity_tuple: tuple[str, Pattern[str]] + identity_tuple: tuple[str, Pattern[str]] # type: ignore def __init__( self, pattern: str, diff --git a/stubs/parsimonious/parsimonious/grammar.pyi b/stubs/parsimonious/parsimonious/grammar.pyi index 04002e6a93d0..78d21b2d6e93 100644 --- a/stubs/parsimonious/parsimonious/grammar.pyi +++ b/stubs/parsimonious/parsimonious/grammar.pyi @@ -44,7 +44,7 @@ class RuleVisitor(NodeVisitor): def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: typing.Sequence[Any]) -> Literal: ... def visit_regex(self, node: Node, regex: typing.Sequence[Any]) -> Regex: ... def visit_parenthesized(self, node: Node, parenthesized: typing.Sequence[Any]) -> Expression: ... - def generic_visit(self, node: Node, visited_children: typing.Sequence[Any]) -> typing.Sequence[Any] | Node: ... + def generic_visit(self, node: Node, visited_children: typing.Sequence[Any]) -> typing.Sequence[Any] | Node: ... # type: ignore class TokenRuleVisitor(RuleVisitor): def visit_spaceless_literal(self, spaceless_literal: Node, visited_children: typing.Sequence[Any]) -> TokenMatcher: ... From 1abb62067e277df14e49b55caf09a7328cd220b4 Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 01:57:33 +0000 Subject: [PATCH 16/17] Address stubtest issues --- stubs/parsimonious/@tests/stubtest_allowlist.txt | 2 ++ stubs/parsimonious/parsimonious/expressions.pyi | 9 ++------- stubs/parsimonious/parsimonious/nodes.pyi | 5 ++--- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/stubs/parsimonious/@tests/stubtest_allowlist.txt b/stubs/parsimonious/@tests/stubtest_allowlist.txt index e69de29bb2d1..ce8bec20df65 100644 --- a/stubs/parsimonious/@tests/stubtest_allowlist.txt +++ b/stubs/parsimonious/@tests/stubtest_allowlist.txt @@ -0,0 +1,2 @@ +parsimonious.nodes.Node.__repr__ +parsimonious.nodes.RuleDecoratorMeta.__new__ diff --git a/stubs/parsimonious/parsimonious/expressions.pyi b/stubs/parsimonious/parsimonious/expressions.pyi index 3ecbed92d515..577f7e1113e0 100644 --- a/stubs/parsimonious/parsimonious/expressions.pyi +++ b/stubs/parsimonious/parsimonious/expressions.pyi @@ -1,5 +1,5 @@ import typing -from typing import Any, Callable, Mapping, Pattern, Tuple, Union +from typing import Any, Callable, Mapping, Pattern, Union from parsimonious.exceptions import ParseError from parsimonious.grammar import Grammar @@ -8,14 +8,10 @@ from parsimonious.utils import StrAndRepr MARKER: Any -def is_callable(value: Any) -> bool: ... - -_CALLABLE_RETURN_TYPE = Union[int, Tuple[int, list[Node]], Node, None] +_CALLABLE_RETURN_TYPE = Union[int, tuple[int, list[Node]], Node, None] _CALLABLE_TYPE = ( Callable[[str, int], _CALLABLE_RETURN_TYPE] | Callable[[str, int, Mapping[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] - | Callable[[Any, str, int], _CALLABLE_RETURN_TYPE] - | Callable[[Any, str, int, Mapping[tuple[int, int], Node], ParseError, Grammar], _CALLABLE_RETURN_TYPE] ) def expression(callable: _CALLABLE_TYPE, rule_name: str, grammar: Grammar) -> Expression: ... @@ -49,7 +45,6 @@ class Regex(Expression): dot_all: bool = ..., unicode: bool = ..., verbose: bool = ..., - ascii: bool = ..., ) -> None: ... class Compound(Expression): diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 0c74c0366fa4..0092aa05aaaf 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -1,9 +1,8 @@ from re import Match from typing import Any, Callable, Iterator, NoReturn, Sequence, TypeVar -from parsimonious.exceptions import UndefinedLabel as UndefinedLabel, VisitationError as VisitationError -from parsimonious.expressions import Expression as Expression -from parsimonious.grammar import Grammar as Grammar +from parsimonious.expressions import Expression +from parsimonious.grammar import Grammar class Node: expr: Expression From 5603db2bf0df2b4d407aa5bfdb4cc3bacf468d1d Mon Sep 17 00:00:00 2001 From: jpy-git Date: Sun, 13 Mar 2022 02:02:08 +0000 Subject: [PATCH 17/17] VisitationError --- stubs/parsimonious/parsimonious/nodes.pyi | 1 + 1 file changed, 1 insertion(+) diff --git a/stubs/parsimonious/parsimonious/nodes.pyi b/stubs/parsimonious/parsimonious/nodes.pyi index 0092aa05aaaf..841b04c4ba21 100644 --- a/stubs/parsimonious/parsimonious/nodes.pyi +++ b/stubs/parsimonious/parsimonious/nodes.pyi @@ -1,6 +1,7 @@ from re import Match from typing import Any, Callable, Iterator, NoReturn, Sequence, TypeVar +from parsimonious.exceptions import VisitationError as VisitationError from parsimonious.expressions import Expression from parsimonious.grammar import Grammar