Skip to content

v3.3.0b0: Bump version

Pre-release
Pre-release

Choose a tag to compare

@Cito Cito released this 11 Jun 21:44
f2db0e3

Beta release GraphQL-core v3.3.0b0, based on GraphQL.js v17.0.0b0.

This patch-release supports Python 3.10 to 3.14.

Breaking changes after the last alpha version 3.3.0a14:

  • Aborted operations now raise the new AbortedGraphQLExecutionError (with the partial result available as aborted_result) instead of the raw abort reason. Aborting during the incremental (defer/stream) phase now also rejects the pending __anext__ with the abort reason instead of yielding a final error payload.
  • create_source_event_stream() no longer accepts request args; it now takes the built Executor (call Executor.build() first), or use subscribe() instead.
  • subscribe() now raises GraphQLError("Expected subscription operation.") for non-subscription operations.
  • execute_query_or_mutation_or_subscription_event() has been renamed to execute_root_selection_set() (and gained a serially argument).
  • An explicit Undefined variable value is now treated as omitted, so the variable's default applies (previously coerced to a provided null for nullable variables).
  • TypeInfo.get_input_type() and ValidationContext.get_input_type() now return None inside list literals in custom scalar positions; use the new get_parent_input_type() for the enclosing scalar. Variables are now allowed in those positions.

Other notable changes:

  • OneOf input coercion is stricter (spec-compliance fixes): unified error messages, and coercion now fails when two fields are provided pre-coercion (e.g. via a missing variable), when unknown fields would mask the field count, or when the single field is only filled in from an invalid default. Unknown fields no longer add a spurious oneOf count error in validation.
  • value_from_ast() now rejects unknown input object fields.
  • Input coercion fixes: Undefined-valued unknown input object fields are ignored, and an explicit null variable now overrides an input object field's default.
  • Better error messages for runtime invalid default values; fragment variables are named as such in execution errors.
  • New async_work_finished execution hook on the Executor.
  • Incremental delivery robustness: label: null on @defer/@stream means "no label"; fixes for promise rejections, cancellation, and cleanup ordering in async execution.

Thanks to @jkimbo for sponsoring this project.