graphql-core 3.3.0b0__tar.gz → 3.3.0b2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/.bumpversion.cfg +1 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/PKG-INFO +3 -3
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/README.md +2 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/conf.py +2 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/execution.rst +6 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/language.rst +1 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/utilities.rst +1 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/pyproject.toml +2 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/__init__.py +18 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/error/graphql_error.py +49 -12
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/__init__.py +11 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/execute.py +64 -58
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/values.py +5 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/__init__.py +2 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/ast.py +19 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/directive_locations.py +2 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/parser.py +57 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/predicates.py +5 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/printer.py +6 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/directives.py +14 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/introspection.py +37 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/__init__.py +2 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/build_ast_schema.py +4 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/build_client_schema.py +1 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/extend_schema.py +55 -3
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/find_schema_changes.py +1 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/get_introspection_query.py +31 -39
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/introspection_from_schema.py +2 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/print_schema.py +1 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/known_directives.py +2 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_directives_per_location.py +7 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/version.py +2 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/error/test_graphql_error.py +81 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_subscribe.py +12 -4
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_predicates.py +2 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_printer.py +16 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_schema_parser.py +24 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_directives.py +12 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_introspection.py +183 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_build_ast_schema.py +15 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_build_client_schema.py +25 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_extend_schema.py +105 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_get_introspection_query.py +38 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_introspection_from_schema.py +33 -1
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_print_schema.py +22 -2
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_known_directives.py +10 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_directives_per_location.py +85 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/.editorconfig +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/.readthedocs.yaml +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/CODEOWNERS +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/LICENSE +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/SECURITY.md +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/Makefile +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/diffs.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/index.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/intro.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/make.bat +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/error.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/graphql.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/pyutils.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/type.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/modules/validation.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/extension.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/index.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/introspection.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/methods.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/other.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/parser.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/queries.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/resolvers.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/schema.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/sdl.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/docs/usage/validator.rst +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/error/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/error/located_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/error/syntax_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/aborted_graphql_execution_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/async_iterables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/build_execution_plan.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/collect_fields.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/get_variable_signature.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/incremental_graph.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/incremental_publisher.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/middleware.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/execution/types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/graphql.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/harness.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/block_string.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/character_classes.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/lexer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/location.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/print_location.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/print_string.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/schema_coordinate_lexer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/source.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/token_kind.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/language/visitor.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/py.typed +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/abort_signal.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/async_reduce.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/awaitable_or_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/boxed_awaitable_or_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/cached_property.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/convert_case.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/description.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/did_you_mean.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/format_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/frozen_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/gather_with_cancel.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/group_by.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/identity_func.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/inspect.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/is_awaitable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/is_iterable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/merge_kwargs.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/natural_compare.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/path.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/print_path_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/ref_map.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/ref_set.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/simple_pub_sub.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/suggestion_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/pyutils/undefined.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/assert_name.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/definition.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/scalars.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/type/validate.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/ast_from_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/ast_to_dict.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/coerce_input_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/concat_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/get_default_value_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/get_operation_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/lexicographic_sort_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/map_schema_config.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/replace_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/resolve_schema_coordinate.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/separate_operations.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/sort_value_node.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/strip_ignored_characters.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/type_comparators.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/type_from_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/type_info.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/validate_input_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/value_from_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/value_from_ast_untyped.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/utilities/value_to_literal.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/custom/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/custom/no_deprecated.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/custom/no_schema_introspection.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/defer_stream_directive_label.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/defer_stream_directive_on_root_field.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/defer_stream_directive_on_valid_operations_rule.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/executable_definitions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/fields_on_correct_type.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/fragments_on_composite_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/known_argument_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/known_fragment_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/known_operation_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/known_type_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/lone_anonymous_operation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/lone_schema_definition.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/max_introspection_depth_rule.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/no_fragment_cycles.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/no_undefined_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/no_unused_fragments.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/no_unused_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/possible_fragment_spreads.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/possible_type_extensions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/provided_required_arguments.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/scalar_leafs.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/single_field_subscriptions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/stream_directive_on_list_field.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_argument_definition_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_argument_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_directive_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_enum_value_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_field_definition_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_fragment_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_input_field_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_operation_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_operation_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_type_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/unique_variable_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/values_of_correct_type.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/variables_are_input_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/rules/variables_in_allowed_position.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/specified_rules.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/validate.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/src/graphql/validation/validation_context.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_async_iterable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_build_ast_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_build_client_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_execution_async.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_execution_sync.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_graphql_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_introspection_from_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_parser.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_print.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_repeated_fields.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_serialization.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_validate_gql.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_validate_sdl.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/benchmarks/test_visit.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/conftest.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/error/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/error/test_located_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/error/test_print_location.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_aborted_graphql_execution_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_abstract.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_cancellation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_collect_fields.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_customize.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_defer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_directives.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_error_propagation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_execution_result.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_executor.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_hooks.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_lists.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_map_async_iterable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_middleware.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_mutations.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_nonnull.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_oneof.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_parallel.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_resolve.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_stream.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_sync.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_union_interface.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/execution/test_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/github_schema.graphql +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/github_schema.json +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/kitchen_sink.graphql +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/large_query.graphql +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/fixtures/schema_kitchen_sink.graphql +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_block_string.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_block_string_fuzz.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_character_classes.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_lexer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_location.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_parser.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_print_string.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_schema_coordinate_lexer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_schema_printer.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_source.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/language/test_visitor.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_async_reduce.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_boxed_awaitabe_or_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_cached_property.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_convert_case.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_description.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_did_you_mean.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_format_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_frozen_error.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_gather_with_cancel.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_group_by.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_identity_func.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_inspect.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_is_awaitable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_is_iterable.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_merge_kwargs.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_natural_compare.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_path.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_print_path_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_ref_map.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_ref_set.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_simple_pub_sub.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_suggestion_list.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/pyutils/test_undefined.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/star_wars_data.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/star_wars_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_docs.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_graphql.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_star_wars_introspection.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_star_wars_query.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_star_wars_validation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_user_registry.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/test_version.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_assert_name.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_custom_scalars.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_definition.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_enum.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_extensions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_predicate.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_scalars.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/type/test_validation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_ast_from_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_ast_to_dict.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_coerce_input_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_concat_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_find_breaking_changes.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_find_schema_changes.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_get_operation_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_map_schema_config.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_replace_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_resolve_schema_coordinate.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_separate_operations.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_sort_value_node.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_strip_ignored_characters.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_strip_ignored_characters_fuzz.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_type_comparators.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_type_from_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_type_info.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_validate_input_value.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_value_from_ast.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_value_from_ast_untyped.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utilities/test_value_to_literal.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/assert_equal_awaitables_or_values.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/assert_matching_values.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/dedent.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/gen_fuzz_strings.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/test_assert_equal_awaitables_or_values.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/test_assert_matching_values.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/test_dedent.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/test_gen_fuzz_strings.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/viral_schema.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/utils/viral_sdl.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/__init__.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/harness.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_defer_stream_directive_label.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_defer_stream_directive_on_root_field.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_defer_stream_directive_on_valid_operations.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_executable_definitions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_fields_on_correct_type.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_fragments_on_composite_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_known_argument_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_known_fragment_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_known_operation_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_known_type_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_lone_anonymous_operation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_lone_schema_definition.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_max_introspection_depth_rule.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_deprecated.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_fragment_cycles.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_schema_introspection.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_undefined_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_unused_fragments.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_no_unused_variables.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_overlapping_fields_can_be_merged.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_possible_fragment_spreads.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_possible_type_extensions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_provided_required_arguments.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_scalar_leafs.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_single_field_subscriptions.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_stream_directive_on_list_field.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_argument_definition_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_argument_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_directive_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_enum_value_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_field_definition_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_fragment_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_input_field_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_operation_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_operation_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_type_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_unique_variable_names.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_validation.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_values_of_correct_type.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_variables_are_input_types.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tests/validation/test_variables_in_allowed_position.py +0 -0
- {graphql_core-3.3.0b0 → graphql_core-3.3.0b2}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphql-core
|
|
3
|
-
Version: 3.3.
|
|
3
|
+
Version: 3.3.0b2
|
|
4
4
|
Summary: GraphQL-core is a Python port of GraphQL.js, the JavaScript reference implementation for GraphQL.
|
|
5
5
|
Keywords: graphql
|
|
6
6
|
Author: Christoph Zwerschke
|
|
@@ -42,8 +42,8 @@ with GraphQL.js.
|
|
|
42
42
|
The current stable version 3.2.11 of GraphQL-core is up-to-date with GraphQL.js
|
|
43
43
|
version 16.14.1 and supports Python versions 3.7 to 3.14.
|
|
44
44
|
|
|
45
|
-
You can also try out the latest beta version 3.3.
|
|
46
|
-
which is up-to-date with GraphQL.js version 17.0.
|
|
45
|
+
You can also try out the latest beta version 3.3.0b2 of GraphQL-core,
|
|
46
|
+
which is up-to-date with GraphQL.js version 17.0.0b2.
|
|
47
47
|
This new minor version of GraphQL-core also supports Python versions 3.10 to 3.14.
|
|
48
48
|
|
|
49
49
|
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
@@ -18,8 +18,8 @@ with GraphQL.js.
|
|
|
18
18
|
The current stable version 3.2.11 of GraphQL-core is up-to-date with GraphQL.js
|
|
19
19
|
version 16.14.1 and supports Python versions 3.7 to 3.14.
|
|
20
20
|
|
|
21
|
-
You can also try out the latest beta version 3.3.
|
|
22
|
-
which is up-to-date with GraphQL.js version 17.0.
|
|
21
|
+
You can also try out the latest beta version 3.3.0b2 of GraphQL-core,
|
|
22
|
+
which is up-to-date with GraphQL.js version 17.0.0b2.
|
|
23
23
|
This new minor version of GraphQL-core also supports Python versions 3.10 to 3.14.
|
|
24
24
|
|
|
25
25
|
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
@@ -52,7 +52,7 @@ author = "Christoph Zwerschke"
|
|
|
52
52
|
# The short X.Y version.
|
|
53
53
|
# version = '3.3'
|
|
54
54
|
# The full version, including alpha/beta/rc tags.
|
|
55
|
-
version = release = "3.3.
|
|
55
|
+
version = release = "3.3.0b2"
|
|
56
56
|
|
|
57
57
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
58
58
|
# for a list of supported languages.
|
|
@@ -100,7 +100,7 @@ graphql_modules = {
|
|
|
100
100
|
# be nitpicky
|
|
101
101
|
nitpicky = True
|
|
102
102
|
# but not too nitpicky
|
|
103
|
-
suppress_warnings = ["ref.class", "ref.obj", "ref.python"]
|
|
103
|
+
suppress_warnings = ["ref.attr", "ref.class", "ref.obj", "ref.python"]
|
|
104
104
|
|
|
105
105
|
# The name of the Pygments (syntax highlighting) style to use.
|
|
106
106
|
pygments_style = "sphinx"
|
|
@@ -65,6 +65,10 @@ Execution
|
|
|
65
65
|
|
|
66
66
|
.. autofunction:: create_source_event_stream
|
|
67
67
|
|
|
68
|
+
.. autofunction:: map_source_to_response_event
|
|
69
|
+
|
|
70
|
+
.. autoclass:: RootSelectionSetExecutor
|
|
71
|
+
|
|
68
72
|
.. autoclass:: Middleware
|
|
69
73
|
|
|
70
74
|
.. autoclass:: MiddlewareManager
|
|
@@ -72,3 +76,5 @@ Execution
|
|
|
72
76
|
.. autofunction:: get_directive_values
|
|
73
77
|
|
|
74
78
|
.. autofunction:: get_variable_values
|
|
79
|
+
|
|
80
|
+
.. autoclass:: VariableValues
|
|
@@ -25,6 +25,7 @@ Each kind of AST node has its own class:
|
|
|
25
25
|
.. autoclass:: ConstValueNode
|
|
26
26
|
.. autoclass:: DefinitionNode
|
|
27
27
|
.. autoclass:: DirectiveDefinitionNode
|
|
28
|
+
.. autoclass:: DirectiveExtensionNode
|
|
28
29
|
.. autoclass:: DirectiveNode
|
|
29
30
|
.. autoclass:: DocumentNode
|
|
30
31
|
.. autoclass:: EnumTypeDefinitionNode
|
|
@@ -127,6 +127,7 @@ Compare two GraphQLSchemas and detect changes:
|
|
|
127
127
|
.. autoclass:: BreakingChangeType
|
|
128
128
|
.. autoclass:: DangerousChange
|
|
129
129
|
.. autoclass:: DangerousChangeType
|
|
130
|
+
.. autoclass:: SchemaChange
|
|
130
131
|
|
|
131
132
|
Resolve a schema coordinate to the schema element it refers to:
|
|
132
133
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "graphql-core"
|
|
3
|
-
version = "3.3.
|
|
3
|
+
version = "3.3.0b2"
|
|
4
4
|
description = "GraphQL-core is a Python port of GraphQL.js, the JavaScript reference implementation for GraphQL."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -32,7 +32,7 @@ test = [
|
|
|
32
32
|
"pytest>=9,<10",
|
|
33
33
|
"pytest-benchmark>=5.2,<6",
|
|
34
34
|
"pytest-cov>=7.1,<8",
|
|
35
|
-
"pytest-describe>=3.
|
|
35
|
+
"pytest-describe>=3.2,<4",
|
|
36
36
|
"pytest-timeout>=2.4,<3",
|
|
37
37
|
"pytest-codspeed>=5",
|
|
38
38
|
"tox>=4.55,<5",
|
|
@@ -168,6 +168,7 @@ from .language import (
|
|
|
168
168
|
UnionTypeExtensionNode,
|
|
169
169
|
EnumTypeExtensionNode,
|
|
170
170
|
InputObjectTypeExtensionNode,
|
|
171
|
+
DirectiveExtensionNode,
|
|
171
172
|
SchemaCoordinateNode,
|
|
172
173
|
TypeCoordinateNode,
|
|
173
174
|
MemberCoordinateNode,
|
|
@@ -248,6 +249,7 @@ from .utilities import (
|
|
|
248
249
|
DangerousChangeType,
|
|
249
250
|
SafeChange,
|
|
250
251
|
SafeChangeType,
|
|
252
|
+
SchemaChange,
|
|
251
253
|
find_breaking_changes,
|
|
252
254
|
find_dangerous_changes,
|
|
253
255
|
find_schema_changes,
|
|
@@ -438,6 +440,9 @@ from .validation import (
|
|
|
438
440
|
specified_rules,
|
|
439
441
|
recommended_rules,
|
|
440
442
|
# Individual validation rules.
|
|
443
|
+
DeferStreamDirectiveLabel,
|
|
444
|
+
DeferStreamDirectiveOnRootField,
|
|
445
|
+
DeferStreamDirectiveOnValidOperationsRule,
|
|
441
446
|
ExecutableDefinitionsRule,
|
|
442
447
|
FieldsOnCorrectTypeRule,
|
|
443
448
|
FragmentsOnCompositeTypesRule,
|
|
@@ -456,6 +461,7 @@ from .validation import (
|
|
|
456
461
|
ProvidedRequiredArgumentsRule,
|
|
457
462
|
ScalarLeafsRule,
|
|
458
463
|
SingleFieldSubscriptionsRule,
|
|
464
|
+
StreamDirectiveOnListField,
|
|
459
465
|
UniqueArgumentNamesRule,
|
|
460
466
|
UniqueDirectivesPerLocationRule,
|
|
461
467
|
UniqueFragmentNamesRule,
|
|
@@ -495,6 +501,7 @@ from .execution import (
|
|
|
495
501
|
# Types
|
|
496
502
|
AsyncWorkFinishedInfo,
|
|
497
503
|
ExecutionHooks,
|
|
504
|
+
VariableValues,
|
|
498
505
|
Executor,
|
|
499
506
|
ExecutionResult,
|
|
500
507
|
ExperimentalIncrementalExecutionResults,
|
|
@@ -512,7 +519,9 @@ from .execution import (
|
|
|
512
519
|
# Subscription
|
|
513
520
|
subscribe,
|
|
514
521
|
create_source_event_stream,
|
|
522
|
+
map_source_to_response_event,
|
|
515
523
|
map_async_iterable,
|
|
524
|
+
RootSelectionSetExecutor,
|
|
516
525
|
# Middleware
|
|
517
526
|
Middleware,
|
|
518
527
|
MiddlewareManager,
|
|
@@ -569,10 +578,14 @@ __all__ = [
|
|
|
569
578
|
"ConstValueNode",
|
|
570
579
|
"DangerousChange",
|
|
571
580
|
"DangerousChangeType",
|
|
581
|
+
"DeferStreamDirectiveLabel",
|
|
582
|
+
"DeferStreamDirectiveOnRootField",
|
|
583
|
+
"DeferStreamDirectiveOnValidOperationsRule",
|
|
572
584
|
"DefinitionNode",
|
|
573
585
|
"DirectiveArgumentCoordinateNode",
|
|
574
586
|
"DirectiveCoordinateNode",
|
|
575
587
|
"DirectiveDefinitionNode",
|
|
588
|
+
"DirectiveExtensionNode",
|
|
576
589
|
"DirectiveLocation",
|
|
577
590
|
"DirectiveNode",
|
|
578
591
|
"DocumentNode",
|
|
@@ -740,12 +753,14 @@ __all__ = [
|
|
|
740
753
|
"ResolvedNamedType",
|
|
741
754
|
"ResolvedSchemaElement",
|
|
742
755
|
"ResponsePath",
|
|
756
|
+
"RootSelectionSetExecutor",
|
|
743
757
|
"SDLValidationRule",
|
|
744
758
|
"SafeChange",
|
|
745
759
|
"SafeChangeType",
|
|
746
760
|
"ScalarLeafsRule",
|
|
747
761
|
"ScalarTypeDefinitionNode",
|
|
748
762
|
"ScalarTypeExtensionNode",
|
|
763
|
+
"SchemaChange",
|
|
749
764
|
"SchemaCoordinateNode",
|
|
750
765
|
"SchemaDefinitionNode",
|
|
751
766
|
"SchemaExtensionNode",
|
|
@@ -755,6 +770,7 @@ __all__ = [
|
|
|
755
770
|
"SingleFieldSubscriptionsRule",
|
|
756
771
|
"Source",
|
|
757
772
|
"SourceLocation",
|
|
773
|
+
"StreamDirectiveOnListField",
|
|
758
774
|
"StringValueNode",
|
|
759
775
|
"SubsequentIncrementalExecutionResult",
|
|
760
776
|
"Thunk",
|
|
@@ -795,6 +811,7 @@ __all__ = [
|
|
|
795
811
|
"ValuesOfCorrectTypeRule",
|
|
796
812
|
"VariableDefinitionNode",
|
|
797
813
|
"VariableNode",
|
|
814
|
+
"VariableValues",
|
|
798
815
|
"VariablesAreInputTypesRule",
|
|
799
816
|
"VariablesInAllowedPositionRule",
|
|
800
817
|
"Visitor",
|
|
@@ -904,6 +921,7 @@ __all__ = [
|
|
|
904
921
|
"lexicographic_sort_schema",
|
|
905
922
|
"located_error",
|
|
906
923
|
"map_async_iterable",
|
|
924
|
+
"map_source_to_response_event",
|
|
907
925
|
"parse",
|
|
908
926
|
"parse_const_value",
|
|
909
927
|
"parse_schema_coordinate",
|
|
@@ -5,6 +5,8 @@ from __future__ import annotations
|
|
|
5
5
|
from sys import exc_info
|
|
6
6
|
from typing import TYPE_CHECKING, Any, TypeAlias, TypedDict
|
|
7
7
|
|
|
8
|
+
from ..pyutils import Undefined
|
|
9
|
+
|
|
8
10
|
if TYPE_CHECKING:
|
|
9
11
|
from collections.abc import Collection
|
|
10
12
|
|
|
@@ -108,12 +110,26 @@ class GraphQLError(Exception):
|
|
|
108
110
|
"""
|
|
109
111
|
|
|
110
112
|
original_error: Exception | None
|
|
111
|
-
"""
|
|
113
|
+
"""Original error that caused this GraphQLError, if one exists
|
|
114
|
+
|
|
115
|
+
.. deprecated:: 3.3
|
|
116
|
+
Use :attr:`cause` instead to better align with the standard exception
|
|
117
|
+
:attr:`~BaseException.__cause__`.
|
|
118
|
+
"""
|
|
119
|
+
|
|
120
|
+
cause: Any
|
|
121
|
+
"""The cause of this error, if one exists
|
|
122
|
+
|
|
123
|
+
The value passed as the ``cause`` when creating this error. Adopts the
|
|
124
|
+
convention of the standard exception cause and is also exposed as the
|
|
125
|
+
:attr:`~BaseException.__cause__` when it is an exception.
|
|
126
|
+
"""
|
|
112
127
|
|
|
113
128
|
extensions: GraphQLErrorExtensions | None
|
|
114
129
|
"""Extension fields to add to the formatted error"""
|
|
115
130
|
|
|
116
131
|
__slots__ = (
|
|
132
|
+
"cause",
|
|
117
133
|
"extensions",
|
|
118
134
|
"locations",
|
|
119
135
|
"message",
|
|
@@ -135,15 +151,27 @@ class GraphQLError(Exception):
|
|
|
135
151
|
path: Collection[str | int] | None = None,
|
|
136
152
|
original_error: Exception | None = None,
|
|
137
153
|
extensions: GraphQLErrorExtensions | None = None,
|
|
154
|
+
cause: Any = Undefined,
|
|
138
155
|
) -> None:
|
|
139
156
|
"""Initialize a GraphQLError."""
|
|
140
157
|
super().__init__(message)
|
|
141
158
|
self.message = message
|
|
142
159
|
|
|
160
|
+
# The cause defaults to the (deprecated) original error when not given.
|
|
161
|
+
has_cause = cause is not Undefined
|
|
162
|
+
self.cause = cause if has_cause else original_error
|
|
163
|
+
|
|
143
164
|
if path and not isinstance(path, list):
|
|
144
165
|
path = list(path)
|
|
145
166
|
self.path = path or None # type: ignore
|
|
146
|
-
|
|
167
|
+
|
|
168
|
+
# An Error provided as the cause is also exposed as the original error
|
|
169
|
+
# for backward compatibility.
|
|
170
|
+
cause_value = cause if has_cause else None
|
|
171
|
+
underlying_error = original_error
|
|
172
|
+
if underlying_error is None and isinstance(cause_value, Exception):
|
|
173
|
+
underlying_error = cause_value
|
|
174
|
+
self.original_error = underlying_error
|
|
147
175
|
|
|
148
176
|
# Compute list of blame nodes.
|
|
149
177
|
if nodes and not isinstance(nodes, list):
|
|
@@ -170,16 +198,25 @@ class GraphQLError(Exception):
|
|
|
170
198
|
locations = [loc.source.get_location(loc.start) for loc in node_locations]
|
|
171
199
|
self.locations = locations or None
|
|
172
200
|
|
|
201
|
+
# Adopt the cause as the standard exception cause when it is one, so
|
|
202
|
+
# that the cause chain is reported without duplicating the traceback.
|
|
203
|
+
if isinstance(cause_value, BaseException):
|
|
204
|
+
self.__cause__ = cause_value
|
|
205
|
+
|
|
206
|
+
# Preserve the traceback of an explicit original error. The traceback of
|
|
207
|
+
# a cause is not copied over, since Python already reports cause chains.
|
|
173
208
|
if original_error:
|
|
174
209
|
self.__traceback__ = original_error.__traceback__
|
|
175
|
-
if
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
210
|
+
if not self.__cause__:
|
|
211
|
+
if original_error.__cause__:
|
|
212
|
+
self.__cause__ = original_error.__cause__
|
|
213
|
+
elif original_error.__context__:
|
|
214
|
+
self.__context__ = original_error.__context__
|
|
215
|
+
|
|
216
|
+
if extensions is None and underlying_error is not None:
|
|
217
|
+
original_extensions = getattr(underlying_error, "extensions", None)
|
|
218
|
+
if isinstance(original_extensions, dict):
|
|
219
|
+
extensions = original_extensions
|
|
183
220
|
self.extensions = extensions or {}
|
|
184
221
|
if not self.__traceback__:
|
|
185
222
|
self.__traceback__ = exc_info()[2]
|
|
@@ -217,7 +254,7 @@ class GraphQLError(Exception):
|
|
|
217
254
|
and all(
|
|
218
255
|
getattr(self, slot) == getattr(other, slot)
|
|
219
256
|
for slot in self.__slots__
|
|
220
|
-
if slot
|
|
257
|
+
if slot not in ("cause", "original_error")
|
|
221
258
|
)
|
|
222
259
|
) or (
|
|
223
260
|
isinstance(other, dict)
|
|
@@ -225,7 +262,7 @@ class GraphQLError(Exception):
|
|
|
225
262
|
and all(
|
|
226
263
|
slot in self.__slots__ and getattr(self, slot) == other.get(slot)
|
|
227
264
|
for slot in other
|
|
228
|
-
if slot
|
|
265
|
+
if slot not in ("cause", "original_error")
|
|
229
266
|
)
|
|
230
267
|
)
|
|
231
268
|
|
|
@@ -30,7 +30,12 @@ from .types import (
|
|
|
30
30
|
StreamItemsResult,
|
|
31
31
|
)
|
|
32
32
|
from .middleware import MiddlewareManager
|
|
33
|
-
from .values import
|
|
33
|
+
from .values import (
|
|
34
|
+
get_argument_values,
|
|
35
|
+
get_directive_values,
|
|
36
|
+
get_variable_values,
|
|
37
|
+
VariableValues,
|
|
38
|
+
)
|
|
34
39
|
from .execute import (
|
|
35
40
|
create_source_event_stream,
|
|
36
41
|
execute,
|
|
@@ -40,12 +45,14 @@ from .execute import (
|
|
|
40
45
|
execute_sync,
|
|
41
46
|
default_field_resolver,
|
|
42
47
|
default_type_resolver,
|
|
48
|
+
map_source_to_response_event,
|
|
43
49
|
subscribe,
|
|
44
50
|
AsyncWorkFinishedInfo,
|
|
45
51
|
ExecutionHooks,
|
|
46
52
|
Executor,
|
|
47
53
|
GraphQLWrappedResult,
|
|
48
54
|
Middleware,
|
|
55
|
+
RootSelectionSetExecutor,
|
|
49
56
|
)
|
|
50
57
|
|
|
51
58
|
__all__ = [
|
|
@@ -72,11 +79,13 @@ __all__ = [
|
|
|
72
79
|
"Middleware",
|
|
73
80
|
"MiddlewareManager",
|
|
74
81
|
"PendingResult",
|
|
82
|
+
"RootSelectionSetExecutor",
|
|
75
83
|
"StreamItemRecord",
|
|
76
84
|
"StreamItemResult",
|
|
77
85
|
"StreamItemsResult",
|
|
78
86
|
"StreamRecord",
|
|
79
87
|
"SubsequentIncrementalExecutionResult",
|
|
88
|
+
"VariableValues",
|
|
80
89
|
"create_source_event_stream",
|
|
81
90
|
"default_field_resolver",
|
|
82
91
|
"default_type_resolver",
|
|
@@ -89,5 +98,6 @@ __all__ = [
|
|
|
89
98
|
"get_directive_values",
|
|
90
99
|
"get_variable_values",
|
|
91
100
|
"map_async_iterable",
|
|
101
|
+
"map_source_to_response_event",
|
|
92
102
|
"subscribe",
|
|
93
103
|
]
|
|
@@ -140,6 +140,7 @@ __all__ = [
|
|
|
140
140
|
"Executor",
|
|
141
141
|
"GraphQLWrappedResult",
|
|
142
142
|
"Middleware",
|
|
143
|
+
"RootSelectionSetExecutor",
|
|
143
144
|
"create_source_event_stream",
|
|
144
145
|
"default_field_resolver",
|
|
145
146
|
"default_type_resolver",
|
|
@@ -148,6 +149,7 @@ __all__ = [
|
|
|
148
149
|
"execute_subscription_event",
|
|
149
150
|
"execute_sync",
|
|
150
151
|
"experimental_execute_incrementally",
|
|
152
|
+
"map_source_to_response_event",
|
|
151
153
|
"subscribe",
|
|
152
154
|
]
|
|
153
155
|
|
|
@@ -237,7 +239,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
237
239
|
field_resolver: GraphQLFieldResolver
|
|
238
240
|
type_resolver: GraphQLTypeResolver
|
|
239
241
|
subscribe_field_resolver: GraphQLFieldResolver
|
|
240
|
-
per_event_executor: Callable[[Executor], AwaitableOrValue[ExecutionResult]]
|
|
241
242
|
enable_early_execution: bool
|
|
242
243
|
hide_suggestions: bool
|
|
243
244
|
abort_signal: AbortSignal | None
|
|
@@ -274,8 +275,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
274
275
|
middleware_manager: MiddlewareManager | None = None,
|
|
275
276
|
is_awaitable: Callable[[Any], TypeGuard[Awaitable]] | None = None,
|
|
276
277
|
is_async_iterable: Callable[[Any], TypeGuard[AsyncIterable]] | None = None,
|
|
277
|
-
per_event_executor: Callable[[Executor], AwaitableOrValue[ExecutionResult]]
|
|
278
|
-
| None = None,
|
|
279
278
|
hide_suggestions: bool = False,
|
|
280
279
|
abort_signal: AbortSignal | None = None,
|
|
281
280
|
hooks: ExecutionHooks | None = None,
|
|
@@ -290,7 +289,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
290
289
|
self.field_resolver = field_resolver
|
|
291
290
|
self.type_resolver = type_resolver
|
|
292
291
|
self.subscribe_field_resolver = subscribe_field_resolver
|
|
293
|
-
self.per_event_executor = per_event_executor or execute_subscription_event
|
|
294
292
|
self.enable_early_execution = enable_early_execution
|
|
295
293
|
self.hide_suggestions = hide_suggestions
|
|
296
294
|
self.abort_signal = abort_signal
|
|
@@ -331,8 +329,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
331
329
|
middleware: Middleware | None = None,
|
|
332
330
|
is_awaitable: Callable[[Any], TypeGuard[Awaitable]] | None = None,
|
|
333
331
|
is_async_iterable: Callable[[Any], TypeGuard[AsyncIterable]] | None = None,
|
|
334
|
-
per_event_executor: Callable[[Executor], AwaitableOrValue[ExecutionResult]]
|
|
335
|
-
| None = None,
|
|
336
332
|
hide_suggestions: bool = False,
|
|
337
333
|
abort_signal: AbortSignal | None = None,
|
|
338
334
|
hooks: ExecutionHooks | None = None,
|
|
@@ -425,7 +421,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
425
421
|
middleware_manager,
|
|
426
422
|
is_awaitable,
|
|
427
423
|
is_async_iterable,
|
|
428
|
-
per_event_executor=per_event_executor,
|
|
429
424
|
hide_suggestions=hide_suggestions,
|
|
430
425
|
abort_signal=abort_signal,
|
|
431
426
|
hooks=hooks,
|
|
@@ -1978,39 +1973,6 @@ class Executor(IncrementalPublisherContext):
|
|
|
1978
1973
|
execution_plans[original_grouped_field_set] = exeecution_plan
|
|
1979
1974
|
return exeecution_plan
|
|
1980
1975
|
|
|
1981
|
-
def map_source_to_response(
|
|
1982
|
-
self, result_or_stream: ExecutionResult | AsyncIterable[Any]
|
|
1983
|
-
) -> AsyncGenerator[ExecutionResult, None] | ExecutionResult:
|
|
1984
|
-
"""Map source result to response.
|
|
1985
|
-
|
|
1986
|
-
For each payload yielded from a subscription,
|
|
1987
|
-
map it over the normal GraphQL :func:`~graphql.execution.execute` function,
|
|
1988
|
-
with ``payload`` as the ``root_value``.
|
|
1989
|
-
This implements the "MapSourceToResponseEvent" algorithm
|
|
1990
|
-
described in the GraphQL specification.
|
|
1991
|
-
Each event is executed with the executor's ``per_event_executor``, which
|
|
1992
|
-
defaults to :func:`~graphql.execution.execute_subscription_event` (providing
|
|
1993
|
-
the "ExecuteSubscriptionEvent" algorithm) but can be overridden to set up and
|
|
1994
|
-
tear down a custom executor around the execution of each event.
|
|
1995
|
-
"""
|
|
1996
|
-
if not self.is_async_iterable(result_or_stream):
|
|
1997
|
-
return cast("ExecutionResult", result_or_stream) # pragma: no cover
|
|
1998
|
-
|
|
1999
|
-
build_executor = self.build_per_event_executor
|
|
2000
|
-
per_event_executor = self.per_event_executor
|
|
2001
|
-
|
|
2002
|
-
async def callback(payload: Any) -> ExecutionResult:
|
|
2003
|
-
result = per_event_executor(build_executor(payload))
|
|
2004
|
-
# typecast to ExecutionResult, not possible to return
|
|
2005
|
-
# ExperimentalIncrementalExecutionResults when operation is 'subscription'.
|
|
2006
|
-
return (
|
|
2007
|
-
await cast("Awaitable[ExecutionResult]", result)
|
|
2008
|
-
if self.is_awaitable(result)
|
|
2009
|
-
else cast("ExecutionResult", result)
|
|
2010
|
-
)
|
|
2011
|
-
|
|
2012
|
-
return map_async_iterable(self.cancellable_iterable(result_or_stream), callback)
|
|
2013
|
-
|
|
2014
1976
|
def collect_execution_groups(
|
|
2015
1977
|
self,
|
|
2016
1978
|
parent_type: GraphQLObjectType,
|
|
@@ -2924,8 +2886,6 @@ def subscribe(
|
|
|
2924
2886
|
enable_early_execution: bool = False,
|
|
2925
2887
|
executor_class: type[Executor] | None = None,
|
|
2926
2888
|
middleware: MiddlewareManager | None = None,
|
|
2927
|
-
per_event_executor: Callable[[Executor], AwaitableOrValue[ExecutionResult]]
|
|
2928
|
-
| None = None,
|
|
2929
2889
|
hide_suggestions: bool = False,
|
|
2930
2890
|
**custom_context_args: Any,
|
|
2931
2891
|
) -> AwaitableOrValue[AsyncIterator[ExecutionResult] | ExecutionResult]:
|
|
@@ -2952,10 +2912,12 @@ def subscribe(
|
|
|
2952
2912
|
If an operation that defers or streams data is executed with this function,
|
|
2953
2913
|
a field error will be raised at the location of the `@defer` or `@stream` directive.
|
|
2954
2914
|
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
:func:`~graphql.execution.
|
|
2915
|
+
To customize how each subscription event is executed, compose the subscription
|
|
2916
|
+
pipeline directly instead of calling this function: build an executor with
|
|
2917
|
+
:meth:`Executor.build`, resolve the source event stream with
|
|
2918
|
+
:func:`~graphql.execution.create_source_event_stream`, and map it to the response
|
|
2919
|
+
stream with :func:`~graphql.execution.map_source_to_response_event`, passing a
|
|
2920
|
+
custom ``root_selection_set_executor``.
|
|
2959
2921
|
"""
|
|
2960
2922
|
if executor_class is None:
|
|
2961
2923
|
executor_class = Executor
|
|
@@ -2975,7 +2937,6 @@ def subscribe(
|
|
|
2975
2937
|
max_coercion_errors,
|
|
2976
2938
|
enable_early_execution,
|
|
2977
2939
|
middleware=middleware,
|
|
2978
|
-
per_event_executor=per_event_executor,
|
|
2979
2940
|
hide_suggestions=hide_suggestions,
|
|
2980
2941
|
**custom_context_args,
|
|
2981
2942
|
)
|
|
@@ -2994,16 +2955,19 @@ def subscribe(
|
|
|
2994
2955
|
|
|
2995
2956
|
async def await_result() -> Any:
|
|
2996
2957
|
awaited_result_or_stream = await result_or_stream
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
2958
|
+
return (
|
|
2959
|
+
map_source_to_response_event(executor, awaited_result_or_stream)
|
|
2960
|
+
if executor.is_async_iterable(awaited_result_or_stream)
|
|
2961
|
+
else awaited_result_or_stream
|
|
2962
|
+
)
|
|
3000
2963
|
|
|
3001
2964
|
return await_result()
|
|
3002
2965
|
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
2966
|
+
return (
|
|
2967
|
+
map_source_to_response_event(executor, result_or_stream) # type: ignore
|
|
2968
|
+
if executor.is_async_iterable(result_or_stream)
|
|
2969
|
+
else result_or_stream
|
|
2970
|
+
)
|
|
3007
2971
|
|
|
3008
2972
|
|
|
3009
2973
|
def execute_root_selection_set(
|
|
@@ -3023,10 +2987,11 @@ def execute_subscription_event(
|
|
|
3023
2987
|
) -> AwaitableOrValue[ExecutionResult]:
|
|
3024
2988
|
"""Execute a single subscription event.
|
|
3025
2989
|
|
|
3026
|
-
This is the default ``
|
|
3027
|
-
the "ExecuteSubscriptionEvent"
|
|
3028
|
-
which is nearly identical to the
|
|
3029
|
-
wrap this function to set up and
|
|
2990
|
+
This is the default ``root_selection_set_executor`` used by
|
|
2991
|
+
:func:`map_source_to_response_event`. It provides the "ExecuteSubscriptionEvent"
|
|
2992
|
+
algorithm described in the GraphQL specification, which is nearly identical to the
|
|
2993
|
+
"ExecuteQuery" algorithm. A custom executor may wrap this function to set up and
|
|
2994
|
+
tear down a per-event executor.
|
|
3030
2995
|
|
|
3031
2996
|
The passed executor should be a per-event executor as created by
|
|
3032
2997
|
:meth:`Executor.build_per_event_executor`.
|
|
@@ -3034,6 +2999,47 @@ def execute_subscription_event(
|
|
|
3034
2999
|
return cast("AwaitableOrValue[ExecutionResult]", executor.execute_operation(False))
|
|
3035
3000
|
|
|
3036
3001
|
|
|
3002
|
+
RootSelectionSetExecutor: TypeAlias = Callable[
|
|
3003
|
+
["Executor"], AwaitableOrValue[ExecutionResult]
|
|
3004
|
+
]
|
|
3005
|
+
|
|
3006
|
+
|
|
3007
|
+
def map_source_to_response_event(
|
|
3008
|
+
executor: Executor,
|
|
3009
|
+
source_event_stream: AsyncIterable[Any],
|
|
3010
|
+
root_selection_set_executor: RootSelectionSetExecutor = execute_subscription_event,
|
|
3011
|
+
) -> AsyncGenerator[ExecutionResult, None]:
|
|
3012
|
+
"""Map a subscription source event stream to a response event stream.
|
|
3013
|
+
|
|
3014
|
+
Implements the "MapSourceToResponseEvent" algorithm described in the GraphQL
|
|
3015
|
+
specification, mapping each event from a subscription source event stream to an
|
|
3016
|
+
ExecutionResult in the response stream.
|
|
3017
|
+
|
|
3018
|
+
For each payload yielded from the source event stream, it is mapped over the normal
|
|
3019
|
+
GraphQL :func:`~graphql.execution.execute` function, with ``payload`` as the
|
|
3020
|
+
``root_value``. Each event is executed with the given
|
|
3021
|
+
``root_selection_set_executor``, which defaults to
|
|
3022
|
+
:func:`~graphql.execution.execute_subscription_event` (providing the
|
|
3023
|
+
"ExecuteSubscriptionEvent" algorithm) but can be overridden to set up and tear
|
|
3024
|
+
down a custom executor around the execution of each event.
|
|
3025
|
+
"""
|
|
3026
|
+
build_executor = executor.build_per_event_executor
|
|
3027
|
+
|
|
3028
|
+
async def callback(payload: Any) -> ExecutionResult:
|
|
3029
|
+
result = root_selection_set_executor(build_executor(payload))
|
|
3030
|
+
# typecast to ExecutionResult, not possible to return
|
|
3031
|
+
# ExperimentalIncrementalExecutionResults when operation is 'subscription'.
|
|
3032
|
+
return (
|
|
3033
|
+
await cast("Awaitable[ExecutionResult]", result)
|
|
3034
|
+
if executor.is_awaitable(result)
|
|
3035
|
+
else cast("ExecutionResult", result)
|
|
3036
|
+
)
|
|
3037
|
+
|
|
3038
|
+
return map_async_iterable(
|
|
3039
|
+
executor.cancellable_iterable(source_event_stream), callback
|
|
3040
|
+
)
|
|
3041
|
+
|
|
3042
|
+
|
|
3037
3043
|
def create_source_event_stream(
|
|
3038
3044
|
executor: Executor,
|
|
3039
3045
|
) -> AwaitableOrValue[AsyncIterable[Any] | ExecutionResult]:
|
|
@@ -6,6 +6,8 @@ from typing import TYPE_CHECKING, Any, NamedTuple, TypeAlias
|
|
|
6
6
|
|
|
7
7
|
from ..error import GraphQLError
|
|
8
8
|
from ..language import (
|
|
9
|
+
DirectiveDefinitionNode,
|
|
10
|
+
DirectiveExtensionNode,
|
|
9
11
|
DirectiveNode,
|
|
10
12
|
EnumValueDefinitionNode,
|
|
11
13
|
ExecutableDefinitionNode,
|
|
@@ -425,7 +427,9 @@ def print_argument_or_fragment_variable(
|
|
|
425
427
|
|
|
426
428
|
|
|
427
429
|
NodeWithDirective: TypeAlias = (
|
|
428
|
-
|
|
430
|
+
DirectiveDefinitionNode
|
|
431
|
+
| DirectiveExtensionNode
|
|
432
|
+
| EnumValueDefinitionNode
|
|
429
433
|
| ExecutableDefinitionNode
|
|
430
434
|
| FieldDefinitionNode
|
|
431
435
|
| InputValueDefinitionNode
|
|
@@ -101,6 +101,7 @@ from .ast import (
|
|
|
101
101
|
UnionTypeExtensionNode,
|
|
102
102
|
EnumTypeExtensionNode,
|
|
103
103
|
InputObjectTypeExtensionNode,
|
|
104
|
+
DirectiveExtensionNode,
|
|
104
105
|
SchemaCoordinateNode,
|
|
105
106
|
TypeCoordinateNode,
|
|
106
107
|
MemberCoordinateNode,
|
|
@@ -142,6 +143,7 @@ __all__ = [
|
|
|
142
143
|
"DirectiveArgumentCoordinateNode",
|
|
143
144
|
"DirectiveCoordinateNode",
|
|
144
145
|
"DirectiveDefinitionNode",
|
|
146
|
+
"DirectiveExtensionNode",
|
|
145
147
|
"DirectiveLocation",
|
|
146
148
|
"DirectiveNode",
|
|
147
149
|
"DocumentNode",
|