From 19906a8d39918ab3ed46092b929b11c3dd913306 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Wed, 14 Jul 2021 15:44:21 +0100 Subject: [PATCH 1/6] Add stubs for jmespath --- pyrightconfig.stricter.json | 1 + stubs/jmespath/METADATA.toml | 1 + stubs/jmespath/jmespath/__init__.pyi | 8 ++++ stubs/jmespath/jmespath/ast.pyi | 22 +++++++++++ stubs/jmespath/jmespath/compat.pyi | 13 +++++++ stubs/jmespath/jmespath/exceptions.pyi | 47 ++++++++++++++++++++++++ stubs/jmespath/jmespath/functions.pyi | 15 ++++++++ stubs/jmespath/jmespath/lexer.pyi | 10 +++++ stubs/jmespath/jmespath/parser.pyi | 17 +++++++++ stubs/jmespath/jmespath/visitor.pyi | 51 ++++++++++++++++++++++++++ 10 files changed, 185 insertions(+) create mode 100644 stubs/jmespath/METADATA.toml create mode 100644 stubs/jmespath/jmespath/__init__.pyi create mode 100644 stubs/jmespath/jmespath/ast.pyi create mode 100644 stubs/jmespath/jmespath/compat.pyi create mode 100644 stubs/jmespath/jmespath/exceptions.pyi create mode 100644 stubs/jmespath/jmespath/functions.pyi create mode 100644 stubs/jmespath/jmespath/lexer.pyi create mode 100644 stubs/jmespath/jmespath/parser.pyi create mode 100644 stubs/jmespath/jmespath/visitor.pyi diff --git a/pyrightconfig.stricter.json b/pyrightconfig.stricter.json index b3d95ae0ca5e..656e393b137f 100644 --- a/pyrightconfig.stricter.json +++ b/pyrightconfig.stricter.json @@ -38,6 +38,7 @@ "stubs/html5lib", "stubs/httplib2", "stubs/Jinja2", + "stubs/jmespath", "stubs/Markdown", "stubs/oauthlib", "stubs/Pillow", diff --git a/stubs/jmespath/METADATA.toml b/stubs/jmespath/METADATA.toml new file mode 100644 index 000000000000..3d8655e7d6a3 --- /dev/null +++ b/stubs/jmespath/METADATA.toml @@ -0,0 +1 @@ +version = "0.10" diff --git a/stubs/jmespath/jmespath/__init__.pyi b/stubs/jmespath/jmespath/__init__.pyi new file mode 100644 index 000000000000..6bf4ec9877e5 --- /dev/null +++ b/stubs/jmespath/jmespath/__init__.pyi @@ -0,0 +1,8 @@ +from jmespath import parser as parser +from jmespath.visitor import Options as Options +from typing import Any + +python_ver: Any + +def compile(expression): ... +def search(expression, data, options: Any | None = ...): ... diff --git a/stubs/jmespath/jmespath/ast.pyi b/stubs/jmespath/jmespath/ast.pyi new file mode 100644 index 000000000000..77cc988f9265 --- /dev/null +++ b/stubs/jmespath/jmespath/ast.pyi @@ -0,0 +1,22 @@ +def comparator(name, first, second): ... +def current_node(): ... +def expref(expression): ... +def function_expression(name, args): ... +def field(name): ... +def filter_projection(left, right, comparator): ... +def flatten(node): ... +def identity(): ... +def index(index): ... +def index_expression(children): ... +def key_val_pair(key_name, node): ... +def literal(literal_value): ... +def multi_select_dict(nodes): ... +def multi_select_list(nodes): ... +def or_expression(left, right): ... +def and_expression(left, right): ... +def not_expression(expr): ... +def pipe(left, right): ... +def projection(left, right): ... +def subexpression(children): ... +def slice(start, end, step): ... +def value_projection(left, right): ... diff --git a/stubs/jmespath/jmespath/compat.pyi b/stubs/jmespath/jmespath/compat.pyi new file mode 100644 index 000000000000..178c389d9030 --- /dev/null +++ b/stubs/jmespath/jmespath/compat.pyi @@ -0,0 +1,13 @@ +from itertools import zip_longest as zip_longest +from typing import Any + +PY2: Any + +def with_metaclass(meta, *bases): ... + +text_type = str +string_type = str + +def with_str_method(cls): ... +def with_repr_method(cls): ... +def get_methods(cls) -> None: ... diff --git a/stubs/jmespath/jmespath/exceptions.pyi b/stubs/jmespath/jmespath/exceptions.pyi new file mode 100644 index 000000000000..5808db9c6496 --- /dev/null +++ b/stubs/jmespath/jmespath/exceptions.pyi @@ -0,0 +1,47 @@ +from jmespath.compat import with_str_method as with_str_method +from typing import Any + +class JMESPathError(ValueError): ... + +class ParseError(JMESPathError): + lex_position: Any + token_value: Any + token_type: Any + msg: Any + expression: Any + def __init__(self, lex_position, token_value, token_type, msg=...) -> None: ... + +class IncompleteExpressionError(ParseError): + expression: Any + lex_position: Any + token_type: Any + token_value: Any + def set_expression(self, expression) -> None: ... + +class LexerError(ParseError): + lexer_position: Any + lexer_value: Any + message: Any + expression: Any + def __init__(self, lexer_position, lexer_value, message, expression: Any | None = ...) -> None: ... + +class ArityError(ParseError): + expected_arity: Any + actual_arity: Any + function_name: Any + expression: Any + def __init__(self, expected, actual, name) -> None: ... + +class VariadictArityError(ArityError): ... + +class JMESPathTypeError(JMESPathError): + function_name: Any + current_value: Any + actual_type: Any + expected_types: Any + def __init__(self, function_name, current_value, actual_type, expected_types) -> None: ... + +class EmptyExpressionError(JMESPathError): + def __init__(self) -> None: ... + +class UnknownFunctionError(JMESPathError): ... diff --git a/stubs/jmespath/jmespath/functions.pyi b/stubs/jmespath/jmespath/functions.pyi new file mode 100644 index 000000000000..1b4bfd0d8f2d --- /dev/null +++ b/stubs/jmespath/jmespath/functions.pyi @@ -0,0 +1,15 @@ +from jmespath import exceptions as exceptions +from jmespath.compat import get_methods as get_methods, with_metaclass as with_metaclass +from typing import Any + +TYPES_MAP: Any +REVERSE_TYPES_MAP: Any + +def signature(*arguments): ... + +class FunctionRegistry(type): + def __init__(cls, name, bases, attrs) -> None: ... + +class Functions: + FUNCTION_TABLE: Any + def call_function(self, function_name, resolved_args): ... diff --git a/stubs/jmespath/jmespath/lexer.pyi b/stubs/jmespath/jmespath/lexer.pyi new file mode 100644 index 000000000000..e7b57e5a8e18 --- /dev/null +++ b/stubs/jmespath/jmespath/lexer.pyi @@ -0,0 +1,10 @@ +from jmespath.exceptions import EmptyExpressionError as EmptyExpressionError, LexerError as LexerError +from typing import Any + +class Lexer: + START_IDENTIFIER: Any + VALID_IDENTIFIER: Any + VALID_NUMBER: Any + WHITESPACE: Any + SIMPLE_TOKENS: Any + def tokenize(self, expression) -> None: ... diff --git a/stubs/jmespath/jmespath/parser.pyi b/stubs/jmespath/jmespath/parser.pyi new file mode 100644 index 000000000000..427f3bd4db20 --- /dev/null +++ b/stubs/jmespath/jmespath/parser.pyi @@ -0,0 +1,17 @@ +from jmespath import ast as ast, exceptions as exceptions, lexer as lexer, visitor as visitor +from jmespath.compat import with_repr_method as with_repr_method +from typing import Any + +class Parser: + BINDING_POWER: Any + tokenizer: Any + def __init__(self, lookahead: int = ...) -> None: ... + def parse(self, expression): ... + @classmethod + def purge(cls) -> None: ... + +class ParsedResult: + expression: Any + parsed: Any + def __init__(self, expression, parsed) -> None: ... + def search(self, value, options: Any | None = ...): ... diff --git a/stubs/jmespath/jmespath/visitor.pyi b/stubs/jmespath/jmespath/visitor.pyi new file mode 100644 index 000000000000..f4d829b97c6d --- /dev/null +++ b/stubs/jmespath/jmespath/visitor.pyi @@ -0,0 +1,51 @@ +from jmespath import functions as functions +from jmespath.compat import string_type as string_type +from typing import Any + +class Options: + dict_cls: Any + custom_functions: Any + def __init__(self, dict_cls: Any | None = ..., custom_functions: Any | None = ...) -> None: ... + +class _Expression: + expression: Any + interpreter: Any + def __init__(self, expression, interpreter) -> None: ... + def visit(self, node, *args, **kwargs): ... + +class Visitor: + def __init__(self) -> None: ... + def visit(self, node, *args, **kwargs): ... + def default_visit(self, node, *args, **kwargs) -> None: ... + +class TreeInterpreter(Visitor): + COMPARATOR_FUNC: Any + MAP_TYPE: Any + def __init__(self, options: Any | None = ...) -> None: ... + def default_visit(self, node, *args, **kwargs) -> None: ... + def visit_subexpression(self, node, value): ... + def visit_field(self, node, value): ... + def visit_comparator(self, node, value): ... + def visit_current(self, node, value): ... + def visit_expref(self, node, value): ... + def visit_function_expression(self, node, value): ... + def visit_filter_projection(self, node, value): ... + def visit_flatten(self, node, value): ... + def visit_identity(self, node, value): ... + def visit_index(self, node, value): ... + def visit_index_expression(self, node, value): ... + def visit_slice(self, node, value): ... + def visit_key_val_pair(self, node, value): ... + def visit_literal(self, node, value): ... + def visit_multi_select_dict(self, node, value): ... + def visit_multi_select_list(self, node, value): ... + def visit_or_expression(self, node, value): ... + def visit_and_expression(self, node, value): ... + def visit_not_expression(self, node, value): ... + def visit_pipe(self, node, value): ... + def visit_projection(self, node, value): ... + def visit_value_projection(self, node, value): ... + +class GraphvizVisitor(Visitor): + def __init__(self) -> None: ... + def visit(self, node, *args, **kwargs): ... From 4b4f00d9f35d437d02e91d4a52085e1cfd388fa8 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Wed, 14 Jul 2021 15:45:59 +0100 Subject: [PATCH 2/6] Fix issue reported by stubtest --- stubs/jmespath/jmespath/__init__.pyi | 2 -- 1 file changed, 2 deletions(-) diff --git a/stubs/jmespath/jmespath/__init__.pyi b/stubs/jmespath/jmespath/__init__.pyi index 6bf4ec9877e5..1e0b8b11fabd 100644 --- a/stubs/jmespath/jmespath/__init__.pyi +++ b/stubs/jmespath/jmespath/__init__.pyi @@ -2,7 +2,5 @@ from jmespath import parser as parser from jmespath.visitor import Options as Options from typing import Any -python_ver: Any - def compile(expression): ... def search(expression, data, options: Any | None = ...): ... From fa7b5662e37c33a92a51595252cf56317b1e1237 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Wed, 14 Jul 2021 15:49:02 +0100 Subject: [PATCH 3/6] Clean up imports --- stubs/jmespath/jmespath/compat.pyi | 13 ------------- stubs/jmespath/jmespath/exceptions.pyi | 1 - stubs/jmespath/jmespath/functions.pyi | 2 -- stubs/jmespath/jmespath/parser.pyi | 2 -- stubs/jmespath/jmespath/visitor.pyi | 2 -- 5 files changed, 20 deletions(-) diff --git a/stubs/jmespath/jmespath/compat.pyi b/stubs/jmespath/jmespath/compat.pyi index 178c389d9030..e69de29bb2d1 100644 --- a/stubs/jmespath/jmespath/compat.pyi +++ b/stubs/jmespath/jmespath/compat.pyi @@ -1,13 +0,0 @@ -from itertools import zip_longest as zip_longest -from typing import Any - -PY2: Any - -def with_metaclass(meta, *bases): ... - -text_type = str -string_type = str - -def with_str_method(cls): ... -def with_repr_method(cls): ... -def get_methods(cls) -> None: ... diff --git a/stubs/jmespath/jmespath/exceptions.pyi b/stubs/jmespath/jmespath/exceptions.pyi index 5808db9c6496..8bbb095c24ec 100644 --- a/stubs/jmespath/jmespath/exceptions.pyi +++ b/stubs/jmespath/jmespath/exceptions.pyi @@ -1,4 +1,3 @@ -from jmespath.compat import with_str_method as with_str_method from typing import Any class JMESPathError(ValueError): ... diff --git a/stubs/jmespath/jmespath/functions.pyi b/stubs/jmespath/jmespath/functions.pyi index 1b4bfd0d8f2d..b64e9ec2891e 100644 --- a/stubs/jmespath/jmespath/functions.pyi +++ b/stubs/jmespath/jmespath/functions.pyi @@ -1,5 +1,3 @@ -from jmespath import exceptions as exceptions -from jmespath.compat import get_methods as get_methods, with_metaclass as with_metaclass from typing import Any TYPES_MAP: Any diff --git a/stubs/jmespath/jmespath/parser.pyi b/stubs/jmespath/jmespath/parser.pyi index 427f3bd4db20..4e5499e6760e 100644 --- a/stubs/jmespath/jmespath/parser.pyi +++ b/stubs/jmespath/jmespath/parser.pyi @@ -1,5 +1,3 @@ -from jmespath import ast as ast, exceptions as exceptions, lexer as lexer, visitor as visitor -from jmespath.compat import with_repr_method as with_repr_method from typing import Any class Parser: diff --git a/stubs/jmespath/jmespath/visitor.pyi b/stubs/jmespath/jmespath/visitor.pyi index f4d829b97c6d..99e86bc907de 100644 --- a/stubs/jmespath/jmespath/visitor.pyi +++ b/stubs/jmespath/jmespath/visitor.pyi @@ -1,5 +1,3 @@ -from jmespath import functions as functions -from jmespath.compat import string_type as string_type from typing import Any class Options: From 8c4863c20bd0e517670e9e5e4196805ae2742ecc Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Wed, 14 Jul 2021 15:49:24 +0100 Subject: [PATCH 4/6] Remove jmespath.compat since it's internal only --- stubs/jmespath/jmespath/compat.pyi | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 stubs/jmespath/jmespath/compat.pyi diff --git a/stubs/jmespath/jmespath/compat.pyi b/stubs/jmespath/jmespath/compat.pyi deleted file mode 100644 index e69de29bb2d1..000000000000 From 125d27a6dab720d31373e901d3594b1324e1fd5f Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Thu, 15 Jul 2021 11:45:11 +0100 Subject: [PATCH 5/6] Run isort --- stubs/jmespath/jmespath/__init__.pyi | 3 ++- stubs/jmespath/jmespath/lexer.pyi | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/stubs/jmespath/jmespath/__init__.pyi b/stubs/jmespath/jmespath/__init__.pyi index 1e0b8b11fabd..4f40ec73e3f1 100644 --- a/stubs/jmespath/jmespath/__init__.pyi +++ b/stubs/jmespath/jmespath/__init__.pyi @@ -1,6 +1,7 @@ +from typing import Any + from jmespath import parser as parser from jmespath.visitor import Options as Options -from typing import Any def compile(expression): ... def search(expression, data, options: Any | None = ...): ... diff --git a/stubs/jmespath/jmespath/lexer.pyi b/stubs/jmespath/jmespath/lexer.pyi index e7b57e5a8e18..7e8a4023799e 100644 --- a/stubs/jmespath/jmespath/lexer.pyi +++ b/stubs/jmespath/jmespath/lexer.pyi @@ -1,6 +1,8 @@ -from jmespath.exceptions import EmptyExpressionError as EmptyExpressionError, LexerError as LexerError from typing import Any +from jmespath.exceptions import EmptyExpressionError as EmptyExpressionError +from jmespath.exceptions import LexerError as LexerError + class Lexer: START_IDENTIFIER: Any VALID_IDENTIFIER: Any From cc2671f4c75792ee731ee3e3d3298ac5c103b6c3 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Thu, 15 Jul 2021 12:15:41 +0100 Subject: [PATCH 6/6] Properly run isort --- stubs/jmespath/jmespath/lexer.pyi | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stubs/jmespath/jmespath/lexer.pyi b/stubs/jmespath/jmespath/lexer.pyi index 7e8a4023799e..70696ca8c679 100644 --- a/stubs/jmespath/jmespath/lexer.pyi +++ b/stubs/jmespath/jmespath/lexer.pyi @@ -1,7 +1,6 @@ from typing import Any -from jmespath.exceptions import EmptyExpressionError as EmptyExpressionError -from jmespath.exceptions import LexerError as LexerError +from jmespath.exceptions import EmptyExpressionError as EmptyExpressionError, LexerError as LexerError class Lexer: START_IDENTIFIER: Any