graphql-core 3.2.12__tar.gz → 3.2.14__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 (375) hide show
  1. {graphql_core-3.2.12 → graphql_core-3.2.14}/.bumpversion.cfg +1 -1
  2. graphql_core-3.2.14/.flake8 +13 -0
  3. {graphql_core-3.2.12 → graphql_core-3.2.14}/PKG-INFO +3 -2
  4. {graphql_core-3.2.12 → graphql_core-3.2.14}/README.md +1 -1
  5. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/conf.py +1 -1
  6. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/execution.rst +2 -0
  7. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/type.rst +19 -0
  8. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/validation.rst +10 -0
  9. {graphql_core-3.2.12 → graphql_core-3.2.14}/pyproject.toml +6 -4
  10. {graphql_core-3.2.12 → graphql_core-3.2.14}/setup.cfg +1 -1
  11. {graphql_core-3.2.12 → graphql_core-3.2.14}/setup.py +3 -0
  12. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/error/__init__.py +2 -0
  13. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/error/graphql_error.py +151 -22
  14. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/error/located_error.py +18 -0
  15. graphql_core-3.2.14/src/graphql/error/syntax_error.py +38 -0
  16. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/__init__.py +2 -0
  17. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/collect_fields.py +37 -7
  18. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/execute.py +468 -40
  19. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/map_async_iterator.py +59 -3
  20. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/middleware.py +49 -1
  21. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/subscribe.py +153 -0
  22. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/execution/values.py +176 -7
  23. graphql_core-3.2.14/src/graphql/graphql.py +321 -0
  24. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/ast.py +347 -16
  25. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/block_string.py +9 -2
  26. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/character_classes.py +2 -0
  27. graphql_core-3.2.14/src/graphql/language/directive_locations.py +53 -0
  28. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/lexer.py +223 -19
  29. graphql_core-3.2.14/src/graphql/language/location.py +96 -0
  30. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/parser.py +403 -47
  31. graphql_core-3.2.14/src/graphql/language/predicates.py +242 -0
  32. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/print_location.py +24 -2
  33. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/print_string.py +4 -2
  34. graphql_core-3.2.14/src/graphql/language/printer.py +517 -0
  35. graphql_core-3.2.14/src/graphql/language/reducer.py +78 -0
  36. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/schema_coordinate_lexer.py +2 -0
  37. graphql_core-3.2.14/src/graphql/language/source.py +107 -0
  38. graphql_core-3.2.14/src/graphql/language/token_kind.py +56 -0
  39. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/visitor.py +158 -3
  40. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/awaitable_or_value.py +2 -0
  41. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/cached_property.py +2 -0
  42. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/convert_case.py +2 -0
  43. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/description.py +3 -0
  44. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/did_you_mean.py +2 -0
  45. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/frozen_dict.py +7 -0
  46. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/frozen_error.py +2 -0
  47. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/frozen_list.py +10 -0
  48. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/group_by.py +2 -0
  49. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/identity_func.py +2 -0
  50. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/inspect.py +2 -0
  51. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/is_awaitable.py +2 -0
  52. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/is_iterable.py +2 -0
  53. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/merge_kwargs.py +2 -0
  54. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/natural_compare.py +2 -0
  55. graphql_core-3.2.14/src/graphql/pyutils/path.py +52 -0
  56. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/print_path_list.py +2 -0
  57. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/simple_pub_sub.py +8 -0
  58. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/suggestion_list.py +2 -0
  59. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/undefined.py +3 -0
  60. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/assert_name.py +28 -2
  61. graphql_core-3.2.14/src/graphql/type/definition.py +3933 -0
  62. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/directives.py +156 -8
  63. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/introspection.py +34 -1
  64. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/scalars.py +34 -8
  65. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/schema.py +362 -15
  66. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/validate.py +24 -0
  67. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/assert_valid_name.py +24 -0
  68. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/ast_from_value.py +22 -0
  69. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/ast_to_dict.py +17 -1
  70. graphql_core-3.2.14/src/graphql/utilities/build_ast_schema.py +188 -0
  71. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/build_client_schema.py +15 -0
  72. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/coerce_input_value.py +68 -7
  73. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/concat_ast.py +11 -0
  74. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/extend_schema.py +49 -0
  75. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/find_breaking_changes.py +96 -0
  76. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/get_introspection_query.py +141 -9
  77. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/get_operation_ast.py +15 -0
  78. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/get_operation_root_type.py +13 -0
  79. graphql_core-3.2.14/src/graphql/utilities/introspection_from_schema.py +110 -0
  80. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/lexicographic_sort_schema.py +32 -0
  81. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/print_schema.py +77 -1
  82. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/resolve_schema_coordinate.py +83 -1
  83. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/separate_operations.py +31 -1
  84. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/sort_value_node.py +2 -0
  85. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/strip_ignored_characters.py +12 -3
  86. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/type_comparators.py +79 -1
  87. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/type_from_ast.py +28 -0
  88. graphql_core-3.2.14/src/graphql/utilities/type_info.py +724 -0
  89. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/value_from_ast.py +28 -0
  90. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/value_from_ast_untyped.py +11 -0
  91. graphql_core-3.2.14/src/graphql/validation/rules/__init__.py +111 -0
  92. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/custom/no_deprecated.py +38 -0
  93. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/custom/no_schema_introspection.py +23 -0
  94. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/executable_definitions.py +19 -0
  95. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/fields_on_correct_type.py +30 -4
  96. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/fragments_on_composite_types.py +23 -0
  97. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/known_argument_names.py +41 -9
  98. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/known_directives.py +20 -0
  99. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/known_fragment_names.py +21 -0
  100. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/known_type_names.py +33 -7
  101. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/lone_anonymous_operation.py +23 -0
  102. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/lone_schema_definition.py +25 -0
  103. graphql_core-3.2.14/src/graphql/validation/rules/max_introspection_depth_rule.py +146 -0
  104. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/no_fragment_cycles.py +25 -0
  105. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/no_undefined_variables.py +27 -0
  106. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/no_unused_fragments.py +30 -5
  107. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/no_unused_variables.py +27 -0
  108. graphql_core-3.2.14/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +1088 -0
  109. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/possible_fragment_spreads.py +32 -0
  110. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/possible_type_extensions.py +21 -0
  111. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/provided_required_arguments.py +22 -0
  112. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/scalar_leafs.py +19 -0
  113. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/single_field_subscriptions.py +53 -8
  114. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_argument_definition_names.py +45 -0
  115. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_argument_names.py +27 -0
  116. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_directive_names.py +24 -0
  117. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_directives_per_location.py +20 -0
  118. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_enum_value_names.py +21 -0
  119. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_field_definition_names.py +21 -0
  120. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_fragment_names.py +21 -0
  121. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_input_field_names.py +31 -0
  122. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_operation_names.py +19 -0
  123. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_operation_types.py +24 -0
  124. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_type_names.py +21 -0
  125. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/unique_variable_names.py +19 -0
  126. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/values_of_correct_type.py +76 -7
  127. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/variables_are_input_types.py +20 -0
  128. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/variables_in_allowed_position.py +31 -1
  129. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/specified_rules.py +2 -0
  130. graphql_core-3.2.14/src/graphql/validation/validate.py +311 -0
  131. graphql_core-3.2.14/src/graphql/validation/validation_context.py +672 -0
  132. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/version.py +4 -2
  133. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/PKG-INFO +3 -2
  134. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/SOURCES.txt +7 -0
  135. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/conftest.py +17 -0
  136. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/error/test_graphql_error.py +16 -4
  137. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/error/test_print_location.py +12 -0
  138. graphql_core-3.2.14/tests/execution/test_abstract_type_promises.py +52 -0
  139. graphql_core-3.2.14/tests/execution/test_collect_fields.py +42 -0
  140. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_map_async_iterator.py +24 -0
  141. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_sync.py +18 -0
  142. graphql_core-3.2.14/tests/execution/test_too_deeply_nested_selections.py +138 -0
  143. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_variables.py +170 -2
  144. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_block_string.py +6 -0
  145. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_lexer.py +28 -0
  146. graphql_core-3.2.14/tests/language/test_location.py +217 -0
  147. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_parser.py +431 -2
  148. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_printer.py +85 -1
  149. graphql_core-3.2.14/tests/language/test_reducer.py +101 -0
  150. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_source.py +12 -0
  151. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_visitor.py +6 -0
  152. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/star_wars_data.py +2 -2
  153. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_docs.py +223 -1
  154. graphql_core-3.2.14/tests/test_hide_suggestions.py +140 -0
  155. graphql_core-3.2.14/tests/test_too_deeply_nested_documents.py +68 -0
  156. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_enum.py +25 -2
  157. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_predicate.py +4 -1
  158. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_scalars.py +32 -1
  159. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_build_ast_schema.py +61 -0
  160. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_build_client_schema.py +1 -1
  161. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_coerce_input_value.py +58 -4
  162. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/harness.py +2 -1
  163. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_fields_on_correct_type.py +16 -0
  164. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_known_argument_names.py +29 -0
  165. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_known_type_names.py +24 -0
  166. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_max_introspection_depth_rule.py +238 -1
  167. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_undefined_variables.py +41 -0
  168. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_overlapping_fields_can_be_merged.py +671 -36
  169. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_single_field_subscriptions.py +66 -1
  170. graphql_core-3.2.14/tests/validation/test_validation.py +561 -0
  171. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_values_of_correct_type.py +59 -0
  172. {graphql_core-3.2.12 → graphql_core-3.2.14}/tox.ini +10 -6
  173. graphql_core-3.2.12/.flake8 +0 -4
  174. graphql_core-3.2.12/src/graphql/error/syntax_error.py +0 -18
  175. graphql_core-3.2.12/src/graphql/graphql.py +0 -199
  176. graphql_core-3.2.12/src/graphql/language/directive_locations.py +0 -31
  177. graphql_core-3.2.12/src/graphql/language/location.py +0 -46
  178. graphql_core-3.2.12/src/graphql/language/predicates.py +0 -109
  179. graphql_core-3.2.12/src/graphql/language/printer.py +0 -464
  180. graphql_core-3.2.12/src/graphql/language/source.py +0 -70
  181. graphql_core-3.2.12/src/graphql/language/token_kind.py +0 -31
  182. graphql_core-3.2.12/src/graphql/pyutils/path.py +0 -28
  183. graphql_core-3.2.12/src/graphql/type/definition.py +0 -1905
  184. graphql_core-3.2.12/src/graphql/utilities/build_ast_schema.py +0 -109
  185. graphql_core-3.2.12/src/graphql/utilities/introspection_from_schema.py +0 -50
  186. graphql_core-3.2.12/src/graphql/utilities/type_info.py +0 -322
  187. graphql_core-3.2.12/src/graphql/validation/rules/__init__.py +0 -42
  188. graphql_core-3.2.12/src/graphql/validation/rules/max_introspection_depth_rule.py +0 -81
  189. graphql_core-3.2.12/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -894
  190. graphql_core-3.2.12/src/graphql/validation/validate.py +0 -147
  191. graphql_core-3.2.12/src/graphql/validation/validation_context.py +0 -254
  192. graphql_core-3.2.12/tests/language/test_location.py +0 -43
  193. graphql_core-3.2.12/tests/validation/test_validation.py +0 -213
  194. {graphql_core-3.2.12 → graphql_core-3.2.14}/.coveragerc +0 -0
  195. {graphql_core-3.2.12 → graphql_core-3.2.14}/.editorconfig +0 -0
  196. {graphql_core-3.2.12 → graphql_core-3.2.14}/.mypy.ini +0 -0
  197. {graphql_core-3.2.12 → graphql_core-3.2.14}/.readthedocs.yaml +0 -0
  198. {graphql_core-3.2.12 → graphql_core-3.2.14}/CODEOWNERS +0 -0
  199. {graphql_core-3.2.12 → graphql_core-3.2.14}/LICENSE +0 -0
  200. {graphql_core-3.2.12 → graphql_core-3.2.14}/MANIFEST.in +0 -0
  201. {graphql_core-3.2.12 → graphql_core-3.2.14}/SECURITY.md +0 -0
  202. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/Makefile +0 -0
  203. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/diffs.rst +0 -0
  204. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/index.rst +0 -0
  205. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/intro.rst +0 -0
  206. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/make.bat +0 -0
  207. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/error.rst +0 -0
  208. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/graphql.rst +0 -0
  209. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/language.rst +0 -0
  210. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/pyutils.rst +0 -0
  211. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/modules/utilities.rst +0 -0
  212. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/requirements.txt +0 -0
  213. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/extension.rst +0 -0
  214. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/index.rst +0 -0
  215. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/introspection.rst +0 -0
  216. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/methods.rst +0 -0
  217. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/other.rst +0 -0
  218. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/parser.rst +0 -0
  219. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/queries.rst +0 -0
  220. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/resolvers.rst +0 -0
  221. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/schema.rst +0 -0
  222. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/sdl.rst +0 -0
  223. {graphql_core-3.2.12 → graphql_core-3.2.14}/docs/usage/validator.rst +0 -0
  224. {graphql_core-3.2.12 → graphql_core-3.2.14}/poetry.lock +0 -0
  225. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/__init__.py +0 -0
  226. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/language/__init__.py +0 -0
  227. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/py.typed +0 -0
  228. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/pyutils/__init__.py +0 -0
  229. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/subscription/__init__.py +0 -0
  230. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/type/__init__.py +0 -0
  231. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/utilities/__init__.py +0 -0
  232. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/__init__.py +0 -0
  233. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql/validation/rules/custom/__init__.py +0 -0
  234. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/dependency_links.txt +0 -0
  235. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/not-zip-safe +0 -0
  236. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/requires.txt +0 -0
  237. {graphql_core-3.2.12 → graphql_core-3.2.14}/src/graphql_core.egg-info/top_level.txt +0 -0
  238. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/__init__.py +0 -0
  239. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/__init__.py +0 -0
  240. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_build_ast_schema.py +0 -0
  241. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_build_client_schema.py +0 -0
  242. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_execution_async.py +0 -0
  243. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_execution_sync.py +0 -0
  244. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_introspection_from_schema.py +0 -0
  245. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_parser.py +0 -0
  246. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_print.py +0 -0
  247. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_repeated_fields.py +0 -0
  248. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_validate_gql.py +0 -0
  249. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
  250. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_validate_sdl.py +0 -0
  251. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/benchmarks/test_visit.py +0 -0
  252. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/error/__init__.py +0 -0
  253. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/error/test_located_error.py +0 -0
  254. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/__init__.py +0 -0
  255. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_abstract.py +0 -0
  256. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_customize.py +0 -0
  257. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_directives.py +0 -0
  258. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_execution_result.py +0 -0
  259. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_executor.py +0 -0
  260. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_lists.py +0 -0
  261. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_middleware.py +0 -0
  262. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_mutations.py +0 -0
  263. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_nonnull.py +0 -0
  264. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_one_of.py +0 -0
  265. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_parallel.py +0 -0
  266. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_resolve.py +0 -0
  267. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_schema.py +0 -0
  268. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_subscribe.py +0 -0
  269. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/execution/test_union_interface.py +0 -0
  270. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/fixtures/__init__.py +0 -0
  271. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/fixtures/github_schema.graphql +0 -0
  272. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/fixtures/github_schema.json +0 -0
  273. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/fixtures/kitchen_sink.graphql +0 -0
  274. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/fixtures/schema_kitchen_sink.graphql +0 -0
  275. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/__init__.py +0 -0
  276. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_ast.py +0 -0
  277. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_block_string_fuzz.py +0 -0
  278. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_character_classes.py +0 -0
  279. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_predicates.py +0 -0
  280. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_print_string.py +0 -0
  281. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_schema_coordinate_lexer.py +0 -0
  282. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_schema_parser.py +0 -0
  283. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/language/test_schema_printer.py +0 -0
  284. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/__init__.py +0 -0
  285. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_cached_property.py +0 -0
  286. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_convert_case.py +0 -0
  287. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_description.py +0 -0
  288. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_did_you_mean.py +0 -0
  289. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_frozen_dict.py +0 -0
  290. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_frozen_error.py +0 -0
  291. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_frozen_list.py +0 -0
  292. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_group_by.py +0 -0
  293. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_identity_func.py +0 -0
  294. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_inspect.py +0 -0
  295. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_is_awaitable.py +0 -0
  296. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_is_iterable.py +0 -0
  297. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_merge_kwargs.py +0 -0
  298. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_natural_compare.py +0 -0
  299. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_path.py +0 -0
  300. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_print_path_list.py +0 -0
  301. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_simple_pub_sub.py +0 -0
  302. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_suggestion_list.py +0 -0
  303. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/pyutils/test_undefined.py +0 -0
  304. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/star_wars_schema.py +0 -0
  305. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_star_wars_introspection.py +0 -0
  306. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_star_wars_query.py +0 -0
  307. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_star_wars_validation.py +0 -0
  308. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_user_registry.py +0 -0
  309. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/test_version.py +0 -0
  310. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/__init__.py +0 -0
  311. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_assert_name.py +0 -0
  312. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_custom_scalars.py +0 -0
  313. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_definition.py +0 -0
  314. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_directives.py +0 -0
  315. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_extensions.py +0 -0
  316. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_introspection.py +0 -0
  317. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_schema.py +0 -0
  318. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/type/test_validation.py +0 -0
  319. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/__init__.py +0 -0
  320. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_ast_from_value.py +0 -0
  321. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_ast_to_dict.py +0 -0
  322. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_concat_ast.py +0 -0
  323. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_extend_schema.py +0 -0
  324. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_find_breaking_changes.py +0 -0
  325. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_get_introspection_query.py +0 -0
  326. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_get_operation_ast.py +0 -0
  327. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_get_operation_root_type.py +0 -0
  328. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_introspection_from_schema.py +0 -0
  329. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
  330. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_print_schema.py +0 -0
  331. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_resolve_schema_coordinate.py +0 -0
  332. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_separate_operations.py +0 -0
  333. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_sort_value_node.py +0 -0
  334. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_strip_ignored_characters.py +0 -0
  335. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_strip_ignored_characters_fuzz.py +0 -0
  336. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_type_comparators.py +0 -0
  337. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_type_from_ast.py +0 -0
  338. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_type_info.py +0 -0
  339. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_value_from_ast.py +0 -0
  340. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utilities/test_value_from_ast_untyped.py +0 -0
  341. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utils/__init__.py +0 -0
  342. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utils/dedent.py +0 -0
  343. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utils/gen_fuzz_strings.py +0 -0
  344. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utils/test_dedent.py +0 -0
  345. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/utils/test_gen_fuzz_strings.py +0 -0
  346. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/__init__.py +0 -0
  347. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_executable_definitions.py +0 -0
  348. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_fragments_on_composite_types.py +0 -0
  349. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_known_directives.py +0 -0
  350. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_known_fragment_names.py +0 -0
  351. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_lone_anonymous_operation.py +0 -0
  352. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_lone_schema_definition.py +0 -0
  353. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_deprecated.py +0 -0
  354. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_fragment_cycles.py +0 -0
  355. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_schema_introspection.py +0 -0
  356. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_unused_fragments.py +0 -0
  357. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_no_unused_variables.py +0 -0
  358. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_possible_fragment_spreads.py +0 -0
  359. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_possible_type_extensions.py +0 -0
  360. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_provided_required_arguments.py +0 -0
  361. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_scalar_leafs.py +0 -0
  362. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_argument_definition_names.py +0 -0
  363. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_argument_names.py +0 -0
  364. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_directive_names.py +0 -0
  365. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_directives_per_location.py +0 -0
  366. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_enum_value_names.py +0 -0
  367. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_field_definition_names.py +0 -0
  368. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_fragment_names.py +0 -0
  369. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_input_field_names.py +0 -0
  370. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_operation_names.py +0 -0
  371. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_operation_types.py +0 -0
  372. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_type_names.py +0 -0
  373. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_unique_variable_names.py +0 -0
  374. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_variables_are_input_types.py +0 -0
  375. {graphql_core-3.2.12 → graphql_core-3.2.14}/tests/validation/test_variables_in_allowed_position.py +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.2.12
2
+ current_version = 3.2.14
3
3
  commit = False
4
4
  tag = False
5
5
 
@@ -0,0 +1,13 @@
1
+ [flake8]
2
+ ignore = E203,E704,W503,D105,D107,D203,D213,D400,D403,D415,D401
3
+ docstring-convention = all
4
+ per-file-ignores =
5
+ src/graphql/language/ast.py: D101
6
+ src/graphql/utilities/extend_schema.py: D102
7
+ src/graphql/utilities/get_introspection_query.py: D101
8
+ src/graphql/utilities/type_info.py: D102
9
+ src/graphql/validation/rules/*: D102
10
+ src/graphql/validation/validation_context.py: D102
11
+ tests/*: D100,D101,D102,D103
12
+ exclude = .git,.mypy_cache,.pytest_cache,.tox,.venv,__pycache__,build,dist,docs
13
+ max-line-length = 88
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphql-core
3
- Version: 3.2.12
3
+ Version: 3.2.14
4
4
  Summary: GraphQL implementation for Python, a port of GraphQL.js, the JavaScript reference implementation for GraphQL.
5
5
  Home-page: https://github.com/graphql-python/graphql-core
6
6
  Author: Christoph Zwerschke
@@ -21,6 +21,7 @@ Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
22
  Classifier: Programming Language :: Python :: 3.13
23
23
  Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Programming Language :: Python :: 3.15
24
25
  Requires-Python: >=3.7,<4
25
26
  Description-Content-Type: text/markdown
26
27
  License-File: LICENSE
@@ -50,7 +51,7 @@ a query language for APIs created by Facebook.
50
51
  ![Lint Status](https://github.com/graphql-python/graphql-core/actions/workflows/lint.yml/badge.svg)
51
52
  [![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
52
53
 
53
- The current version 3.2.12 of GraphQL-core is up-to-date with GraphQL.js version 16.14.2.
54
+ The current version 3.2.14 of GraphQL-core is up-to-date with GraphQL.js version 16.15.0.
54
55
 
55
56
  An extensive test suite with over 2500 unit tests and 100% coverage comprises a
56
57
  replication of the complete test suite of GraphQL.js, making sure this port is
@@ -10,7 +10,7 @@ a query language for APIs created by Facebook.
10
10
  ![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.12 of GraphQL-core is up-to-date with GraphQL.js version 16.14.2.
13
+ The current version 3.2.14 of GraphQL-core is up-to-date with GraphQL.js version 16.15.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
@@ -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.12"
64
+ version = release = "3.2.14"
65
65
 
66
66
  # The language for content autogenerated by Sphinx. Refer to documentation
67
67
  # for a list of supported languages.
@@ -32,6 +32,8 @@ Execution
32
32
 
33
33
  .. autoclass:: MiddlewareManager
34
34
 
35
+ .. autofunction:: get_argument_values
36
+
35
37
  .. autofunction:: get_directive_values
36
38
 
37
39
  .. autofunction:: get_variable_values
@@ -13,6 +13,7 @@ Definition
13
13
  Predicates
14
14
  ^^^^^^^^^^
15
15
 
16
+ .. autofunction:: is_abstract_type
16
17
  .. autofunction:: is_composite_type
17
18
  .. autofunction:: is_enum_type
18
19
  .. autofunction:: is_input_object_type
@@ -25,6 +26,8 @@ Predicates
25
26
  .. autofunction:: is_nullable_type
26
27
  .. autofunction:: is_object_type
27
28
  .. autofunction:: is_output_type
29
+ .. autofunction:: is_required_argument
30
+ .. autofunction:: is_required_input_field
28
31
  .. autofunction:: is_scalar_type
29
32
  .. autofunction:: is_type
30
33
  .. autofunction:: is_union_type
@@ -116,6 +119,11 @@ Predicates
116
119
  .. autofunction:: is_directive
117
120
  .. autofunction:: is_specified_directive
118
121
 
122
+ Assertions
123
+ ^^^^^^^^^^
124
+
125
+ .. autofunction:: assert_directive
126
+
119
127
  Definitions
120
128
  ^^^^^^^^^^^
121
129
 
@@ -123,6 +131,8 @@ Definitions
123
131
  .. autoclass:: GraphQLIncludeDirective
124
132
  .. autoclass:: GraphQLSkipDirective
125
133
  .. autoclass:: GraphQLDeprecatedDirective
134
+ .. autoclass:: GraphQLSpecifiedByDirective
135
+ .. autoclass:: GraphQLOneOfDirective
126
136
 
127
137
  .. data:: specified_directives
128
138
 
@@ -172,6 +182,10 @@ Definitions
172
182
  .. autoclass:: GraphQLInt
173
183
  .. autoclass:: GraphQLString
174
184
 
185
+ .. data:: specified_scalar_types
186
+
187
+ A mapping containing all scalar types from the GraphQL specification
188
+
175
189
  .. data:: GRAPHQL_MAX_INT
176
190
 
177
191
  Maximum possible Int value as per GraphQL Spec (32-bit signed integer)
@@ -189,6 +203,11 @@ Predicates
189
203
 
190
204
  .. autofunction:: is_schema
191
205
 
206
+ Assertions
207
+ ^^^^^^^^^^
208
+
209
+ .. autofunction:: assert_schema
210
+
192
211
  Definitions
193
212
  ^^^^^^^^^^^
194
213
 
@@ -33,6 +33,11 @@ Rules
33
33
 
34
34
  A tuple with all validation rules defined by the GraphQL specification
35
35
 
36
+ .. data:: recommended_rules
37
+
38
+ A tuple with validation rules that are not part of the GraphQL specification,
39
+ but recommended to be used, like limiting the depth of introspection queries
40
+
36
41
  **Spec Section: "Executable Definitions"**
37
42
 
38
43
  .. autoclass:: ExecutableDefinitionsRule
@@ -151,3 +156,8 @@ Rules
151
156
  .. autoclass:: UniqueArgumentDefinitionNamesRule
152
157
  .. autoclass:: UniqueDirectiveNamesRule
153
158
  .. autoclass:: PossibleTypeExtensionsRule
159
+
160
+ **Custom validation rules (not part of the specification)**
161
+
162
+ .. autoclass:: NoDeprecatedCustomRule
163
+ .. autoclass:: NoSchemaIntrospectionCustomRule
@@ -1,9 +1,9 @@
1
1
  [tool.poetry]
2
2
  name = "graphql-core"
3
- version = "3.2.12"
3
+ version = "3.2.14"
4
4
  description = """
5
- GraphQL-core is a Python port of GraphQL.js,\
6
- the JavaScript reference implementation for GraphQL."""
5
+ GraphQL-core is a Python port of GraphQL.js, \
6
+ the JavaScript reference implementation for GraphQL."""
7
7
  license = "MIT"
8
8
  authors = [
9
9
  "Christoph Zwerschke <cito@online.de>"
@@ -26,6 +26,7 @@ classifiers = [
26
26
  "Programming Language :: Python :: 3.12",
27
27
  "Programming Language :: Python :: 3.13",
28
28
  "Programming Language :: Python :: 3.14",
29
+ "Programming Language :: Python :: 3.15",
29
30
  ]
30
31
  packages = [
31
32
  { include = "graphql", from = "src" },
@@ -54,7 +55,8 @@ typing-extensions = [
54
55
 
55
56
  [tool.black]
56
57
  target-version = [
57
- 'py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313', 'py314'
58
+ 'py37', 'py38', 'py39', 'py310', 'py311', 'py312', 'py313', 'py314',
59
+ 'py315'
58
60
  ]
59
61
 
60
62
  [tool.pyright]
@@ -1,5 +1,5 @@
1
1
  [bdist_wheel]
2
- python-tag = py3
2
+ python_tag = py3
3
3
 
4
4
  [aliases]
5
5
  test = pytest
@@ -1,3 +1,5 @@
1
+ """Setup script for GraphQL-core."""
2
+
1
3
  from re import search
2
4
 
3
5
  from setuptools import find_packages, setup
@@ -35,6 +37,7 @@ setup(
35
37
  "Programming Language :: Python :: 3.12",
36
38
  "Programming Language :: Python :: 3.13",
37
39
  "Programming Language :: Python :: 3.14",
40
+ "Programming Language :: Python :: 3.15",
38
41
  ],
39
42
  install_requires=[
40
43
  "typing-extensions>=4.7,<5; python_version < '3.10'",
@@ -2,6 +2,8 @@
2
2
 
3
3
  The :mod:`graphql.error` package is responsible for creating and formatting GraphQL
4
4
  errors.
5
+
6
+ These exports are also available from the root :mod:`graphql` package.
5
7
  """
6
8
 
7
9
  from .graphql_error import (
@@ -1,4 +1,5 @@
1
- from sys import exc_info
1
+ """GraphQL Error"""
2
+
2
3
  from typing import Any, Collection, Dict, List, Optional, Union, TYPE_CHECKING
3
4
 
4
5
  try:
@@ -39,22 +40,40 @@ GraphQLFormattedErrorExtensions = Dict[str, Any]
39
40
 
40
41
 
41
42
  class GraphQLFormattedError(TypedDict, total=False):
42
- """Formatted GraphQL error"""
43
+ """Formatted GraphQL error
44
+
45
+ See: https://spec.graphql.org/draft/#sec-Errors
46
+ """
43
47
 
44
- # A short, human-readable summary of the problem that **SHOULD NOT** change
45
- # from occurrence to occurrence of the problem, except for purposes of localization.
46
48
  message: str
47
- # If an error can be associated to a particular point in the requested
48
- # GraphQL document, it should contain a list of locations.
49
+ """A short, human-readable summary of the problem.
50
+
51
+ The message **SHOULD NOT** change from occurrence to occurrence of the problem,
52
+ except for purposes of localization.
53
+ """
54
+
49
55
  locations: List["FormattedSourceLocation"]
50
- # If an error can be associated to a particular field in the GraphQL result,
51
- # it _must_ contain an entry with the key `path` that details the path of
52
- # the response field which experienced the error. This allows clients to
53
- # identify whether a null result is intentional or caused by a runtime error.
56
+ """Locations in the requested GraphQL document.
57
+
58
+ If an error can be associated to a particular point in the requested GraphQL
59
+ document, it should contain a list of locations.
60
+ """
61
+
54
62
  path: List[Union[str, int]]
55
- # Reserved for implementors to extend the protocol however they see fit,
56
- # and hence there are no additional restrictions on its contents.
63
+ """Path of the response field which experienced the error.
64
+
65
+ If an error can be associated to a particular field in the GraphQL result, it
66
+ *must* contain an entry with the key ``path`` that details the path of the response
67
+ field which experienced the error. This allows clients to identify whether a null
68
+ result is intentional or caused by a runtime error.
69
+ """
70
+
57
71
  extensions: GraphQLFormattedErrorExtensions
72
+ """Custom extensions.
73
+
74
+ Reserved for implementors to extend the protocol however they see fit, and hence
75
+ there are no additional restrictions on its contents.
76
+ """
58
77
 
59
78
 
60
79
  class GraphQLError(Exception):
@@ -64,6 +83,72 @@ class GraphQLError(Exception):
64
83
  phases of performing a GraphQL operation. In addition to a message, it also includes
65
84
  information about the locations in a GraphQL document and/or execution result that
66
85
  correspond to the Error.
86
+
87
+ :param message: Human-readable error message.
88
+ :param nodes: AST node or nodes associated with this error.
89
+ :param source: Source document used to derive error locations.
90
+ :param positions: Character offsets in the source document associated with this
91
+ error.
92
+ :param path: Response path where this error occurred during execution.
93
+ :param original_error: Original error that caused this GraphQLError, if one
94
+ exists.
95
+ :param extensions: Extension fields to include in the formatted error.
96
+
97
+ Create an error from AST nodes and response metadata:
98
+
99
+ >>> from graphql import GraphQLError, parse
100
+ >>> document = parse('{ greeting }')
101
+ >>> field_node = document.definitions[0].selection_set.selections[0]
102
+ >>> error = GraphQLError(
103
+ ... 'Cannot query this field.',
104
+ ... nodes=field_node,
105
+ ... path=['greeting'],
106
+ ... extensions={'code': 'FORBIDDEN'},
107
+ ... )
108
+ >>> error.message
109
+ 'Cannot query this field.'
110
+ >>> error.locations
111
+ [SourceLocation(line=1, column=3)]
112
+ >>> error.path
113
+ ['greeting']
114
+ >>> error.extensions
115
+ {'code': 'FORBIDDEN'}
116
+
117
+ This variant derives locations from source positions and preserves the original
118
+ error:
119
+
120
+ >>> from graphql import Source
121
+ >>> source = Source('{ greeting }')
122
+ >>> original_error = RuntimeError('Database unavailable.')
123
+ >>> error = GraphQLError(
124
+ ... 'Resolver failed.',
125
+ ... source=source,
126
+ ... positions=[2],
127
+ ... path=['greeting'],
128
+ ... original_error=original_error,
129
+ ... )
130
+ >>> error.locations
131
+ [SourceLocation(line=1, column=3)]
132
+ >>> error.path
133
+ ['greeting']
134
+ >>> error.original_error is original_error
135
+ True
136
+
137
+ All arguments can also be passed positionally:
138
+
139
+ >>> error = GraphQLError(
140
+ ... 'Resolver failed.',
141
+ ... None,
142
+ ... source,
143
+ ... [2],
144
+ ... ['greeting'],
145
+ ... original_error,
146
+ ... {'code': 'INTERNAL'},
147
+ ... )
148
+ >>> error.locations
149
+ [SourceLocation(line=1, column=3)]
150
+ >>> error.extensions
151
+ {'code': 'INTERNAL'}
67
152
  """
68
153
 
69
154
  message: str
@@ -81,7 +166,7 @@ class GraphQLError(Exception):
81
166
  """
82
167
 
83
168
  path: Optional[List[Union[str, int]]]
84
- """
169
+ """Response path
85
170
 
86
171
  A list of field names and array indexes describing the JSON-path into the execution
87
172
  response which corresponds to this error.
@@ -107,7 +192,7 @@ class GraphQLError(Exception):
107
192
  """
108
193
 
109
194
  original_error: Optional[Exception]
110
- """The original error thrown from a field resolver during execution"""
195
+ """Original error that caused this GraphQLError, if one exists"""
111
196
 
112
197
  extensions: Optional[GraphQLErrorExtensions]
113
198
  """Extension fields to add to the formatted error"""
@@ -160,13 +245,18 @@ class GraphQLError(Exception):
160
245
  if not positions and node_locations:
161
246
  positions = [loc.start for loc in node_locations]
162
247
  self.positions = positions or None
163
- if positions and source:
164
- locations: Optional[List["SourceLocation"]] = [
165
- source.get_location(pos) for pos in positions
166
- ]
248
+ source_positions = (
249
+ [(source, pos) for pos in positions]
250
+ if positions and source
251
+ else [(loc.source, loc.start) for loc in node_locations]
252
+ )
253
+ if source_positions:
254
+ # Lazy import to avoid a cyclic dependency between error and language
255
+ from ..language.location import get_locations
256
+
257
+ self.locations = get_locations(source_positions)
167
258
  else:
168
- locations = [loc.source.get_location(loc.start) for loc in node_locations]
169
- self.locations = locations or None
259
+ self.locations = None
170
260
 
171
261
  if original_error:
172
262
  self.__traceback__ = original_error.__traceback__
@@ -179,10 +269,23 @@ class GraphQLError(Exception):
179
269
  if isinstance(original_extensions, dict):
180
270
  extensions = original_extensions
181
271
  self.extensions = extensions or {}
182
- if not self.__traceback__:
183
- self.__traceback__ = exc_info()[2]
184
272
 
185
273
  def __str__(self) -> str:
274
+ """Get this error as a human-readable message with source locations.
275
+
276
+ >>> from graphql import GraphQLError, Source
277
+ >>> error = GraphQLError(
278
+ ... 'Cannot query field "name".',
279
+ ... source=Source('{ name }'),
280
+ ... positions=[2],
281
+ ... )
282
+ >>> print(error)
283
+ Cannot query field "name".
284
+ <BLANKLINE>
285
+ GraphQL request:1:3
286
+ 1 | { name }
287
+ | ^
288
+ """
186
289
  # Lazy import to avoid a cyclic dependency between error and language
187
290
  from ..language.print_location import print_location, print_source_location
188
291
 
@@ -237,6 +340,16 @@ class GraphQLError(Exception):
237
340
 
238
341
  Given a GraphQLError, format it according to the rules described by the
239
342
  "Response Format, Errors" section of the GraphQL Specification.
343
+
344
+ >>> from graphql import GraphQLError
345
+ >>> error = GraphQLError(
346
+ ... 'Resolver failed.',
347
+ ... path=['viewer', 'name'],
348
+ ... extensions={'code': 'INTERNAL'},
349
+ ... )
350
+ >>> error.formatted
351
+ {'message': 'Resolver failed.', 'path': ['viewer', 'name'],
352
+ 'extensions': {'code': 'INTERNAL'}}
240
353
  """
241
354
  formatted: GraphQLFormattedError = {
242
355
  "message": self.message or "An unknown error occurred.",
@@ -257,6 +370,14 @@ def print_error(error: GraphQLError) -> str:
257
370
  This deprecated helper is retained for backwards compatibility; call ``str(error)``
258
371
  instead because ``print_error`` will be removed in v3.3.
259
372
 
373
+ :param error: The error to format.
374
+ :returns: The printed string representation.
375
+
376
+ >>> from graphql import GraphQLError
377
+ >>> from graphql.error.graphql_error import print_error
378
+ >>> print_error(GraphQLError('Example error'))
379
+ 'Example error'
380
+
260
381
  .. deprecated:: 3.2
261
382
  Please use ``str(error)`` instead. Will be removed in v3.3.
262
383
  """
@@ -273,6 +394,14 @@ def format_error(error: GraphQLError) -> GraphQLFormattedError:
273
394
  retained for backwards compatibility; use ``error.formatted`` instead because
274
395
  ``format_error`` will be removed in v3.3.
275
396
 
397
+ :param error: The error to format.
398
+ :returns: The JSON-serializable formatted error.
399
+
400
+ >>> from graphql import GraphQLError
401
+ >>> from graphql.error.graphql_error import format_error
402
+ >>> format_error(GraphQLError('Example error'))
403
+ {'message': 'Example error'}
404
+
276
405
  .. deprecated:: 3.2
277
406
  Please use ``error.formatted`` instead. Will be removed in v3.3.
278
407
  """
@@ -1,3 +1,5 @@
1
+ """Located GraphQL Error"""
2
+
1
3
  from typing import TYPE_CHECKING, Collection, Optional, Union
2
4
 
3
5
  from ..pyutils import inspect
@@ -19,6 +21,22 @@ def located_error(
19
21
  Given an arbitrary Exception, presumably thrown while attempting to execute a
20
22
  GraphQL operation, produce a new GraphQLError aware of the location in the document
21
23
  responsible for the original Exception.
24
+
25
+ :param original_error: The original error value to wrap.
26
+ :param nodes: The AST nodes associated with the error.
27
+ :param path: The response path associated with the error.
28
+ :returns: The GraphQL error.
29
+
30
+ >>> from graphql import located_error, parse
31
+ >>> document = parse('{ viewer { name } }')
32
+ >>> field_node = document.definitions[0].selection_set.selections[0]
33
+ >>> error = located_error(RuntimeError('Resolver failed'), [field_node], ['viewer'])
34
+ >>> error.message
35
+ 'Resolver failed'
36
+ >>> error.locations
37
+ [SourceLocation(line=1, column=3)]
38
+ >>> error.path
39
+ ['viewer']
22
40
  """
23
41
  # Sometimes a non-error is thrown, wrap it as a TypeError to ensure consistency.
24
42
  if not isinstance(original_error, Exception):
@@ -0,0 +1,38 @@
1
+ """GraphQL Syntax Error"""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from .graphql_error import GraphQLError
6
+
7
+ if TYPE_CHECKING:
8
+ from ..language.source import Source # noqa: F401
9
+
10
+ __all__ = ["GraphQLSyntaxError"]
11
+
12
+
13
+ class GraphQLSyntaxError(GraphQLError):
14
+ """A GraphQLError representing a syntax error.
15
+
16
+ Contains useful descriptive information about the syntax error's position in the
17
+ source.
18
+
19
+ :param source: The GraphQL source containing the syntax error.
20
+ :param position: Character offset where the syntax error was encountered.
21
+ :param description: Human-readable description of the syntax error.
22
+
23
+ >>> from graphql import GraphQLSyntaxError, Source
24
+ >>> error = GraphQLSyntaxError(Source('query {'), 7, 'Expected Name')
25
+ >>> error.message
26
+ 'Syntax Error: Expected Name'
27
+ >>> error.locations
28
+ [SourceLocation(line=1, column=8)]
29
+ """
30
+
31
+ description: str
32
+ """Human-readable description of the syntax error."""
33
+
34
+ def __init__(self, source: "Source", position: int, description: str) -> None:
35
+ super().__init__(
36
+ f"Syntax Error: {description}", source=source, positions=[position]
37
+ )
38
+ self.description = description
@@ -2,6 +2,8 @@
2
2
 
3
3
  The :mod:`graphql.execution` package is responsible for the execution phase of
4
4
  fulfilling a GraphQL request.
5
+
6
+ These exports are also available from the root :mod:`graphql` package.
5
7
  """
6
8
 
7
9
  from .execute import (
@@ -1,4 +1,6 @@
1
- from typing import Any, Dict, List, Set, Union, cast
1
+ """Collect fields"""
2
+
3
+ from typing import Any, Callable, Dict, List, Optional, Set, Union, cast
2
4
 
3
5
  from ..language import (
4
6
  FieldNode,
@@ -27,6 +29,7 @@ def collect_fields(
27
29
  variable_values: Dict[str, Any],
28
30
  runtime_type: GraphQLObjectType,
29
31
  selection_set: SelectionSetNode,
32
+ on_selection_set: Optional[Callable[[SelectionSetNode], None]] = None,
30
33
  ) -> Dict[str, List[FieldNode]]:
31
34
  """Collect fields.
32
35
 
@@ -37,10 +40,19 @@ def collect_fields(
37
40
  object type returned by that field.
38
41
 
39
42
  For internal use only.
43
+
44
+ :meta private:
40
45
  """
41
46
  fields: Dict[str, List[FieldNode]] = {}
42
47
  collect_fields_impl(
43
- schema, fragments, variable_values, runtime_type, selection_set, fields, set()
48
+ schema,
49
+ fragments,
50
+ variable_values,
51
+ runtime_type,
52
+ selection_set,
53
+ fields,
54
+ set(),
55
+ on_selection_set,
44
56
  )
45
57
  return fields
46
58
 
@@ -62,6 +74,8 @@ def collect_sub_fields(
62
74
  object type returned by that field.
63
75
 
64
76
  For internal use only.
77
+
78
+ :meta private:
65
79
  """
66
80
  sub_field_nodes: Dict[str, List[FieldNode]] = {}
67
81
  visited_fragment_names: Set[str] = set()
@@ -87,8 +101,14 @@ def collect_fields_impl(
87
101
  selection_set: SelectionSetNode,
88
102
  fields: Dict[str, List[FieldNode]],
89
103
  visited_fragment_names: Set[str],
104
+ on_selection_set: Optional[Callable[[SelectionSetNode], None]] = None,
90
105
  ) -> None:
91
- """Collect fields (internal implementation)."""
106
+ """Collect fields (internal implementation).
107
+
108
+ :meta private:
109
+ """
110
+ if on_selection_set:
111
+ on_selection_set(selection_set)
92
112
  for selection in selection_set.selections:
93
113
  if isinstance(selection, FieldNode):
94
114
  if not should_include_node(variable_values, selection):
@@ -108,6 +128,7 @@ def collect_fields_impl(
108
128
  selection.selection_set,
109
129
  fields,
110
130
  visited_fragment_names,
131
+ on_selection_set,
111
132
  )
112
133
  elif isinstance(selection, FragmentSpreadNode): # pragma: no cover else
113
134
  frag_name = selection.name.value
@@ -129,6 +150,7 @@ def collect_fields_impl(
129
150
  fragment.selection_set,
130
151
  fields,
131
152
  visited_fragment_names,
153
+ on_selection_set,
132
154
  )
133
155
 
134
156
 
@@ -138,8 +160,10 @@ def should_include_node(
138
160
  ) -> bool:
139
161
  """Check if node should be included
140
162
 
141
- Determines if a field should be included based on the @include and @skip
142
- directives, where @skip has higher precedence than @include.
163
+ Determines if a field should be included based on the ``@include`` and ``@skip``
164
+ directives, where ``@skip`` has higher precedence than ``@include``.
165
+
166
+ :meta private:
143
167
  """
144
168
  skip = get_directive_values(GraphQLSkipDirective, node, variable_values)
145
169
  if skip and skip["if"]:
@@ -157,7 +181,10 @@ def does_fragment_condition_match(
157
181
  fragment: Union[FragmentDefinitionNode, InlineFragmentNode],
158
182
  type_: GraphQLObjectType,
159
183
  ) -> bool:
160
- """Determine if a fragment is applicable to the given type."""
184
+ """Determine if a fragment is applicable to the given type.
185
+
186
+ :meta private:
187
+ """
161
188
  type_condition_node = fragment.type_condition
162
189
  if not type_condition_node:
163
190
  return True
@@ -170,5 +197,8 @@ def does_fragment_condition_match(
170
197
 
171
198
 
172
199
  def get_field_entry_key(node: FieldNode) -> str:
173
- """Implements the logic to compute the key of a given field's entry"""
200
+ """Implement the logic to compute the key of a given field's entry.
201
+
202
+ :meta private:
203
+ """
174
204
  return node.alias.value if node.alias else node.name.value