v3.3.0b0: Bump version
Pre-release
Pre-release
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 asaborted_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 builtExecutor(callExecutor.build()first), or usesubscribe()instead.subscribe()now raisesGraphQLError("Expected subscription operation.")for non-subscription operations.execute_query_or_mutation_or_subscription_event()has been renamed toexecute_root_selection_set()(and gained aseriallyargument).- An explicit
Undefinedvariable 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()andValidationContext.get_input_type()now returnNoneinside list literals in custom scalar positions; use the newget_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_finishedexecution hook on theExecutor. - Incremental delivery robustness:
label: nullon@defer/@streammeans "no label"; fixes for promise rejections, cancellation, and cleanup ordering in async execution.
Thanks to @jkimbo for sponsoring this project.