graphql-core 3.3.0b2__tar.gz → 3.3.0rc0__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 (384) hide show
  1. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/.bumpversion.cfg +1 -1
  2. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/PKG-INFO +3 -3
  3. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/README.md +2 -2
  4. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/conf.py +1 -1
  5. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/pyproject.toml +1 -1
  6. graphql_core-3.3.0rc0/src/graphql/validation/rules/defer_stream_directive_on_root_field.py +123 -0
  7. graphql_core-3.3.0rc0/src/graphql/validation/rules/defer_stream_directive_on_valid_operations_rule.py +162 -0
  8. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/version.py +2 -2
  9. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_defer_stream_directive_on_root_field.py +117 -3
  10. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_defer_stream_directive_on_valid_operations.py +284 -2
  11. graphql_core-3.3.0b2/src/graphql/validation/rules/defer_stream_directive_on_root_field.py +0 -73
  12. graphql_core-3.3.0b2/src/graphql/validation/rules/defer_stream_directive_on_valid_operations_rule.py +0 -86
  13. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/.editorconfig +0 -0
  14. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/.readthedocs.yaml +0 -0
  15. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/CODEOWNERS +0 -0
  16. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/LICENSE +0 -0
  17. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/SECURITY.md +0 -0
  18. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/Makefile +0 -0
  19. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/diffs.rst +0 -0
  20. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/index.rst +0 -0
  21. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/intro.rst +0 -0
  22. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/make.bat +0 -0
  23. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/error.rst +0 -0
  24. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/execution.rst +0 -0
  25. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/graphql.rst +0 -0
  26. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/language.rst +0 -0
  27. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/pyutils.rst +0 -0
  28. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/type.rst +0 -0
  29. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/utilities.rst +0 -0
  30. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/modules/validation.rst +0 -0
  31. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/extension.rst +0 -0
  32. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/index.rst +0 -0
  33. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/introspection.rst +0 -0
  34. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/methods.rst +0 -0
  35. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/other.rst +0 -0
  36. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/parser.rst +0 -0
  37. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/queries.rst +0 -0
  38. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/resolvers.rst +0 -0
  39. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/schema.rst +0 -0
  40. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/sdl.rst +0 -0
  41. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/docs/usage/validator.rst +0 -0
  42. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/__init__.py +0 -0
  43. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/error/__init__.py +0 -0
  44. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/error/graphql_error.py +0 -0
  45. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/error/located_error.py +0 -0
  46. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/error/syntax_error.py +0 -0
  47. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/__init__.py +0 -0
  48. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/aborted_graphql_execution_error.py +0 -0
  49. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/async_iterables.py +0 -0
  50. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/build_execution_plan.py +0 -0
  51. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/collect_fields.py +0 -0
  52. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/execute.py +0 -0
  53. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/get_variable_signature.py +0 -0
  54. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/incremental_graph.py +0 -0
  55. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/incremental_publisher.py +0 -0
  56. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/middleware.py +0 -0
  57. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/types.py +0 -0
  58. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/execution/values.py +0 -0
  59. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/graphql.py +0 -0
  60. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/harness.py +0 -0
  61. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/__init__.py +0 -0
  62. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/ast.py +0 -0
  63. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/block_string.py +0 -0
  64. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/character_classes.py +0 -0
  65. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/directive_locations.py +0 -0
  66. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/lexer.py +0 -0
  67. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/location.py +0 -0
  68. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/parser.py +0 -0
  69. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/predicates.py +0 -0
  70. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/print_location.py +0 -0
  71. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/print_string.py +0 -0
  72. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/printer.py +0 -0
  73. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/schema_coordinate_lexer.py +0 -0
  74. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/source.py +0 -0
  75. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/token_kind.py +0 -0
  76. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/language/visitor.py +0 -0
  77. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/py.typed +0 -0
  78. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/__init__.py +0 -0
  79. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/abort_signal.py +0 -0
  80. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/async_reduce.py +0 -0
  81. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/awaitable_or_value.py +0 -0
  82. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/boxed_awaitable_or_value.py +0 -0
  83. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/cached_property.py +0 -0
  84. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/convert_case.py +0 -0
  85. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/description.py +0 -0
  86. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/did_you_mean.py +0 -0
  87. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/format_list.py +0 -0
  88. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/frozen_error.py +0 -0
  89. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/gather_with_cancel.py +0 -0
  90. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/group_by.py +0 -0
  91. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/identity_func.py +0 -0
  92. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/inspect.py +0 -0
  93. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/is_awaitable.py +0 -0
  94. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/is_iterable.py +0 -0
  95. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/merge_kwargs.py +0 -0
  96. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/natural_compare.py +0 -0
  97. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/path.py +0 -0
  98. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/print_path_list.py +0 -0
  99. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/ref_map.py +0 -0
  100. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/ref_set.py +0 -0
  101. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/simple_pub_sub.py +0 -0
  102. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/suggestion_list.py +0 -0
  103. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/pyutils/undefined.py +0 -0
  104. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/__init__.py +0 -0
  105. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/assert_name.py +0 -0
  106. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/definition.py +0 -0
  107. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/directives.py +0 -0
  108. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/introspection.py +0 -0
  109. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/scalars.py +0 -0
  110. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/schema.py +0 -0
  111. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/type/validate.py +0 -0
  112. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/__init__.py +0 -0
  113. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/ast_from_value.py +0 -0
  114. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/ast_to_dict.py +0 -0
  115. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/build_ast_schema.py +0 -0
  116. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/build_client_schema.py +0 -0
  117. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/coerce_input_value.py +0 -0
  118. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/concat_ast.py +0 -0
  119. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/extend_schema.py +0 -0
  120. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/find_schema_changes.py +0 -0
  121. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/get_default_value_ast.py +0 -0
  122. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/get_introspection_query.py +0 -0
  123. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/get_operation_ast.py +0 -0
  124. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/introspection_from_schema.py +0 -0
  125. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/lexicographic_sort_schema.py +0 -0
  126. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/map_schema_config.py +0 -0
  127. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/print_schema.py +0 -0
  128. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/replace_variables.py +0 -0
  129. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/resolve_schema_coordinate.py +0 -0
  130. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/separate_operations.py +0 -0
  131. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/sort_value_node.py +0 -0
  132. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/strip_ignored_characters.py +0 -0
  133. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/type_comparators.py +0 -0
  134. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/type_from_ast.py +0 -0
  135. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/type_info.py +0 -0
  136. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/validate_input_value.py +0 -0
  137. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/value_from_ast.py +0 -0
  138. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/value_from_ast_untyped.py +0 -0
  139. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/utilities/value_to_literal.py +0 -0
  140. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/__init__.py +0 -0
  141. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/__init__.py +0 -0
  142. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/custom/__init__.py +0 -0
  143. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/custom/no_deprecated.py +0 -0
  144. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/custom/no_schema_introspection.py +0 -0
  145. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/defer_stream_directive_label.py +0 -0
  146. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/executable_definitions.py +0 -0
  147. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/fields_on_correct_type.py +0 -0
  148. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/fragments_on_composite_types.py +0 -0
  149. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/known_argument_names.py +0 -0
  150. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/known_directives.py +0 -0
  151. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/known_fragment_names.py +0 -0
  152. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/known_operation_types.py +0 -0
  153. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/known_type_names.py +0 -0
  154. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/lone_anonymous_operation.py +0 -0
  155. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/lone_schema_definition.py +0 -0
  156. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/max_introspection_depth_rule.py +0 -0
  157. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/no_fragment_cycles.py +0 -0
  158. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/no_undefined_variables.py +0 -0
  159. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/no_unused_fragments.py +0 -0
  160. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/no_unused_variables.py +0 -0
  161. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/overlapping_fields_can_be_merged.py +0 -0
  162. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/possible_fragment_spreads.py +0 -0
  163. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/possible_type_extensions.py +0 -0
  164. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/provided_required_arguments.py +0 -0
  165. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/scalar_leafs.py +0 -0
  166. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/single_field_subscriptions.py +0 -0
  167. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/stream_directive_on_list_field.py +0 -0
  168. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_argument_definition_names.py +0 -0
  169. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_argument_names.py +0 -0
  170. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_directive_names.py +0 -0
  171. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_directives_per_location.py +0 -0
  172. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_enum_value_names.py +0 -0
  173. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_field_definition_names.py +0 -0
  174. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_fragment_names.py +0 -0
  175. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_input_field_names.py +0 -0
  176. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_operation_names.py +0 -0
  177. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_operation_types.py +0 -0
  178. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_type_names.py +0 -0
  179. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/unique_variable_names.py +0 -0
  180. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/values_of_correct_type.py +0 -0
  181. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/variables_are_input_types.py +0 -0
  182. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/rules/variables_in_allowed_position.py +0 -0
  183. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/specified_rules.py +0 -0
  184. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/validate.py +0 -0
  185. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/src/graphql/validation/validation_context.py +0 -0
  186. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/__init__.py +0 -0
  187. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/__init__.py +0 -0
  188. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_async_iterable.py +0 -0
  189. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_build_ast_schema.py +0 -0
  190. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_build_client_schema.py +0 -0
  191. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_execution_async.py +0 -0
  192. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_execution_sync.py +0 -0
  193. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_graphql_schema.py +0 -0
  194. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_introspection_from_schema.py +0 -0
  195. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_parser.py +0 -0
  196. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_print.py +0 -0
  197. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_repeated_fields.py +0 -0
  198. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_serialization.py +0 -0
  199. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_validate_gql.py +0 -0
  200. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_validate_invalid_gql.py +0 -0
  201. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_validate_sdl.py +0 -0
  202. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/benchmarks/test_visit.py +0 -0
  203. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/conftest.py +0 -0
  204. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/error/__init__.py +0 -0
  205. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/error/test_graphql_error.py +0 -0
  206. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/error/test_located_error.py +0 -0
  207. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/error/test_print_location.py +0 -0
  208. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/__init__.py +0 -0
  209. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_aborted_graphql_execution_error.py +0 -0
  210. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_abstract.py +0 -0
  211. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_cancellation.py +0 -0
  212. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_collect_fields.py +0 -0
  213. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_customize.py +0 -0
  214. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_defer.py +0 -0
  215. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_directives.py +0 -0
  216. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_error_propagation.py +0 -0
  217. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_execution_result.py +0 -0
  218. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_executor.py +0 -0
  219. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_hooks.py +0 -0
  220. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_lists.py +0 -0
  221. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_map_async_iterable.py +0 -0
  222. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_middleware.py +0 -0
  223. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_mutations.py +0 -0
  224. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_nonnull.py +0 -0
  225. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_oneof.py +0 -0
  226. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_parallel.py +0 -0
  227. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_resolve.py +0 -0
  228. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_schema.py +0 -0
  229. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_stream.py +0 -0
  230. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_subscribe.py +0 -0
  231. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_sync.py +0 -0
  232. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_union_interface.py +0 -0
  233. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/execution/test_variables.py +0 -0
  234. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/__init__.py +0 -0
  235. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/github_schema.graphql +0 -0
  236. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/github_schema.json +0 -0
  237. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/kitchen_sink.graphql +0 -0
  238. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/large_query.graphql +0 -0
  239. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/fixtures/schema_kitchen_sink.graphql +0 -0
  240. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/__init__.py +0 -0
  241. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_ast.py +0 -0
  242. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_block_string.py +0 -0
  243. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_block_string_fuzz.py +0 -0
  244. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_character_classes.py +0 -0
  245. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_lexer.py +0 -0
  246. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_location.py +0 -0
  247. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_parser.py +0 -0
  248. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_predicates.py +0 -0
  249. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_print_string.py +0 -0
  250. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_printer.py +0 -0
  251. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_schema_coordinate_lexer.py +0 -0
  252. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_schema_parser.py +0 -0
  253. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_schema_printer.py +0 -0
  254. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_source.py +0 -0
  255. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/language/test_visitor.py +0 -0
  256. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/__init__.py +0 -0
  257. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_async_reduce.py +0 -0
  258. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_boxed_awaitabe_or_value.py +0 -0
  259. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_cached_property.py +0 -0
  260. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_convert_case.py +0 -0
  261. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_description.py +0 -0
  262. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_did_you_mean.py +0 -0
  263. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_format_list.py +0 -0
  264. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_frozen_error.py +0 -0
  265. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_gather_with_cancel.py +0 -0
  266. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_group_by.py +0 -0
  267. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_identity_func.py +0 -0
  268. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_inspect.py +0 -0
  269. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_is_awaitable.py +0 -0
  270. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_is_iterable.py +0 -0
  271. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_merge_kwargs.py +0 -0
  272. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_natural_compare.py +0 -0
  273. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_path.py +0 -0
  274. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_print_path_list.py +0 -0
  275. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_ref_map.py +0 -0
  276. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_ref_set.py +0 -0
  277. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_simple_pub_sub.py +0 -0
  278. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_suggestion_list.py +0 -0
  279. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/pyutils/test_undefined.py +0 -0
  280. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/star_wars_data.py +0 -0
  281. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/star_wars_schema.py +0 -0
  282. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_docs.py +0 -0
  283. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_graphql.py +0 -0
  284. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_star_wars_introspection.py +0 -0
  285. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_star_wars_query.py +0 -0
  286. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_star_wars_validation.py +0 -0
  287. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_user_registry.py +0 -0
  288. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/test_version.py +0 -0
  289. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/__init__.py +0 -0
  290. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_assert_name.py +0 -0
  291. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_custom_scalars.py +0 -0
  292. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_definition.py +0 -0
  293. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_directives.py +0 -0
  294. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_enum.py +0 -0
  295. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_extensions.py +0 -0
  296. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_introspection.py +0 -0
  297. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_predicate.py +0 -0
  298. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_scalars.py +0 -0
  299. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_schema.py +0 -0
  300. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/type/test_validation.py +0 -0
  301. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/__init__.py +0 -0
  302. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_ast_from_value.py +0 -0
  303. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_ast_to_dict.py +0 -0
  304. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_build_ast_schema.py +0 -0
  305. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_build_client_schema.py +0 -0
  306. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_coerce_input_value.py +0 -0
  307. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_concat_ast.py +0 -0
  308. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_extend_schema.py +0 -0
  309. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_find_breaking_changes.py +0 -0
  310. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_find_schema_changes.py +0 -0
  311. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_get_introspection_query.py +0 -0
  312. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_get_operation_ast.py +0 -0
  313. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_introspection_from_schema.py +0 -0
  314. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_lexicographic_sort_schema.py +0 -0
  315. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_map_schema_config.py +0 -0
  316. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_print_schema.py +0 -0
  317. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_replace_variables.py +0 -0
  318. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_resolve_schema_coordinate.py +0 -0
  319. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_separate_operations.py +0 -0
  320. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_sort_value_node.py +0 -0
  321. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_strip_ignored_characters.py +0 -0
  322. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_strip_ignored_characters_fuzz.py +0 -0
  323. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_type_comparators.py +0 -0
  324. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_type_from_ast.py +0 -0
  325. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_type_info.py +0 -0
  326. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_validate_input_value.py +0 -0
  327. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_value_from_ast.py +0 -0
  328. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_value_from_ast_untyped.py +0 -0
  329. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utilities/test_value_to_literal.py +0 -0
  330. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/__init__.py +0 -0
  331. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/assert_equal_awaitables_or_values.py +0 -0
  332. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/assert_matching_values.py +0 -0
  333. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/dedent.py +0 -0
  334. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/gen_fuzz_strings.py +0 -0
  335. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/test_assert_equal_awaitables_or_values.py +0 -0
  336. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/test_assert_matching_values.py +0 -0
  337. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/test_dedent.py +0 -0
  338. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/test_gen_fuzz_strings.py +0 -0
  339. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/viral_schema.py +0 -0
  340. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/utils/viral_sdl.py +0 -0
  341. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/__init__.py +0 -0
  342. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/harness.py +0 -0
  343. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_defer_stream_directive_label.py +0 -0
  344. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_executable_definitions.py +0 -0
  345. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_fields_on_correct_type.py +0 -0
  346. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_fragments_on_composite_types.py +0 -0
  347. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_known_argument_names.py +0 -0
  348. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_known_directives.py +0 -0
  349. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_known_fragment_names.py +0 -0
  350. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_known_operation_types.py +0 -0
  351. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_known_type_names.py +0 -0
  352. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_lone_anonymous_operation.py +0 -0
  353. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_lone_schema_definition.py +0 -0
  354. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_max_introspection_depth_rule.py +0 -0
  355. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_deprecated.py +0 -0
  356. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_fragment_cycles.py +0 -0
  357. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_schema_introspection.py +0 -0
  358. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_undefined_variables.py +0 -0
  359. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_unused_fragments.py +0 -0
  360. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_no_unused_variables.py +0 -0
  361. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_overlapping_fields_can_be_merged.py +0 -0
  362. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_possible_fragment_spreads.py +0 -0
  363. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_possible_type_extensions.py +0 -0
  364. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_provided_required_arguments.py +0 -0
  365. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_scalar_leafs.py +0 -0
  366. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_single_field_subscriptions.py +0 -0
  367. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_stream_directive_on_list_field.py +0 -0
  368. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_argument_definition_names.py +0 -0
  369. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_argument_names.py +0 -0
  370. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_directive_names.py +0 -0
  371. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_directives_per_location.py +0 -0
  372. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_enum_value_names.py +0 -0
  373. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_field_definition_names.py +0 -0
  374. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_fragment_names.py +0 -0
  375. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_input_field_names.py +0 -0
  376. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_operation_names.py +0 -0
  377. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_operation_types.py +0 -0
  378. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_type_names.py +0 -0
  379. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_unique_variable_names.py +0 -0
  380. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_validation.py +0 -0
  381. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_values_of_correct_type.py +0 -0
  382. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_variables_are_input_types.py +0 -0
  383. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tests/validation/test_variables_in_allowed_position.py +0 -0
  384. {graphql_core-3.3.0b2 → graphql_core-3.3.0rc0}/tox.ini +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 3.3.0b2
2
+ current_version = 3.3.0rc0
3
3
  commit = False
4
4
  tag = False
5
5
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graphql-core
3
- Version: 3.3.0b2
3
+ Version: 3.3.0rc0
4
4
  Summary: GraphQL-core is a Python port of GraphQL.js, the JavaScript reference implementation for GraphQL.
5
5
  Keywords: graphql
6
6
  Author: Christoph Zwerschke
@@ -42,8 +42,8 @@ with GraphQL.js.
42
42
  The current stable version 3.2.11 of GraphQL-core is up-to-date with GraphQL.js
43
43
  version 16.14.1 and supports Python versions 3.7 to 3.14.
44
44
 
45
- You can also try out the latest beta version 3.3.0b2 of GraphQL-core,
46
- which is up-to-date with GraphQL.js version 17.0.0b2.
45
+ You can also try out the latest release candidate 3.3.0rc0 of GraphQL-core,
46
+ which is up-to-date with GraphQL.js version 17.0.0rc0.
47
47
  This new minor version of GraphQL-core also supports Python versions 3.10 to 3.14.
48
48
 
49
49
  Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
@@ -18,8 +18,8 @@ with GraphQL.js.
18
18
  The current stable version 3.2.11 of GraphQL-core is up-to-date with GraphQL.js
19
19
  version 16.14.1 and supports Python versions 3.7 to 3.14.
20
20
 
21
- You can also try out the latest beta version 3.3.0b2 of GraphQL-core,
22
- which is up-to-date with GraphQL.js version 17.0.0b2.
21
+ You can also try out the latest release candidate 3.3.0rc0 of GraphQL-core,
22
+ which is up-to-date with GraphQL.js version 17.0.0rc0.
23
23
  This new minor version of GraphQL-core also supports Python versions 3.10 to 3.14.
24
24
 
25
25
  Note that for various reasons, GraphQL-core does not use SemVer like GraphQL.js.
@@ -52,7 +52,7 @@ author = "Christoph Zwerschke"
52
52
  # The short X.Y version.
53
53
  # version = '3.3'
54
54
  # The full version, including alpha/beta/rc tags.
55
- version = release = "3.3.0b2"
55
+ version = release = "3.3.0rc0"
56
56
 
57
57
  # The language for content autogenerated by Sphinx. Refer to documentation
58
58
  # for a list of supported languages.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "graphql-core"
3
- version = "3.3.0b2"
3
+ version = "3.3.0rc0"
4
4
  description = "GraphQL-core is a Python port of GraphQL.js, the JavaScript reference implementation for GraphQL."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -0,0 +1,123 @@
1
+ """Defer stream directive on root field rule"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING, Any, cast
6
+
7
+ from ...error import GraphQLError
8
+ from ...language import (
9
+ FieldNode,
10
+ FragmentDefinitionNode,
11
+ FragmentSpreadNode,
12
+ InlineFragmentNode,
13
+ OperationType,
14
+ )
15
+ from ...type import GraphQLDeferDirective, GraphQLStreamDirective
16
+ from . import ValidationRule
17
+
18
+ if TYPE_CHECKING:
19
+ from ...language import (
20
+ DirectiveNode,
21
+ OperationDefinitionNode,
22
+ SelectionSetNode,
23
+ )
24
+ from ...type import GraphQLObjectType
25
+
26
+ __all__ = ["DeferStreamDirectiveOnRootField"]
27
+
28
+
29
+ def get_directive(
30
+ node: FieldNode | FragmentSpreadNode | InlineFragmentNode, name: str
31
+ ) -> DirectiveNode | None:
32
+ for directive in node.directives or ():
33
+ if directive.name.value == name:
34
+ return directive
35
+ return None
36
+
37
+
38
+ class DeferStreamDirectiveOnRootField(ValidationRule):
39
+ """Defer and stream directives are used on valid root field
40
+
41
+ A GraphQL document is only valid if defer directives are not used on root
42
+ mutation or subscription types.
43
+ """
44
+
45
+ def enter_operation_definition(
46
+ self, node: OperationDefinitionNode, *_args: Any
47
+ ) -> None:
48
+ operation = node.operation
49
+ if operation not in (OperationType.SUBSCRIPTION, OperationType.MUTATION):
50
+ return
51
+ schema = self.context.schema
52
+ root_type = schema.get_root_type(operation)
53
+ if root_type:
54
+ document = self.context.document
55
+ fragments = {
56
+ definition.name.value: definition
57
+ for definition in document.definitions
58
+ if isinstance(definition, FragmentDefinitionNode)
59
+ }
60
+ self.forbid_defer_stream(
61
+ operation, root_type, fragments, node.selection_set, set()
62
+ )
63
+
64
+ def forbid_defer_stream(
65
+ self,
66
+ operation_type: OperationType,
67
+ root_type: GraphQLObjectType,
68
+ fragments: dict[str, FragmentDefinitionNode],
69
+ selection_set: SelectionSetNode,
70
+ visited_fragments: set[str],
71
+ ) -> None:
72
+ for selection in selection_set.selections:
73
+ if isinstance(selection, FieldNode):
74
+ stream = get_directive(selection, GraphQLStreamDirective.name)
75
+ if stream:
76
+ self.report_error(
77
+ GraphQLError(
78
+ "Stream directive cannot be used on root"
79
+ f" {operation_type.value} type '{root_type.name}'.",
80
+ stream,
81
+ )
82
+ )
83
+ elif isinstance(selection, FragmentSpreadNode):
84
+ fragment_name = selection.name.value
85
+ if fragment_name in visited_fragments:
86
+ continue
87
+ fragment = fragments.get(fragment_name)
88
+ if fragment:
89
+ defer = get_directive(selection, GraphQLDeferDirective.name)
90
+ if defer:
91
+ self.report_error(
92
+ GraphQLError(
93
+ "Defer directive cannot be used on root"
94
+ f" {operation_type.value} type '{root_type.name}'.",
95
+ defer,
96
+ )
97
+ )
98
+ self.forbid_defer_stream(
99
+ operation_type,
100
+ root_type,
101
+ fragments,
102
+ fragment.selection_set,
103
+ visited_fragments,
104
+ )
105
+ visited_fragments.add(fragment_name)
106
+ else: # the only remaining selection kind is an inline fragment
107
+ inline_fragment = cast("InlineFragmentNode", selection)
108
+ defer = get_directive(inline_fragment, GraphQLDeferDirective.name)
109
+ if defer:
110
+ self.report_error(
111
+ GraphQLError(
112
+ "Defer directive cannot be used on root"
113
+ f" {operation_type.value} type '{root_type.name}'.",
114
+ defer,
115
+ )
116
+ )
117
+ self.forbid_defer_stream(
118
+ operation_type,
119
+ root_type,
120
+ fragments,
121
+ inline_fragment.selection_set,
122
+ visited_fragments,
123
+ )
@@ -0,0 +1,162 @@
1
+ """Defer stream directive on valid operations rule"""
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Any
6
+
7
+ from ...error import GraphQLError
8
+ from ...language import (
9
+ ArgumentNode,
10
+ BooleanValueNode,
11
+ DirectiveNode,
12
+ FragmentDefinitionNode,
13
+ FragmentSpreadNode,
14
+ OperationDefinitionNode,
15
+ OperationType,
16
+ SelectionSetNode,
17
+ VariableNode,
18
+ )
19
+ from ...type import (
20
+ GraphQLDeferDirective,
21
+ GraphQLIncludeDirective,
22
+ GraphQLSkipDirective,
23
+ GraphQLStreamDirective,
24
+ )
25
+ from . import ASTValidationRule
26
+
27
+ __all__ = ["DeferStreamDirectiveOnValidOperationsRule"]
28
+
29
+
30
+ def get_directive(node: Any, name: str) -> DirectiveNode | None:
31
+ for directive in node.directives or ():
32
+ if directive.name.value == name:
33
+ return directive
34
+ return None
35
+
36
+
37
+ def get_if_argument(node: DirectiveNode) -> ArgumentNode | None:
38
+ for argument in node.arguments or ():
39
+ if argument.name.value == "if":
40
+ return argument
41
+ return None
42
+
43
+
44
+ def if_argument_can_be_false(node: DirectiveNode) -> bool:
45
+ # @defer(if: false) / @stream(if: false)
46
+ # @defer(if: $shouldDefer) / @stream(if: $shouldStream)
47
+ if_argument = get_if_argument(node)
48
+ if not if_argument:
49
+ return False
50
+ if isinstance(if_argument.value, BooleanValueNode):
51
+ if if_argument.value.value:
52
+ return False
53
+ elif not isinstance(if_argument.value, VariableNode):
54
+ return False
55
+ return True
56
+
57
+
58
+ def can_be_skipped_via_skip_directive(node: DirectiveNode) -> bool:
59
+ # @skip(if: true)
60
+ # @skip(if: $shouldSkip)
61
+ if_argument = get_if_argument(node)
62
+ if not if_argument:
63
+ # Missing `if` is reported by ProvidedRequiredArgumentsRule. For this rule,
64
+ # treat malformed @skip as potentially skipped to avoid duplicate errors.
65
+ return True
66
+ # If argument is a static boolean, it is always skipped if true,
67
+ # never skipped if false; otherwise it can be skipped via a variable.
68
+ if isinstance(if_argument.value, BooleanValueNode):
69
+ return if_argument.value.value
70
+ return True
71
+
72
+
73
+ def can_be_skipped_via_include_directive(node: DirectiveNode) -> bool:
74
+ # @include(if: false)
75
+ # @include(if: $shouldInclude)
76
+ if_argument = get_if_argument(node)
77
+ if not if_argument:
78
+ # Missing `if` is reported by ProvidedRequiredArgumentsRule. For this rule,
79
+ # treat malformed @include as not skippable.
80
+ return False
81
+ # If argument is a static boolean, it is always skipped if false,
82
+ # never skipped if true; otherwise it can be skipped via a variable.
83
+ if isinstance(if_argument.value, BooleanValueNode):
84
+ return not if_argument.value.value
85
+ return True
86
+
87
+
88
+ class DeferStreamDirectiveOnValidOperationsRule(ASTValidationRule):
89
+ """Defer and stream directives are used on valid operations
90
+
91
+ A GraphQL document is only valid if defer and stream directives are not used
92
+ on root mutation or subscription types.
93
+ """
94
+
95
+ def enter_operation_definition(
96
+ self, operation: OperationDefinitionNode, *_args: Any
97
+ ) -> None:
98
+ if operation.operation != OperationType.SUBSCRIPTION:
99
+ return
100
+ fragments: dict[str, FragmentDefinitionNode] = {}
101
+ for definition in self.context.document.definitions:
102
+ if isinstance(definition, FragmentDefinitionNode):
103
+ fragments[definition.name.value] = definition
104
+ self.forbid_unconditional_defer_stream(
105
+ fragments, operation.selection_set, [], set()
106
+ )
107
+
108
+ def forbid_unconditional_defer_stream(
109
+ self,
110
+ fragments: dict[str, FragmentDefinitionNode],
111
+ selection_set: SelectionSetNode,
112
+ parent_nodes: list[FragmentSpreadNode],
113
+ visited_fragments: set[str],
114
+ ) -> None:
115
+ for selection in selection_set.selections:
116
+ skip = get_directive(selection, GraphQLSkipDirective.name)
117
+ if skip and can_be_skipped_via_skip_directive(skip):
118
+ continue
119
+ include = get_directive(selection, GraphQLIncludeDirective.name)
120
+ if include and can_be_skipped_via_include_directive(include):
121
+ continue
122
+ for directive in selection.directives or ():
123
+ name = directive.name.value
124
+ if name == GraphQLDeferDirective.name:
125
+ if if_argument_can_be_false(directive):
126
+ continue
127
+ msg = (
128
+ "Defer directive not supported on subscription operations."
129
+ " Disable `@defer` by setting the `if` argument to `false`."
130
+ )
131
+ elif name == GraphQLStreamDirective.name:
132
+ if if_argument_can_be_false(directive):
133
+ continue
134
+ msg = (
135
+ "Stream directive not supported on subscription operations."
136
+ " Disable `@stream` by setting the `if` argument to `false`."
137
+ )
138
+ else:
139
+ continue
140
+ self.report_error(GraphQLError(msg, [directive, *parent_nodes]))
141
+ if isinstance(selection, FragmentSpreadNode):
142
+ fragment_name = selection.name.value
143
+ if fragment_name in visited_fragments:
144
+ continue
145
+ visited_fragments.add(fragment_name)
146
+ fragment = fragments.get(fragment_name)
147
+ if fragment:
148
+ self.forbid_unconditional_defer_stream(
149
+ fragments,
150
+ fragment.selection_set,
151
+ [selection, *parent_nodes],
152
+ visited_fragments,
153
+ )
154
+ else:
155
+ child_selection_set = getattr(selection, "selection_set", None)
156
+ if child_selection_set:
157
+ self.forbid_unconditional_defer_stream(
158
+ fragments,
159
+ child_selection_set,
160
+ parent_nodes,
161
+ visited_fragments,
162
+ )
@@ -8,9 +8,9 @@ from typing import NamedTuple
8
8
  __all__ = ["version", "version_info", "version_info_js", "version_js"]
9
9
 
10
10
 
11
- version = "3.3.0b2"
11
+ version = "3.3.0rc0"
12
12
 
13
- version_js = "17.0.0b2"
13
+ version_js = "17.0.0rc0"
14
14
 
15
15
 
16
16
  _re_version = re.compile(r"(\d+)\.(\d+)\.(\d+)(\D*)(\d*)")
@@ -12,19 +12,26 @@ schema = build_schema(
12
12
  sender: String
13
13
  }
14
14
 
15
- type SubscriptionRoot {
15
+ interface Root {
16
+ rootField: Message
17
+ }
18
+
19
+ type SubscriptionRoot implements Root {
16
20
  subscriptionField: Message
17
21
  subscriptionListField: [Message]
22
+ rootField: Message
18
23
  }
19
24
 
20
- type MutationRoot {
25
+ type MutationRoot implements Root {
21
26
  mutationField: Message
22
27
  mutationListField: [Message]
28
+ rootField: Message
23
29
  }
24
30
 
25
- type QueryRoot {
31
+ type QueryRoot implements Root {
26
32
  message: Message
27
33
  messages: [Message]
34
+ rootField: Message
28
35
  }
29
36
 
30
37
  schema {
@@ -75,6 +82,13 @@ def describe_defer_stream_on_root_field():
75
82
  """
76
83
  mutation {
77
84
  ...rootFragment @defer
85
+ ...otherFragment
86
+ }
87
+ fragment otherFragment on MutationRoot {
88
+ ...rootFragment
89
+ mutationListField {
90
+ body
91
+ }
78
92
  }
79
93
  fragment rootFragment on MutationRoot {
80
94
  mutationField {
@@ -91,6 +105,29 @@ def describe_defer_stream_on_root_field():
91
105
  ],
92
106
  )
93
107
 
108
+ def defer_fragment_spread_on_root_mutation_field_interface():
109
+ assert_errors(
110
+ """
111
+ mutation {
112
+ ...rootFragment
113
+ }
114
+ fragment rootFragment on Root {
115
+ ... @defer {
116
+ rootField {
117
+ body
118
+ }
119
+ }
120
+ }
121
+ """,
122
+ [
123
+ {
124
+ "message": "Defer directive cannot be used on root"
125
+ " mutation type 'MutationRoot'.",
126
+ "locations": [(6, 19)],
127
+ },
128
+ ],
129
+ )
130
+
94
131
  def defer_inline_fragment_spread_on_root_mutation_field():
95
132
  assert_errors(
96
133
  """
@@ -124,6 +161,29 @@ def describe_defer_stream_on_root_field():
124
161
  """
125
162
  )
126
163
 
164
+ def defer_fragment_spread_on_root_subscription_field_interface():
165
+ assert_errors(
166
+ """
167
+ subscription {
168
+ ...rootFragment
169
+ }
170
+ fragment rootFragment on Root {
171
+ ... @defer {
172
+ rootField {
173
+ body
174
+ }
175
+ }
176
+ }
177
+ """,
178
+ [
179
+ {
180
+ "message": "Defer directive cannot be used on root"
181
+ " subscription type 'SubscriptionRoot'.",
182
+ "locations": [(6, 19)],
183
+ },
184
+ ],
185
+ )
186
+
127
187
  def defer_fragment_spread_on_root_subscription_field():
128
188
  assert_errors(
129
189
  """
@@ -281,3 +341,57 @@ def describe_defer_stream_on_root_field():
281
341
  },
282
342
  ],
283
343
  )
344
+
345
+ def other_directive_on_root_mutation_field():
346
+ assert_valid(
347
+ """
348
+ mutation {
349
+ mutationField @foo {
350
+ body
351
+ }
352
+ }
353
+ """
354
+ )
355
+
356
+ def defer_fragment_spread_on_undefined_fragment():
357
+ assert_valid(
358
+ """
359
+ mutation {
360
+ ...undefinedFragment @defer
361
+ }
362
+ """
363
+ )
364
+
365
+ def inline_fragment_without_defer_on_root_mutation_field():
366
+ assert_valid(
367
+ """
368
+ mutation {
369
+ ... {
370
+ mutationField {
371
+ body
372
+ }
373
+ }
374
+ }
375
+ """
376
+ )
377
+
378
+ def defer_on_mutation_without_mutation_root_type():
379
+ query_only_schema = build_schema(
380
+ """
381
+ type Query {
382
+ message: String
383
+ }
384
+ """
385
+ )
386
+ assert_validation_errors(
387
+ DeferStreamDirectiveOnRootField,
388
+ """
389
+ mutation {
390
+ ... @defer {
391
+ message
392
+ }
393
+ }
394
+ """,
395
+ [],
396
+ schema=query_only_schema,
397
+ )