diff --git a/ariadne_codegen/client_generators/client.py b/ariadne_codegen/client_generators/client.py index 5355bd71..7061ccb2 100644 --- a/ariadne_codegen/client_generators/client.py +++ b/ariadne_codegen/client_generators/client.py @@ -1,5 +1,5 @@ import ast -from typing import Optional, Union +from typing import Optional, Union, cast from graphql import OperationDefinitionNode, OperationType @@ -330,7 +330,7 @@ def create_combine_variables_method(self): method_def = generate_method_definition( name="_combine_variables", arguments=args, - body=method_body, + body=cast(list[ast.stmt], method_body), decorator_list=[], return_type=returns, ) @@ -416,7 +416,7 @@ def create_build_variable_definitions_method(self): ), ] ), - body=method_body, + body=cast(list[ast.stmt], method_body), return_type=generate_subscript( generate_name("list"), generate_name("VariableDefinitionNode") ), @@ -509,7 +509,7 @@ def create_build_operation_ast_method(self): ), ] ), - body=method_body, + body=cast(list[ast.stmt], method_body), return_type=generate_name("DocumentNode"), ) @@ -607,7 +607,7 @@ def create_execute_custom_operation_method(self, async_client: bool): generate_arg("operation_name", annotation=generate_name("str")), ] ), - body=method_body, + body=cast(list[ast.stmt], method_body), return_type=generate_subscript( generate_name(DICT), generate_tuple([generate_name("str"), generate_name("Any")]), diff --git a/ariadne_codegen/client_generators/custom_arguments.py b/ariadne_codegen/client_generators/custom_arguments.py index 68a5a93f..918cb148 100644 --- a/ariadne_codegen/client_generators/custom_arguments.py +++ b/ariadne_codegen/client_generators/custom_arguments.py @@ -323,4 +323,4 @@ def generate_clear_arguments_section( arguments_keyword = [ generate_keyword(arg="arguments", value=generate_name("cleared_arguments")) ] - return arguments_body, arguments_keyword + return (cast(list[ast.stmt], arguments_body), arguments_keyword) diff --git a/ariadne_codegen/client_generators/dependencies/async_base_client.py b/ariadne_codegen/client_generators/dependencies/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/ariadne_codegen/client_generators/dependencies/async_base_client.py +++ b/ariadne_codegen/client_generators/dependencies/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/ariadne_codegen/client_generators/dependencies/async_base_client_open_telemetry.py b/ariadne_codegen/client_generators/dependencies/async_base_client_open_telemetry.py index 737d6291..0c050a1e 100644 --- a/ariadne_codegen/client_generators/dependencies/async_base_client_open_telemetry.py +++ b/ariadne_codegen/client_generators/dependencies/async_base_client_open_telemetry.py @@ -407,15 +407,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/ariadne_codegen/codegen.py b/ariadne_codegen/codegen.py index 3f986918..ed61accd 100644 --- a/ariadne_codegen/codegen.py +++ b/ariadne_codegen/codegen.py @@ -393,7 +393,7 @@ def generate_async_for( return ast.AsyncFor( target=target, iter=iter_, - body=body or [ast.Pass()], + body=cast(list[ast.stmt], body or [ast.Pass()]), orelse=orelse or [], lineno=lineno, ) diff --git a/pyproject.toml b/pyproject.toml index b4f31b6f..aea623b3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,7 +48,7 @@ test = [ "websockets>=14.2", "opentelemetry-api", ] -types = ["ty"] +types = ["ty>=0.0.20,<0.1.0"] subscriptions = ["websockets>=15"] opentelemetry = ["opentelemetry-api"] diff --git a/tests/main/clients/client_forward_refs/expected_client/async_base_client.py b/tests/main/clients/client_forward_refs/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/client_forward_refs/expected_client/async_base_client.py +++ b/tests/main/clients/client_forward_refs/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/client_forward_refs_shorter_results/expected_client/async_base_client.py b/tests/main/clients/client_forward_refs_shorter_results/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/client_forward_refs_shorter_results/expected_client/async_base_client.py +++ b/tests/main/clients/client_forward_refs_shorter_results/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/custom_config_file/expected_client/async_base_client.py b/tests/main/clients/custom_config_file/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/custom_config_file/expected_client/async_base_client.py +++ b/tests/main/clients/custom_config_file/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/custom_files_names/expected_client/async_base_client.py b/tests/main/clients/custom_files_names/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/custom_files_names/expected_client/async_base_client.py +++ b/tests/main/clients/custom_files_names/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/custom_query_builder/expected_client/async_base_client.py b/tests/main/clients/custom_query_builder/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/custom_query_builder/expected_client/async_base_client.py +++ b/tests/main/clients/custom_query_builder/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/custom_scalars/expected_client/async_base_client.py b/tests/main/clients/custom_scalars/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/custom_scalars/expected_client/async_base_client.py +++ b/tests/main/clients/custom_scalars/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/example/expected_client/async_base_client.py b/tests/main/clients/example/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/example/expected_client/async_base_client.py +++ b/tests/main/clients/example/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/extended_models/expected_client/async_base_client.py b/tests/main/clients/extended_models/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/extended_models/expected_client/async_base_client.py +++ b/tests/main/clients/extended_models/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/fragments_on_abstract_types/expected_client/async_base_client.py b/tests/main/clients/fragments_on_abstract_types/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/fragments_on_abstract_types/expected_client/async_base_client.py +++ b/tests/main/clients/fragments_on_abstract_types/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/inline_fragments/expected_client/async_base_client.py b/tests/main/clients/inline_fragments/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/inline_fragments/expected_client/async_base_client.py +++ b/tests/main/clients/inline_fragments/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/interface_as_fragment/expected_client/async_base_client.py b/tests/main/clients/interface_as_fragment/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/interface_as_fragment/expected_client/async_base_client.py +++ b/tests/main/clients/interface_as_fragment/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/multiple_fragments/expected_client/async_base_client.py b/tests/main/clients/multiple_fragments/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/multiple_fragments/expected_client/async_base_client.py +++ b/tests/main/clients/multiple_fragments/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/only_used_inputs_and_enums/expected_client/async_base_client.py b/tests/main/clients/only_used_inputs_and_enums/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/only_used_inputs_and_enums/expected_client/async_base_client.py +++ b/tests/main/clients/only_used_inputs_and_enums/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/operations/expected_client/async_base_client.py b/tests/main/clients/operations/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/operations/expected_client/async_base_client.py +++ b/tests/main/clients/operations/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/remote_schema/expected_client/async_base_client.py b/tests/main/clients/remote_schema/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/remote_schema/expected_client/async_base_client.py +++ b/tests/main/clients/remote_schema/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/clients/shorter_results/expected_client/async_base_client.py b/tests/main/clients/shorter_results/expected_client/async_base_client.py index 9eb804a8..c642b77e 100644 --- a/tests/main/clients/shorter_results/expected_client/async_base_client.py +++ b/tests/main/clients/shorter_results/expected_client/async_base_client.py @@ -335,15 +335,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/main/custom_operation_builder/graphql_client/async_base_client.py b/tests/main/custom_operation_builder/graphql_client/async_base_client.py index 476781a1..bc41edaf 100644 --- a/tests/main/custom_operation_builder/graphql_client/async_base_client.py +++ b/tests/main/custom_operation_builder/graphql_client/async_base_client.py @@ -321,15 +321,19 @@ async def _send_subscribe( operation_name: Optional[str] = None, variables: Optional[dict[str, Any]] = None, ) -> None: - payload: dict[str, Any] = { - "id": operation_id, - "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, - "payload": {"query": query, "operationName": operation_name}, + payload_inner: dict[str, Any] = { + "query": query, + "operationName": operation_name, } if variables: - payload["payload"]["variables"] = self._convert_dict_to_json_serializable( + payload_inner["variables"] = self._convert_dict_to_json_serializable( variables ) + payload: dict[str, Any] = { + "id": operation_id, + "type": GraphQLTransportWSMessageType.SUBSCRIBE.value, + "payload": payload_inner, + } await websocket.send(json.dumps(payload)) async def _handle_ws_message( diff --git a/tests/test_schema.py b/tests/test_schema.py index d165e637..8046befa 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1,3 +1,5 @@ +from pathlib import Path + import httpx import pytest from graphql import GraphQLSchema, OperationDefinitionNode, build_schema @@ -183,9 +185,11 @@ def test_read_graphql_file_with_invalid_file_raises_invalid_graphql_syntax_excep ): with pytest.raises(InvalidGraphqlSyntax) as exc: read_graphql_file(invalid_syntax_schema_file) - # Use the actual exception value's message to avoid backslash escaping - # that can appear in the ExceptionInfo string on Windows. - assert str(invalid_syntax_schema_file) in str(exc.value) + # Normalize path separators so the assertion passes on Windows (path in + # message may use backslashes; we only care that the faulty file is named). + path_in_message = Path(invalid_syntax_schema_file).resolve().as_posix() + message_normalized = str(exc.value).replace("\\", "/") + assert path_in_message in message_normalized def test_walk_graphql_files_returns_graphql_files_from_directory(schemas_directory):