Releases: graphql-python/graphql-core
v3.3.0b0: Bump version
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.
v3.3.0a14
Alpha release GraphQL-core v3.3.0a14, based on GraphQL.js v17.0.0a14.
This patch-release supports Python 3.10 to 3.14.
This alpha release comes with the following breaking changes:
ExecutionContextrenamed toExecutor. The execution context class is nowExecutor. The old name is not kept as an alias, i.e.from graphql import ExecutionContextno longer works; usefrom graphql import Executor.- Custom-executor parameter renamed from
execution_context_classtoexecutor_class. Applies tographql,graphql_sync,execute,execute_sync,experimental_execute_incrementally,subscribe, andcreate_source_event_stream. The methodbuild_per_event_execution_contextis likewise renamed tobuild_per_event_executor. - An aborted operation raises the abort reason instead of resolving to a partial error-result.
- A Python
intthat is too large to represent as a float, or that would lose precision when converted (beyond 2^53), now raises aGraphQLErrorwhen coerced toFloat(input or output) instead of silently producing an inexact value.Int,ID,String, andBooleancontinue to accept Pythonintas before (and now handle arbitrarily large ints without error).
Thanks to @jkimbo for sponsoring this project.
v3.3.0a13
Alpha release GraphQL-core v3.3.0a13, based on GraphQL.js v17.0.0a9.
This patch-release supports Python 3.10 to 3.14.
Thanks to @jkimbo for sponsoring this project, and to @arichberg, @ckristhoff, @kathychurch and @leszekhanusz for valuable feedback.
v3.2.11
Patch-release GraphQL-core v3.2.11, based on GraphQL.js v16.14.1.
This patch-release supports Python 3.7 to 3.14.
Notable changes:
- Allow configuration of the
ofTypeintrospection depth - Add support for directives on directive definitions
- Restore variable own-property checks in
value_from_ast - Remove unused variable-definition tracking in
ValuesOfCorrectTypeRule
Thanks to all who are sponsoring me (@Cito) for maintaining this project.
v3.2.10
Patch-release GraphQL-core v3.2.10, based on GraphQL.js v16.13.0.
This patch-release supports Python 3.7 to 3.14.
New features:
- Add support for schema coordinates (parsing and resolving)
- Support descriptions on executable definitions (e.g. variable definitions)
- Add a
max_coercion_errorsoption
Bug fixes:
- Fix incorrect validation errors when variable descriptions are used
- Don't add sibling errors after null propagation has occurred
- Remove erroneous
oneOfvalidation from the "values of correct type" rule - Validate that nullable variables aren't passed to
oneOfinput object fields (per spec) - Catch unhandled exceptions during abstract type resolution
Thanks to all who are sponsoring me (@Cito) for maintaining this project.
v3.2.9
Patch-release GraphQL-core v3.2.9, based on GraphQL.js v16.10.0.
This patch-release supports Python 3.7 to 3.14.
Notable changes:
- Fix
OverlappingFieldsCanBeMergedRuleto catch field-merge conflicts hidden behind nested fragments - Fix handling of empty selection sets
- Correctly type extensions in
GraphQLFormattedError - Add
kindto the introspection query/mutation/subscription root types - Expose
token_countonDocumentNode - Preserve schema and input-field properties (e.g. descriptions) when sorting
Thanks to @kathychurch and @arichberg for reporting the sorting issue.
Also thanks to all who are sponsoring me (@Cito) for maintaining this project.
v3.3.0a12
Alpha release GraphQL-core v3.3.0a12, based on GraphQL.js v17.0.0a7.
This patch-release supports Python 3.10 to 3.14.
Notable improvements since the last alpha release, in addition to the upstream improvements in v17.0.0.a7:
- Add serialization benchmark (#250)
- Use tuples instead of lists for all AST collection fields (#251)
- De-support Python 3.7 to 3.9 (#252)
- Make visitor immutable friendly (#253)
- Fix parser type safety for stricter AST types (#255)
- Convert AST nodes to frozen dataclasses (#256)
- Support custom async iterables (#258)
- Improve type hints using Self (#259)
Thanks to @jkimbo for sponsoring this project, and to @bellini666, @bigfootjon and @corydolphin for contributing to this release.
v3.2.8
Patch-release GraphQL-core v3.2.8, based on GraphQL.js v16.9.0.
This patch-release supports Python 3.7 to 3.14.
One change has been backported from the v3.3 branch:
- Require non-empty directive locations
Also, for backward compatibility, introspection.TypeResolvers is available again, as alias for TypeFields.
Thanks to all who are sponsoring me (@Cito) for maintaining this project.
v3.3.0a11
Alpha release GraphQL-core v3.3.0a11, based on GraphQL.js v17.0.0a5.
Notable improvements since the last alpha release:
- Python 3.14 is now officially supported
- Enum values, input fields and schemas now keep extensions on sorting (#245)
- Various refactorings and changes concerning
@deferand@stream - Early execution on incremental delivery is now disabled by default
- New recommended validation rule for max introspection depth
- GraphQLEnumType values can now be specified via a callable
Thanks to @jkimbo for sponsoring this project, and to @erikwrede for contributing to this release.
v3.2.7
Patch-release GraphQL-core v3.2.7, based on GraphQL.js v16.9.0.
This patch-release supports Python 3.7 to 3.14.
The following changes have been backported from the v3.3 branch:
- Keep extensions when sorting schemas
- Introduce "recommended" validation rules
- Implement OneOf Input Objects via @OneOf directive
- Values can now be passed to GraphQLEnumType as a thunk
- Solved issues with pickled schemas
Thanks to all who are sponsoring me (@Cito) for maintaining this project.