Skip to content

Commit b3789ef

Browse files
authored
Using GraphQLRequest instead of DocumentNode for gql, execute, subscribe methods (#556)
1 parent b221c0e commit b3789ef

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+685
-725
lines changed

docs/advanced/batching_requests.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ To execute a batch of requests manually:
2424

2525
.. code-block:: python
2626
27-
request1 = GraphQLRequest("""
27+
request1 = gql("""
2828
query getContinents {
2929
continents {
3030
code

docs/code_examples/appsync/mutation_api_key.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ async def main():
4646
}"""
4747
)
4848

49-
variable_values = {"message": "Hello world!"}
49+
query.variable_values = {"message": "Hello world!"}
5050

51-
result = await session.execute(query, variable_values=variable_values)
51+
result = await session.execute(query)
5252
print(result)
5353

5454

docs/code_examples/appsync/mutation_iam.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ async def main():
4545
}"""
4646
)
4747

48-
variable_values = {"message": "Hello world!"}
48+
query.variable_values = {"message": "Hello world!"}
4949

50-
result = await session.execute(query, variable_values=variable_values)
50+
result = await session.execute(query)
5151
print(result)
5252

5353

docs/code_examples/console_async.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,11 @@ async def close(self):
3535
await self._client.close_async()
3636

3737
async def get_continent_name(self, code):
38-
params = {"code": code}
38+
self.get_continent_name_query.variable_values = {"code": code}
3939

4040
assert self._session is not None
4141

42-
answer = await self._session.execute(
43-
self.get_continent_name_query, variable_values=params
44-
)
42+
answer = await self._session.execute(self.get_continent_name_query)
4543

4644
return answer.get("continent").get("name") # type: ignore
4745

docs/code_examples/fastapi_async.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,8 @@ async def get_continent(continent_code):
9393

9494
try:
9595
assert isinstance(client.session, ReconnectingAsyncClientSession)
96-
result = await client.session.execute(
97-
query, variable_values={"code": continent_code}
98-
)
96+
query.variable_values = {"code": continent_code}
97+
result = await client.session.execute(query)
9998
except Exception as e:
10099
log.debug(f"get_continent Error: {e}")
101100
raise HTTPException(status_code=503, detail="GraphQL backend unavailable")

docs/code_examples/reconnecting_mutation_http.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ async def main():
3333
# Execute single query
3434
query = gql("mutation ($message: String!) {sendMessage(message: $message)}")
3535

36-
params = {"message": f"test {num}"}
36+
query.variable_values = {"message": f"test {num}"}
3737

3838
try:
39-
result = await session.execute(query, variable_values=params)
39+
result = await session.execute(query)
4040
print(result)
4141
except Exception as e:
4242
print(f"Received exception {e}")

docs/code_examples/reconnecting_mutation_ws.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,10 @@ async def main():
3333
# Execute single query
3434
query = gql("mutation ($message: String!) {sendMessage(message: $message)}")
3535

36-
params = {"message": f"test {num}"}
36+
query.variable_values = {"message": f"test {num}"}
3737

3838
try:
39-
result = await session.execute(query, variable_values=params)
39+
result = await session.execute(query)
4040
print(result)
4141
except Exception as e:
4242
print(f"Received exception {e}")

docs/usage/custom_scalars_and_enums.rst

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,11 @@ In a variable
203203
204204
query = gql("query shift5days($time: Datetime) {shiftDays(time: $time, days: 5)}")
205205
206-
variable_values = {
206+
query.variable_values = {
207207
"time": "2021-11-12T11:58:13.461161",
208208
}
209209
210-
result = client.execute(query, variable_values=variable_values)
210+
result = client.execute(query)
211211
212212
- enum:
213213

@@ -220,11 +220,11 @@ In a variable
220220
}"""
221221
)
222222
223-
variable_values = {
223+
query.variable_values = {
224224
"color": 'RED',
225225
}
226226
227-
result = client.execute(query, variable_values=variable_values)
227+
result = client.execute(query)
228228
229229
Automatically
230230
^^^^^^^^^^^^^
@@ -256,12 +256,10 @@ Examples:
256256
query = gql("query shift5days($time: Datetime) {shiftDays(time: $time, days: 5)}")
257257
258258
# the argument for time is a datetime instance
259-
variable_values = {"time": datetime.now()}
259+
query.variable_values = {"time": datetime.now()}
260260
261261
# we execute the query with serialize_variables set to True
262-
result = await session.execute(
263-
query, variable_values=variable_values, serialize_variables=True
264-
)
262+
result = await session.execute(query, serialize_variables=True)
265263
266264
- enums:
267265

@@ -285,14 +283,12 @@ Examples:
285283
)
286284
287285
# the argument for time is an instance of our Enum type
288-
variable_values = {
286+
query.variable_values = {
289287
"color": Color.RED,
290288
}
291289
292290
# we execute the query with serialize_variables set to True
293-
result = client.execute(
294-
query, variable_values=variable_values, serialize_variables=True
295-
)
291+
result = client.execute(query, serialize_variables=True)
296292
297293
Parsing output
298294
--------------
@@ -319,11 +315,10 @@ Same example as above, with result parsing enabled:
319315
320316
query = gql("query shift5days($time: Datetime) {shiftDays(time: $time, days: 5)}")
321317
322-
variable_values = {"time": datetime.now()}
318+
query.variable_values = {"time": datetime.now()}
323319
324320
result = await session.execute(
325321
query,
326-
variable_values=variable_values,
327322
serialize_variables=True,
328323
parse_result=True,
329324
)

docs/usage/file_upload.rst

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ In order to upload a single file, you need to:
1515

1616
* set the file as a variable value in the mutation
1717
* create a :class:`FileVar <gql.FileVar>` object with your file path
18-
* provide the `FileVar` instance to the `variable_values` argument of `execute`
18+
* provide the `FileVar` instance to the `variable_values` attribute of your query
1919
* set the `upload_files` argument to True
2020

2121
.. code-block:: python
@@ -37,11 +37,9 @@ In order to upload a single file, you need to:
3737
}
3838
''')
3939
40-
params = {"file": FileVar("YOUR_FILE_PATH")}
40+
query.variable_values = {"file": FileVar("YOUR_FILE_PATH")}
4141
42-
result = client.execute(
43-
query, variable_values=params, upload_files=True
44-
)
42+
result = client.execute(query, upload_files=True)
4543
4644
Setting the content-type
4745
^^^^^^^^^^^^^^^^^^^^^^^^
@@ -97,11 +95,9 @@ It is also possible to upload multiple files using a list.
9795
f1 = FileVar("YOUR_FILE_PATH_1")
9896
f2 = FileVar("YOUR_FILE_PATH_2")
9997
100-
params = {"files": [f1, f2]}
98+
query.variable_values = {"files": [f1, f2]}
10199
102-
result = client.execute(
103-
query, variable_values=params, upload_files=True
104-
)
100+
result = client.execute(query, upload_files=True)
105101
106102
107103
Streaming
@@ -150,11 +146,9 @@ setting the `streaming` argument of :class:`FileVar <gql.FileVar>` to `True`
150146
streaming=True,
151147
)
152148
153-
params = {"file": f1}
149+
query.variable_values = {"file": f1}
154150
155-
result = client.execute(
156-
query, variable_values=params, upload_files=True
157-
)
151+
result = client.execute(query, upload_files=True)
158152
159153
Another option is to use an async generator to provide parts of the file.
160154

@@ -172,11 +166,9 @@ to read the files in chunks and create this asynchronous generator.
172166
yield chunk
173167
174168
f1 = FileVar(file_sender(file_name='YOUR_FILE_PATH'))
175-
params = {"file": f1}
169+
query.variable_values = {"file": f1}
176170
177-
result = client.execute(
178-
query, variable_values=params, upload_files=True
179-
)
171+
result = client.execute(query, upload_files=True)
180172
181173
Streaming downloaded files
182174
^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -193,7 +185,7 @@ In order to do that, you need to:
193185

194186
* get the response from an aiohttp request and then get the StreamReader instance
195187
from `resp.content`
196-
* provide the StreamReader instance to the `variable_values` argument of `execute`
188+
* provide the StreamReader instance to the `variable_values` attribute of your query
197189

198190
Example:
199191

@@ -204,7 +196,7 @@ Example:
204196
async with http_client.get('YOUR_DOWNLOAD_URL') as resp:
205197
206198
# We now have a StreamReader instance in resp.content
207-
# and we provide it to the variable_values argument of execute
199+
# and we provide it to the variable_values attribute of the query
208200
209201
transport = AIOHTTPTransport(url='YOUR_GRAPHQL_URL')
210202
@@ -218,8 +210,6 @@ Example:
218210
}
219211
''')
220212
221-
params = {"file": FileVar(resp.content)}
213+
query.variable_values = {"file": FileVar(resp.content)}
222214
223-
result = client.execute(
224-
query, variable_values=params, upload_files=True
225-
)
215+
result = client.execute(query, upload_files=True)

docs/usage/variables.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Using variables
22
===============
33

44
It is possible to provide variable values with your query by providing a Dict to
5-
the variable_values argument of the `execute` or the `subscribe` methods.
5+
the variable_values attribute of your query.
66

77
The variable values will be sent alongside the query in the transport message
88
(there is no local substitution).
@@ -19,14 +19,14 @@ The variable values will be sent alongside the query in the transport message
1919
"""
2020
)
2121
22-
params = {"code": "EU"}
22+
query.variable_values = {"code": "EU"}
2323
2424
# Get name of continent with code "EU"
25-
result = client.execute(query, variable_values=params)
25+
result = client.execute(query)
2626
print(result)
2727
28-
params = {"code": "AF"}
28+
query.variable_values = {"code": "AF"}
2929
3030
# Get name of continent with code "AF"
31-
result = client.execute(query, variable_values=params)
31+
result = client.execute(query)
3232
print(result)

0 commit comments

Comments
 (0)