graphql-core 3.2.11__tar.gz → 3.2.13__tar.gz

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