graphql-core 3.2.6__tar.gz → 3.2.8__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.6 → graphql_core-3.2.8}/.bumpversion.cfg +1 -1
  2. {graphql_core-3.2.6 → graphql_core-3.2.8}/PKG-INFO +9 -8
  3. {graphql_core-3.2.6 → graphql_core-3.2.8}/README.md +3 -3
  4. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/conf.py +4 -2
  5. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/validation.rst +4 -0
  6. graphql_core-3.2.8/poetry.lock +19 -0
  7. {graphql_core-3.2.6 → graphql_core-3.2.8}/pyproject.toml +17 -7
  8. {graphql_core-3.2.6 → graphql_core-3.2.8}/setup.cfg +4 -1
  9. {graphql_core-3.2.6 → graphql_core-3.2.8}/setup.py +3 -3
  10. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/__init__.py +9 -0
  11. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/values.py +7 -2
  12. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/lexer.py +1 -1
  13. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/print_location.py +0 -1
  14. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/description.py +4 -4
  15. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/frozen_dict.py +1 -1
  16. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/undefined.py +14 -1
  17. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/__init__.py +4 -0
  18. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/definition.py +33 -10
  19. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/directives.py +10 -0
  20. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/introspection.py +301 -223
  21. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/scalars.py +4 -0
  22. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/schema.py +3 -2
  23. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/validate.py +29 -1
  24. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/build_ast_schema.py +4 -2
  25. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/build_client_schema.py +36 -23
  26. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/coerce_input_value.py +24 -0
  27. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/extend_schema.py +312 -233
  28. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/get_introspection_query.py +13 -11
  29. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/introspection_from_schema.py +2 -0
  30. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/lexicographic_sort_schema.py +6 -3
  31. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/print_schema.py +7 -2
  32. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/type_comparators.py +2 -2
  33. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/value_from_ast.py +8 -0
  34. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/__init__.py +6 -1
  35. graphql_core-3.2.8/src/graphql/validation/rules/max_introspection_depth_rule.py +81 -0
  36. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/values_of_correct_type.py +69 -2
  37. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/specified_rules.py +11 -1
  38. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/version.py +2 -2
  39. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/PKG-INFO +9 -8
  40. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/SOURCES.txt +3 -0
  41. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/requires.txt +1 -1
  42. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_execution_async.py +0 -1
  43. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_execution_sync.py +0 -1
  44. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_validate_invalid_gql.py +2 -4
  45. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/error/test_graphql_error.py +10 -23
  46. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/error/test_print_location.py +10 -20
  47. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_abstract.py +8 -16
  48. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_directives.py +30 -60
  49. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_executor.py +36 -68
  50. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_lists.py +1 -0
  51. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_mutations.py +4 -8
  52. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_nonnull.py +16 -32
  53. graphql_core-3.2.8/tests/execution/test_one_of.py +147 -0
  54. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_parallel.py +2 -4
  55. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_resolve.py +6 -12
  56. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_schema.py +2 -4
  57. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_subscribe.py +6 -12
  58. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_union_interface.py +14 -28
  59. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_variables.py +48 -96
  60. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/fixtures/schema_kitchen_sink.graphql +6 -0
  61. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_block_string_fuzz.py +6 -10
  62. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_lexer.py +38 -51
  63. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_parser.py +23 -47
  64. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_print_string.py +11 -11
  65. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_printer.py +14 -28
  66. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_schema_parser.py +57 -60
  67. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_schema_printer.py +8 -4
  68. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_source.py +2 -4
  69. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_visitor.py +2 -4
  70. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_description.py +3 -5
  71. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_undefined.py +16 -2
  72. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_star_wars_introspection.py +18 -36
  73. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_definition.py +21 -0
  74. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_enum.py +20 -12
  75. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_introspection.py +142 -52
  76. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_scalars.py +37 -0
  77. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_schema.py +12 -5
  78. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_validation.py +250 -397
  79. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_ast_to_dict.py +8 -16
  80. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_build_ast_schema.py +248 -284
  81. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_build_client_schema.py +68 -108
  82. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_coerce_input_value.py +93 -0
  83. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_concat_ast.py +6 -12
  84. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_extend_schema.py +160 -324
  85. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_find_breaking_changes.py +128 -252
  86. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_get_introspection_query.py +7 -4
  87. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_get_operation_ast.py +8 -16
  88. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_get_operation_root_type.py +2 -5
  89. graphql_core-3.2.8/tests/utilities/test_introspection_from_schema.py +172 -0
  90. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_lexicographic_sort_schema.py +40 -80
  91. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_print_schema.py +88 -140
  92. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_separate_operations.py +24 -50
  93. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_strip_ignored_characters.py +13 -25
  94. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_strip_ignored_characters_fuzz.py +4 -6
  95. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_type_info.py +8 -17
  96. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_value_from_ast.py +17 -0
  97. graphql_core-3.2.8/tests/utils/__init__.py +12 -0
  98. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utils/test_dedent.py +14 -45
  99. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/harness.py +8 -4
  100. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_executable_definitions.py +4 -8
  101. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_fields_on_correct_type.py +34 -68
  102. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_fragments_on_composite_types.py +12 -24
  103. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_known_argument_names.py +22 -44
  104. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_known_directives.py +22 -44
  105. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_known_fragment_names.py +2 -4
  106. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_known_type_names.py +6 -12
  107. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_lone_anonymous_operation.py +8 -16
  108. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_lone_schema_definition.py +12 -24
  109. graphql_core-3.2.8/tests/validation/test_max_introspection_depth_rule.py +490 -0
  110. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_deprecated.py +30 -60
  111. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_fragment_cycles.py +10 -20
  112. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_schema_introspection.py +6 -12
  113. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_undefined_variables.py +14 -28
  114. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_unused_fragments.py +4 -8
  115. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_no_unused_variables.py +12 -24
  116. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_overlapping_fields_can_be_merged.py +38 -76
  117. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_possible_fragment_spreads.py +28 -56
  118. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_possible_type_extensions.py +10 -20
  119. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_provided_required_arguments.py +34 -68
  120. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_scalar_leafs.py +4 -8
  121. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_single_field_subscriptions.py +10 -20
  122. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_argument_definition_names.py +6 -12
  123. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_argument_names.py +18 -36
  124. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_directive_names.py +8 -16
  125. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_directives_per_location.py +14 -28
  126. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_enum_value_names.py +10 -20
  127. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_field_definition_names.py +14 -28
  128. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_fragment_names.py +10 -20
  129. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_input_field_names.py +8 -16
  130. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_operation_names.py +12 -24
  131. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_operation_types.py +14 -28
  132. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_type_names.py +8 -16
  133. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_unique_variable_names.py +2 -4
  134. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_validation.py +10 -20
  135. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_values_of_correct_type.py +162 -144
  136. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_variables_are_input_types.py +4 -8
  137. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/test_variables_in_allowed_position.py +30 -60
  138. graphql_core-3.2.8/tox.ini +68 -0
  139. graphql_core-3.2.6/poetry.lock +0 -17
  140. graphql_core-3.2.6/tests/utilities/test_introspection_from_schema.py +0 -62
  141. graphql_core-3.2.6/tests/utils/__init__.py +0 -6
  142. graphql_core-3.2.6/tox.ini +0 -67
  143. {graphql_core-3.2.6 → graphql_core-3.2.8}/.coveragerc +0 -0
  144. {graphql_core-3.2.6 → graphql_core-3.2.8}/.editorconfig +0 -0
  145. {graphql_core-3.2.6 → graphql_core-3.2.8}/.flake8 +0 -0
  146. {graphql_core-3.2.6 → graphql_core-3.2.8}/.mypy.ini +0 -0
  147. {graphql_core-3.2.6 → graphql_core-3.2.8}/.readthedocs.yaml +0 -0
  148. {graphql_core-3.2.6 → graphql_core-3.2.8}/CODEOWNERS +0 -0
  149. {graphql_core-3.2.6 → graphql_core-3.2.8}/LICENSE +0 -0
  150. {graphql_core-3.2.6 → graphql_core-3.2.8}/MANIFEST.in +0 -0
  151. {graphql_core-3.2.6 → graphql_core-3.2.8}/SECURITY.md +0 -0
  152. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/Makefile +0 -0
  153. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/diffs.rst +0 -0
  154. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/index.rst +0 -0
  155. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/intro.rst +0 -0
  156. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/make.bat +0 -0
  157. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/error.rst +0 -0
  158. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/execution.rst +0 -0
  159. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/graphql.rst +0 -0
  160. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/language.rst +0 -0
  161. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/pyutils.rst +0 -0
  162. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/type.rst +0 -0
  163. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/modules/utilities.rst +0 -0
  164. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/requirements.txt +0 -0
  165. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/extension.rst +0 -0
  166. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/index.rst +0 -0
  167. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/introspection.rst +0 -0
  168. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/methods.rst +0 -0
  169. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/other.rst +0 -0
  170. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/parser.rst +0 -0
  171. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/queries.rst +0 -0
  172. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/resolvers.rst +0 -0
  173. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/schema.rst +0 -0
  174. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/sdl.rst +0 -0
  175. {graphql_core-3.2.6 → graphql_core-3.2.8}/docs/usage/validator.rst +0 -0
  176. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/error/__init__.py +0 -0
  177. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/error/graphql_error.py +0 -0
  178. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/error/located_error.py +0 -0
  179. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/error/syntax_error.py +0 -0
  180. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/__init__.py +0 -0
  181. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/collect_fields.py +0 -0
  182. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/execute.py +0 -0
  183. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/map_async_iterator.py +0 -0
  184. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/middleware.py +0 -0
  185. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/execution/subscribe.py +0 -0
  186. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/graphql.py +0 -0
  187. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/__init__.py +0 -0
  188. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/ast.py +0 -0
  189. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/block_string.py +0 -0
  190. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/character_classes.py +0 -0
  191. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/directive_locations.py +0 -0
  192. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/location.py +0 -0
  193. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/parser.py +0 -0
  194. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/predicates.py +0 -0
  195. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/print_string.py +0 -0
  196. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/printer.py +0 -0
  197. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/source.py +0 -0
  198. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/token_kind.py +0 -0
  199. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/language/visitor.py +0 -0
  200. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/py.typed +0 -0
  201. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/__init__.py +0 -0
  202. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/awaitable_or_value.py +0 -0
  203. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/cached_property.py +0 -0
  204. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/convert_case.py +0 -0
  205. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/did_you_mean.py +0 -0
  206. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/frozen_error.py +0 -0
  207. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/frozen_list.py +0 -0
  208. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/group_by.py +0 -0
  209. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/identity_func.py +0 -0
  210. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/inspect.py +0 -0
  211. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/is_awaitable.py +0 -0
  212. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/is_iterable.py +0 -0
  213. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/merge_kwargs.py +0 -0
  214. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/natural_compare.py +0 -0
  215. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/path.py +0 -0
  216. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/print_path_list.py +0 -0
  217. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/simple_pub_sub.py +0 -0
  218. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/pyutils/suggestion_list.py +0 -0
  219. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/subscription/__init__.py +0 -0
  220. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/type/assert_name.py +0 -0
  221. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/__init__.py +0 -0
  222. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/assert_valid_name.py +0 -0
  223. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/ast_from_value.py +0 -0
  224. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/ast_to_dict.py +0 -0
  225. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/concat_ast.py +0 -0
  226. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/find_breaking_changes.py +0 -0
  227. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/get_operation_ast.py +0 -0
  228. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/get_operation_root_type.py +0 -0
  229. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/separate_operations.py +0 -0
  230. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/sort_value_node.py +0 -0
  231. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/strip_ignored_characters.py +0 -0
  232. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/type_from_ast.py +0 -0
  233. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/type_info.py +0 -0
  234. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/utilities/value_from_ast_untyped.py +0 -0
  235. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/__init__.py +0 -0
  236. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/custom/__init__.py +0 -0
  237. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/custom/no_deprecated.py +0 -0
  238. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/custom/no_schema_introspection.py +0 -0
  239. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/executable_definitions.py +0 -0
  240. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/fields_on_correct_type.py +0 -0
  241. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/fragments_on_composite_types.py +0 -0
  242. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/known_argument_names.py +0 -0
  243. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/known_directives.py +0 -0
  244. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/known_fragment_names.py +0 -0
  245. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/known_type_names.py +0 -0
  246. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/lone_anonymous_operation.py +0 -0
  247. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/lone_schema_definition.py +0 -0
  248. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/no_fragment_cycles.py +0 -0
  249. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/no_undefined_variables.py +0 -0
  250. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/no_unused_fragments.py +0 -0
  251. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/no_unused_variables.py +0 -0
  252. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -0
  253. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/possible_fragment_spreads.py +0 -0
  254. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/possible_type_extensions.py +0 -0
  255. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/provided_required_arguments.py +0 -0
  256. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/scalar_leafs.py +0 -0
  257. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/single_field_subscriptions.py +0 -0
  258. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_argument_definition_names.py +0 -0
  259. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_argument_names.py +0 -0
  260. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_directive_names.py +0 -0
  261. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_directives_per_location.py +0 -0
  262. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_enum_value_names.py +0 -0
  263. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_field_definition_names.py +0 -0
  264. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_fragment_names.py +0 -0
  265. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_input_field_names.py +0 -0
  266. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_operation_names.py +0 -0
  267. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_operation_types.py +0 -0
  268. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_type_names.py +0 -0
  269. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/unique_variable_names.py +0 -0
  270. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/variables_are_input_types.py +0 -0
  271. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/rules/variables_in_allowed_position.py +0 -0
  272. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/validate.py +0 -0
  273. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql/validation/validation_context.py +0 -0
  274. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/dependency_links.txt +0 -0
  275. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/not-zip-safe +0 -0
  276. {graphql_core-3.2.6 → graphql_core-3.2.8}/src/graphql_core.egg-info/top_level.txt +0 -0
  277. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/__init__.py +0 -0
  278. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/__init__.py +0 -0
  279. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_build_ast_schema.py +0 -0
  280. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_build_client_schema.py +0 -0
  281. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_introspection_from_schema.py +0 -0
  282. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_parser.py +0 -0
  283. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_repeated_fields.py +0 -0
  284. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_validate_gql.py +0 -0
  285. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_validate_sdl.py +0 -0
  286. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/benchmarks/test_visit.py +0 -0
  287. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/conftest.py +0 -0
  288. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/error/__init__.py +0 -0
  289. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/error/test_located_error.py +0 -0
  290. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/__init__.py +0 -0
  291. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_customize.py +0 -0
  292. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_execution_result.py +0 -0
  293. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_map_async_iterator.py +0 -0
  294. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_middleware.py +0 -0
  295. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/execution/test_sync.py +0 -0
  296. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/fixtures/__init__.py +0 -0
  297. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/fixtures/github_schema.graphql +0 -0
  298. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/fixtures/github_schema.json +0 -0
  299. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/fixtures/kitchen_sink.graphql +0 -0
  300. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/__init__.py +0 -0
  301. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_ast.py +0 -0
  302. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_block_string.py +0 -0
  303. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_character_classes.py +0 -0
  304. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_location.py +0 -0
  305. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/language/test_predicates.py +0 -0
  306. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/__init__.py +0 -0
  307. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_cached_property.py +0 -0
  308. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_convert_case.py +0 -0
  309. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_did_you_mean.py +0 -0
  310. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_frozen_dict.py +0 -0
  311. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_frozen_error.py +0 -0
  312. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_frozen_list.py +0 -0
  313. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_group_by.py +0 -0
  314. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_identity_func.py +0 -0
  315. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_inspect.py +0 -0
  316. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_is_awaitable.py +0 -0
  317. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_is_iterable.py +0 -0
  318. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_merge_kwargs.py +0 -0
  319. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_natural_compare.py +0 -0
  320. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_path.py +0 -0
  321. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_print_path_list.py +0 -0
  322. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_simple_pub_sub.py +0 -0
  323. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/pyutils/test_suggestion_list.py +0 -0
  324. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/star_wars_data.py +0 -0
  325. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/star_wars_schema.py +0 -0
  326. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_docs.py +0 -0
  327. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_star_wars_query.py +0 -0
  328. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_star_wars_validation.py +0 -0
  329. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_user_registry.py +0 -0
  330. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/test_version.py +0 -0
  331. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/__init__.py +0 -0
  332. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_assert_name.py +0 -0
  333. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_custom_scalars.py +0 -0
  334. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_directives.py +0 -0
  335. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_extensions.py +0 -0
  336. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/type/test_predicate.py +0 -0
  337. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/__init__.py +0 -0
  338. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_ast_from_value.py +0 -0
  339. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_sort_value_node.py +0 -0
  340. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_type_comparators.py +0 -0
  341. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_type_from_ast.py +0 -0
  342. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utilities/test_value_from_ast_untyped.py +0 -0
  343. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utils/dedent.py +0 -0
  344. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utils/gen_fuzz_strings.py +0 -0
  345. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/utils/test_gen_fuzz_strings.py +0 -0
  346. {graphql_core-3.2.6 → graphql_core-3.2.8}/tests/validation/__init__.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.2.6
2
+ current_version = 3.2.8
3
3
  commit = False
4
4
  tag = False
5
5
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: graphql-core
3
- Version: 3.2.6
3
+ Version: 3.2.8
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,10 +20,11 @@ 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
28
  Dynamic: author
29
29
  Dynamic: author-email
30
30
  Dynamic: classifier
@@ -33,13 +33,14 @@ Dynamic: description-content-type
33
33
  Dynamic: home-page
34
34
  Dynamic: keywords
35
35
  Dynamic: license
36
+ Dynamic: license-file
36
37
  Dynamic: requires-dist
37
38
  Dynamic: requires-python
38
39
  Dynamic: summary
39
40
 
40
41
  # GraphQL-core 3
41
42
 
42
- 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),
43
44
  the JavaScript reference implementation for [GraphQL](https://graphql.org/),
44
45
  a query language for APIs created by Facebook.
45
46
 
@@ -49,7 +50,7 @@ a query language for APIs created by Facebook.
49
50
  ![Lint Status](https://github.com/graphql-python/graphql-core/actions/workflows/lint.yml/badge.svg)
50
51
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
51
52
 
52
- The current version 3.2.6 of GraphQL-core is up-to-date with GraphQL.js version 16.8.2.
53
+ The current version 3.2.8 of GraphQL-core is up-to-date with GraphQL.js version 16.9.0.
53
54
 
54
55
  An extensive test suite with over 2500 unit tests and 100% coverage comprises a
55
56
  replication of the complete test suite of GraphQL.js, making sure this port is
@@ -235,7 +236,7 @@ Design goals for the GraphQL-core 3 library were:
235
236
 
236
237
  Some restrictions (mostly in line with the design goals):
237
238
 
238
- * requires Python 3.6 or newer
239
+ * requires Python 3.7 or newer
239
240
  * does not support some already deprecated methods and options of GraphQL.js
240
241
  * supports asynchronous operations only via async.io
241
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,7 +10,7 @@ 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.6 of GraphQL-core is up-to-date with GraphQL.js version 16.8.2.
13
+ The current version 3.2.8 of GraphQL-core is up-to-date with GraphQL.js version 16.9.0.
14
14
 
15
15
  An extensive test suite with over 2500 unit tests and 100% coverage comprises a
16
16
  replication of the complete test suite of GraphQL.js, making sure this port is
@@ -196,7 +196,7 @@ Design goals for the GraphQL-core 3 library were:
196
196
 
197
197
  Some restrictions (mostly in line with the design goals):
198
198
 
199
- * requires Python 3.6 or newer
199
+ * requires Python 3.7 or newer
200
200
  * does not support some already deprecated methods and options of GraphQL.js
201
201
  * supports asynchronous operations only via async.io
202
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 = "2025, Christoph Zwerschke"
54
+ copyright = "2026, 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.6"
64
+ version = release = "3.2.8"
65
65
 
66
66
  # The language for content autogenerated by Sphinx. Refer to documentation
67
67
  # for a list of supported languages.
@@ -139,6 +139,8 @@ graphql_classes = {
139
139
  ignore_references = set(
140
140
  """
141
141
  GNT GT KT T VT
142
+ _asyncio.Future
143
+ asyncio.queues.Queue
142
144
  enum.Enum
143
145
  traceback
144
146
  types.TracebackType
@@ -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.3.2 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.6"
3
+ version = "3.2.8"
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.1,<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', 'py313']
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,<3", "setuptools>=59,<76"]
90
+ requires = ["poetry_core>=1,<3", "setuptools>=59,<83"]
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",
@@ -122,7 +122,11 @@ def coerce_variable_values(
122
122
  continue
123
123
 
124
124
  def on_input_value_error(
125
- 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,
126
130
  ) -> None:
127
131
  invalid_str = inspect(invalid_value)
128
132
  prefix = f"Variable '${var_name}' got invalid value {invalid_str}"
@@ -196,7 +200,8 @@ def get_argument_values(
196
200
  value_node,
197
201
  )
198
202
  continue # pragma: no cover
199
- 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
200
205
 
201
206
  if is_null and is_non_null_type(arg_type):
202
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(
@@ -5,7 +5,6 @@ from .ast import Location
5
5
  from .location import SourceLocation, get_location
6
6
  from .source import Source
7
7
 
8
-
9
8
  __all__ = ["print_location", "print_source_location"]
10
9
 
11
10
 
@@ -1,4 +1,4 @@
1
- from typing import Any, Tuple, Union
1
+ from typing import Any, Tuple, Type, Union
2
2
 
3
3
  __all__ = [
4
4
  "Description",
@@ -17,14 +17,14 @@ class Description:
17
17
  If you register(object), any object will be allowed as description.
18
18
  """
19
19
 
20
- bases: Union[type, Tuple[type, ...]] = str
20
+ bases: Union[Type[Any], Tuple[Type[Any], ...]] = str
21
21
 
22
22
  @classmethod
23
23
  def isinstance(cls, obj: Any) -> bool:
24
24
  return isinstance(obj, cls.bases)
25
25
 
26
26
  @classmethod
27
- def register(cls, base: type) -> None:
27
+ def register(cls, base: Type[Any]) -> None:
28
28
  """Register a class that shall be accepted as a description."""
29
29
  if not isinstance(base, type):
30
30
  raise TypeError("Only types can be registered.")
@@ -39,7 +39,7 @@ class Description:
39
39
  cls.bases += (base,)
40
40
 
41
41
  @classmethod
42
- def unregister(cls, base: type) -> None:
42
+ def unregister(cls, base: Type[Any]) -> None:
43
43
  """Unregister a class that shall no more be accepted as a description."""
44
44
  if not isinstance(base, type):
45
45
  raise TypeError("Only types can be unregistered.")
@@ -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",
@@ -116,6 +116,7 @@ __all__ = [
116
116
  "GraphQLEnumValue",
117
117
  "GraphQLEnumValueKwargs",
118
118
  "GraphQLEnumValueMap",
119
+ "GraphQLEnumValuesDefinition",
119
120
  "GraphQLField",
120
121
  "GraphQLFieldKwargs",
121
122
  "GraphQLFieldMap",
@@ -228,6 +229,23 @@ class GraphQLNamedType(GraphQLType):
228
229
  ast_node: Optional[TypeDefinitionNode]
229
230
  extension_ast_nodes: Tuple[TypeExtensionNode, ...]
230
231
 
232
+ reserved_types: Dict[str, "GraphQLNamedType"] = {}
233
+
234
+ def __new__(cls, name: str, *_args: Any, **_kwargs: Any) -> "GraphQLNamedType":
235
+ if name in cls.reserved_types:
236
+ raise TypeError(f"Redefinition of reserved type {name!r}")
237
+ return super().__new__(cls)
238
+
239
+ def __reduce__(self) -> Tuple[Callable, Tuple]:
240
+ return self._get_instance, (self.name, tuple(self.to_kwargs().items()))
241
+
242
+ @classmethod
243
+ def _get_instance(cls, name: str, args: Tuple) -> "GraphQLNamedType":
244
+ try:
245
+ return cls.reserved_types[name]
246
+ except KeyError:
247
+ return cls(**dict(args))
248
+
231
249
  def __init__(
232
250
  self,
233
251
  name: str,
@@ -833,9 +851,7 @@ class GraphQLObjectType(GraphQLNamedType):
833
851
  )
834
852
  return {
835
853
  assert_name(name): (
836
- value
837
- if isinstance(value, GraphQLField)
838
- else GraphQLField(value) # type: ignore
854
+ value if isinstance(value, GraphQLField) else GraphQLField(value)
839
855
  )
840
856
  for name, value in fields.items()
841
857
  }
@@ -969,9 +985,7 @@ class GraphQLInterfaceType(GraphQLNamedType):
969
985
  )
970
986
  return {
971
987
  assert_name(name): (
972
- value
973
- if isinstance(value, GraphQLField)
974
- else GraphQLField(value) # type: ignore
988
+ value if isinstance(value, GraphQLField) else GraphQLField(value)
975
989
  )
976
990
  for name, value in fields.items()
977
991
  }
@@ -1110,6 +1124,8 @@ def assert_union_type(type_: Any) -> GraphQLUnionType:
1110
1124
 
1111
1125
  GraphQLEnumValueMap = Dict[str, "GraphQLEnumValue"]
1112
1126
 
1127
+ GraphQLEnumValuesDefinition = Union[GraphQLEnumValueMap, Mapping[str, Any], Type[Enum]]
1128
+
1113
1129
 
1114
1130
  class GraphQLEnumTypeKwargs(GraphQLNamedTypeKwargs, total=False):
1115
1131
  values: GraphQLEnumValueMap
@@ -1157,7 +1173,7 @@ class GraphQLEnumType(GraphQLNamedType):
1157
1173
  def __init__(
1158
1174
  self,
1159
1175
  name: str,
1160
- values: Union[GraphQLEnumValueMap, Mapping[str, Any], Type[Enum]],
1176
+ values: Thunk[GraphQLEnumValuesDefinition],
1161
1177
  names_as_values: Optional[bool] = False,
1162
1178
  description: Optional[str] = None,
1163
1179
  extensions: Optional[Dict[str, Any]] = None,
@@ -1171,6 +1187,8 @@ class GraphQLEnumType(GraphQLNamedType):
1171
1187
  ast_node=ast_node,
1172
1188
  extension_ast_nodes=extension_ast_nodes,
1173
1189
  )
1190
+ if not isinstance(values, type):
1191
+ values = resolve_thunk(values) # type: ignore
1174
1192
  try: # check for enum
1175
1193
  values = cast(Enum, values).__members__ # type: ignore
1176
1194
  except AttributeError:
@@ -1179,7 +1197,7 @@ class GraphQLEnumType(GraphQLNamedType):
1179
1197
  ):
1180
1198
  try:
1181
1199
  # noinspection PyTypeChecker
1182
- values = dict(values)
1200
+ values = dict(values) # type: ignore
1183
1201
  except (TypeError, ValueError) as error:
1184
1202
  raise TypeError(
1185
1203
  f"{name} values must be an Enum or a mapping"
@@ -1377,6 +1395,7 @@ GraphQLInputFieldOutType = Callable[[Dict[str, Any]], Any]
1377
1395
  class GraphQLInputObjectTypeKwargs(GraphQLNamedTypeKwargs, total=False):
1378
1396
  fields: GraphQLInputFieldMap
1379
1397
  out_type: Optional[GraphQLInputFieldOutType]
1398
+ is_one_of: bool
1380
1399
 
1381
1400
 
1382
1401
  class GraphQLInputObjectType(GraphQLNamedType):
@@ -1406,6 +1425,7 @@ class GraphQLInputObjectType(GraphQLNamedType):
1406
1425
 
1407
1426
  ast_node: Optional[InputObjectTypeDefinitionNode]
1408
1427
  extension_ast_nodes: Tuple[InputObjectTypeExtensionNode, ...]
1428
+ is_one_of: bool
1409
1429
 
1410
1430
  def __init__(
1411
1431
  self,
@@ -1416,6 +1436,7 @@ class GraphQLInputObjectType(GraphQLNamedType):
1416
1436
  extensions: Optional[Dict[str, Any]] = None,
1417
1437
  ast_node: Optional[InputObjectTypeDefinitionNode] = None,
1418
1438
  extension_ast_nodes: Optional[Collection[InputObjectTypeExtensionNode]] = None,
1439
+ is_one_of: bool = False,
1419
1440
  ) -> None:
1420
1441
  super().__init__(
1421
1442
  name=name,
@@ -1441,6 +1462,7 @@ class GraphQLInputObjectType(GraphQLNamedType):
1441
1462
  self._fields = fields
1442
1463
  if out_type is not None:
1443
1464
  self.out_type = out_type # type: ignore
1465
+ self.is_one_of = is_one_of
1444
1466
 
1445
1467
  @staticmethod
1446
1468
  def out_type(value: Dict[str, Any]) -> Any:
@@ -1460,6 +1482,7 @@ class GraphQLInputObjectType(GraphQLNamedType):
1460
1482
  if self.out_type is GraphQLInputObjectType.out_type
1461
1483
  else self.out_type
1462
1484
  ),
1485
+ is_one_of=self.is_one_of,
1463
1486
  )
1464
1487
 
1465
1488
  def __copy__(self) -> "GraphQLInputObjectType": # pragma: no cover
@@ -1492,7 +1515,7 @@ class GraphQLInputObjectType(GraphQLNamedType):
1492
1515
  assert_name(name): (
1493
1516
  value
1494
1517
  if isinstance(value, GraphQLInputField)
1495
- else GraphQLInputField(value) # type: ignore
1518
+ else GraphQLInputField(value)
1496
1519
  )
1497
1520
  for name, value in fields.items()
1498
1521
  }
@@ -1725,7 +1748,7 @@ def get_nullable_type(type_: GraphQLNonNull) -> GraphQLNullableType: ...
1725
1748
 
1726
1749
 
1727
1750
  def get_nullable_type(
1728
- type_: Optional[Union[GraphQLNullableType, GraphQLNonNull]]
1751
+ type_: Optional[Union[GraphQLNullableType, GraphQLNonNull]],
1729
1752
  ) -> Optional[GraphQLNullableType]:
1730
1753
  """Unwrap possible non-null type"""
1731
1754
  if is_non_null_type(type_):
@@ -22,6 +22,7 @@ __all__ = [
22
22
  "GraphQLSkipDirective",
23
23
  "GraphQLDeprecatedDirective",
24
24
  "GraphQLSpecifiedByDirective",
25
+ "GraphQLOneOfDirective",
25
26
  "DirectiveLocation",
26
27
  "DEFAULT_DEPRECATION_REASON",
27
28
  ]
@@ -237,12 +238,21 @@ GraphQLSpecifiedByDirective = GraphQLDirective(
237
238
  description="Exposes a URL that specifies the behavior of this scalar.",
238
239
  )
239
240
 
241
+ # Used to declare an Input Object as a OneOf Input Objects.
242
+ GraphQLOneOfDirective = GraphQLDirective(
243
+ name="oneOf",
244
+ locations=[DirectiveLocation.INPUT_OBJECT],
245
+ args={},
246
+ description="Indicates an Input Object is a OneOf Input Object.",
247
+ )
248
+
240
249
 
241
250
  specified_directives: Tuple[GraphQLDirective, ...] = (
242
251
  GraphQLIncludeDirective,
243
252
  GraphQLSkipDirective,
244
253
  GraphQLDeprecatedDirective,
245
254
  GraphQLSpecifiedByDirective,
255
+ GraphQLOneOfDirective,
246
256
  )
247
257
  """A tuple with all directives from the GraphQL specification"""
248
258