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.
Files changed (346) hide show
  1. {graphql_core-3.2.5 → graphql_core-3.2.7}/.bumpversion.cfg +1 -1
  2. {graphql_core-3.2.5 → graphql_core-3.2.7}/PKG-INFO +29 -12
  3. {graphql_core-3.2.5 → graphql_core-3.2.7}/README.md +12 -7
  4. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/conf.py +2 -2
  5. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/validation.rst +4 -0
  6. graphql_core-3.2.7/poetry.lock +19 -0
  7. {graphql_core-3.2.5 → graphql_core-3.2.7}/pyproject.toml +17 -7
  8. {graphql_core-3.2.5 → graphql_core-3.2.7}/setup.cfg +4 -1
  9. {graphql_core-3.2.5 → graphql_core-3.2.7}/setup.py +3 -3
  10. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/__init__.py +9 -0
  11. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/values.py +21 -6
  12. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/lexer.py +1 -1
  13. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/parser.py +8 -7
  14. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/visitor.py +2 -3
  15. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_dict.py +1 -1
  16. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/undefined.py +14 -1
  17. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/__init__.py +4 -0
  18. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/definition.py +36 -13
  19. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/directives.py +10 -0
  20. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/introspection.py +298 -223
  21. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/scalars.py +4 -0
  22. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/schema.py +26 -13
  23. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/validate.py +23 -1
  24. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/build_ast_schema.py +4 -2
  25. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/build_client_schema.py +36 -23
  26. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/coerce_input_value.py +24 -0
  27. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/extend_schema.py +312 -233
  28. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_introspection_query.py +11 -7
  29. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/introspection_from_schema.py +2 -0
  30. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/lexicographic_sort_schema.py +6 -3
  31. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/print_schema.py +7 -2
  32. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/value_from_ast.py +8 -0
  33. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/__init__.py +6 -1
  34. graphql_core-3.2.7/src/graphql/validation/rules/max_introspection_depth_rule.py +81 -0
  35. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/values_of_correct_type.py +69 -2
  36. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/specified_rules.py +11 -1
  37. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/version.py +2 -2
  38. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/PKG-INFO +29 -12
  39. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/SOURCES.txt +3 -0
  40. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/requires.txt +1 -1
  41. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_abstract.py +2 -4
  42. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_executor.py +2 -0
  43. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_lists.py +1 -0
  44. graphql_core-3.2.7/tests/execution/test_one_of.py +150 -0
  45. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_resolve.py +89 -2
  46. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/schema_kitchen_sink.graphql +6 -0
  47. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_block_string_fuzz.py +2 -2
  48. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_lexer.py +28 -28
  49. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_parser.py +3 -3
  50. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_print_string.py +11 -11
  51. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_schema_parser.py +35 -16
  52. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_schema_printer.py +6 -0
  53. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_description.py +1 -1
  54. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_undefined.py +16 -2
  55. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_definition.py +21 -0
  56. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_enum.py +14 -0
  57. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_introspection.py +120 -0
  58. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_scalars.py +37 -0
  59. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_schema.py +10 -1
  60. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_validation.py +43 -0
  61. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_build_ast_schema.py +122 -30
  62. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_build_client_schema.py +16 -0
  63. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_coerce_input_value.py +93 -0
  64. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_find_breaking_changes.py +2 -0
  65. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_introspection_query.py +5 -0
  66. graphql_core-3.2.7/tests/utilities/test_introspection_from_schema.py +176 -0
  67. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_print_schema.py +21 -1
  68. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_strip_ignored_characters.py +1 -1
  69. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_strip_ignored_characters_fuzz.py +2 -2
  70. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_value_from_ast.py +17 -0
  71. graphql_core-3.2.7/tests/utils/__init__.py +13 -0
  72. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/harness.py +6 -0
  73. graphql_core-3.2.7/tests/validation/test_max_introspection_depth_rule.py +498 -0
  74. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_values_of_correct_type.py +94 -0
  75. graphql_core-3.2.7/tox.ini +68 -0
  76. graphql_core-3.2.5/poetry.lock +0 -17
  77. graphql_core-3.2.5/tests/utilities/test_introspection_from_schema.py +0 -62
  78. graphql_core-3.2.5/tests/utils/__init__.py +0 -6
  79. graphql_core-3.2.5/tox.ini +0 -67
  80. {graphql_core-3.2.5 → graphql_core-3.2.7}/.coveragerc +0 -0
  81. {graphql_core-3.2.5 → graphql_core-3.2.7}/.editorconfig +0 -0
  82. {graphql_core-3.2.5 → graphql_core-3.2.7}/.flake8 +0 -0
  83. {graphql_core-3.2.5 → graphql_core-3.2.7}/.mypy.ini +0 -0
  84. {graphql_core-3.2.5 → graphql_core-3.2.7}/.readthedocs.yaml +0 -0
  85. {graphql_core-3.2.5 → graphql_core-3.2.7}/CODEOWNERS +0 -0
  86. {graphql_core-3.2.5 → graphql_core-3.2.7}/LICENSE +0 -0
  87. {graphql_core-3.2.5 → graphql_core-3.2.7}/MANIFEST.in +0 -0
  88. {graphql_core-3.2.5 → graphql_core-3.2.7}/SECURITY.md +0 -0
  89. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/Makefile +0 -0
  90. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/diffs.rst +0 -0
  91. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/index.rst +0 -0
  92. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/intro.rst +0 -0
  93. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/make.bat +0 -0
  94. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/error.rst +0 -0
  95. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/execution.rst +0 -0
  96. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/graphql.rst +0 -0
  97. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/language.rst +0 -0
  98. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/pyutils.rst +0 -0
  99. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/type.rst +0 -0
  100. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/modules/utilities.rst +0 -0
  101. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/requirements.txt +0 -0
  102. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/extension.rst +0 -0
  103. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/index.rst +0 -0
  104. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/introspection.rst +0 -0
  105. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/methods.rst +0 -0
  106. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/other.rst +0 -0
  107. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/parser.rst +0 -0
  108. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/queries.rst +0 -0
  109. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/resolvers.rst +0 -0
  110. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/schema.rst +0 -0
  111. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/sdl.rst +0 -0
  112. {graphql_core-3.2.5 → graphql_core-3.2.7}/docs/usage/validator.rst +0 -0
  113. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/__init__.py +0 -0
  114. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/graphql_error.py +0 -0
  115. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/located_error.py +0 -0
  116. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/error/syntax_error.py +0 -0
  117. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/__init__.py +0 -0
  118. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/collect_fields.py +0 -0
  119. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/execute.py +0 -0
  120. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/map_async_iterator.py +0 -0
  121. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/middleware.py +0 -0
  122. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/execution/subscribe.py +0 -0
  123. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/graphql.py +0 -0
  124. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/__init__.py +0 -0
  125. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/ast.py +0 -0
  126. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/block_string.py +0 -0
  127. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/character_classes.py +0 -0
  128. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/directive_locations.py +0 -0
  129. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/location.py +0 -0
  130. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/predicates.py +0 -0
  131. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/print_location.py +0 -0
  132. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/print_string.py +0 -0
  133. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/printer.py +0 -0
  134. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/source.py +0 -0
  135. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/language/token_kind.py +0 -0
  136. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/py.typed +0 -0
  137. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/__init__.py +0 -0
  138. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/awaitable_or_value.py +0 -0
  139. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/cached_property.py +0 -0
  140. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/convert_case.py +0 -0
  141. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/description.py +0 -0
  142. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/did_you_mean.py +0 -0
  143. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_error.py +0 -0
  144. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/frozen_list.py +0 -0
  145. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/group_by.py +0 -0
  146. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/identity_func.py +0 -0
  147. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/inspect.py +0 -0
  148. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/is_awaitable.py +0 -0
  149. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/is_iterable.py +0 -0
  150. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/merge_kwargs.py +0 -0
  151. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/natural_compare.py +0 -0
  152. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/path.py +0 -0
  153. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/print_path_list.py +0 -0
  154. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/simple_pub_sub.py +0 -0
  155. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/pyutils/suggestion_list.py +0 -0
  156. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/subscription/__init__.py +0 -0
  157. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/type/assert_name.py +0 -0
  158. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/__init__.py +0 -0
  159. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/assert_valid_name.py +0 -0
  160. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/ast_from_value.py +0 -0
  161. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/ast_to_dict.py +0 -0
  162. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/concat_ast.py +0 -0
  163. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/find_breaking_changes.py +0 -0
  164. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_operation_ast.py +0 -0
  165. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/get_operation_root_type.py +0 -0
  166. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/separate_operations.py +0 -0
  167. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/sort_value_node.py +0 -0
  168. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/strip_ignored_characters.py +0 -0
  169. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_comparators.py +0 -0
  170. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_from_ast.py +0 -0
  171. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/type_info.py +0 -0
  172. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/utilities/value_from_ast_untyped.py +0 -0
  173. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/__init__.py +0 -0
  174. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/__init__.py +0 -0
  175. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/no_deprecated.py +0 -0
  176. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/custom/no_schema_introspection.py +0 -0
  177. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/executable_definitions.py +0 -0
  178. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/fields_on_correct_type.py +0 -0
  179. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/fragments_on_composite_types.py +0 -0
  180. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_argument_names.py +0 -0
  181. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_directives.py +0 -0
  182. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_fragment_names.py +0 -0
  183. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/known_type_names.py +0 -0
  184. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/lone_anonymous_operation.py +0 -0
  185. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/lone_schema_definition.py +0 -0
  186. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_fragment_cycles.py +0 -0
  187. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_undefined_variables.py +0 -0
  188. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_unused_fragments.py +0 -0
  189. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/no_unused_variables.py +0 -0
  190. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -0
  191. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/possible_fragment_spreads.py +0 -0
  192. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/possible_type_extensions.py +0 -0
  193. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/provided_required_arguments.py +0 -0
  194. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/scalar_leafs.py +0 -0
  195. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/single_field_subscriptions.py +0 -0
  196. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_argument_definition_names.py +0 -0
  197. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_argument_names.py +0 -0
  198. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_directive_names.py +0 -0
  199. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_directives_per_location.py +0 -0
  200. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_enum_value_names.py +0 -0
  201. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_field_definition_names.py +0 -0
  202. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_fragment_names.py +0 -0
  203. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_input_field_names.py +0 -0
  204. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_operation_names.py +0 -0
  205. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_operation_types.py +0 -0
  206. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_type_names.py +0 -0
  207. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/unique_variable_names.py +0 -0
  208. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/variables_are_input_types.py +0 -0
  209. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/rules/variables_in_allowed_position.py +0 -0
  210. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/validate.py +0 -0
  211. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql/validation/validation_context.py +0 -0
  212. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/dependency_links.txt +0 -0
  213. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/not-zip-safe +0 -0
  214. {graphql_core-3.2.5 → graphql_core-3.2.7}/src/graphql_core.egg-info/top_level.txt +0 -0
  215. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/__init__.py +0 -0
  216. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/__init__.py +0 -0
  217. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_build_ast_schema.py +0 -0
  218. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_build_client_schema.py +0 -0
  219. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_execution_async.py +0 -0
  220. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_execution_sync.py +0 -0
  221. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_introspection_from_schema.py +0 -0
  222. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_parser.py +0 -0
  223. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_repeated_fields.py +0 -0
  224. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_gql.py +0 -0
  225. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
  226. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_validate_sdl.py +0 -0
  227. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/benchmarks/test_visit.py +0 -0
  228. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/conftest.py +0 -0
  229. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/__init__.py +0 -0
  230. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_graphql_error.py +0 -0
  231. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_located_error.py +0 -0
  232. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/error/test_print_location.py +0 -0
  233. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/__init__.py +0 -0
  234. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_customize.py +0 -0
  235. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_directives.py +0 -0
  236. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_execution_result.py +0 -0
  237. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_map_async_iterator.py +0 -0
  238. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_middleware.py +0 -0
  239. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_mutations.py +0 -0
  240. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_nonnull.py +0 -0
  241. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_parallel.py +0 -0
  242. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_schema.py +0 -0
  243. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_subscribe.py +0 -0
  244. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_sync.py +0 -0
  245. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_union_interface.py +0 -0
  246. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/execution/test_variables.py +0 -0
  247. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/__init__.py +0 -0
  248. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/github_schema.graphql +0 -0
  249. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/github_schema.json +0 -0
  250. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/fixtures/kitchen_sink.graphql +0 -0
  251. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/__init__.py +0 -0
  252. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_ast.py +0 -0
  253. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_block_string.py +0 -0
  254. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_character_classes.py +0 -0
  255. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_location.py +0 -0
  256. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_predicates.py +0 -0
  257. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_printer.py +0 -0
  258. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_source.py +0 -0
  259. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/language/test_visitor.py +0 -0
  260. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/__init__.py +0 -0
  261. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_cached_property.py +0 -0
  262. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_convert_case.py +0 -0
  263. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_did_you_mean.py +0 -0
  264. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_dict.py +0 -0
  265. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_error.py +0 -0
  266. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_frozen_list.py +0 -0
  267. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_group_by.py +0 -0
  268. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_identity_func.py +0 -0
  269. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_inspect.py +0 -0
  270. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_is_awaitable.py +0 -0
  271. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_is_iterable.py +0 -0
  272. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_merge_kwargs.py +0 -0
  273. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_natural_compare.py +0 -0
  274. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_path.py +0 -0
  275. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_print_path_list.py +0 -0
  276. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_simple_pub_sub.py +0 -0
  277. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/pyutils/test_suggestion_list.py +0 -0
  278. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/star_wars_data.py +0 -0
  279. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/star_wars_schema.py +0 -0
  280. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_docs.py +0 -0
  281. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_introspection.py +0 -0
  282. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_query.py +0 -0
  283. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_star_wars_validation.py +0 -0
  284. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_user_registry.py +0 -0
  285. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/test_version.py +0 -0
  286. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/__init__.py +0 -0
  287. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_assert_name.py +0 -0
  288. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_custom_scalars.py +0 -0
  289. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_directives.py +0 -0
  290. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_extensions.py +0 -0
  291. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/type/test_predicate.py +0 -0
  292. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/__init__.py +0 -0
  293. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_ast_from_value.py +0 -0
  294. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_ast_to_dict.py +0 -0
  295. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_concat_ast.py +0 -0
  296. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_extend_schema.py +0 -0
  297. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_operation_ast.py +0 -0
  298. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_get_operation_root_type.py +0 -0
  299. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
  300. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_separate_operations.py +0 -0
  301. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_sort_value_node.py +0 -0
  302. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_comparators.py +0 -0
  303. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_from_ast.py +0 -0
  304. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_type_info.py +0 -0
  305. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utilities/test_value_from_ast_untyped.py +0 -0
  306. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/dedent.py +0 -0
  307. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/gen_fuzz_strings.py +0 -0
  308. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/test_dedent.py +0 -0
  309. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/utils/test_gen_fuzz_strings.py +0 -0
  310. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/__init__.py +0 -0
  311. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_executable_definitions.py +0 -0
  312. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_fields_on_correct_type.py +0 -0
  313. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_fragments_on_composite_types.py +0 -0
  314. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_argument_names.py +0 -0
  315. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_directives.py +0 -0
  316. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_fragment_names.py +0 -0
  317. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_known_type_names.py +0 -0
  318. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_lone_anonymous_operation.py +0 -0
  319. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_lone_schema_definition.py +0 -0
  320. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_deprecated.py +0 -0
  321. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_fragment_cycles.py +0 -0
  322. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_schema_introspection.py +0 -0
  323. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_undefined_variables.py +0 -0
  324. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_unused_fragments.py +0 -0
  325. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_no_unused_variables.py +0 -0
  326. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_overlapping_fields_can_be_merged.py +0 -0
  327. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_possible_fragment_spreads.py +0 -0
  328. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_possible_type_extensions.py +0 -0
  329. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_provided_required_arguments.py +0 -0
  330. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_scalar_leafs.py +0 -0
  331. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_single_field_subscriptions.py +0 -0
  332. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_argument_definition_names.py +0 -0
  333. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_argument_names.py +0 -0
  334. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_directive_names.py +0 -0
  335. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_directives_per_location.py +0 -0
  336. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_enum_value_names.py +0 -0
  337. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_field_definition_names.py +0 -0
  338. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_fragment_names.py +0 -0
  339. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_input_field_names.py +0 -0
  340. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_operation_names.py +0 -0
  341. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_operation_types.py +0 -0
  342. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_type_names.py +0 -0
  343. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_unique_variable_names.py +0 -0
  344. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_validation.py +0 -0
  345. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_variables_are_input_types.py +0 -0
  346. {graphql_core-3.2.5 → graphql_core-3.2.7}/tests/validation/test_variables_in_allowed_position.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.2.5
2
+ current_version = 3.2.7
3
3
  commit = False
4
4
  tag = False
5
5
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: graphql-core
3
- Version: 3.2.5
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
- Requires-Python: >=3.6,<4
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.6+ port of [GraphQL.js](https://github.com/graphql/graphql-js),
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
  ![Lint Status](https://github.com/graphql-python/graphql-core/actions/workflows/lint.yml/badge.svg)
39
51
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
40
52
 
41
- The current version 3.2.5 of GraphQL-core is up-to-date with GraphQL.js version 16.8.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 2300 unit tests and 100% coverage comprises a
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. Increases in the major version of GraphQL.js are reflected in the minor version of GraphQL-core instead. This means there can be breaking changes in the API when the minor version changes, and only patch releases are fully backward compatible. Therefore, we recommend something like `=~ 3.2.0` as version specifier when including GraphQL-core as a dependency.
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 in a
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.6 or newer
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.6+ port of [GraphQL.js](https://github.com/graphql/graphql-js),
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
  ![Lint Status](https://github.com/graphql-python/graphql-core/actions/workflows/lint.yml/badge.svg)
11
11
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
12
12
 
13
- The current version 3.2.5 of GraphQL-core is up-to-date with GraphQL.js version 16.8.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 2300 unit tests and 100% coverage comprises a
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. Increases in the major version of GraphQL.js are reflected in the minor version of GraphQL-core instead. This means there can be breaking changes in the API when the minor version changes, and only patch releases are fully backward compatible. Therefore, we recommend something like `=~ 3.2.0` as version specifier when including GraphQL-core as a dependency.
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 in a
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.6 or newer
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 = "2024, Christoph Zwerschke"
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.5"
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.5"
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.6"
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 = ['py36', 'py37', 'py38', 'py39', 'py310', 'py311', 'py312']
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,<2", "setuptools>=59,<70"]
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 = auto
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.6,<4",
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]], invalid_value: Any, error: GraphQLError
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
- if arg_def.default_value is not Undefined:
164
- coerced_values[arg_def.out_name or name] = arg_def.default_value
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
- if arg_def.default_value is not Undefined:
180
- coerced_values[arg_def.out_name or name] = arg_def.default_value
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
- is_null = variable_values[variable_name] is None
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(
@@ -69,7 +69,7 @@ class Lexer:
69
69
  return TokenKind.EOF.value
70
70
  char = body[location]
71
71
  # Printable ASCII
72
- if "\x20" <= char <= "\x7E":
72
+ if "\x20" <= char <= "\x7e":
73
73
  return "'\"'" if char == '"' else f"'{char}'"
74
74
  # Unicode code point
75
75
  point = ord(
@@ -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
- item = cast(Callable[[], ArgumentNode], item)
405
- return self.optional_many(TokenKind.PAREN_L, item, TokenKind.PAREN_R)
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:
@@ -48,5 +48,5 @@ class FrozenDict(Dict[KT, VT]):
48
48
  def setdefault(self, key, default=None):
49
49
  raise FrozenError
50
50
 
51
- def update(self, other=None): # type: ignore
51
+ def update(self, other=None):
52
52
  raise FrozenError
@@ -1,4 +1,5 @@
1
- from typing import Any
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",