NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #814 most downloaded on PyPI
GraphQL client for Python
Last release 7 days ago
27 Sep 2026
Ships fairly regularly
a new release about every 2 months
Most releases are documented
notes for 13 of 19 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
56 releases · first in 2016
Fix DeprecationWarning in test_requests_batch online tests
extra_args parameter to subscribe() for aiohttp transport (#584)One column per quarter.
Coerce a single value to a list when serializing list variables
Fix gql to work with graphql-core 3.3.0rc0
Add extensions support to GraphQLRequest
This version restore graphql-core to <3.4 as issue #588 is now fixed.
Fix DeprecationWarning in test_requests_batch online tests
!!! This version limits graphql-core to <3.3.0a12 to avoid issue #588
extra_args parameter to subscribe() for aiohttp transport (#584)Support HTTP multipart subscriptions in AIOHTTPTransport
Add comprehensive directive support to DSL module
Same as v4.0.0b0 Same as stable version v4.0.0 but with graphql-core alpha versions
The old method of sending variable_values as an argument of execute or subscribe still works but is deprecated See https://gql.readthedocs.io/en/lates…
gql and dsl_gql methods will now return a GraphQLRequest instead of a Document NodeGraphQLRequest is an object containing the document and optional variable_values and operation_nameexecute and subscribe methods now receive a GraphQLRequest as main argument instead ofDocumentNode, variable_values and operation_name argumentsvariable_values as an argument of execute or subscribe still works but is deprecatedasyncio.CancelledError Exception would be swallowed by our code.FileVar instancesUnknown argument includeDeprecated. See #564TransportConnectionFailed ExceptionTransportConnectionClosed Exception replacing ConnectionClosed Exception (#536)websocket attribute removed from transport, now using _connected instead (#536)Batching requests is now fully supported, on sync or async transports, with automatic batching:
See https://gql.readthedocs.io/en/latest/advanced/batching_requests.html
Fix httpx test deprecated warning (#542)
Refactor websockets transports (#536) :
Refactor WebSockets Transport with Dependency Injection Architecture
This major architectural improvement implements dependency injection patterns across the WebSockets transport layer, creating a more modular, testable, and extensible system:
The old method of sending variable_values as an argument of execute or subscribe still works but is deprecated See https://gql.readthedocs.io/en/lates…
gql and dsl_gql methods will now return a GraphQLRequest instead of a Document NodeGraphQLRequest is an object containing the document and optional variable_values and operation_nameexecute and subscribe methods now receive a GraphQLRequest as main argument instead ofDocumentNode, variable_values and operation_name argumentsvariable_values as an argument of execute or subscribe still works but is deprecatedasyncio.CancelledError Exception would be swallowed by our code.FileVar instancesTransportConnectionFailed ExceptionBatching requests is now fully supported, on sync or async transports, with automatic batching:
See https://gql.readthedocs.io/en/latest/advanced/batching_requests.html
Fix httpx test deprecated warning
TransportConnectionClosed Exception replacing ConnectionClosed Exception (#536)websocket attribute removed from transport, now using _connected instead (#536)Fix httpx test deprecated warning (#542)
Refactor websockets transports (#536) :
Refactor WebSockets Transport with Dependency Injection Architecture
This major architectural improvement implements dependency injection patterns across the WebSockets transport layer, creating a more modular, testable, and extensible system:
Adding the input_value_deprecation argument to get_introspection_query_ast
Issue #529 reported that by default the AIOHTTPTransport was not validating ssl certificates
(a self-certificate was accepted by default).
This version adds a warning to warn users, in the PR:
A new major version will be made shortly to change this default behavior to always verify ssl certificates by default.
New transport AIOHTTPWebsocketsTransport
Fix importing DirectiveLocation directly from graphql (#477) Fix running gql with graphql-core 3.3.0a5
DirectiveLocation directly from graphql (#477)
Fix running gql with graphql-core 3.3.0a5_source (#474)TransportQueryError execute retries (#473)Adding json_serialize and json_deserialize to requests transport
json_serialize and json_deserialize to requests transport (#466)json_deserialize parameter to aiohttp and httpx transports (#465)Same as stable version 3.5.0 but with graphql-core back to versions >= 3.3.0a3
Same as stable version 3.5.0 but with graphql-core back to versions >= 3.3.0a3
Bump graphql-core to v3.2.6 #547
Now supporting graphql-core v3.2.4 again (See issue #534)
Now supporting graphql-core v3.2.4 again (See issue #534)
Issue #529 reported that by default the AIOHTTPTransport was not validating ssl certificates (a self-certificate was accepted by default).
Issue #529 reported that by default the AIOHTTPTransport was not validating ssl certificates
(a self-certificate was accepted by default).
This version adds a warning to warn users (See PR #533).
As a workaround, using ssl=True in the transport arguments fix the issue.
graphql-core has been restricted to <3.2.4 to fix tests.
A new stable version will be made shortly.
IMPORTANT: graphql-core has been reverted to the stable versions 3.2.x See #427 A new pre-release version will be made shortly with the graphql-core v
IMPORTANT: graphql-core has been reverted to the stable versions 3.2.x See #427 A new pre-release version will be made shortly with the graphql-core versions 3.3.x
connector_owner is False (#382)anyio dependency addedNone (#365)TransportQueryError should extend TransportError (#392)AsyncTransport and Transport proper abstract base classes (#350)system_packages: true in confignode_tree method in utilities to debug and compare DocumentNode instances (#449)httpx transport now working with trio (#455) new `anyio` dependency added
anyio dependency addednode_tree method in utilities to debug and compare DocumentNode instances (#449)Fix missing empty directives in DSL nodes
Fix parse_results with fragments
system_packages: true in configSupport batching queries using sync transports
Make retry backoff and status codes customizable for the requests transport
Allow to configure the introspection query sent to recover the schema
Fix sync subscribe graceful shutdown
TransportQueryError should extend TransportError
TransportQueryError should extend TransportError (#392)Don't try to close the aiohttp session if connector_owner is False
connector_owner is False (#382)Update Sphinx dev dependency to 5.3.0
Add execute-timeout argument for gql-cli
None (#365)AsyncTransport and Transport proper abstract base classes (#350)Restrict urllib3 to versions 1.x (#413). This should fix the problems which appeared when requests version 2.30 bumped urllib3 to a 2.x version.
requests version 2.30 bumped urllib3 to a 2.x version.Permanent reconnecting async session (#324) This new feature will make it more easy to keep a reference to a session in a class. See the new documenta
DSL Add default method for variables
DSL: support custom names for root operation types
scripts with entry_points (#311)Allow to specify subprotocols in the websockets transport
The graphql-python/gql stable version 3.0 is now finally available!
The graphql-python/gql stable version 3.0 is now finally available!
A lot of changes were made since the stable 2.x version and were available in the many pre-releases released since then. We now support async usage and subscriptions, new transports (aiohttp, websockets, phoenix channels, AWS appsync), file uploads, gql-cli script, completely revamped DSL module to compose GraphQL queries dynamically, custom scalars support... with 100% code coverage, typing hints and complete documentation.
This version needs graphql-core>=3.2.0 (#283)
use_json default True by default in requests transport (#16)type_def argument in Client is now removed in favor of schema (#113) (#262)fetch_schema_from_transport is set to True (#167) Note that previously with 2.x versions, if the fetching of the schema failed, then the error was silently discarded. This is no more the case with 3.x versions and if you use fetch_schema_from_transport=True and there was a problem while getting the schema, then you'll get an Exceptionclient.execute(query, variables) instead of client.execute(query, variable_values=variables). This no longer works in gql 3.0Big thanks to @Cito for the graphql-core development and all the many contributors who contributed to this release!
Add type overloads for get_execution_result
It is now possible to get the full execution result to receive the extensions field
Custom Scalars input serialization in variables
documentation is available there
Implementation of graphql-ws protocol
Add Streaming functionalities to file uploads
keep_alive_timeout argument to the websockets transport to close the connection if no keep alive are received from the backend in the specified time (#201)The schema is now always fetched at the beginning of the first session if fetch_schema_from_transport is set to True
fetch_schema_from_transport is set to True (#167)Optional dependencies for transports (#158):
Now working with multi-lines queries, using Ctrl-D (EOF) to execute queries
Breaking changes:
New features:
Bugs corrected:
Another alpha release of the 3.0 branch.
Another alpha release of the 3.0 branch.
Bugs corrected:
New features:
Other improvements:
type_def argument in Client is now deprecated in favor of schema
This is the second alpha release of the "modern" 3.0 branch.
The main improvements in this version are:
This is the first alpha version in the "modern" branch of gql.
This is the first alpha version in the "modern" branch of gql.
This branch is based on GraphQL-core 3 and supports Python 3.6+.
The main improvements in this version are:
Please give us your feedback so that we can publish beta and final releases soon.
This is the first version in the "legacy" branch of gql.
This is the first version in the "legacy" branch of gql.
This branch is based on GraphQL-core 2 and supports Python 2.7 and 3.5+.
We recommend upgrading to Python 3 and using the modern branch starting with v3.0.0.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →