graphql-core 3.2.5__tar.gz → 3.2.7__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.5 → graphql_core-3.2.7}/.bumpversion.cfg +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/PKG-INFO +29 -12
- {graphql_core-3.2.5 → graphql_core-3.2.7}/README.md +12 -7
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/conf.py +2 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/validation.rst +4 -0
- graphql_core-3.2.7/poetry.lock +19 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/pyproject.toml +17 -7
- {graphql_core-3.2.5 → graphql_core-3.2.7}/setup.cfg +4 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/setup.py +3 -3
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/__init__.py +9 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/values.py +21 -6
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/lexer.py +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/parser.py +8 -7
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/visitor.py +2 -3
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_dict.py +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/undefined.py +14 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/__init__.py +4 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/definition.py +36 -13
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/directives.py +10 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/introspection.py +298 -223
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/scalars.py +4 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/schema.py +26 -13
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/validate.py +23 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/build_ast_schema.py +4 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/build_client_schema.py +36 -23
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/coerce_input_value.py +24 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/extend_schema.py +312 -233
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_introspection_query.py +11 -7
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/introspection_from_schema.py +2 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/lexicographic_sort_schema.py +6 -3
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/print_schema.py +7 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/value_from_ast.py +8 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/__init__.py +6 -1
- graphql_core-3.2.7/src/graphql/validation/rules/max_introspection_depth_rule.py +81 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/values_of_correct_type.py +69 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/specified_rules.py +11 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/version.py +2 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/PKG-INFO +29 -12
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/SOURCES.txt +3 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/requires.txt +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_abstract.py +2 -4
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_executor.py +2 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_lists.py +1 -0
- graphql_core-3.2.7/tests/execution/test_one_of.py +150 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_resolve.py +89 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/schema_kitchen_sink.graphql +6 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_block_string_fuzz.py +2 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_lexer.py +28 -28
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_parser.py +3 -3
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_print_string.py +11 -11
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_schema_parser.py +35 -16
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_schema_printer.py +6 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_description.py +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_undefined.py +16 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_definition.py +21 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_enum.py +14 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_introspection.py +120 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_scalars.py +37 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_schema.py +10 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_validation.py +43 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_build_ast_schema.py +122 -30
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_build_client_schema.py +16 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_coerce_input_value.py +93 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_find_breaking_changes.py +2 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_introspection_query.py +5 -0
- graphql_core-3.2.7/tests/utilities/test_introspection_from_schema.py +176 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_print_schema.py +21 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_strip_ignored_characters.py +1 -1
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_strip_ignored_characters_fuzz.py +2 -2
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_value_from_ast.py +17 -0
- graphql_core-3.2.7/tests/utils/__init__.py +13 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/harness.py +6 -0
- graphql_core-3.2.7/tests/validation/test_max_introspection_depth_rule.py +498 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_values_of_correct_type.py +94 -0
- graphql_core-3.2.7/tox.ini +68 -0
- graphql_core-3.2.5/poetry.lock +0 -17
- graphql_core-3.2.5/tests/utilities/test_introspection_from_schema.py +0 -62
- graphql_core-3.2.5/tests/utils/__init__.py +0 -6
- graphql_core-3.2.5/tox.ini +0 -67
- {graphql_core-3.2.5 → graphql_core-3.2.7}/.coveragerc +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/.editorconfig +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/.flake8 +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/.mypy.ini +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/.readthedocs.yaml +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/CODEOWNERS +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/LICENSE +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/MANIFEST.in +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/SECURITY.md +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/Makefile +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/diffs.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/index.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/intro.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/make.bat +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/error.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/execution.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/graphql.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/language.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/pyutils.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/type.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/utilities.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/requirements.txt +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/extension.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/index.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/introspection.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/methods.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/other.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/parser.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/queries.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/resolvers.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/schema.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/sdl.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/validator.rst +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/graphql_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/located_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/syntax_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/collect_fields.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/execute.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/map_async_iterator.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/middleware.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/subscribe.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/graphql.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/block_string.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/character_classes.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/directive_locations.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/predicates.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/print_location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/print_string.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/printer.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/source.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/token_kind.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/py.typed +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/awaitable_or_value.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/cached_property.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/convert_case.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/description.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/did_you_mean.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/group_by.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/identity_func.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/inspect.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/is_awaitable.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/is_iterable.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/merge_kwargs.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/natural_compare.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/path.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/print_path_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/simple_pub_sub.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/suggestion_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/subscription/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/assert_name.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/assert_valid_name.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/ast_from_value.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/ast_to_dict.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/concat_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/find_breaking_changes.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_operation_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_operation_root_type.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/separate_operations.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/sort_value_node.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/strip_ignored_characters.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_comparators.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_from_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_info.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/value_from_ast_untyped.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/no_deprecated.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/no_schema_introspection.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/executable_definitions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/fields_on_correct_type.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/fragments_on_composite_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_argument_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_directives.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_fragment_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_type_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/lone_anonymous_operation.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/lone_schema_definition.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_fragment_cycles.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_undefined_variables.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_unused_fragments.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_unused_variables.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/possible_fragment_spreads.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/possible_type_extensions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/provided_required_arguments.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/scalar_leafs.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/single_field_subscriptions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_argument_definition_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_argument_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_directive_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_directives_per_location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_enum_value_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_field_definition_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_fragment_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_input_field_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_operation_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_operation_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_type_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_variable_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/variables_are_input_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/variables_in_allowed_position.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/validate.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/validation_context.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/dependency_links.txt +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/not-zip-safe +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/top_level.txt +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_build_ast_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_build_client_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_execution_async.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_execution_sync.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_introspection_from_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_parser.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_repeated_fields.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_gql.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_sdl.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_visit.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/conftest.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_graphql_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_located_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_print_location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_customize.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_directives.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_execution_result.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_map_async_iterator.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_middleware.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_mutations.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_nonnull.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_parallel.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_subscribe.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_sync.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_union_interface.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_variables.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/github_schema.graphql +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/github_schema.json +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/kitchen_sink.graphql +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_block_string.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_character_classes.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_predicates.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_printer.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_source.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_visitor.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_cached_property.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_convert_case.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_did_you_mean.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_dict.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_error.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_group_by.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_identity_func.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_inspect.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_is_awaitable.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_is_iterable.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_merge_kwargs.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_natural_compare.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_path.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_print_path_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_simple_pub_sub.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_suggestion_list.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/star_wars_data.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/star_wars_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_docs.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_introspection.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_query.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_validation.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_user_registry.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_version.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_assert_name.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_custom_scalars.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_directives.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_extensions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_predicate.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_ast_from_value.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_ast_to_dict.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_concat_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_extend_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_operation_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_operation_root_type.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_separate_operations.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_sort_value_node.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_comparators.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_from_ast.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_info.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_value_from_ast_untyped.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/dedent.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/gen_fuzz_strings.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/test_dedent.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/test_gen_fuzz_strings.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/__init__.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_executable_definitions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_fields_on_correct_type.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_fragments_on_composite_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_argument_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_directives.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_fragment_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_type_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_lone_anonymous_operation.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_lone_schema_definition.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_deprecated.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_fragment_cycles.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_schema_introspection.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_undefined_variables.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_unused_fragments.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_unused_variables.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_overlapping_fields_can_be_merged.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_possible_fragment_spreads.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_possible_type_extensions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_provided_required_arguments.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_scalar_leafs.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_single_field_subscriptions.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_argument_definition_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_argument_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_directive_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_directives_per_location.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_enum_value_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_field_definition_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_fragment_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_input_field_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_operation_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_operation_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_type_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_variable_names.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_validation.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_variables_are_input_types.py +0 -0
- {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_variables_in_allowed_position.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: graphql-core
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.7
|
|
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
|
|
@@ -13,7 +13,6 @@ Classifier: Topic :: Software Development :: Libraries
|
|
|
13
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
15
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.7
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.8
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -21,14 +20,27 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
-
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Requires-Python: >=3.7,<4
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: typing-extensions<5,>=4; python_version < "3.10"
|
|
27
|
+
Requires-Dist: typing-extensions<5,>=4.7; python_version < "3.10"
|
|
28
|
+
Dynamic: author
|
|
29
|
+
Dynamic: author-email
|
|
30
|
+
Dynamic: classifier
|
|
31
|
+
Dynamic: description
|
|
32
|
+
Dynamic: description-content-type
|
|
33
|
+
Dynamic: home-page
|
|
34
|
+
Dynamic: keywords
|
|
35
|
+
Dynamic: license
|
|
36
|
+
Dynamic: license-file
|
|
37
|
+
Dynamic: requires-dist
|
|
38
|
+
Dynamic: requires-python
|
|
39
|
+
Dynamic: summary
|
|
28
40
|
|
|
29
41
|
# GraphQL-core 3
|
|
30
42
|
|
|
31
|
-
GraphQL-core 3 is a Python 3.
|
|
43
|
+
GraphQL-core 3 is a Python 3.7+ port of [GraphQL.js](https://github.com/graphql/graphql-js),
|
|
32
44
|
the JavaScript reference implementation for [GraphQL](https://graphql.org/),
|
|
33
45
|
a query language for APIs created by Facebook.
|
|
34
46
|
|
|
@@ -38,13 +50,18 @@ a query language for APIs created by Facebook.
|
|
|
38
50
|

|
|
39
51
|
[](https://github.com/ambv/black)
|
|
40
52
|
|
|
41
|
-
The current version 3.2.
|
|
53
|
+
The current version 3.2.7 of GraphQL-core is up-to-date with GraphQL.js version 16.9.0.
|
|
42
54
|
|
|
43
|
-
An extensive test suite with over
|
|
55
|
+
An extensive test suite with over 2500 unit tests and 100% coverage comprises a
|
|
44
56
|
replication of the complete test suite of GraphQL.js, making sure this port is
|
|
45
57
|
reliable and compatible with GraphQL.js.
|
|
46
58
|
|
|
47
|
-
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
59
|
+
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
60
|
+
Changes in the major version of GraphQL.js are reflected in the minor version of
|
|
61
|
+
GraphQL-core instead. This means there can be breaking changes in the API
|
|
62
|
+
when the minor version changes, and only patch releases are fully backward compatible.
|
|
63
|
+
Therefore, we recommend using something like `~= 3.2.0` as the version specifier
|
|
64
|
+
when including GraphQL-core as a dependency.
|
|
48
65
|
|
|
49
66
|
|
|
50
67
|
## Documentation
|
|
@@ -76,8 +93,8 @@ GraphQL-core 3 can be installed from PyPI using the built-in pip command:
|
|
|
76
93
|
|
|
77
94
|
python -m pip install graphql-core
|
|
78
95
|
|
|
79
|
-
You can also use [poetry](https://github.com/python-poetry/poetry) for installation
|
|
80
|
-
virtual environment:
|
|
96
|
+
You can also use [poetry](https://github.com/python-poetry/poetry) for installation
|
|
97
|
+
in a virtual environment:
|
|
81
98
|
|
|
82
99
|
poetry install
|
|
83
100
|
|
|
@@ -219,7 +236,7 @@ Design goals for the GraphQL-core 3 library were:
|
|
|
219
236
|
|
|
220
237
|
Some restrictions (mostly in line with the design goals):
|
|
221
238
|
|
|
222
|
-
* requires Python 3.
|
|
239
|
+
* requires Python 3.7 or newer
|
|
223
240
|
* does not support some already deprecated methods and options of GraphQL.js
|
|
224
241
|
* supports asynchronous operations only via async.io
|
|
225
242
|
(does not support the additional executors in GraphQL-core)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GraphQL-core 3
|
|
2
2
|
|
|
3
|
-
GraphQL-core 3 is a Python 3.
|
|
3
|
+
GraphQL-core 3 is a Python 3.7+ port of [GraphQL.js](https://github.com/graphql/graphql-js),
|
|
4
4
|
the JavaScript reference implementation for [GraphQL](https://graphql.org/),
|
|
5
5
|
a query language for APIs created by Facebook.
|
|
6
6
|
|
|
@@ -10,13 +10,18 @@ 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.7 of GraphQL-core is up-to-date with GraphQL.js version 16.9.0.
|
|
14
14
|
|
|
15
|
-
An extensive test suite with over
|
|
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
|
|
17
17
|
reliable and compatible with GraphQL.js.
|
|
18
18
|
|
|
19
|
-
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
19
|
+
Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
|
|
20
|
+
Changes in the major version of GraphQL.js are reflected in the minor version of
|
|
21
|
+
GraphQL-core instead. This means there can be breaking changes in the API
|
|
22
|
+
when the minor version changes, and only patch releases are fully backward compatible.
|
|
23
|
+
Therefore, we recommend using something like `~= 3.2.0` as the version specifier
|
|
24
|
+
when including GraphQL-core as a dependency.
|
|
20
25
|
|
|
21
26
|
|
|
22
27
|
## Documentation
|
|
@@ -48,8 +53,8 @@ GraphQL-core 3 can be installed from PyPI using the built-in pip command:
|
|
|
48
53
|
|
|
49
54
|
python -m pip install graphql-core
|
|
50
55
|
|
|
51
|
-
You can also use [poetry](https://github.com/python-poetry/poetry) for installation
|
|
52
|
-
virtual environment:
|
|
56
|
+
You can also use [poetry](https://github.com/python-poetry/poetry) for installation
|
|
57
|
+
in a virtual environment:
|
|
53
58
|
|
|
54
59
|
poetry install
|
|
55
60
|
|
|
@@ -191,7 +196,7 @@ Design goals for the GraphQL-core 3 library were:
|
|
|
191
196
|
|
|
192
197
|
Some restrictions (mostly in line with the design goals):
|
|
193
198
|
|
|
194
|
-
* requires Python 3.
|
|
199
|
+
* requires Python 3.7 or newer
|
|
195
200
|
* does not support some already deprecated methods and options of GraphQL.js
|
|
196
201
|
* supports asynchronous operations only via async.io
|
|
197
202
|
(does not support the additional executors in GraphQL-core)
|
|
@@ -51,7 +51,7 @@ master_doc = "index"
|
|
|
51
51
|
|
|
52
52
|
# General information about the project.
|
|
53
53
|
project = "GraphQL-core 3"
|
|
54
|
-
copyright = "
|
|
54
|
+
copyright = "2025, Christoph Zwerschke"
|
|
55
55
|
author = "Christoph Zwerschke"
|
|
56
56
|
|
|
57
57
|
# The version info for the project you're documenting, acts as replacement for
|
|
@@ -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.7"
|
|
65
65
|
|
|
66
66
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
|
67
67
|
# for a list of supported languages.
|
|
@@ -137,6 +137,10 @@ Rules
|
|
|
137
137
|
|
|
138
138
|
.. autoclass:: VariablesInAllowedPositionRule
|
|
139
139
|
|
|
140
|
+
**No spec section: "Maximum introspection depth"**
|
|
141
|
+
|
|
142
|
+
.. autoclass:: MaxIntrospectionDepthRule
|
|
143
|
+
|
|
140
144
|
**SDL-specific validation rules**
|
|
141
145
|
|
|
142
146
|
.. autoclass:: LoneSchemaDefinitionRule
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand.
|
|
2
|
+
|
|
3
|
+
[[package]]
|
|
4
|
+
name = "typing-extensions"
|
|
5
|
+
version = "4.7.1"
|
|
6
|
+
description = "Backported and Experimental Type Hints for Python 3.7+"
|
|
7
|
+
optional = false
|
|
8
|
+
python-versions = ">=3.7"
|
|
9
|
+
groups = ["main"]
|
|
10
|
+
markers = "python_version < \"3.10\""
|
|
11
|
+
files = [
|
|
12
|
+
{file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
|
|
13
|
+
{file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
[metadata]
|
|
17
|
+
lock-version = "2.1"
|
|
18
|
+
python-versions = "^3.7"
|
|
19
|
+
content-hash = "d66030380f60a51d643393288c825d3e740f0b810f616d696cd1b367db19456e"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "graphql-core"
|
|
3
|
-
version = "3.2.
|
|
3
|
+
version = "3.2.7"
|
|
4
4
|
description = """
|
|
5
5
|
GraphQL-core is a Python port of GraphQL.js,\
|
|
6
6
|
the JavaScript reference implementation for GraphQL."""
|
|
@@ -18,14 +18,14 @@ classifiers = [
|
|
|
18
18
|
"Intended Audience :: Developers",
|
|
19
19
|
"License :: OSI Approved :: MIT License",
|
|
20
20
|
"Programming Language :: Python :: 3",
|
|
21
|
-
"Programming Language :: Python :: 3.6",
|
|
22
21
|
"Programming Language :: Python :: 3.7",
|
|
23
22
|
"Programming Language :: Python :: 3.8",
|
|
24
23
|
"Programming Language :: Python :: 3.9",
|
|
25
24
|
"Programming Language :: Python :: 3.10",
|
|
26
25
|
"Programming Language :: Python :: 3.11",
|
|
27
26
|
"Programming Language :: Python :: 3.12",
|
|
28
|
-
"Programming Language :: Python :: 3.13"
|
|
27
|
+
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
29
29
|
]
|
|
30
30
|
packages = [
|
|
31
31
|
{ include = "graphql", from = "src" },
|
|
@@ -47,17 +47,27 @@ packages = [
|
|
|
47
47
|
]
|
|
48
48
|
|
|
49
49
|
[tool.poetry.dependencies]
|
|
50
|
-
python = "^3.
|
|
50
|
+
python = "^3.7"
|
|
51
51
|
typing-extensions = [
|
|
52
|
-
{ version = ">=4,<5", python = "<3.10" }
|
|
52
|
+
{ version = ">=4.7,<5", python = "<3.10" }
|
|
53
53
|
]
|
|
54
54
|
|
|
55
55
|
[tool.black]
|
|
56
|
-
target-version = [
|
|
56
|
+
target-version = [
|
|
57
|
+
'py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313', 'py314'
|
|
58
|
+
]
|
|
57
59
|
|
|
58
60
|
[tool.pyright]
|
|
61
|
+
# silence pyright since we're using mypy already
|
|
62
|
+
reportArgumentType = false
|
|
63
|
+
reportAssignmentType = false
|
|
64
|
+
reportAttributeAccessIssue = false
|
|
59
65
|
reportIncompatibleVariableOverride = false
|
|
66
|
+
reportInvalidTypeForm = false
|
|
67
|
+
reportMissingModuleSource = false
|
|
60
68
|
reportMissingTypeArgument = false
|
|
69
|
+
reportReturnType = false
|
|
70
|
+
reportTypedDictNotRequiredAccess = false
|
|
61
71
|
reportUnknownArgumentType = false
|
|
62
72
|
reportUnknownMemberType = false
|
|
63
73
|
reportUnknownParameterType = false
|
|
@@ -77,5 +87,5 @@ disable = [
|
|
|
77
87
|
]
|
|
78
88
|
|
|
79
89
|
[build-system]
|
|
80
|
-
requires = ["poetry_core>=1,<
|
|
90
|
+
requires = ["poetry_core>=1,<3", "setuptools>=59,<81"]
|
|
81
91
|
build-backend = "poetry.core.masonry.api"
|
|
@@ -5,11 +5,14 @@ python-tag = py3
|
|
|
5
5
|
test = pytest
|
|
6
6
|
|
|
7
7
|
[tool:pytest]
|
|
8
|
+
minversion = 7.4
|
|
8
9
|
addopts = --benchmark-disable
|
|
9
10
|
python_classes = PyTest*
|
|
10
|
-
asyncio_mode =
|
|
11
|
+
asyncio_mode = strict
|
|
12
|
+
asyncio_default_fixture_loop_scope = function
|
|
11
13
|
timeout = 100
|
|
12
14
|
filterwarnings = ignore::pytest.PytestConfigWarning
|
|
15
|
+
testpaths = tests
|
|
13
16
|
|
|
14
17
|
[egg_info]
|
|
15
18
|
tag_build =
|
|
@@ -27,7 +27,6 @@ setup(
|
|
|
27
27
|
"License :: OSI Approved :: MIT License",
|
|
28
28
|
"Programming Language :: Python :: 3",
|
|
29
29
|
"Programming Language :: Python :: 3 :: Only",
|
|
30
|
-
"Programming Language :: Python :: 3.6",
|
|
31
30
|
"Programming Language :: Python :: 3.7",
|
|
32
31
|
"Programming Language :: Python :: 3.8",
|
|
33
32
|
"Programming Language :: Python :: 3.9",
|
|
@@ -35,11 +34,12 @@ setup(
|
|
|
35
34
|
"Programming Language :: Python :: 3.11",
|
|
36
35
|
"Programming Language :: Python :: 3.12",
|
|
37
36
|
"Programming Language :: Python :: 3.13",
|
|
37
|
+
"Programming Language :: Python :: 3.14",
|
|
38
38
|
],
|
|
39
39
|
install_requires=[
|
|
40
|
-
"typing-extensions>=4,<5; python_version < '3.10'",
|
|
40
|
+
"typing-extensions>=4.7,<5; python_version < '3.10'",
|
|
41
41
|
],
|
|
42
|
-
python_requires=">=3.
|
|
42
|
+
python_requires=">=3.7,<4",
|
|
43
43
|
packages=find_packages("src"),
|
|
44
44
|
package_dir={"": "src"},
|
|
45
45
|
# PEP-561: https://www.python.org/dev/peps/pep-0561/
|
|
@@ -256,6 +256,7 @@ from .type import (
|
|
|
256
256
|
GraphQLSkipDirective,
|
|
257
257
|
GraphQLDeprecatedDirective,
|
|
258
258
|
GraphQLSpecifiedByDirective,
|
|
259
|
+
GraphQLOneOfDirective,
|
|
259
260
|
# "Enum" of Type Kinds
|
|
260
261
|
TypeKind,
|
|
261
262
|
# Constant Deprecation Reason
|
|
@@ -341,6 +342,7 @@ from .type import (
|
|
|
341
342
|
GraphQLArgumentMap,
|
|
342
343
|
GraphQLEnumValue,
|
|
343
344
|
GraphQLEnumValueMap,
|
|
345
|
+
GraphQLEnumValuesDefinition,
|
|
344
346
|
GraphQLField,
|
|
345
347
|
GraphQLFieldMap,
|
|
346
348
|
GraphQLFieldResolver,
|
|
@@ -378,6 +380,7 @@ from .validation import (
|
|
|
378
380
|
SDLValidationRule,
|
|
379
381
|
# All validation rules in the GraphQL Specification.
|
|
380
382
|
specified_rules,
|
|
383
|
+
recommended_rules,
|
|
381
384
|
# Individual validation rules.
|
|
382
385
|
ExecutableDefinitionsRule,
|
|
383
386
|
FieldsOnCorrectTypeRule,
|
|
@@ -417,6 +420,8 @@ from .validation import (
|
|
|
417
420
|
# Custom validation rules
|
|
418
421
|
NoDeprecatedCustomRule,
|
|
419
422
|
NoSchemaIntrospectionCustomRule,
|
|
423
|
+
# Recommended validation rules
|
|
424
|
+
MaxIntrospectionDepthRule,
|
|
420
425
|
)
|
|
421
426
|
|
|
422
427
|
# Execute GraphQL documents.
|
|
@@ -485,6 +490,7 @@ __all__ = [
|
|
|
485
490
|
"GraphQLSkipDirective",
|
|
486
491
|
"GraphQLDeprecatedDirective",
|
|
487
492
|
"GraphQLSpecifiedByDirective",
|
|
493
|
+
"GraphQLOneOfDirective",
|
|
488
494
|
"TypeKind",
|
|
489
495
|
"DEFAULT_DEPRECATION_REASON",
|
|
490
496
|
"introspection_types",
|
|
@@ -559,6 +565,7 @@ __all__ = [
|
|
|
559
565
|
"GraphQLArgumentMap",
|
|
560
566
|
"GraphQLEnumValue",
|
|
561
567
|
"GraphQLEnumValueMap",
|
|
568
|
+
"GraphQLEnumValuesDefinition",
|
|
562
569
|
"GraphQLField",
|
|
563
570
|
"GraphQLFieldMap",
|
|
564
571
|
"GraphQLFieldResolver",
|
|
@@ -700,6 +707,7 @@ __all__ = [
|
|
|
700
707
|
"ASTValidationRule",
|
|
701
708
|
"SDLValidationRule",
|
|
702
709
|
"specified_rules",
|
|
710
|
+
"recommended_rules",
|
|
703
711
|
"ExecutableDefinitionsRule",
|
|
704
712
|
"FieldsOnCorrectTypeRule",
|
|
705
713
|
"FragmentsOnCompositeTypesRule",
|
|
@@ -736,6 +744,7 @@ __all__ = [
|
|
|
736
744
|
"PossibleTypeExtensionsRule",
|
|
737
745
|
"NoDeprecatedCustomRule",
|
|
738
746
|
"NoSchemaIntrospectionCustomRule",
|
|
747
|
+
"MaxIntrospectionDepthRule",
|
|
739
748
|
"GraphQLError",
|
|
740
749
|
"GraphQLErrorExtensions",
|
|
741
750
|
"GraphQLFormattedError",
|
|
@@ -23,6 +23,7 @@ from ..type import (
|
|
|
23
23
|
GraphQLField,
|
|
24
24
|
GraphQLInputType,
|
|
25
25
|
GraphQLSchema,
|
|
26
|
+
is_input_object_type,
|
|
26
27
|
is_input_type,
|
|
27
28
|
is_non_null_type,
|
|
28
29
|
)
|
|
@@ -121,7 +122,11 @@ def coerce_variable_values(
|
|
|
121
122
|
continue
|
|
122
123
|
|
|
123
124
|
def on_input_value_error(
|
|
124
|
-
path: List[Union[str, int]],
|
|
125
|
+
path: List[Union[str, int]],
|
|
126
|
+
invalid_value: Any,
|
|
127
|
+
error: GraphQLError,
|
|
128
|
+
var_name: str = var_name,
|
|
129
|
+
var_def_node: VariableDefinitionNode = var_def_node,
|
|
125
130
|
) -> None:
|
|
126
131
|
invalid_str = inspect(invalid_value)
|
|
127
132
|
prefix = f"Variable '${var_name}' got invalid value {invalid_str}"
|
|
@@ -160,8 +165,13 @@ def get_argument_values(
|
|
|
160
165
|
argument_node = arg_node_map.get(name)
|
|
161
166
|
|
|
162
167
|
if argument_node is None:
|
|
163
|
-
|
|
164
|
-
|
|
168
|
+
value = arg_def.default_value
|
|
169
|
+
if value is not Undefined:
|
|
170
|
+
if is_input_object_type(arg_def.type):
|
|
171
|
+
# coerce input value so that out_names are used
|
|
172
|
+
value = coerce_input_value(value, arg_def.type)
|
|
173
|
+
|
|
174
|
+
coerced_values[arg_def.out_name or name] = value
|
|
165
175
|
elif is_non_null_type(arg_type): # pragma: no cover else
|
|
166
176
|
raise GraphQLError(
|
|
167
177
|
f"Argument '{name}' of required type '{arg_type}'"
|
|
@@ -176,8 +186,12 @@ def get_argument_values(
|
|
|
176
186
|
if isinstance(value_node, VariableNode):
|
|
177
187
|
variable_name = value_node.name.value
|
|
178
188
|
if variable_values is None or variable_name not in variable_values:
|
|
179
|
-
|
|
180
|
-
|
|
189
|
+
value = arg_def.default_value
|
|
190
|
+
if value is not Undefined:
|
|
191
|
+
if is_input_object_type(arg_def.type):
|
|
192
|
+
# coerce input value so that out_names are used
|
|
193
|
+
value = coerce_input_value(value, arg_def.type)
|
|
194
|
+
coerced_values[arg_def.out_name or name] = value
|
|
181
195
|
elif is_non_null_type(arg_type): # pragma: no cover else
|
|
182
196
|
raise GraphQLError(
|
|
183
197
|
f"Argument '{name}' of required type '{arg_type}'"
|
|
@@ -186,7 +200,8 @@ def get_argument_values(
|
|
|
186
200
|
value_node,
|
|
187
201
|
)
|
|
188
202
|
continue # pragma: no cover
|
|
189
|
-
|
|
203
|
+
variable_value = variable_values[variable_name]
|
|
204
|
+
is_null = variable_value is None or variable_value is Undefined
|
|
190
205
|
|
|
191
206
|
if is_null and is_non_null_type(arg_type):
|
|
192
207
|
raise GraphQLError(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
from typing import Callable, Dict, List, Optional, Union, TypeVar, cast
|
|
2
1
|
from functools import partial
|
|
2
|
+
from typing import Callable, Dict, List, Optional, TypeVar, Union, cast
|
|
3
3
|
|
|
4
|
+
from ..error import GraphQLError, GraphQLSyntaxError
|
|
4
5
|
from .ast import (
|
|
5
6
|
ArgumentNode,
|
|
6
7
|
BooleanValueNode,
|
|
@@ -24,14 +25,14 @@ from .ast import (
|
|
|
24
25
|
InputObjectTypeDefinitionNode,
|
|
25
26
|
InputObjectTypeExtensionNode,
|
|
26
27
|
InputValueDefinitionNode,
|
|
27
|
-
IntValueNode,
|
|
28
28
|
InterfaceTypeDefinitionNode,
|
|
29
29
|
InterfaceTypeExtensionNode,
|
|
30
|
+
IntValueNode,
|
|
30
31
|
ListTypeNode,
|
|
31
32
|
ListValueNode,
|
|
32
33
|
Location,
|
|
33
|
-
NameNode,
|
|
34
34
|
NamedTypeNode,
|
|
35
|
+
NameNode,
|
|
35
36
|
NonNullTypeNode,
|
|
36
37
|
NullValueNode,
|
|
37
38
|
ObjectFieldNode,
|
|
@@ -48,6 +49,7 @@ from .ast import (
|
|
|
48
49
|
SelectionNode,
|
|
49
50
|
SelectionSetNode,
|
|
50
51
|
StringValueNode,
|
|
52
|
+
Token,
|
|
51
53
|
TypeNode,
|
|
52
54
|
TypeSystemExtensionNode,
|
|
53
55
|
UnionTypeDefinitionNode,
|
|
@@ -57,11 +59,9 @@ from .ast import (
|
|
|
57
59
|
VariableNode,
|
|
58
60
|
)
|
|
59
61
|
from .directive_locations import DirectiveLocation
|
|
60
|
-
from .ast import Token
|
|
61
62
|
from .lexer import Lexer, is_punctuator_token_kind
|
|
62
63
|
from .source import Source, is_source
|
|
63
64
|
from .token_kind import TokenKind
|
|
64
|
-
from ..error import GraphQLError, GraphQLSyntaxError
|
|
65
65
|
|
|
66
66
|
__all__ = ["parse", "parse_type", "parse_value", "parse_const_value"]
|
|
67
67
|
|
|
@@ -401,8 +401,9 @@ class Parser:
|
|
|
401
401
|
def parse_arguments(self, is_const: bool) -> List[ArgumentNode]:
|
|
402
402
|
"""Arguments[Const]: (Argument[?Const]+)"""
|
|
403
403
|
item = self.parse_const_argument if is_const else self.parse_argument
|
|
404
|
-
|
|
405
|
-
|
|
404
|
+
return self.optional_many(
|
|
405
|
+
TokenKind.PAREN_L, cast(Callable[[], ArgumentNode], item), TokenKind.PAREN_R
|
|
406
|
+
)
|
|
406
407
|
|
|
407
408
|
def parse_argument(self, is_const: bool = False) -> ArgumentNode:
|
|
408
409
|
"""Argument[Const]: Name : Value[?Const]"""
|
|
@@ -14,8 +14,7 @@ from typing import (
|
|
|
14
14
|
|
|
15
15
|
from ..pyutils import inspect, snake_to_camel
|
|
16
16
|
from . import ast
|
|
17
|
-
|
|
18
|
-
from .ast import Node, QUERY_DOCUMENT_KEYS
|
|
17
|
+
from .ast import QUERY_DOCUMENT_KEYS, Node
|
|
19
18
|
|
|
20
19
|
__all__ = [
|
|
21
20
|
"Visitor",
|
|
@@ -288,7 +287,7 @@ def visit(
|
|
|
288
287
|
else:
|
|
289
288
|
stack = Stack(in_array, idx, keys, edits, stack)
|
|
290
289
|
in_array = isinstance(node, tuple)
|
|
291
|
-
keys = node if in_array else visitor_keys.get(node.kind, ())
|
|
290
|
+
keys = node if in_array else visitor_keys.get(node.kind, ()) # type: ignore
|
|
292
291
|
idx = -1
|
|
293
292
|
edits = []
|
|
294
293
|
if parent:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import warnings
|
|
2
|
+
from typing import Any, Optional
|
|
2
3
|
|
|
3
4
|
__all__ = ["Undefined", "UndefinedType"]
|
|
4
5
|
|
|
@@ -6,6 +7,18 @@ __all__ = ["Undefined", "UndefinedType"]
|
|
|
6
7
|
class UndefinedType(ValueError):
|
|
7
8
|
"""Auxiliary class for creating the Undefined singleton."""
|
|
8
9
|
|
|
10
|
+
_instance: Optional["UndefinedType"] = None
|
|
11
|
+
|
|
12
|
+
def __new__(cls) -> "UndefinedType":
|
|
13
|
+
if cls._instance is None:
|
|
14
|
+
cls._instance = super().__new__(cls)
|
|
15
|
+
else:
|
|
16
|
+
warnings.warn("Redefinition of 'Undefined'", RuntimeWarning, stacklevel=2)
|
|
17
|
+
return cls._instance
|
|
18
|
+
|
|
19
|
+
def __reduce__(self) -> str:
|
|
20
|
+
return "Undefined"
|
|
21
|
+
|
|
9
22
|
def __repr__(self) -> str:
|
|
10
23
|
return "Undefined"
|
|
11
24
|
|
|
@@ -92,6 +92,7 @@ from .definition import (
|
|
|
92
92
|
GraphQLArgumentMap,
|
|
93
93
|
GraphQLEnumValue,
|
|
94
94
|
GraphQLEnumValueMap,
|
|
95
|
+
GraphQLEnumValuesDefinition,
|
|
95
96
|
GraphQLField,
|
|
96
97
|
GraphQLFieldMap,
|
|
97
98
|
GraphQLInputField,
|
|
@@ -132,6 +133,7 @@ from .directives import (
|
|
|
132
133
|
GraphQLSkipDirective,
|
|
133
134
|
GraphQLDeprecatedDirective,
|
|
134
135
|
GraphQLSpecifiedByDirective,
|
|
136
|
+
GraphQLOneOfDirective,
|
|
135
137
|
# Keyword Args
|
|
136
138
|
GraphQLDirectiveKwargs,
|
|
137
139
|
# Constant Deprecation Reason
|
|
@@ -244,6 +246,7 @@ __all__ = [
|
|
|
244
246
|
"GraphQLArgumentMap",
|
|
245
247
|
"GraphQLEnumValue",
|
|
246
248
|
"GraphQLEnumValueMap",
|
|
249
|
+
"GraphQLEnumValuesDefinition",
|
|
247
250
|
"GraphQLField",
|
|
248
251
|
"GraphQLFieldMap",
|
|
249
252
|
"GraphQLInputField",
|
|
@@ -276,6 +279,7 @@ __all__ = [
|
|
|
276
279
|
"GraphQLSkipDirective",
|
|
277
280
|
"GraphQLDeprecatedDirective",
|
|
278
281
|
"GraphQLSpecifiedByDirective",
|
|
282
|
+
"GraphQLOneOfDirective",
|
|
279
283
|
"GraphQLDirectiveKwargs",
|
|
280
284
|
"DEFAULT_DEPRECATION_REASON",
|
|
281
285
|
"is_specified_scalar_type",
|