mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-16 00:37:10 +08:00
Stubs for parsimonious (#7477)
This commit is contained in:
2
stubs/parsimonious/@tests/stubtest_allowlist.txt
Normal file
2
stubs/parsimonious/@tests/stubtest_allowlist.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
parsimonious.nodes.Node.__repr__
|
||||
parsimonious.nodes.RuleDecoratorMeta.__new__
|
||||
1
stubs/parsimonious/METADATA.toml
Normal file
1
stubs/parsimonious/METADATA.toml
Normal file
@@ -0,0 +1 @@
|
||||
version = "0.8.*"
|
||||
8
stubs/parsimonious/parsimonious/__init__.pyi
Normal file
8
stubs/parsimonious/parsimonious/__init__.pyi
Normal file
@@ -0,0 +1,8 @@
|
||||
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, VisitationError as VisitationError, rule as rule
|
||||
24
stubs/parsimonious/parsimonious/exceptions.pyi
Normal file
24
stubs/parsimonious/parsimonious/exceptions.pyi
Normal file
@@ -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: ...
|
||||
63
stubs/parsimonious/parsimonious/expressions.pyi
Normal file
63
stubs/parsimonious/parsimonious/expressions.pyi
Normal file
@@ -0,0 +1,63 @@
|
||||
import typing
|
||||
from typing import Any, Callable, Mapping, Pattern, Union
|
||||
|
||||
from parsimonious.exceptions import ParseError
|
||||
from parsimonious.grammar import Grammar
|
||||
from parsimonious.nodes import Node
|
||||
from parsimonious.utils import StrAndRepr
|
||||
|
||||
MARKER: Any
|
||||
|
||||
_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]
|
||||
)
|
||||
|
||||
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: Mapping[tuple[int, int], Node], error: ParseError) -> Node: ...
|
||||
def as_rule(self) -> str: ...
|
||||
|
||||
class Literal(Expression):
|
||||
literal: 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]] # type: ignore
|
||||
def __init__(
|
||||
self,
|
||||
pattern: str,
|
||||
name: str = ...,
|
||||
ignore_case: bool = ...,
|
||||
locale: bool = ...,
|
||||
multiline: bool = ...,
|
||||
dot_all: bool = ...,
|
||||
unicode: bool = ...,
|
||||
verbose: bool = ...,
|
||||
) -> None: ...
|
||||
|
||||
class Compound(Expression):
|
||||
members: typing.Sequence[Expression]
|
||||
def __init__(self, *members: 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: ...
|
||||
53
stubs/parsimonious/parsimonious/grammar.pyi
Normal file
53
stubs/parsimonious/parsimonious/grammar.pyi
Normal file
@@ -0,0 +1,53 @@
|
||||
import typing
|
||||
from collections import OrderedDict
|
||||
from typing import Any, Callable, Mapping, NoReturn
|
||||
|
||||
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]):
|
||||
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(str):
|
||||
name: str
|
||||
|
||||
class RuleVisitor(NodeVisitor):
|
||||
quantifier_classes: dict[str, type[Expression]]
|
||||
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(
|
||||
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: ... # type: ignore
|
||||
|
||||
class TokenRuleVisitor(RuleVisitor):
|
||||
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
|
||||
38
stubs/parsimonious/parsimonious/nodes.pyi
Normal file
38
stubs/parsimonious/parsimonious/nodes.pyi
Normal file
@@ -0,0 +1,38 @@
|
||||
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
|
||||
|
||||
class Node:
|
||||
expr: Expression
|
||||
full_text: str
|
||||
start: int
|
||||
end: int
|
||||
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]: ...
|
||||
@property
|
||||
def text(self) -> str: ...
|
||||
def prettily(self, error: Node | None = ...) -> str: ...
|
||||
|
||||
class RegexNode(Node):
|
||||
match: Match[str]
|
||||
|
||||
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: 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: Sequence[Any]) -> Any: ...
|
||||
|
||||
_CallableT = TypeVar("_CallableT", bound=Callable[..., Any])
|
||||
|
||||
def rule(rule_string: str) -> Callable[[_CallableT], _CallableT]: ...
|
||||
10
stubs/parsimonious/parsimonious/utils.pyi
Normal file
10
stubs/parsimonious/parsimonious/utils.pyi
Normal file
@@ -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: ...
|
||||
Reference in New Issue
Block a user