From 7731c2d1b2a31553317fdf32489197ee6273d33a Mon Sep 17 00:00:00 2001 From: Harry Masson Date: Sat, 3 Jan 2026 17:39:47 -0600 Subject: [PATCH] Fix missing request argument after gql 4.0 upgrade (closes issue #172) --- monarchmoney/monarchmoney.py | 6 ++++-- tests/test_monarchmoney.py | 10 +++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/monarchmoney/monarchmoney.py b/monarchmoney/monarchmoney.py index 22f35ec..2fc9ebd 100644 --- a/monarchmoney/monarchmoney.py +++ b/monarchmoney/monarchmoney.py @@ -12,6 +12,7 @@ from aiohttp import ClientSession, FormData from aiohttp.client import DEFAULT_TIMEOUT from gql import Client, gql +from gql.graphql_request import GraphQLRequest from gql.transport.aiohttp import AIOHTTPTransport from graphql import DocumentNode @@ -2795,9 +2796,10 @@ async def gql_call( """ Makes a GraphQL call to Monarch Money's API. """ - return await self._get_graphql_client().execute_async( - request=graphql_query, variable_values=variables, operation_name=operation + request = GraphQLRequest( + graphql_query, variable_values=variables, operation_name=operation ) + return await self._get_graphql_client().execute_async(request) def save_session(self, filename: Optional[str] = None) -> None: """ diff --git a/tests/test_monarchmoney.py b/tests/test_monarchmoney.py index ffe9375..9d9786b 100644 --- a/tests/test_monarchmoney.py +++ b/tests/test_monarchmoney.py @@ -5,6 +5,7 @@ import json from gql import Client +from gql.graphql_request import GraphQLRequest from monarchmoney import MonarchMoney from monarchmoney.monarchmoney import LoginFailedException @@ -110,9 +111,12 @@ async def test_delete_account(self, mock_execute_async): mock_execute_async.assert_called_once() - kwargs = mock_execute_async.call_args.kwargs - self.assertEqual(kwargs["operation_name"], "Common_DeleteAccount") - self.assertEqual(kwargs["variable_values"], {"id": "170123456789012345"}) + args = mock_execute_async.call_args.args + request = args[0] + self.assertEqual(len(args), 1, "execute_async should receive one positional argument (GraphQLRequest)") + self.assertIsInstance(request, GraphQLRequest) + self.assertEqual(request.operation_name, "Common_DeleteAccount") + self.assertEqual(request.variable_values, {"id": "170123456789012345"}) self.assertIsNotNone(result, "Expected result to not be None") self.assertEqual(result["deleteAccount"]["deleted"], True)