graphql-core 3.2.12__tar.gz → 3.2.13__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.2.12 → graphql_core-3.2.13}/.bumpversion.cfg +1 -1
- graphql_core-3.2.13/.flake8 +13 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/PKG-INFO +3 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/README.md +1 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/conf.py +1 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/execution.rst +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/type.rst +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/validation.rst +10 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/pyproject.toml +6 -4
- {graphql_core-3.2.12 → graphql_core-3.2.13}/setup.cfg +1 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/setup.py +3 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/error/__init__.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/error/graphql_error.py +140 -13
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/error/located_error.py +18 -0
- graphql_core-3.2.13/src/graphql/error/syntax_error.py +38 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/__init__.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/collect_fields.py +22 -5
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/execute.py +407 -13
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/map_async_iterator.py +55 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/middleware.py +49 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/subscribe.py +137 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/execution/values.py +128 -1
- graphql_core-3.2.13/src/graphql/graphql.py +311 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/ast.py +344 -16
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/block_string.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/character_classes.py +2 -0
- graphql_core-3.2.13/src/graphql/language/directive_locations.py +53 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/lexer.py +192 -19
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/location.py +16 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/parser.py +129 -13
- graphql_core-3.2.13/src/graphql/language/predicates.py +242 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/print_location.py +24 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/print_string.py +4 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/printer.py +11 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/schema_coordinate_lexer.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/source.py +47 -10
- graphql_core-3.2.13/src/graphql/language/token_kind.py +56 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/visitor.py +158 -3
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/awaitable_or_value.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/cached_property.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/convert_case.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/description.py +3 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/did_you_mean.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/frozen_dict.py +7 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/frozen_error.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/frozen_list.py +10 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/group_by.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/identity_func.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/inspect.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/is_awaitable.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/is_iterable.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/merge_kwargs.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/natural_compare.py +2 -0
- graphql_core-3.2.13/src/graphql/pyutils/path.py +52 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/print_path_list.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/simple_pub_sub.py +8 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/suggestion_list.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/undefined.py +3 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/assert_name.py +28 -2
- graphql_core-3.2.13/src/graphql/type/definition.py +3920 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/directives.py +156 -8
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/introspection.py +34 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/scalars.py +20 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/schema.py +362 -15
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/validate.py +24 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/assert_valid_name.py +24 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/ast_from_value.py +22 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/ast_to_dict.py +17 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/build_ast_schema.py +66 -5
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/build_client_schema.py +15 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/coerce_input_value.py +39 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/concat_ast.py +11 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/extend_schema.py +49 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/find_breaking_changes.py +96 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/get_introspection_query.py +141 -9
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/get_operation_ast.py +15 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/get_operation_root_type.py +13 -0
- graphql_core-3.2.13/src/graphql/utilities/introspection_from_schema.py +110 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/lexicographic_sort_schema.py +32 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/print_schema.py +77 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/resolve_schema_coordinate.py +83 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/separate_operations.py +31 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/sort_value_node.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/strip_ignored_characters.py +12 -3
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/type_comparators.py +79 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/type_from_ast.py +28 -0
- graphql_core-3.2.13/src/graphql/utilities/type_info.py +724 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/value_from_ast.py +28 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/value_from_ast_untyped.py +11 -0
- graphql_core-3.2.13/src/graphql/validation/rules/__init__.py +111 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/custom/no_deprecated.py +38 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/custom/no_schema_introspection.py +23 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/executable_definitions.py +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/fields_on_correct_type.py +20 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/fragments_on_composite_types.py +23 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/known_argument_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/known_directives.py +20 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/known_fragment_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/known_type_names.py +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/lone_anonymous_operation.py +23 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/lone_schema_definition.py +25 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/max_introspection_depth_rule.py +23 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/no_fragment_cycles.py +25 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/no_undefined_variables.py +27 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/no_unused_fragments.py +27 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/no_unused_variables.py +27 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +24 -3
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/possible_fragment_spreads.py +32 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/possible_type_extensions.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/provided_required_arguments.py +22 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/scalar_leafs.py +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/single_field_subscriptions.py +20 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_argument_definition_names.py +45 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_argument_names.py +27 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_directive_names.py +24 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_directives_per_location.py +20 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_enum_value_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_field_definition_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_fragment_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_input_field_names.py +31 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_operation_names.py +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_operation_types.py +24 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_type_names.py +21 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/unique_variable_names.py +19 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/values_of_correct_type.py +55 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/variables_are_input_types.py +20 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/variables_in_allowed_position.py +31 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/specified_rules.py +2 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/validate.py +34 -3
- graphql_core-3.2.13/src/graphql/validation/validation_context.py +571 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/version.py +3 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/PKG-INFO +3 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_sync.py +18 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_lexer.py +28 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/star_wars_data.py +2 -2
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_docs.py +223 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_predicate.py +4 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_build_client_schema.py +1 -1
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tox.ini +8 -5
- graphql_core-3.2.12/.flake8 +0 -4
- graphql_core-3.2.12/src/graphql/error/syntax_error.py +0 -18
- graphql_core-3.2.12/src/graphql/graphql.py +0 -199
- graphql_core-3.2.12/src/graphql/language/directive_locations.py +0 -31
- graphql_core-3.2.12/src/graphql/language/predicates.py +0 -109
- graphql_core-3.2.12/src/graphql/language/token_kind.py +0 -31
- graphql_core-3.2.12/src/graphql/pyutils/path.py +0 -28
- graphql_core-3.2.12/src/graphql/type/definition.py +0 -1905
- graphql_core-3.2.12/src/graphql/utilities/introspection_from_schema.py +0 -50
- graphql_core-3.2.12/src/graphql/utilities/type_info.py +0 -322
- graphql_core-3.2.12/src/graphql/validation/rules/__init__.py +0 -42
- graphql_core-3.2.12/src/graphql/validation/validation_context.py +0 -254
- {graphql_core-3.2.12 → graphql_core-3.2.13}/.coveragerc +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/.editorconfig +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/.mypy.ini +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/.readthedocs.yaml +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/CODEOWNERS +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/LICENSE +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/MANIFEST.in +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/SECURITY.md +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/Makefile +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/diffs.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/index.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/intro.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/make.bat +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/error.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/graphql.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/language.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/pyutils.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/modules/utilities.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/requirements.txt +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/extension.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/index.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/introspection.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/methods.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/other.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/parser.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/queries.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/resolvers.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/schema.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/sdl.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/docs/usage/validator.rst +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/poetry.lock +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/language/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/py.typed +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/pyutils/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/subscription/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/type/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/utilities/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql/validation/rules/custom/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/SOURCES.txt +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/dependency_links.txt +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/not-zip-safe +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/requires.txt +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/src/graphql_core.egg-info/top_level.txt +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_build_ast_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_build_client_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_execution_async.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_execution_sync.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_introspection_from_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_parser.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_print.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_repeated_fields.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_validate_gql.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_validate_sdl.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/benchmarks/test_visit.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/conftest.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/error/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/error/test_graphql_error.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/error/test_located_error.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/error/test_print_location.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_abstract.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_customize.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_directives.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_execution_result.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_executor.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_lists.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_map_async_iterator.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_middleware.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_mutations.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_nonnull.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_one_of.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_parallel.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_resolve.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_subscribe.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_union_interface.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/execution/test_variables.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/fixtures/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/fixtures/github_schema.graphql +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/fixtures/github_schema.json +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/fixtures/kitchen_sink.graphql +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/fixtures/schema_kitchen_sink.graphql +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_ast.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_block_string.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_block_string_fuzz.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_character_classes.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_location.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_parser.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_predicates.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_print_string.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_printer.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_schema_coordinate_lexer.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_schema_parser.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_schema_printer.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_source.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/language/test_visitor.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_cached_property.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_convert_case.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_description.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_did_you_mean.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_frozen_dict.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_frozen_error.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_frozen_list.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_group_by.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_identity_func.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_inspect.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_is_awaitable.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_is_iterable.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_merge_kwargs.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_natural_compare.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_path.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_print_path_list.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_simple_pub_sub.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_suggestion_list.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/pyutils/test_undefined.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/star_wars_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_star_wars_introspection.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_star_wars_query.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_star_wars_validation.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_user_registry.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/test_version.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_assert_name.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_custom_scalars.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_definition.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_directives.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_enum.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_extensions.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_introspection.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_scalars.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/type/test_validation.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_ast_from_value.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_ast_to_dict.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_build_ast_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_coerce_input_value.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_concat_ast.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_extend_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_find_breaking_changes.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_get_introspection_query.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_get_operation_ast.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_get_operation_root_type.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_introspection_from_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_print_schema.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_resolve_schema_coordinate.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_separate_operations.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_sort_value_node.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_strip_ignored_characters.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_strip_ignored_characters_fuzz.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_type_comparators.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_type_from_ast.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_type_info.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_value_from_ast.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utilities/test_value_from_ast_untyped.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utils/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utils/dedent.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utils/gen_fuzz_strings.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utils/test_dedent.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/utils/test_gen_fuzz_strings.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/__init__.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/harness.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_executable_definitions.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_fields_on_correct_type.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_fragments_on_composite_types.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_known_argument_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_known_directives.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_known_fragment_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_known_type_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_lone_anonymous_operation.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_lone_schema_definition.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_max_introspection_depth_rule.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_deprecated.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_fragment_cycles.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_schema_introspection.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_undefined_variables.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_unused_fragments.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_no_unused_variables.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_overlapping_fields_can_be_merged.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_possible_fragment_spreads.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_possible_type_extensions.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_provided_required_arguments.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_scalar_leafs.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_single_field_subscriptions.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_argument_definition_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_argument_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_directive_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_directives_per_location.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_enum_value_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_field_definition_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_fragment_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_input_field_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_operation_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_operation_types.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_type_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_unique_variable_names.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_validation.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_values_of_correct_type.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_variables_are_input_types.py +0 -0
- {graphql_core-3.2.12 → graphql_core-3.2.13}/tests/validation/test_variables_in_allowed_position.py +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[flake8]
|
|
2
|
+
ignore = E203,E704,W503,D105,D107,D203,D213,D400,D403,D415,D401
|
|
3
|
+
docstring-convention = all
|
|
4
|
+
per-file-ignores =
|
|
5
|
+
src/graphql/language/ast.py: D101
|
|
6
|
+
src/graphql/utilities/extend_schema.py: D102
|
|
7
|
+
src/graphql/utilities/get_introspection_query.py: D101
|
|
8
|
+
src/graphql/utilities/type_info.py: D102
|
|
9
|
+
src/graphql/validation/rules/*: D102
|
|
10
|
+
src/graphql/validation/validation_context.py: D102
|
|
11
|
+
tests/*: D100,D101,D102,D103
|
|
12
|
+
exclude = .git,.mypy_cache,.pytest_cache,.tox,.venv,__pycache__,build,dist,docs
|
|
13
|
+
max-line-length = 88
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphql-core
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.13
|
|
4
4
|
Summary: GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL.
|
|
5
5
|
Home-page: https://github.com/graphql-python/graphql-core
|
|
6
6
|
Author: Christoph Zwerschke
|
|
@@ -21,6 +21,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
23
23
|
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
24
25
|
Requires-Python: >=3.7,<4
|
|
25
26
|
Description-Content-Type: text/markdown
|
|
26
27
|
License-File: LICENSE
|
|
@@ -50,7 +51,7 @@ a query language for APIs created by Facebook.
|
|
|
50
51
|

|
|
51
52
|
[](https://github.com/ambv/black)
|
|
52
53
|
|
|
53
|
-
The current version 3.2.
|
|
54
|
+
The current version 3.2.13 of GraphQL-core is up-to-date with GraphQL.js version 16.14.2.
|
|
54
55
|
|
|
55
56
|
An extensive test suite with over 2500 unit tests and 100% coverage comprises a
|
|
56
57
|
replication of the complete test suite of GraphQL.js, making sure this port is
|
|
@@ -10,7 +10,7 @@ a query language for APIs created by Facebook.
|
|
|
10
10
|

|
|
11
11
|
[](https://github.com/ambv/black)
|
|
12
12
|
|
|
13
|
-
The current version 3.2.
|
|
13
|
+
The current version 3.2.13 of GraphQL-core is up-to-date with GraphQL.js version 16.14.2.
|
|
14
14
|
|
|
15
15
|
An extensive test suite with over 2500 unit tests and 100% coverage comprises a
|
|
16
16
|
replication of the complete test suite of GraphQL.js, making sure this port is
|
|
@@ -61,7 +61,7 @@ author = "Christoph Zwerschke"
|
|
|
61
61
|
# The short X.Y version.
|
|
62
62
|
# version = '3.2'
|
|
63
63
|
# The full version, including alpha/beta/rc tags.
|
|
64
|
-
version = release = "3.2.
|
|
64
|
+
version = release = "3.2.13"
|
|
65
65
|
|
|
66
66
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
67
67
|
# for a list of supported languages.
|
|
@@ -13,6 +13,7 @@ Definition
|
|
|
13
13
|
Predicates
|
|
14
14
|
^^^^^^^^^^
|
|
15
15
|
|
|
16
|
+
.. autofunction:: is_abstract_type
|
|
16
17
|
.. autofunction:: is_composite_type
|
|
17
18
|
.. autofunction:: is_enum_type
|
|
18
19
|
.. autofunction:: is_input_object_type
|
|
@@ -25,6 +26,8 @@ Predicates
|
|
|
25
26
|
.. autofunction:: is_nullable_type
|
|
26
27
|
.. autofunction:: is_object_type
|
|
27
28
|
.. autofunction:: is_output_type
|
|
29
|
+
.. autofunction:: is_required_argument
|
|
30
|
+
.. autofunction:: is_required_input_field
|
|
28
31
|
.. autofunction:: is_scalar_type
|
|
29
32
|
.. autofunction:: is_type
|
|
30
33
|
.. autofunction:: is_union_type
|
|
@@ -116,6 +119,11 @@ Predicates
|
|
|
116
119
|
.. autofunction:: is_directive
|
|
117
120
|
.. autofunction:: is_specified_directive
|
|
118
121
|
|
|
122
|
+
Assertions
|
|
123
|
+
^^^^^^^^^^
|
|
124
|
+
|
|
125
|
+
.. autofunction:: assert_directive
|
|
126
|
+
|
|
119
127
|
Definitions
|
|
120
128
|
^^^^^^^^^^^
|
|
121
129
|
|
|
@@ -123,6 +131,8 @@ Definitions
|
|
|
123
131
|
.. autoclass:: GraphQLIncludeDirective
|
|
124
132
|
.. autoclass:: GraphQLSkipDirective
|
|
125
133
|
.. autoclass:: GraphQLDeprecatedDirective
|
|
134
|
+
.. autoclass:: GraphQLSpecifiedByDirective
|
|
135
|
+
.. autoclass:: GraphQLOneOfDirective
|
|
126
136
|
|
|
127
137
|
.. data:: specified_directives
|
|
128
138
|
|
|
@@ -172,6 +182,10 @@ Definitions
|
|
|
172
182
|
.. autoclass:: GraphQLInt
|
|
173
183
|
.. autoclass:: GraphQLString
|
|
174
184
|
|
|
185
|
+
.. data:: specified_scalar_types
|
|
186
|
+
|
|
187
|
+
A mapping containing all scalar types from the GraphQL specification
|
|
188
|
+
|
|
175
189
|
.. data:: GRAPHQL_MAX_INT
|
|
176
190
|
|
|
177
191
|
Maximum possible Int value as per GraphQL Spec (32-bit signed integer)
|
|
@@ -189,6 +203,11 @@ Predicates
|
|
|
189
203
|
|
|
190
204
|
.. autofunction:: is_schema
|
|
191
205
|
|
|
206
|
+
Assertions
|
|
207
|
+
^^^^^^^^^^
|
|
208
|
+
|
|
209
|
+
.. autofunction:: assert_schema
|
|
210
|
+
|
|
192
211
|
Definitions
|
|
193
212
|
^^^^^^^^^^^
|
|
194
213
|
|
|
@@ -33,6 +33,11 @@ Rules
|
|
|
33
33
|
|
|
34
34
|
A tuple with all validation rules defined by the GraphQL specification
|
|
35
35
|
|
|
36
|
+
.. data:: recommended_rules
|
|
37
|
+
|
|
38
|
+
A tuple with validation rules that are not part of the GraphQL specification,
|
|
39
|
+
but recommended to be used, like limiting the depth of introspection queries
|
|
40
|
+
|
|
36
41
|
**Spec Section: "Executable Definitions"**
|
|
37
42
|
|
|
38
43
|
.. autoclass:: ExecutableDefinitionsRule
|
|
@@ -151,3 +156,8 @@ Rules
|
|
|
151
156
|
.. autoclass:: UniqueArgumentDefinitionNamesRule
|
|
152
157
|
.. autoclass:: UniqueDirectiveNamesRule
|
|
153
158
|
.. autoclass:: PossibleTypeExtensionsRule
|
|
159
|
+
|
|
160
|
+
**Custom validation rules (not part of the specification)**
|
|
161
|
+
|
|
162
|
+
.. autoclass:: NoDeprecatedCustomRule
|
|
163
|
+
.. autoclass:: NoSchemaIntrospectionCustomRule
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "graphql-core"
|
|
3
|
-
version = "3.2.
|
|
3
|
+
version = "3.2.13"
|
|
4
4
|
description = """
|
|
5
|
-
GraphQL-core is a Python port of GraphQL.js
|
|
6
|
-
|
|
5
|
+
GraphQL-core is a Python port of GraphQL.js, \
|
|
6
|
+
the JavaScript reference implementation for GraphQL."""
|
|
7
7
|
license = "MIT"
|
|
8
8
|
authors = [
|
|
9
9
|
"Christoph Zwerschke <cito@online.de>"
|
|
@@ -26,6 +26,7 @@ classifiers = [
|
|
|
26
26
|
"Programming Language :: Python :: 3.12",
|
|
27
27
|
"Programming Language :: Python :: 3.13",
|
|
28
28
|
"Programming Language :: Python :: 3.14",
|
|
29
|
+
"Programming Language :: Python :: 3.15",
|
|
29
30
|
]
|
|
30
31
|
packages = [
|
|
31
32
|
{ include = "graphql", from = "src" },
|
|
@@ -54,7 +55,8 @@ typing-extensions = [
|
|
|
54
55
|
|
|
55
56
|
[tool.black]
|
|
56
57
|
target-version = [
|
|
57
|
-
'py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313', 'py314'
|
|
58
|
+
'py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313', 'py314',
|
|
59
|
+
'py315'
|
|
58
60
|
]
|
|
59
61
|
|
|
60
62
|
[tool.pyright]
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""Setup script for GraphQL-core."""
|
|
2
|
+
|
|
1
3
|
from re import search
|
|
2
4
|
|
|
3
5
|
from setuptools import find_packages, setup
|
|
@@ -35,6 +37,7 @@ setup(
|
|
|
35
37
|
"Programming Language :: Python :: 3.12",
|
|
36
38
|
"Programming Language :: Python :: 3.13",
|
|
37
39
|
"Programming Language :: Python :: 3.14",
|
|
40
|
+
"Programming Language :: Python :: 3.15",
|
|
38
41
|
],
|
|
39
42
|
install_requires=[
|
|
40
43
|
"typing-extensions>=4.7,<5; python_version < '3.10'",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""GraphQL Error"""
|
|
2
|
+
|
|
1
3
|
from sys import exc_info
|
|
2
4
|
from typing import Any, Collection, Dict, List, Optional, Union, TYPE_CHECKING
|
|
3
5
|
|
|
@@ -39,22 +41,40 @@ GraphQLFormattedErrorExtensions = Dict[str, Any]
|
|
|
39
41
|
|
|
40
42
|
|
|
41
43
|
class GraphQLFormattedError(TypedDict, total=False):
|
|
42
|
-
"""Formatted GraphQL error
|
|
44
|
+
"""Formatted GraphQL error
|
|
45
|
+
|
|
46
|
+
See: https://spec.graphql.org/draft/#sec-Errors
|
|
47
|
+
"""
|
|
43
48
|
|
|
44
|
-
# A short, human-readable summary of the problem that **SHOULD NOT** change
|
|
45
|
-
# from occurrence to occurrence of the problem, except for purposes of localization.
|
|
46
49
|
message: str
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
"""A short, human-readable summary of the problem.
|
|
51
|
+
|
|
52
|
+
The message **SHOULD NOT** change from occurrence to occurrence of the problem,
|
|
53
|
+
except for purposes of localization.
|
|
54
|
+
"""
|
|
55
|
+
|
|
49
56
|
locations: List["FormattedSourceLocation"]
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
57
|
+
"""Locations in the requested GraphQL document.
|
|
58
|
+
|
|
59
|
+
If an error can be associated to a particular point in the requested GraphQL
|
|
60
|
+
document, it should contain a list of locations.
|
|
61
|
+
"""
|
|
62
|
+
|
|
54
63
|
path: List[Union[str, int]]
|
|
55
|
-
|
|
56
|
-
|
|
64
|
+
"""Path of the response field which experienced the error.
|
|
65
|
+
|
|
66
|
+
If an error can be associated to a particular field in the GraphQL result, it
|
|
67
|
+
*must* contain an entry with the key ``path`` that details the path of the response
|
|
68
|
+
field which experienced the error. This allows clients to identify whether a null
|
|
69
|
+
result is intentional or caused by a runtime error.
|
|
70
|
+
"""
|
|
71
|
+
|
|
57
72
|
extensions: GraphQLFormattedErrorExtensions
|
|
73
|
+
"""Custom extensions.
|
|
74
|
+
|
|
75
|
+
Reserved for implementors to extend the protocol however they see fit, and hence
|
|
76
|
+
there are no additional restrictions on its contents.
|
|
77
|
+
"""
|
|
58
78
|
|
|
59
79
|
|
|
60
80
|
class GraphQLError(Exception):
|
|
@@ -64,6 +84,72 @@ class GraphQLError(Exception):
|
|
|
64
84
|
phases of performing a GraphQL operation. In addition to a message, it also includes
|
|
65
85
|
information about the locations in a GraphQL document and/or execution result that
|
|
66
86
|
correspond to the Error.
|
|
87
|
+
|
|
88
|
+
:param message: Human-readable error message.
|
|
89
|
+
:param nodes: AST node or nodes associated with this error.
|
|
90
|
+
:param source: Source document used to derive error locations.
|
|
91
|
+
:param positions: Character offsets in the source document associated with this
|
|
92
|
+
error.
|
|
93
|
+
:param path: Response path where this error occurred during execution.
|
|
94
|
+
:param original_error: Original error that caused this GraphQLError, if one
|
|
95
|
+
exists.
|
|
96
|
+
:param extensions: Extension fields to include in the formatted error.
|
|
97
|
+
|
|
98
|
+
Create an error from AST nodes and response metadata:
|
|
99
|
+
|
|
100
|
+
>>> from graphql import GraphQLError, parse
|
|
101
|
+
>>> document = parse('{ greeting }')
|
|
102
|
+
>>> field_node = document.definitions[0].selection_set.selections[0]
|
|
103
|
+
>>> error = GraphQLError(
|
|
104
|
+
... 'Cannot query this field.',
|
|
105
|
+
... nodes=field_node,
|
|
106
|
+
... path=['greeting'],
|
|
107
|
+
... extensions={'code': 'FORBIDDEN'},
|
|
108
|
+
... )
|
|
109
|
+
>>> error.message
|
|
110
|
+
'Cannot query this field.'
|
|
111
|
+
>>> error.locations
|
|
112
|
+
[SourceLocation(line=1, column=3)]
|
|
113
|
+
>>> error.path
|
|
114
|
+
['greeting']
|
|
115
|
+
>>> error.extensions
|
|
116
|
+
{'code': 'FORBIDDEN'}
|
|
117
|
+
|
|
118
|
+
This variant derives locations from source positions and preserves the original
|
|
119
|
+
error:
|
|
120
|
+
|
|
121
|
+
>>> from graphql import Source
|
|
122
|
+
>>> source = Source('{ greeting }')
|
|
123
|
+
>>> original_error = RuntimeError('Database unavailable.')
|
|
124
|
+
>>> error = GraphQLError(
|
|
125
|
+
... 'Resolver failed.',
|
|
126
|
+
... source=source,
|
|
127
|
+
... positions=[2],
|
|
128
|
+
... path=['greeting'],
|
|
129
|
+
... original_error=original_error,
|
|
130
|
+
... )
|
|
131
|
+
>>> error.locations
|
|
132
|
+
[SourceLocation(line=1, column=3)]
|
|
133
|
+
>>> error.path
|
|
134
|
+
['greeting']
|
|
135
|
+
>>> error.original_error is original_error
|
|
136
|
+
True
|
|
137
|
+
|
|
138
|
+
All arguments can also be passed positionally:
|
|
139
|
+
|
|
140
|
+
>>> error = GraphQLError(
|
|
141
|
+
... 'Resolver failed.',
|
|
142
|
+
... None,
|
|
143
|
+
... source,
|
|
144
|
+
... [2],
|
|
145
|
+
... ['greeting'],
|
|
146
|
+
... original_error,
|
|
147
|
+
... {'code': 'INTERNAL'},
|
|
148
|
+
... )
|
|
149
|
+
>>> error.locations
|
|
150
|
+
[SourceLocation(line=1, column=3)]
|
|
151
|
+
>>> error.extensions
|
|
152
|
+
{'code': 'INTERNAL'}
|
|
67
153
|
"""
|
|
68
154
|
|
|
69
155
|
message: str
|
|
@@ -81,7 +167,7 @@ class GraphQLError(Exception):
|
|
|
81
167
|
"""
|
|
82
168
|
|
|
83
169
|
path: Optional[List[Union[str, int]]]
|
|
84
|
-
"""
|
|
170
|
+
"""Response path
|
|
85
171
|
|
|
86
172
|
A list of field names and array indexes describing the JSON-path into the execution
|
|
87
173
|
response which corresponds to this error.
|
|
@@ -107,7 +193,7 @@ class GraphQLError(Exception):
|
|
|
107
193
|
"""
|
|
108
194
|
|
|
109
195
|
original_error: Optional[Exception]
|
|
110
|
-
"""
|
|
196
|
+
"""Original error that caused this GraphQLError, if one exists"""
|
|
111
197
|
|
|
112
198
|
extensions: Optional[GraphQLErrorExtensions]
|
|
113
199
|
"""Extension fields to add to the formatted error"""
|
|
@@ -183,6 +269,21 @@ class GraphQLError(Exception):
|
|
|
183
269
|
self.__traceback__ = exc_info()[2]
|
|
184
270
|
|
|
185
271
|
def __str__(self) -> str:
|
|
272
|
+
"""Get this error as a human-readable message with source locations.
|
|
273
|
+
|
|
274
|
+
>>> from graphql import GraphQLError, Source
|
|
275
|
+
>>> error = GraphQLError(
|
|
276
|
+
... 'Cannot query field "name".',
|
|
277
|
+
... source=Source('{ name }'),
|
|
278
|
+
... positions=[2],
|
|
279
|
+
... )
|
|
280
|
+
>>> print(error)
|
|
281
|
+
Cannot query field "name".
|
|
282
|
+
<BLANKLINE>
|
|
283
|
+
GraphQL request:1:3
|
|
284
|
+
1 | { name }
|
|
285
|
+
| ^
|
|
286
|
+
"""
|
|
186
287
|
# Lazy import to avoid a cyclic dependency between error and language
|
|
187
288
|
from ..language.print_location import print_location, print_source_location
|
|
188
289
|
|
|
@@ -237,6 +338,16 @@ class GraphQLError(Exception):
|
|
|
237
338
|
|
|
238
339
|
Given a GraphQLError, format it according to the rules described by the
|
|
239
340
|
"Response Format, Errors" section of the GraphQL Specification.
|
|
341
|
+
|
|
342
|
+
>>> from graphql import GraphQLError
|
|
343
|
+
>>> error = GraphQLError(
|
|
344
|
+
... 'Resolver failed.',
|
|
345
|
+
... path=['viewer', 'name'],
|
|
346
|
+
... extensions={'code': 'INTERNAL'},
|
|
347
|
+
... )
|
|
348
|
+
>>> error.formatted
|
|
349
|
+
{'message': 'Resolver failed.', 'path': ['viewer', 'name'],
|
|
350
|
+
'extensions': {'code': 'INTERNAL'}}
|
|
240
351
|
"""
|
|
241
352
|
formatted: GraphQLFormattedError = {
|
|
242
353
|
"message": self.message or "An unknown error occurred.",
|
|
@@ -257,6 +368,14 @@ def print_error(error: GraphQLError) -> str:
|
|
|
257
368
|
This deprecated helper is retained for backwards compatibility; call ``str(error)``
|
|
258
369
|
instead because ``print_error`` will be removed in v3.3.
|
|
259
370
|
|
|
371
|
+
:param error: The error to format.
|
|
372
|
+
:returns: The printed string representation.
|
|
373
|
+
|
|
374
|
+
>>> from graphql import GraphQLError
|
|
375
|
+
>>> from graphql.error.graphql_error import print_error
|
|
376
|
+
>>> print_error(GraphQLError('Example error'))
|
|
377
|
+
'Example error'
|
|
378
|
+
|
|
260
379
|
.. deprecated:: 3.2
|
|
261
380
|
Please use ``str(error)`` instead. Will be removed in v3.3.
|
|
262
381
|
"""
|
|
@@ -273,6 +392,14 @@ def format_error(error: GraphQLError) -> GraphQLFormattedError:
|
|
|
273
392
|
retained for backwards compatibility; use ``error.formatted`` instead because
|
|
274
393
|
``format_error`` will be removed in v3.3.
|
|
275
394
|
|
|
395
|
+
:param error: The error to format.
|
|
396
|
+
:returns: The JSON-serializable formatted error.
|
|
397
|
+
|
|
398
|
+
>>> from graphql import GraphQLError
|
|
399
|
+
>>> from graphql.error.graphql_error import format_error
|
|
400
|
+
>>> format_error(GraphQLError('Example error'))
|
|
401
|
+
{'message': 'Example error'}
|
|
402
|
+
|
|
276
403
|
.. deprecated:: 3.2
|
|
277
404
|
Please use ``error.formatted`` instead. Will be removed in v3.3.
|
|
278
405
|
"""
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""Located GraphQL Error"""
|
|
2
|
+
|
|
1
3
|
from typing import TYPE_CHECKING, Collection, Optional, Union
|
|
2
4
|
|
|
3
5
|
from ..pyutils import inspect
|
|
@@ -19,6 +21,22 @@ def located_error(
|
|
|
19
21
|
Given an arbitrary Exception, presumably thrown while attempting to execute a
|
|
20
22
|
GraphQL operation, produce a new GraphQLError aware of the location in the document
|
|
21
23
|
responsible for the original Exception.
|
|
24
|
+
|
|
25
|
+
:param original_error: The original error value to wrap.
|
|
26
|
+
:param nodes: The AST nodes associated with the error.
|
|
27
|
+
:param path: The response path associated with the error.
|
|
28
|
+
:returns: The GraphQL error.
|
|
29
|
+
|
|
30
|
+
>>> from graphql import located_error, parse
|
|
31
|
+
>>> document = parse('{ viewer { name } }')
|
|
32
|
+
>>> field_node = document.definitions[0].selection_set.selections[0]
|
|
33
|
+
>>> error = located_error(RuntimeError('Resolver failed'), [field_node], ['viewer'])
|
|
34
|
+
>>> error.message
|
|
35
|
+
'Resolver failed'
|
|
36
|
+
>>> error.locations
|
|
37
|
+
[SourceLocation(line=1, column=3)]
|
|
38
|
+
>>> error.path
|
|
39
|
+
['viewer']
|
|
22
40
|
"""
|
|
23
41
|
# Sometimes a non-error is thrown, wrap it as a TypeError to ensure consistency.
|
|
24
42
|
if not isinstance(original_error, Exception):
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""GraphQL Syntax Error"""
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING
|
|
4
|
+
|
|
5
|
+
from .graphql_error import GraphQLError
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from ..language.source import Source # noqa: F401
|
|
9
|
+
|
|
10
|
+
__all__ = ["GraphQLSyntaxError"]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class GraphQLSyntaxError(GraphQLError):
|
|
14
|
+
"""A GraphQLError representing a syntax error.
|
|
15
|
+
|
|
16
|
+
Contains useful descriptive information about the syntax error's position in the
|
|
17
|
+
source.
|
|
18
|
+
|
|
19
|
+
:param source: The GraphQL source containing the syntax error.
|
|
20
|
+
:param position: Character offset where the syntax error was encountered.
|
|
21
|
+
:param description: Human-readable description of the syntax error.
|
|
22
|
+
|
|
23
|
+
>>> from graphql import GraphQLSyntaxError, Source
|
|
24
|
+
>>> error = GraphQLSyntaxError(Source('query {'), 7, 'Expected Name')
|
|
25
|
+
>>> error.message
|
|
26
|
+
'Syntax Error: Expected Name'
|
|
27
|
+
>>> error.locations
|
|
28
|
+
[SourceLocation(line=1, column=8)]
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
description: str
|
|
32
|
+
"""Human-readable description of the syntax error."""
|
|
33
|
+
|
|
34
|
+
def __init__(self, source: "Source", position: int, description: str) -> None:
|
|
35
|
+
super().__init__(
|
|
36
|
+
f"Syntax Error: {description}", source=source, positions=[position]
|
|
37
|
+
)
|
|
38
|
+
self.description = description
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""Collect fields"""
|
|
2
|
+
|
|
1
3
|
from typing import Any, Dict, List, Set, Union, cast
|
|
2
4
|
|
|
3
5
|
from ..language import (
|
|
@@ -37,6 +39,8 @@ def collect_fields(
|
|
|
37
39
|
object type returned by that field.
|
|
38
40
|
|
|
39
41
|
For internal use only.
|
|
42
|
+
|
|
43
|
+
:meta private:
|
|
40
44
|
"""
|
|
41
45
|
fields: Dict[str, List[FieldNode]] = {}
|
|
42
46
|
collect_fields_impl(
|
|
@@ -62,6 +66,8 @@ def collect_sub_fields(
|
|
|
62
66
|
object type returned by that field.
|
|
63
67
|
|
|
64
68
|
For internal use only.
|
|
69
|
+
|
|
70
|
+
:meta private:
|
|
65
71
|
"""
|
|
66
72
|
sub_field_nodes: Dict[str, List[FieldNode]] = {}
|
|
67
73
|
visited_fragment_names: Set[str] = set()
|
|
@@ -88,7 +94,10 @@ def collect_fields_impl(
|
|
|
88
94
|
fields: Dict[str, List[FieldNode]],
|
|
89
95
|
visited_fragment_names: Set[str],
|
|
90
96
|
) -> None:
|
|
91
|
-
"""Collect fields (internal implementation).
|
|
97
|
+
"""Collect fields (internal implementation).
|
|
98
|
+
|
|
99
|
+
:meta private:
|
|
100
|
+
"""
|
|
92
101
|
for selection in selection_set.selections:
|
|
93
102
|
if isinstance(selection, FieldNode):
|
|
94
103
|
if not should_include_node(variable_values, selection):
|
|
@@ -138,8 +147,10 @@ def should_include_node(
|
|
|
138
147
|
) -> bool:
|
|
139
148
|
"""Check if node should be included
|
|
140
149
|
|
|
141
|
-
Determines if a field should be included based on the
|
|
142
|
-
directives, where
|
|
150
|
+
Determines if a field should be included based on the ``@include`` and ``@skip``
|
|
151
|
+
directives, where ``@skip`` has higher precedence than ``@include``.
|
|
152
|
+
|
|
153
|
+
:meta private:
|
|
143
154
|
"""
|
|
144
155
|
skip = get_directive_values(GraphQLSkipDirective, node, variable_values)
|
|
145
156
|
if skip and skip["if"]:
|
|
@@ -157,7 +168,10 @@ def does_fragment_condition_match(
|
|
|
157
168
|
fragment: Union[FragmentDefinitionNode, InlineFragmentNode],
|
|
158
169
|
type_: GraphQLObjectType,
|
|
159
170
|
) -> bool:
|
|
160
|
-
"""Determine if a fragment is applicable to the given type.
|
|
171
|
+
"""Determine if a fragment is applicable to the given type.
|
|
172
|
+
|
|
173
|
+
:meta private:
|
|
174
|
+
"""
|
|
161
175
|
type_condition_node = fragment.type_condition
|
|
162
176
|
if not type_condition_node:
|
|
163
177
|
return True
|
|
@@ -170,5 +184,8 @@ def does_fragment_condition_match(
|
|
|
170
184
|
|
|
171
185
|
|
|
172
186
|
def get_field_entry_key(node: FieldNode) -> str:
|
|
173
|
-
"""
|
|
187
|
+
"""Implement the logic to compute the key of a given field's entry.
|
|
188
|
+
|
|
189
|
+
:meta private:
|
|
190
|
+
"""
|
|
174
191
|
return node.alias.value if node.alias else node.name.value
|