Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.5.0: pytest fails because missing tests/test_pylama_linter.py and PytestDeprecationWarning warnings #499

Open
kloczek opened this issue Oct 28, 2024 · 12 comments · Fixed by #502
Labels
type: chore Changes to the build process or auxiliary tools and libraries such as documentation generation

Comments

@kloczek
Copy link

kloczek commented Oct 28, 2024

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix> using installer module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")
List of installed modules in build env:
Package                       Version
----------------------------- -----------
aiohappyeyeballs              2.4.3
aiohttp                       3.10.10
aiosignal                     1.3.1
alabaster                     0.7.16
anyio                         4.4.0
async-timeout                 4.0.3
attrs                         24.2.0
babel                         2.16.0
backoff                       2.2.1
build                         1.2.2.post1
certifi                       2024.8.30
charset-normalizer            3.4.0
defusedxml                    0.7.1
distro                        1.9.0
docutils                      0.21.2
exceptiongroup                1.1.3
frozenlist                    1.4.1
graphql-core                  3.2.5
h11                           0.14.0
httpcore                      1.0.6
httpx                         0.27.2
imagesize                     1.4.1
importlib_metadata            8.5.0
iniconfig                     2.0.0
installer                     0.7.0
Jinja2                        3.1.4
MarkupSafe                    3.0.2
multidict                     6.1.0
packaging                     24.0
parse                         1.20.2
pluggy                        1.5.0
Pygments                      2.18.0
pyproject_hooks               1.2.0
pytest                        8.2.2
pytest-asyncio                0.23.8
python-dateutil               2.9.0.post0
requests                      2.32.3
requests-toolbelt             1.0.0
setuptools                    75.1.0
sniffio                       1.3.0
snowballstemmer               2.2.0
Sphinx                        8.1.3
sphinx-argparse               0.4.0
sphinx_rtd_theme              2.0.0
sphinxcontrib-applehelp       2.0.0
sphinxcontrib-devhelp         1.0.6
sphinxcontrib-htmlhelp        2.1.0
sphinxcontrib-jquery          4.1
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          2.0.0
sphinxcontrib-serializinghtml 2.0.0
tokenize_rt                   6.1.0
tomli                         2.0.1
typing_extensions             4.12.2
urllib3                       2.2.2
websockets                    13.1
wheel                         0.44.0
yarl                          1.12.1
zipp                          3.20.2

Please let me know if you need more details or want me to perform some diagnostics.

@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-gql-3.5.0-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-gql-3.5.0-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network'
============================= test session starts ==============================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/gql-3.5.0
configfile: setup.cfg
plugins: anyio-4.4.0, asyncio-0.23.8
asyncio: mode=strict
collected 567 items / 2 errors

==================================== ERRORS ====================================
___________ ERROR collecting gql-checker/tests/test_flake8_linter.py ___________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/gql-3.5.0/gql-checker/tests/test_flake8_linter.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.10/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
E   ModuleNotFoundError: No module named 'tests.test_flake8_linter'
___________ ERROR collecting gql-checker/tests/test_pylama_linter.py ___________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/gql-3.5.0/gql-checker/tests/test_pylama_linter.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib64/python3.10/importlib/__init__.py:126: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
E   ModuleNotFoundError: No module named 'tests.test_pylama_linter'
=============================== warnings summary ===============================
tests/custom_scalars/test_money.py:493
  tests/custom_scalars/test_money.py:493: PytestDeprecationWarning: test_custom_scalar_in_output_with_transport is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:511
  tests/custom_scalars/test_money.py:511: PytestDeprecationWarning: test_custom_scalar_in_input_query_with_transport is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:533
  tests/custom_scalars/test_money.py:533: PytestDeprecationWarning: test_custom_scalar_in_input_variable_values_with_transport is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:557
  tests/custom_scalars/test_money.py:557: PytestDeprecationWarning: test_custom_scalar_in_input_variable_values_split_with_transport is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:583
  tests/custom_scalars/test_money.py:583: PytestDeprecationWarning: test_custom_scalar_serialize_variables is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:605
  tests/custom_scalars/test_money.py:605: PytestDeprecationWarning: test_custom_scalar_serialize_variables_no_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:624
  tests/custom_scalars/test_money.py:624: PytestDeprecationWarning: test_custom_scalar_serialize_variables_schema_from_introspection is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:658
  tests/custom_scalars/test_money.py:658: PytestDeprecationWarning: test_update_schema_scalars is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:735
  tests/custom_scalars/test_money.py:735: PytestDeprecationWarning: test_custom_scalar_serialize_variables_sync_transport is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:760
  tests/custom_scalars/test_money.py:760: PytestDeprecationWarning: test_custom_scalar_serialize_variables_sync_transport_2 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/custom_scalars/test_money.py:820
  tests/custom_scalars/test_money.py:820: PytestDeprecationWarning: test_gql_cli_print_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/starwars/test_introspection.py:12
  tests/starwars/test_introspection.py:12: PytestDeprecationWarning: test_starwars_introspection_args is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1145
  /home/tkloczko/rpmbuild/BUILD/gql-3.5.0/tests/test_aiohttp.py:1145: PytestUnknownMarkWarning: Unknown pytest.mark.script_launch_mode - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.script_launch_mode("subprocess")

tests/test_aiohttp.py:43
  tests/test_aiohttp.py:43: PytestDeprecationWarning: test_aiohttp_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:82
  tests/test_aiohttp.py:82: PytestDeprecationWarning: test_aiohttp_ignore_backend_content_type is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:111
  tests/test_aiohttp.py:111: PytestDeprecationWarning: test_aiohttp_cookies is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:144
  tests/test_aiohttp.py:144: PytestDeprecationWarning: test_aiohttp_error_code_401 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:175
  tests/test_aiohttp.py:175: PytestDeprecationWarning: test_aiohttp_error_code_429 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:222
  tests/test_aiohttp.py:222: PytestDeprecationWarning: test_aiohttp_error_code_500 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:256
  tests/test_aiohttp.py:256: PytestDeprecationWarning: test_aiohttp_error_code[{"errors": ["Error 1", "Error 2"]}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:256
  tests/test_aiohttp.py:256: PytestDeprecationWarning: test_aiohttp_error_code[{"errors": {"error_1": "Something"}}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:256
  tests/test_aiohttp.py:256: PytestDeprecationWarning: test_aiohttp_error_code[{"errors": 5}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:311
  tests/test_aiohttp.py:311: PytestDeprecationWarning: test_aiohttp_invalid_protocol[param0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:311
  tests/test_aiohttp.py:311: PytestDeprecationWarning: test_aiohttp_invalid_protocol[param1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:311
  tests/test_aiohttp.py:311: PytestDeprecationWarning: test_aiohttp_invalid_protocol[param2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:311
  tests/test_aiohttp.py:311: PytestDeprecationWarning: test_aiohttp_invalid_protocol[param3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:340
  tests/test_aiohttp.py:340: PytestDeprecationWarning: test_aiohttp_subscribe_not_supported is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:365
  tests/test_aiohttp.py:365: PytestDeprecationWarning: test_aiohttp_cannot_connect_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:387
  tests/test_aiohttp.py:387: PytestDeprecationWarning: test_aiohttp_cannot_execute_if_not_connected is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:409
  tests/test_aiohttp.py:409: PytestDeprecationWarning: test_aiohttp_extra_args is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:456
  tests/test_aiohttp.py:456: PytestDeprecationWarning: test_aiohttp_query_variable_values is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:488
  tests/test_aiohttp.py:488: PytestDeprecationWarning: test_aiohttp_query_variable_values_fix_issue_292 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:522
  tests/test_aiohttp.py:522: PytestDeprecationWarning: test_aiohttp_execute_running_in_thread is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:550
  tests/test_aiohttp.py:550: PytestDeprecationWarning: test_aiohttp_subscribe_running_in_thread is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:638
  tests/test_aiohttp.py:638: PytestDeprecationWarning: test_aiohttp_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:703
  tests/test_aiohttp.py:703: PytestDeprecationWarning: test_aiohttp_file_upload_with_content_type is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:741
  tests/test_aiohttp.py:741: PytestDeprecationWarning: test_aiohttp_file_upload_without_session is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:811
  tests/test_aiohttp.py:811: PytestDeprecationWarning: test_aiohttp_binary_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:846
  tests/test_aiohttp.py:846: PytestDeprecationWarning: test_aiohttp_stream_reader_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:883
  tests/test_aiohttp.py:883: PytestDeprecationWarning: test_aiohttp_async_generator_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:946
  tests/test_aiohttp.py:946: PytestDeprecationWarning: test_aiohttp_file_upload_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1037
  tests/test_aiohttp.py:1037: PytestDeprecationWarning: test_aiohttp_file_upload_list_of_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1109
  tests/test_aiohttp.py:1109: PytestDeprecationWarning: test_aiohttp_using_cli is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1144
  tests/test_aiohttp.py:1144: PytestDeprecationWarning: test_aiohttp_using_cli_ep is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1182
  tests/test_aiohttp.py:1182: PytestDeprecationWarning: test_aiohttp_using_cli_invalid_param is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1218
  tests/test_aiohttp.py:1218: PytestDeprecationWarning: test_aiohttp_using_cli_invalid_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1258
  tests/test_aiohttp.py:1258: PytestDeprecationWarning: test_aiohttp_query_with_extensions is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1285
  tests/test_aiohttp.py:1285: PytestDeprecationWarning: test_aiohttp_query_https[0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1285
  tests/test_aiohttp.py:1285: PytestDeprecationWarning: test_aiohttp_query_https[10] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1320
  tests/test_aiohttp.py:1320: PytestDeprecationWarning: test_aiohttp_error_fetching_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1363
  tests/test_aiohttp.py:1363: PytestDeprecationWarning: test_aiohttp_reconnecting_session is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1400
  tests/test_aiohttp.py:1400: PytestDeprecationWarning: test_aiohttp_reconnecting_session_retries[False] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1400
  tests/test_aiohttp.py:1400: PytestDeprecationWarning: test_aiohttp_reconnecting_session_retries[<lambda>] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1434
  tests/test_aiohttp.py:1434: PytestDeprecationWarning: test_aiohttp_reconnecting_session_start_connecting_task_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1469
  tests/test_aiohttp.py:1469: PytestDeprecationWarning: test_aiohttp_json_serializer is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp.py:1514
  tests/test_aiohttp.py:1514: PytestDeprecationWarning: test_aiohttp_connector_owner_false is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_aiohttp_online.py:11
  tests/test_aiohttp_online.py:11: PytestDeprecationWarning: test_aiohttp_simple_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_aiohttp_online.py:56
  tests/test_aiohttp_online.py:56: PytestDeprecationWarning: test_aiohttp_invalid_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_aiohttp_online.py:84
  tests/test_aiohttp_online.py:84: PytestDeprecationWarning: test_aiohttp_two_queries_in_parallel_using_two_tasks is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_appsync_http.py:8
  tests/test_appsync_http.py:8: PytestDeprecationWarning: test_appsync_iam_mutation is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:403
  tests/test_appsync_websockets.py:403: PytestDeprecationWarning: test_appsync_subscription_api_key[realtime_appsync_server_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:422
  tests/test_appsync_websockets.py:422: PytestDeprecationWarning: test_appsync_subscription_iam_with_token[realtime_appsync_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:449
  tests/test_appsync_websockets.py:449: PytestDeprecationWarning: test_appsync_subscription_iam_without_token[realtime_appsync_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:475
  tests/test_appsync_websockets.py:475: PytestDeprecationWarning: test_appsync_execute_method_not_allowed[realtime_appsync_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:523
  tests/test_appsync_websockets.py:523: PytestDeprecationWarning: test_appsync_fetch_schema_from_transport_not_allowed is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:551
  tests/test_appsync_websockets.py:551: PytestDeprecationWarning: test_appsync_subscription_api_key_unauthorized[realtime_appsync_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:575
  tests/test_appsync_websockets.py:575: PytestDeprecationWarning: test_appsync_subscription_iam_not_allowed[realtime_appsync_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:613
  tests/test_appsync_websockets.py:613: PytestDeprecationWarning: test_appsync_subscription_server_sending_a_not_json_answer[realtime_appsync_server_not_json_answer] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:641
  tests/test_appsync_websockets.py:641: PytestDeprecationWarning: test_appsync_subscription_server_sending_an_error_without_an_id[realtime_appsync_server_error_without_id] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_appsync_websockets.py:669
  tests/test_appsync_websockets.py:669: PytestDeprecationWarning: test_appsync_subscription_variable_values_and_operation_name[realtime_appsync_server_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_async_client_validation.py:76
  tests/test_async_client_validation.py:76: PytestDeprecationWarning: test_async_client_validation[client_params0-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:76
  tests/test_async_client_validation.py:76: PytestDeprecationWarning: test_async_client_validation[client_params1-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:76
  tests/test_async_client_validation.py:76: PytestDeprecationWarning: test_async_client_validation[client_params2-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:123
  tests/test_async_client_validation.py:123: PytestDeprecationWarning: test_async_client_validation_invalid_query[client_params0-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        not_valid_field,\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:123
  tests/test_async_client_validation.py:123: PytestDeprecationWarning: test_async_client_validation_invalid_query[client_params1-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        not_valid_field,\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:123
  tests/test_async_client_validation.py:123: PytestDeprecationWarning: test_async_client_validation_invalid_query[client_params2-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        not_valid_field,\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:160
  tests/test_async_client_validation.py:160: PytestDeprecationWarning: test_async_client_validation_different_schemas_parameters_forbidden[client_params0-\n    subscription ListenEpisodeReviews($ep: Episode!) {\n      reviewAdded(episode: $ep) {\n        not_valid_field,\n        stars,\n        commentary,\n        episode\n      }\n    }\n-server_starwars] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:191
  tests/test_async_client_validation.py:191: PytestDeprecationWarning: test_async_client_validation_fetch_schema_from_server_valid_query[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:229
  tests/test_async_client_validation.py:229: PytestDeprecationWarning: test_async_client_validation_fetch_schema_from_server_invalid_query[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_async_client_validation.py:255
  tests/test_async_client_validation.py:255: PytestDeprecationWarning: test_async_client_validation_fetch_schema_from_server_with_client_argument[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.websockets

tests/test_graphqlws_exceptions.py:38
  tests/test_graphqlws_exceptions.py:38: PytestDeprecationWarning: test_graphqlws_invalid_query[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-graphqlws_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:79
  tests/test_graphqlws_exceptions.py:79: PytestDeprecationWarning: test_graphqlws_invalid_subscription[\n    subscription getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_invalid_subscription] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:109
  tests/test_graphqlws_exceptions.py:109: PytestDeprecationWarning: test_graphqlws_server_does_not_send_ack[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_no_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:142
  tests/test_graphqlws_exceptions.py:142: PytestDeprecationWarning: test_graphqlws_sending_invalid_query[server_invalid_query] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server4] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server5] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server6] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server7] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server8] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server9] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:178
  tests/test_graphqlws_exceptions.py:178: PytestDeprecationWarning: test_graphqlws_transport_protocol_errors[graphqlws_server10] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:214
  tests/test_graphqlws_exceptions.py:214: PytestDeprecationWarning: test_graphqlws_server_does_not_ack[server_without_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:233
  tests/test_graphqlws_exceptions.py:233: PytestDeprecationWarning: test_graphqlws_server_closing_directly[server_closing_directly] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_exceptions.py:254
  tests/test_graphqlws_exceptions.py:254: PytestDeprecationWarning: test_graphqlws_server_closing_after_ack[server_closing_after_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:228
  tests/test_graphqlws_subscription.py:228: PytestDeprecationWarning: test_graphqlws_subscription[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:251
  tests/test_graphqlws_subscription.py:251: PytestDeprecationWarning: test_graphqlws_subscription_break[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:281
  tests/test_graphqlws_subscription.py:281: PytestDeprecationWarning: test_graphqlws_subscription_task_cancel[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:320
  tests/test_graphqlws_subscription.py:320: PytestDeprecationWarning: test_graphqlws_subscription_close_transport[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:383
  tests/test_graphqlws_subscription.py:383: PytestDeprecationWarning: test_graphqlws_subscription_server_connection_closed[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_close_connection_in_middle] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:410
  tests/test_graphqlws_subscription.py:410: PytestDeprecationWarning: test_graphqlws_subscription_with_operation_name[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:438
  tests/test_graphqlws_subscription.py:438: PytestDeprecationWarning: test_graphqlws_subscription_with_keepalive[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:468
  tests/test_graphqlws_subscription.py:468: PytestDeprecationWarning: test_graphqlws_subscription_with_keepalive_with_timeout_ok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:500
  tests/test_graphqlws_subscription.py:500: PytestDeprecationWarning: test_graphqlws_subscription_with_keepalive_with_timeout_nok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:533
  tests/test_graphqlws_subscription.py:533: PytestDeprecationWarning: test_graphqlws_subscription_with_ping_interval_ok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:569
  tests/test_graphqlws_subscription.py:569: PytestDeprecationWarning: test_graphqlws_subscription_with_ping_interval_nok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_dont_answer_pings] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:602
  tests/test_graphqlws_subscription.py:602: PytestDeprecationWarning: test_graphqlws_subscription_manual_pings_with_payload[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:644
  tests/test_graphqlws_subscription.py:644: PytestDeprecationWarning: test_graphqlws_subscription_manual_pong_answers_with_payload[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:775
  tests/test_graphqlws_subscription.py:775: PytestDeprecationWarning: test_graphqlws_subscription_running_in_thread[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_keepalive] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:808
  tests/test_graphqlws_subscription.py:808: PytestDeprecationWarning: test_graphqlws_subscription_reconnecting_session[False-\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_disconnect] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_graphqlws_subscription.py:808
  tests/test_graphqlws_subscription.py:808: PytestDeprecationWarning: test_graphqlws_subscription_reconnecting_session[True-\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_disconnect] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_http_async_sync.py:6
  tests/test_http_async_sync.py:6: PytestDeprecationWarning: test_async_client_async_transport[True] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_http_async_sync.py:6
  tests/test_http_async_sync.py:6: PytestDeprecationWarning: test_async_client_async_transport[False] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_http_async_sync.py:50
  tests/test_http_async_sync.py:50: PytestDeprecationWarning: test_async_client_sync_transport[True] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.requests

tests/test_http_async_sync.py:50
  tests/test_http_async_sync.py:50: PytestDeprecationWarning: test_async_client_sync_transport[False] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.requests

tests/test_httpx.py:37
  tests/test_httpx.py:37: PytestDeprecationWarning: test_httpx_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:80
  tests/test_httpx.py:80: PytestDeprecationWarning: test_httpx_cookies is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:117
  tests/test_httpx.py:117: PytestDeprecationWarning: test_httpx_error_code_401 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:152
  tests/test_httpx.py:152: PytestDeprecationWarning: test_httpx_error_code_429 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:201
  tests/test_httpx.py:201: PytestDeprecationWarning: test_httpx_error_code_500 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:233
  tests/test_httpx.py:233: PytestDeprecationWarning: test_httpx_error_code is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:270
  tests/test_httpx.py:270: PytestDeprecationWarning: test_httpx_invalid_protocol[{}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:270
  tests/test_httpx.py:270: PytestDeprecationWarning: test_httpx_invalid_protocol[qlsjfqsdlkj] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:270
  tests/test_httpx.py:270: PytestDeprecationWarning: test_httpx_invalid_protocol[{"not_data_or_errors": 35}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:301
  tests/test_httpx.py:301: PytestDeprecationWarning: test_httpx_cannot_connect_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:327
  tests/test_httpx.py:327: PytestDeprecationWarning: test_httpx_cannot_execute_if_not_connected is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:366
  tests/test_httpx.py:366: PytestDeprecationWarning: test_httpx_query_with_extensions is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:421
  tests/test_httpx.py:421: PytestDeprecationWarning: test_httpx_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:481
  tests/test_httpx.py:481: PytestDeprecationWarning: test_httpx_file_upload_with_content_type is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:549
  tests/test_httpx.py:549: PytestDeprecationWarning: test_httpx_file_upload_additional_headers is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:613
  tests/test_httpx.py:613: PytestDeprecationWarning: test_httpx_binary_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:686
  tests/test_httpx.py:686: PytestDeprecationWarning: test_httpx_file_upload_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:784
  tests/test_httpx.py:784: PytestDeprecationWarning: test_httpx_file_upload_list_of_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx.py:875
  tests/test_httpx.py:875: PytestDeprecationWarning: test_httpx_error_fetching_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1019
  /home/tkloczko/rpmbuild/BUILD/gql-3.5.0/tests/test_httpx_async.py:1019: PytestUnknownMarkWarning: Unknown pytest.mark.script_launch_mode - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.script_launch_mode("subprocess")

tests/test_httpx_async.py:43
  tests/test_httpx_async.py:43: PytestDeprecationWarning: test_httpx_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:83
  tests/test_httpx_async.py:83: PytestDeprecationWarning: test_httpx_ignore_backend_content_type is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:113
  tests/test_httpx_async.py:113: PytestDeprecationWarning: test_httpx_cookies is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:147
  tests/test_httpx_async.py:147: PytestDeprecationWarning: test_httpx_error_code_401 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:179
  tests/test_httpx_async.py:179: PytestDeprecationWarning: test_httpx_error_code_429 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:227
  tests/test_httpx_async.py:227: PytestDeprecationWarning: test_httpx_error_code_500 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:262
  tests/test_httpx_async.py:262: PytestDeprecationWarning: test_httpx_error_code[{"errors": ["Error 1", "Error 2"]}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:262
  tests/test_httpx_async.py:262: PytestDeprecationWarning: test_httpx_error_code[{"errors": {"error_1": "Something"}}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:262
  tests/test_httpx_async.py:262: PytestDeprecationWarning: test_httpx_error_code[{"errors": 5}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:318
  tests/test_httpx_async.py:318: PytestDeprecationWarning: test_httpx_invalid_protocol[param0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:318
  tests/test_httpx_async.py:318: PytestDeprecationWarning: test_httpx_invalid_protocol[param1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:318
  tests/test_httpx_async.py:318: PytestDeprecationWarning: test_httpx_invalid_protocol[param2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:318
  tests/test_httpx_async.py:318: PytestDeprecationWarning: test_httpx_invalid_protocol[param3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:348
  tests/test_httpx_async.py:348: PytestDeprecationWarning: test_httpx_subscribe_not_supported is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:374
  tests/test_httpx_async.py:374: PytestDeprecationWarning: test_httpx_cannot_connect_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:397
  tests/test_httpx_async.py:397: PytestDeprecationWarning: test_httpx_cannot_execute_if_not_connected is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:420
  tests/test_httpx_async.py:420: PytestDeprecationWarning: test_httpx_extra_args is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:465
  tests/test_httpx_async.py:465: PytestDeprecationWarning: test_httpx_query_variable_values is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:498
  tests/test_httpx_async.py:498: PytestDeprecationWarning: test_httpx_query_variable_values_fix_issue_292 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:533
  tests/test_httpx_async.py:533: PytestDeprecationWarning: test_httpx_execute_running_in_thread is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:562
  tests/test_httpx_async.py:562: PytestDeprecationWarning: test_httpx_subscribe_running_in_thread is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:651
  tests/test_httpx_async.py:651: PytestDeprecationWarning: test_httpx_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:687
  tests/test_httpx_async.py:687: PytestDeprecationWarning: test_httpx_file_upload_without_session is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:758
  tests/test_httpx_async.py:758: PytestDeprecationWarning: test_httpx_binary_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:816
  tests/test_httpx_async.py:816: PytestDeprecationWarning: test_httpx_file_upload_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:908
  tests/test_httpx_async.py:908: PytestDeprecationWarning: test_httpx_file_upload_list_of_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:981
  tests/test_httpx_async.py:981: PytestDeprecationWarning: test_httpx_using_cli is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1017
  tests/test_httpx_async.py:1017: PytestDeprecationWarning: test_httpx_using_cli_ep is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1056
  tests/test_httpx_async.py:1056: PytestDeprecationWarning: test_httpx_using_cli_invalid_param is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1093
  tests/test_httpx_async.py:1093: PytestDeprecationWarning: test_httpx_using_cli_invalid_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1134
  tests/test_httpx_async.py:1134: PytestDeprecationWarning: test_httpx_query_with_extensions is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1162
  tests/test_httpx_async.py:1162: PytestDeprecationWarning: test_httpx_query_https is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1197
  tests/test_httpx_async.py:1197: PytestDeprecationWarning: test_httpx_error_fetching_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1241
  tests/test_httpx_async.py:1241: PytestDeprecationWarning: test_httpx_reconnecting_session is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1279
  tests/test_httpx_async.py:1279: PytestDeprecationWarning: test_httpx_reconnecting_session_retries[False] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1279
  tests/test_httpx_async.py:1279: PytestDeprecationWarning: test_httpx_reconnecting_session_retries[<lambda>] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1312
  tests/test_httpx_async.py:1312: PytestDeprecationWarning: test_httpx_reconnecting_session_start_connecting_task_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_async.py:1348
  tests/test_httpx_async.py:1348: PytestDeprecationWarning: test_httpx_json_serializer is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_httpx_online.py:11
  tests/test_httpx_online.py:11: PytestDeprecationWarning: test_httpx_simple_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.httpx

tests/test_httpx_online.py:56
  tests/test_httpx_online.py:56: PytestDeprecationWarning: test_httpx_invalid_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.httpx

tests/test_httpx_online.py:84
  tests/test_httpx_online.py:84: PytestDeprecationWarning: test_httpx_two_queries_in_parallel_using_two_tasks is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.httpx

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server4] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-no_connection_ack_phoenix_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:149
  tests/test_phoenix_channel_exceptions.py:149: PytestDeprecationWarning: test_phoenix_channel_query_protocol_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server5] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:182
  tests/test_phoenix_channel_exceptions.py:182: PytestDeprecationWarning: test_phoenix_channel_query_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:182
  tests/test_phoenix_channel_exceptions.py:182: PytestDeprecationWarning: test_phoenix_channel_query_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:182
  tests/test_phoenix_channel_exceptions.py:182: PytestDeprecationWarning: test_phoenix_channel_query_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:182
  tests/test_phoenix_channel_exceptions.py:182: PytestDeprecationWarning: test_phoenix_channel_query_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server4] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server5] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server6] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server7] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server8] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server9] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server10] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:388
  tests/test_phoenix_channel_exceptions.py:388: PytestDeprecationWarning: test_phoenix_channel_subscription_protocol_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server11] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:435
  tests/test_phoenix_channel_exceptions.py:435: PytestDeprecationWarning: test_phoenix_channel_server_error[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:461
  tests/test_phoenix_channel_exceptions.py:461: PytestDeprecationWarning: test_phoenix_channel_unsubscribe_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:461
  tests/test_phoenix_channel_exceptions.py:461: PytestDeprecationWarning: test_phoenix_channel_unsubscribe_error[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_exceptions.py:494
  tests/test_phoenix_channel_exceptions.py:494: PytestDeprecationWarning: test_phoenix_channel_unsubscribe_error_forcing[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-phoenix_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_query.py:49
  tests/test_phoenix_channel_query.py:49: PytestDeprecationWarning: test_phoenix_channel_query[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-query_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_query.py:126
  tests/test_phoenix_channel_query.py:126: PytestDeprecationWarning: test_phoenix_channel_subscription[\n    subscription getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-subscription_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_subscription.py:173
  tests/test_phoenix_channel_subscription.py:173: PytestDeprecationWarning: test_phoenix_channel_subscription[0-\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_subscription.py:173
  tests/test_phoenix_channel_subscription.py:173: PytestDeprecationWarning: test_phoenix_channel_subscription[5-\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_subscription.py:224
  tests/test_phoenix_channel_subscription.py:224: PytestDeprecationWarning: test_phoenix_channel_subscription_no_break[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_phoenix_channel_subscription.py:370
  tests/test_phoenix_channel_subscription.py:370: PytestDeprecationWarning: test_phoenix_channel_heartbeat[\n    subscription {\n      heartbeat {\n        heartbeat_count\n      }\n    }\n-phoenix_heartbeat_server] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_requests.py:37
  tests/test_requests.py:37: PytestDeprecationWarning: test_requests_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:80
  tests/test_requests.py:80: PytestDeprecationWarning: test_requests_cookies is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:117
  tests/test_requests.py:117: PytestDeprecationWarning: test_requests_error_code_401 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:152
  tests/test_requests.py:152: PytestDeprecationWarning: test_requests_error_code_429 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:201
  tests/test_requests.py:201: PytestDeprecationWarning: test_requests_error_code_500 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:233
  tests/test_requests.py:233: PytestDeprecationWarning: test_requests_error_code is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:270
  tests/test_requests.py:270: PytestDeprecationWarning: test_requests_invalid_protocol[{}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:270
  tests/test_requests.py:270: PytestDeprecationWarning: test_requests_invalid_protocol[qlsjfqsdlkj] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:270
  tests/test_requests.py:270: PytestDeprecationWarning: test_requests_invalid_protocol[{"not_data_or_errors": 35}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:301
  tests/test_requests.py:301: PytestDeprecationWarning: test_requests_cannot_connect_twice is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:327
  tests/test_requests.py:327: PytestDeprecationWarning: test_requests_cannot_execute_if_not_connected is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:366
  tests/test_requests.py:366: PytestDeprecationWarning: test_requests_query_with_extensions is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:423
  tests/test_requests.py:423: PytestDeprecationWarning: test_requests_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:483
  tests/test_requests.py:483: PytestDeprecationWarning: test_requests_file_upload_with_content_type is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:551
  tests/test_requests.py:551: PytestDeprecationWarning: test_requests_file_upload_additional_headers is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:615
  tests/test_requests.py:615: PytestDeprecationWarning: test_requests_binary_file_upload is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:688
  tests/test_requests.py:688: PytestDeprecationWarning: test_requests_file_upload_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:788
  tests/test_requests.py:788: PytestDeprecationWarning: test_requests_file_upload_list_of_two_files is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests.py:879
  tests/test_requests.py:879: PytestDeprecationWarning: test_requests_error_fetching_schema is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:49
  tests/test_requests_batch.py:49: PytestDeprecationWarning: test_requests_query is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:92
  tests/test_requests_batch.py:92: PytestDeprecationWarning: test_requests_query_auto_batch_enabled is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:140
  tests/test_requests_batch.py:140: PytestDeprecationWarning: test_requests_query_auto_batch_enabled_two_requests is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:200
  tests/test_requests_batch.py:200: PytestDeprecationWarning: test_requests_cookies is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:239
  tests/test_requests_batch.py:239: PytestDeprecationWarning: test_requests_error_code_401 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:274
  tests/test_requests_batch.py:274: PytestDeprecationWarning: test_requests_error_code_401_auto_batch_enabled is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:314
  tests/test_requests_batch.py:314: PytestDeprecationWarning: test_requests_error_code_429 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:363
  tests/test_requests_batch.py:363: PytestDeprecationWarning: test_requests_error_code_500 is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:395
  tests/test_requests_batch.py:395: PytestDeprecationWarning: test_requests_error_code is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[{}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[qlsjfqsdlkj] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[{"not_data_or_errors": 35}] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[[{}]] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[[qlsjfqsdlkj]] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[[{"not_data_or_errors": 35}]] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[[]] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:437
  tests/test_requests_batch.py:437: PytestDeprecationWarning: test_requests_invalid_protocol[[1]] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:468
  tests/test_requests_batch.py:468: PytestDeprecationWarning: test_requests_cannot_execute_if_not_connected is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_requests_batch.py:509
  tests/test_requests_batch.py:509: PytestDeprecationWarning: test_requests_query_with_extensions is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.aiohttp

tests/test_websocket_exceptions.py:41
  tests/test_websocket_exceptions.py:41: PytestDeprecationWarning: test_websocket_invalid_query[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:80
  tests/test_websocket_exceptions.py:80: PytestDeprecationWarning: test_websocket_invalid_subscription[\n    subscription getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_invalid_subscription] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:112
  tests/test_websocket_exceptions.py:112: PytestDeprecationWarning: test_websocket_server_does_not_send_ack[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_no_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:135
  tests/test_websocket_exceptions.py:135: PytestDeprecationWarning: test_websocket_sending_invalid_data[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_connection_error] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:163
  tests/test_websocket_exceptions.py:163: PytestDeprecationWarning: test_websocket_sending_invalid_payload[\n    query getContinents {\n      continents {\n        code\n        bloh\n      }\n    }\n-server_invalid_payload] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server1] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server2] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server3] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server4] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server5] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server6] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server7] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server8] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:220
  tests/test_websocket_exceptions.py:220: PytestDeprecationWarning: test_websocket_transport_protocol_errors[server9] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:253
  tests/test_websocket_exceptions.py:253: PytestDeprecationWarning: test_websocket_server_does_not_ack[server_without_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:272
  tests/test_websocket_exceptions.py:272: PytestDeprecationWarning: test_websocket_server_closing_directly[server_closing_directly] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:293
  tests/test_websocket_exceptions.py:293: PytestDeprecationWarning: test_websocket_server_closing_after_ack[server_closing_after_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:322
  tests/test_websocket_exceptions.py:322: PytestDeprecationWarning: test_websocket_server_sending_invalid_query_errors[server_sending_invalid_query_errors] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:337
  tests/test_websocket_exceptions.py:337: PytestDeprecationWarning: test_websocket_non_regression_bug_105[server_sending_invalid_query_errors] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_exceptions.py:366
  tests/test_websocket_exceptions.py:366: PytestDeprecationWarning: test_websocket_using_cli_invalid_query[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:52
  tests/test_websocket_query.py:52: PytestDeprecationWarning: test_websocket_starting_client_in_context_manager[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:92
  tests/test_websocket_query.py:92: PytestDeprecationWarning: test_websocket_using_ssl_connection[ws_ssl_server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:132
  tests/test_websocket_query.py:132: PytestDeprecationWarning: test_websocket_simple_query[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:152
  tests/test_websocket_query.py:152: PytestDeprecationWarning: test_websocket_two_queries_in_series[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:188
  tests/test_websocket_query.py:188: PytestDeprecationWarning: test_websocket_two_queries_in_parallel[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server1_two_queries_in_parallel] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:233
  tests/test_websocket_query.py:233: PytestDeprecationWarning: test_websocket_server_closing_after_first_query[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server_closing_while_we_are_doing_something_else] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:265
  tests/test_websocket_query.py:265: PytestDeprecationWarning: test_websocket_ignore_invalid_id[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:301
  tests/test_websocket_query.py:301: PytestDeprecationWarning: test_websocket_multiple_connections_in_series[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:324
  tests/test_websocket_query.py:324: PytestDeprecationWarning: test_websocket_multiple_connections_in_parallel[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:343
  tests/test_websocket_query.py:343: PytestDeprecationWarning: test_websocket_trying_to_connect_to_already_connected_transport[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:388
  tests/test_websocket_query.py:388: PytestDeprecationWarning: test_websocket_connect_success_with_authentication_in_connection_init[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server_with_authentication_in_connection_init_payload] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:422
  tests/test_websocket_query.py:422: PytestDeprecationWarning: test_websocket_connect_failed_with_authentication_in_connection_init[init_payload0-\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server_with_authentication_in_connection_init_payload] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:422
  tests/test_websocket_query.py:422: PytestDeprecationWarning: test_websocket_connect_failed_with_authentication_in_connection_init[init_payload1-\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server_with_authentication_in_connection_init_payload] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:487
  tests/test_websocket_query.py:487: PytestDeprecationWarning: test_websocket_add_extra_parameters_to_connect[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:516
  tests/test_websocket_query.py:516: PytestDeprecationWarning: test_websocket_non_regression_bug_108[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server_sending_keep_alive_before_connection_ack] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:543
  tests/test_websocket_query.py:543: PytestDeprecationWarning: test_websocket_using_cli[server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_query.py:593
  tests/test_websocket_query.py:593: PytestDeprecationWarning: test_websocket_simple_query_with_extensions[\n    query getContinents {\n      continents {\n        code\n        name\n      }\n    }\n-server0] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:126
  tests/test_websocket_subscription.py:126: PytestDeprecationWarning: test_websocket_subscription[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:147
  tests/test_websocket_subscription.py:147: PytestDeprecationWarning: test_websocket_subscription_get_execution_result[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:172
  tests/test_websocket_subscription.py:172: PytestDeprecationWarning: test_websocket_subscription_break[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:202
  tests/test_websocket_subscription.py:202: PytestDeprecationWarning: test_websocket_subscription_task_cancel[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:241
  tests/test_websocket_subscription.py:241: PytestDeprecationWarning: test_websocket_subscription_close_transport[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:304
  tests/test_websocket_subscription.py:304: PytestDeprecationWarning: test_websocket_subscription_server_connection_closed[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown_close_connection_in_middle] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:331
  tests/test_websocket_subscription.py:331: PytestDeprecationWarning: test_websocket_subscription_slow_consumer[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:356
  tests/test_websocket_subscription.py:356: PytestDeprecationWarning: test_websocket_subscription_with_operation_name[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:387
  tests/test_websocket_subscription.py:387: PytestDeprecationWarning: test_websocket_subscription_with_keepalive[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:410
  tests/test_websocket_subscription.py:410: PytestDeprecationWarning: test_websocket_subscription_with_keepalive_with_timeout_ok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:440
  tests/test_websocket_subscription.py:440: PytestDeprecationWarning: test_websocket_subscription_with_keepalive_with_timeout_nok[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

tests/test_websocket_subscription.py:616
  tests/test_websocket_subscription.py:616: PytestDeprecationWarning: test_websocket_subscription_running_in_thread[\n    subscription {{\n      countdown (count: {count}) {{\n        number\n      }}\n    }}\n-server_countdown] is asynchronous and explicitly requests the "event_loop" fixture. Asynchronous fixtures and test functions should use "asyncio.get_running_loop()" instead.
    @pytest.mark.asyncio

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
ERROR gql-checker/tests/test_flake8_linter.py
ERROR gql-checker/tests/test_pylama_linter.py
!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!
======================= 300 warnings, 2 errors in 1.41s ========================

@leszekhanusz
Copy link
Collaborator

Did you try to install the dev dependencies with python -m pip install -e.[dev] ?

@leszekhanusz
Copy link
Collaborator

Hmm, with a second look it seems that the problem is because you are running pytest on the main folder which seems to find tests which are obsolete since a long time ago. If you run pytest tests it should work.

I should delete that old folder.

@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

Did you try to install the dev dependencies with python -m pip install -e.[dev] ?

After add to --ignore list those two files I've been able to add more modules in build env but none of those dependencies but none of the missing modules been able to fix issue with missing file.

@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

Hmm, with a second look it seems that the problem is because you are running pytest on the main folder which seems to find tests which are obsolete since a long time ago. If you run pytest tests it should work.

it shuld be working that way.

I should delete that old folder.

Alternatively it is possible to add tests/ to pytest setting testpaths but if it is older version of the test suite probably better would be remove that.

@leszekhanusz leszekhanusz added the type: chore Changes to the build process or auxiliary tools and libraries such as documentation generation label Oct 28, 2024
@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

After add more modules to build env

Package                       Version
----------------------------- -----------
aiofiles                      24.1.0
aiohappyeyeballs              2.4.3
aiohttp                       3.10.10
aiosignal                     1.3.1
alabaster                     0.7.16
anyio                         4.4.0
async-timeout                 4.0.3
attrs                         24.2.0
babel                         2.16.0
backoff                       2.2.1
botocore                      1.35.49
build                         1.2.2.post1
certifi                       2024.8.30
charset-normalizer            3.4.0
defusedxml                    0.7.1
distro                        1.9.0
docutils                      0.21.2
exceptiongroup                1.1.3
frozenlist                    1.4.1
graphql-core                  3.2.5
h11                           0.14.0
httpcore                      1.0.6
httpx                         0.27.2
imagesize                     1.4.1
importlib_metadata            8.5.0
iniconfig                     2.0.0
installer                     0.7.0
Jinja2                        3.1.4
jmespath                      1.0.1
MarkupSafe                    3.0.2
multidict                     6.1.0
packaging                     24.0
parse                         1.20.2
pluggy                        1.5.0
Pygments                      2.18.0
pyproject_hooks               1.2.0
pytest                        8.2.2
pytest-asyncio                0.23.8
pytest-console-scripts        1.4.1
python-dateutil               2.9.0.post0
PyYAML                        6.0.2
requests                      2.32.3
requests-toolbelt             1.0.0
setuptools                    75.1.0
sniffio                       1.3.0
snowballstemmer               2.2.0
Sphinx                        8.1.3
sphinx-argparse               0.4.0
sphinx_rtd_theme              2.0.0
sphinxcontrib-applehelp       2.0.0
sphinxcontrib-devhelp         1.0.6
sphinxcontrib-htmlhelp        2.1.0
sphinxcontrib-jquery          4.1
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          2.0.0
sphinxcontrib-serializinghtml 2.0.0
tokenize_rt                   6.1.0
tomli                         2.0.1
typing_extensions             4.12.2
urllib3                       2.2.2
vcrpy                         6.0.2
websockets                    13.1
wheel                         0.44.0
wrapt                         1.16.0
yarl                          1.12.1
zipp                          3.20.2

I still have some filing units

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-gql-3.5.0-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-gql-3.5.0-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network' --ignore gql-checker/tests/test_flake8_linter.py --ignore gql-checker/tests/test_pylama_linter.py
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/gql-3.5.0
configfile: setup.cfg
plugins: anyio-4.4.0, asyncio-0.23.8, console-scripts-1.4.1
asyncio: mode=strict
collected 567 items

tests/custom_scalars/test_datetime.py ......                                                                                                                                          [  1%]
tests/custom_scalars/test_enum_colors.py ............                                                                                                                                 [  3%]
tests/custom_scalars/test_json.py ......                                                                                                                                              [  4%]
tests/custom_scalars/test_money.py ............................                                                                                                                       [  9%]
tests/custom_scalars/test_parse_results.py .                                                                                                                                          [  9%]
tests/nested_input/test_nested_input.py ...                                                                                                                                           [  9%]
tests/regressions/issue_447_dsl_missing_directives/test_dsl_directives.py .                                                                                                           [ 10%]
tests/starwars/test_dsl.py ........................................................FF...                                                                                              [ 20%]
tests/starwars/test_introspection.py .                                                                                                                                                [ 20%]
tests/starwars/test_parse_results.py .........                                                                                                                                        [ 22%]
tests/starwars/test_query.py .................                                                                                                                                        [ 25%]
tests/starwars/test_subscription.py ...                                                                                                                                               [ 26%]
tests/starwars/test_validation.py ...................................................                                                                                                 [ 35%]
tests/test_aiohttp.py ...........................................                                                                                                                     [ 42%]
tests/test_aiohttp_online.py sss                                                                                                                                                      [ 43%]
tests/test_appsync_auth.py .........                                                                                                                                                  [ 44%]
tests/test_appsync_http.py .                                                                                                                                                          [ 44%]
tests/test_appsync_websockets.py ..........                                                                                                                                           [ 46%]
tests/test_async_client_validation.py .......F..                                                                                                                                      [ 48%]
tests/test_cli.py ..................................                                                                                                                                  [ 54%]
tests/test_client.py ....sss...                                                                                                                                                       [ 56%]
tests/test_graphql_request.py .                                                                                                                                                       [ 56%]
tests/test_graphqlws_exceptions.py ..................                                                                                                                                 [ 59%]
tests/test_graphqlws_subscription.py ..................                                                                                                                               [ 62%]
tests/test_http_async_sync.py ssssssss                                                                                                                                                [ 64%]
tests/test_httpx.py ...................                                                                                                                                               [ 67%]
tests/test_httpx_async.py ......................................                                                                                                                      [ 74%]
tests/test_httpx_online.py sss                                                                                                                                                        [ 74%]
tests/test_phoenix_channel_exceptions.py ...........................                                                                                                                  [ 79%]
tests/test_phoenix_channel_query.py ..                                                                                                                                                [ 79%]
tests/test_phoenix_channel_subscription.py ....                                                                                                                                       [ 80%]
tests/test_requests.py ...................                                                                                                                                            [ 83%]
tests/test_requests_batch.py ...................sss                                                                                                                                   [ 87%]
tests/test_transport.py FFFF                                                                                                                                                          [ 88%]
tests/test_transport_batch.py FFFF                                                                                                                                                    [ 89%]
tests/test_websocket_exceptions.py .....................                                                                                                                              [ 92%]
tests/test_websocket_online.py ssssss                                                                                                                                                 [ 94%]
tests/test_websocket_query.py ..................                                                                                                                                      [ 97%]
tests/test_websocket_subscription.py ................                                                                                                                                 [100%]

========================================================================================= FAILURES ==========================================================================================
__________________________________________________________________________ test_get_introspection_query_ast[True] ___________________________________________________________________________

option = True

    @pytest.mark.parametrize("option", [True, False])
    def test_get_introspection_query_ast(option):

        introspection_query = get_introspection_query(
            descriptions=option,
            specified_by_url=option,
            directive_is_repeatable=option,
            schema_description=option,
        )
        dsl_introspection_query = get_introspection_query_ast(
            descriptions=option,
            specified_by_url=option,
            directive_is_repeatable=option,
            schema_description=option,
        )

>       assert print_ast(gql(introspection_query)) == print_ast(dsl_introspection_query)
E       AssertionError: assert 'query Intros...    }\n  }\n}' == 'query Intros...    }\n  }\n}'
E
E         Skipping 1289 identical leading characters in diff, use -v to show
E         +             ofType {
E         +                   kind
E         +                   name
E         +                   ofType {
E         +                     kind...
E
E         ...Full output truncated (13 lines hidden), use '-vv' to show

tests/starwars/test_dsl.py:995: AssertionError
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
Creating <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::description>
Added fields: (<DSLField __Schema::description>,) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::queryType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::queryType>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::mutationType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::mutationType>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::subscriptionType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::subscriptionType>
Added fields: (<DSLField __Schema::queryType>, <DSLField __Schema::mutationType>, <DSLField __Schema::subscriptionType>) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::types>
Added fields: (<DSLFragment FullType>,) in <DSLField __Schema::types>
Added fields: (<DSLField __Schema::types>,) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::name>
Added fields: (<DSLField __Directive::name>,) in <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::description>
Added fields: (<DSLField __Directive::description>,) in <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::isRepeatable>
Added fields: (<DSLField __Directive::isRepeatable>,) in <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::locations>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::args>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Directive::args>
Added fields: (<DSLField __Directive::locations>, <DSLField __Directive::args>) in <DSLField __Schema::directives>
Added fields: (<DSLField __Schema::directives>,) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::description>
Added fields: (<DSLField __Type::description>,) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::specifiedByURL>
Added fields: (<DSLField __Type::specifiedByURL>,) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::fields>
Added arguments {'includeDeprecated': True} in field <DSLField __Type::fields>)
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::name>
Added fields: (<DSLField __Field::name>,) in <DSLField __Type::fields>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::description>
Added fields: (<DSLField __Field::description>,) in <DSLField __Type::fields>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::args>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Field::args>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::type>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Field::type>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::isDeprecated>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::deprecationReason>
Added fields: (<DSLField __Field::args>, <DSLField __Field::type>, <DSLField __Field::isDeprecated>, <DSLField __Field::deprecationReason>) in <DSLField __Type::fields>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::enumValues>
Added arguments {'includeDeprecated': True} in field <DSLField __Type::enumValues>)
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::name>
Added fields: (<DSLField __EnumValue::name>,) in <DSLField __Type::enumValues>
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::description>
Added fields: (<DSLField __EnumValue::description>,) in <DSLField __Type::enumValues>
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::isDeprecated>
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::deprecationReason>
Added fields: (<DSLField __EnumValue::isDeprecated>, <DSLField __EnumValue::deprecationReason>) in <DSLField __Type::enumValues>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::inputFields>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Type::inputFields>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::interfaces>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::interfaces>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::possibleTypes>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::possibleTypes>
Added fields: (<DSLField __Type::fields>, <DSLField __Type::inputFields>, <DSLField __Type::interfaces>, <DSLField __Type::enumValues>, <DSLField __Type::possibleTypes>) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::name>
Added fields: (<DSLField __InputValue::name>,) in <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::description>
Added fields: (<DSLField __InputValue::description>,) in <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::type>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __InputValue::type>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::defaultValue>
Added fields: (<DSLField __InputValue::type>, <DSLField __InputValue::defaultValue>) in <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Added fields: (<DSLMetaField meta_field::__schema>,) in <DSLQuery>
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::description>,) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::queryType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::queryType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::mutationType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::mutationType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::subscriptionType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::subscriptionType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::queryType>, <DSLField __Schema::mutationType>, <DSLField __Schema::subscriptionType>) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::types>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment FullType>,) in <DSLField __Schema::types>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::types>,) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::name>,) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::description>,) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::isRepeatable>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::isRepeatable>,) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::locations>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Directive::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::locations>, <DSLField __Directive::args>) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::directives>,) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::description>,) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::specifiedByURL>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::specifiedByURL>,) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:869 Added arguments {'includeDeprecated': True} in field <DSLField __Type::fields>)
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Field::name>,) in <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Field::description>,) in <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Field::args>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::type>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Field::type>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::isDeprecated>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::deprecationReason>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Field::args>, <DSLField __Field::type>, <DSLField __Field::isDeprecated>, <DSLField __Field::deprecationReason>) in <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:869 Added arguments {'includeDeprecated': True} in field <DSLField __Type::enumValues>)
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __EnumValue::name>,) in <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __EnumValue::description>,) in <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::isDeprecated>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::deprecationReason>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __EnumValue::isDeprecated>, <DSLField __EnumValue::deprecationReason>) in <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::inputFields>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Type::inputFields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::interfaces>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::interfaces>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::possibleTypes>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::possibleTypes>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::fields>, <DSLField __Type::inputFields>, <DSLField __Type::interfaces>, <DSLField __Type::enumValues>, <DSLField __Type::possibleTypes>) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __InputValue::name>,) in <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::description>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __InputValue::description>,) in <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::type>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __InputValue::type>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::defaultValue>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __InputValue::type>, <DSLField __InputValue::defaultValue>) in <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLMetaField meta_field::__schema>,) in <DSLQuery>
__________________________________________________________________________ test_get_introspection_query_ast[False] __________________________________________________________________________

option = False

    @pytest.mark.parametrize("option", [True, False])
    def test_get_introspection_query_ast(option):

        introspection_query = get_introspection_query(
            descriptions=option,
            specified_by_url=option,
            directive_is_repeatable=option,
            schema_description=option,
        )
        dsl_introspection_query = get_introspection_query_ast(
            descriptions=option,
            specified_by_url=option,
            directive_is_repeatable=option,
            schema_description=option,
        )

>       assert print_ast(gql(introspection_query)) == print_ast(dsl_introspection_query)
E       AssertionError: assert 'query Intros...    }\n  }\n}' == 'query Intros...    }\n  }\n}'
E
E         Skipping 1159 identical leading characters in diff, use -v to show
E         +             ofType {
E         +                   kind
E         +                   name
E         +                   ofType {
E         +                     kind...
E
E         ...Full output truncated (13 lines hidden), use '-vv' to show

tests/starwars/test_dsl.py:995: AssertionError
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
Creating <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::queryType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::queryType>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::mutationType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::mutationType>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::subscriptionType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::subscriptionType>
Added fields: (<DSLField __Schema::queryType>, <DSLField __Schema::mutationType>, <DSLField __Schema::subscriptionType>) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::types>
Added fields: (<DSLFragment FullType>,) in <DSLField __Schema::types>
Added fields: (<DSLField __Schema::types>,) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Schema'>>)
Creating <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::name>
Added fields: (<DSLField __Directive::name>,) in <DSLField __Schema::directives>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::locations>
Creating <DSLType <GraphQLObjectType '__Directive'>>)
Creating <DSLField __Directive::args>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Directive::args>
Added fields: (<DSLField __Directive::locations>, <DSLField __Directive::args>) in <DSLField __Schema::directives>
Added fields: (<DSLField __Schema::directives>,) in <DSLMetaField meta_field::__schema>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::fields>
Added arguments {'includeDeprecated': True} in field <DSLField __Type::fields>)
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::name>
Added fields: (<DSLField __Field::name>,) in <DSLField __Type::fields>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::args>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Field::args>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::type>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Field::type>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::isDeprecated>
Creating <DSLType <GraphQLObjectType '__Field'>>)
Creating <DSLField __Field::deprecationReason>
Added fields: (<DSLField __Field::args>, <DSLField __Field::type>, <DSLField __Field::isDeprecated>, <DSLField __Field::deprecationReason>) in <DSLField __Type::fields>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::enumValues>
Added arguments {'includeDeprecated': True} in field <DSLField __Type::enumValues>)
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::name>
Added fields: (<DSLField __EnumValue::name>,) in <DSLField __Type::enumValues>
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::isDeprecated>
Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
Creating <DSLField __EnumValue::deprecationReason>
Added fields: (<DSLField __EnumValue::isDeprecated>, <DSLField __EnumValue::deprecationReason>) in <DSLField __Type::enumValues>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::inputFields>
Added fields: (<DSLFragment InputValue>,) in <DSLField __Type::inputFields>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::interfaces>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::interfaces>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::possibleTypes>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::possibleTypes>
Added fields: (<DSLField __Type::fields>, <DSLField __Type::inputFields>, <DSLField __Type::interfaces>, <DSLField __Type::enumValues>, <DSLField __Type::possibleTypes>) in <DSLFragment FullType>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::name>
Added fields: (<DSLField __InputValue::name>,) in <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::type>
Added fields: (<DSLFragment TypeRef>,) in <DSLField __InputValue::type>
Creating <DSLType <GraphQLObjectType '__InputValue'>>)
Creating <DSLField __InputValue::defaultValue>
Added fields: (<DSLField __InputValue::type>, <DSLField __InputValue::defaultValue>) in <DSLFragment InputValue>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLFragment TypeRef>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::ofType>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::kind>
Creating <DSLType <GraphQLObjectType '__Type'>>)
Creating <DSLField __Type::name>
Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
Added fields: (<DSLMetaField meta_field::__schema>,) in <DSLQuery>
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:1016 Creating <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::queryType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::queryType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::mutationType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::mutationType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::subscriptionType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::name>,) in <DSLField __Schema::subscriptionType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::queryType>, <DSLField __Schema::mutationType>, <DSLField __Schema::subscriptionType>) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::types>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment FullType>,) in <DSLField __Schema::types>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::types>,) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Schema'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::name>,) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::locations>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Directive'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Directive::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Directive::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Directive::locations>, <DSLField __Directive::args>) in <DSLField __Schema::directives>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Schema::directives>,) in <DSLMetaField meta_field::__schema>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:869 Added arguments {'includeDeprecated': True} in field <DSLField __Type::fields>)
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Field::name>,) in <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::args>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Field::args>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::type>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Field::type>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::isDeprecated>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Field'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Field::deprecationReason>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Field::args>, <DSLField __Field::type>, <DSLField __Field::isDeprecated>, <DSLField __Field::deprecationReason>) in <DSLField __Type::fields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:869 Added arguments {'includeDeprecated': True} in field <DSLField __Type::enumValues>)
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __EnumValue::name>,) in <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::isDeprecated>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__EnumValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __EnumValue::deprecationReason>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __EnumValue::isDeprecated>, <DSLField __EnumValue::deprecationReason>) in <DSLField __Type::enumValues>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::inputFields>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment InputValue>,) in <DSLField __Type::inputFields>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::interfaces>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::interfaces>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::possibleTypes>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __Type::possibleTypes>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::fields>, <DSLField __Type::inputFields>, <DSLField __Type::interfaces>, <DSLField __Type::enumValues>, <DSLField __Type::possibleTypes>) in <DSLFragment FullType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __InputValue::name>,) in <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::type>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLFragment TypeRef>,) in <DSLField __InputValue::type>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__InputValue'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __InputValue::defaultValue>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __InputValue::type>, <DSLField __InputValue::defaultValue>) in <DSLFragment InputValue>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLFragment TypeRef>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::kind>
DEBUG    gql.dsl:dsl.py:639 Creating <DSLType <GraphQLObjectType '__Type'>>)
DEBUG    gql.dsl:dsl.py:830 Creating <DSLField __Type::name>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::kind>, <DSLField __Type::name>) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLField __Type::ofType>,) in <DSLField __Type::ofType>
DEBUG    gql.dsl:dsl.py:376 Added fields: (<DSLMetaField meta_field::__schema>,) in <DSLQuery>
________________________________________________________ test_async_client_validation_fetch_schema_from_server_valid_query[server0] _________________________________________________________

event_loop = <_UnixSelectorEventLoop running=False closed=False debug=False>
client_and_server = (<gql.client.AsyncClientSession object at 0x7f06ff5a7850>, <tests.conftest.WebSocketServer object at 0x7f06ff5a6b00>)

    @pytest.mark.websockets
    @pytest.mark.asyncio
    @pytest.mark.parametrize("server", [hero_server_answers], indirect=True)
    async def test_async_client_validation_fetch_schema_from_server_valid_query(
        event_loop, client_and_server
    ):
        session, server = client_and_server
        client = session.client

        # No schema in the client at the beginning
        assert client.introspection is None
        assert client.schema is None

        # Fetch schema from server
        await session.fetch_schema()

        # Check that the async client correctly recreated the schema
>       assert client.introspection == StarWarsIntrospection
E       AssertionError: assert {'__schema': ...ption'}, ...}} == {'__schema': ...ption'}, ...}}
E
E         Differing items:
E         {'__schema': {'directives': [{'args': [{'defaultValue': None, 'description': 'Included when true.', 'name': 'if', 'typ...utationType
E
E         ...Full output truncated (2 lines hidden), use '-vv' to show

tests/test_async_client_validation.py:208: AssertionError
----------------------------------------------------------------------------------- Captured stdout setup -----------------------------------------------------------------------------------
Starting server
Server started on port 42051

----------------------------------------------------------------------------------- Captured stderr setup -----------------------------------------------------------------------------------
connect: starting
backend subprotocol returned: 'graphql-ws'
>>> {"type": "connection_init", "payload": {}}
<<< {"type":"connection_ack"}
connect: done
------------------------------------------------------------------------------------ Captured log setup -------------------------------------------------------------------------------------
DEBUG    gql.transport.websockets:websockets_base.py:460 connect: starting
DEBUG    gql.transport.websockets:websockets.py:495 backend subprotocol returned: 'graphql-ws'
INFO     gql.transport.websockets:websockets_base.py:218 >>> {"type": "connection_init", "payload": {}}
INFO     gql.transport.websockets:websockets_base.py:240 <<< {"type":"connection_ack"}
DEBUG    gql.transport.websockets:websockets_base.py:535 connect: done
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
>>> {"id": "1", "type": "start", "payload": {"query": "query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}}
Server received: {"id": "1", "type": "start", "payload": {"query": "query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}}
<<< {"type":"data","id":"1","payload":{"data":{"__schema": {"queryType": {"name": "Query"}, "mutationType": {"name": "Mutation"}, "subscriptionType": {"name": "Subscription"}, "types": [{"kind": "OBJECT", "name": "Human", "description": "A humanoid creature in the Star Wars universe.", "fields": [{"name": "id", "description": "The id of the human.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the human.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the human, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "homePlanet", "description": "The home planet of the human, or null if unknown.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [{"kind": "INTERFACE", "name": "Character", "ofType": null}], "enumValues": null, "possibleTypes": null}, {"kind": "INTERFACE", "name": "Character", "description": "A character in the Star Wars Trilogy", "fields": [{"name": "id", "description": "The id of the character.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the character.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the character, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": [{"kind": "OBJECT", "name": "Human", "ofType": null}, {"kind": "OBJECT", "name": "Droid", "ofType": null}]}, {"kind": "SCALAR", "name": "String", "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "Episode", "description": "One of the films in the Star Wars Trilogy", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "NEWHOPE", "description": "Released in 1977.", "isDeprecated": false, "deprecationReason": null}, {"name": "EMPIRE", "description": "Released in 1980.", "isDeprecated": false, "deprecationReason": null}, {"name": "JEDI", "description": "Released in 1983.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}, {"kind": "OBJECT", "name": "Droid", "description": "A mechanical creature in the Star Wars universe.", "fields": [{"name": "id", "description": "The id of the droid.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the droid.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the droid, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "primaryFunction", "description": "The primary function of the droid.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [{"kind": "INTERFACE", "name": "Character", "ofType": null}], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Review", "description": "Represents a review for a movie", "fields": [{"name": "episode", "description": "The movie", "args": [], "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "stars", "description": "The number of stars this review gave, 1-5", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Int", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "commentary", "description": "Comment about the movie", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "SCALAR", "name": "Int", "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "INPUT_OBJECT", "name": "ReviewInput", "description": "The input object sent when someone is creating a new review", "fields": null, "inputFields": [{"name": "stars", "description": "0-5 stars", "type": {"kind": "SCALAR", "name": "Int", "ofType": null}, "defaultValue": null}, {"name": "commentary", "description": "Comment about the movie, optional", "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "defaultValue": null}], "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Query", "description": null, "fields": [{"name": "hero", "description": null, "args": [{"name": "episode", "description": "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}], "type": {"kind": "INTERFACE", "name": "Character", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "human", "description": null, "args": [{"name": "id", "description": "id of the human", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Human", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "droid", "description": null, "args": [{"name": "id", "description": "id of the droid", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Droid", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "characters", "description": null, "args": [{"name": "ids", "description": "list of character ids", "type": {"kind": "LIST", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Mutation", "description": "The mutation type, represents all updates we can make to our data", "fields": [{"name": "createReview", "description": null, "args": [{"name": "episode", "description": "Episode to create review", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}, {"name": "review", "description": "set alive status", "type": {"kind": "INPUT_OBJECT", "name": "ReviewInput", "ofType": null}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Review", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Subscription", "description": null, "fields": [{"name": "reviewAdded", "description": null, "args": [{"name": "episode", "description": "Episode to review", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Review", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "SCALAR", "name": "Boolean", "description": "The `Boolean` scalar type represents `true` or `false`.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Schema", "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", "fields": [{"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "types", "description": "A list of all types supported by this server.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "queryType", "description": "The type that query operations will be rooted at.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "mutationType", "description": "If this server supports mutation, the type that mutation operations will be rooted at.", "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "subscriptionType", "description": "If this server support subscription, the type that subscription operations will be rooted at.", "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "directives", "description": "A list of all directives supported by this server.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Directive", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Type", "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", "fields": [{"name": "kind", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "ENUM", "name": "__TypeKind", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "specifiedByURL", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "fields", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Field", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "interfaces", "description": null, "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "possibleTypes", "description": null, "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "enumValues", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__EnumValue", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "inputFields", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "ofType", "description": null, "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "__TypeKind", "description": "An enum describing what kind of type a given `__Type` is.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "SCALAR", "description": "Indicates this type is a scalar.", "isDeprecated": false, "deprecationReason": null}, {"name": "OBJECT", "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", "isDeprecated": false, "deprecationReason": null}, {"name": "INTERFACE", "description": "Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.", "isDeprecated": false, "deprecationReason": null}, {"name": "UNION", "description": "Indicates this type is a union. `possibleTypes` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM", "description": "Indicates this type is an enum. `enumValues` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_OBJECT", "description": "Indicates this type is an input object. `inputFields` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "LIST", "description": "Indicates this type is a list. `ofType` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "NON_NULL", "description": "Indicates this type is a non-null. `ofType` is a valid field.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}, {"kind": "OBJECT", "name": "__Field", "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "args", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "type", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__InputValue", "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "type", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "defaultValue", "description": "A GraphQL-formatted string representing the default value for this input value.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__EnumValue", "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Directive", "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isRepeatable", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "locations", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "ENUM", "name": "__DirectiveLocation", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "args", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "__DirectiveLocation", "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "QUERY", "description": "Location adjacent to a query operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "MUTATION", "description": "Location adjacent to a mutation operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "SUBSCRIPTION", "description": "Location adjacent to a subscription operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "FIELD", "description": "Location adjacent to a field.", "isDeprecated": false, "deprecationReason": null}, {"name": "FRAGMENT_DEFINITION", "description": "Location adjacent to a fragment definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "FRAGMENT_SPREAD", "description": "Location adjacent to a fragment spread.", "isDeprecated": false, "deprecationReason": null}, {"name": "INLINE_FRAGMENT", "description": "Location adjacent to an inline fragment.", "isDeprecated": false, "deprecationReason": null}, {"name": "VARIABLE_DEFINITION", "description": "Location adjacent to a variable definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "SCHEMA", "description": "Location adjacent to a schema definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "SCALAR", "description": "Location adjacent to a scalar definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "OBJECT", "description": "Location adjacent to an object type definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "FIELD_DEFINITION", "description": "Location adjacent to a field definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ARGUMENT_DEFINITION", "description": "Location adjacent to an argument definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INTERFACE", "description": "Location adjacent to an interface definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "UNION", "description": "Location adjacent to a union definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM", "description": "Location adjacent to an enum definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM_VALUE", "description": "Location adjacent to an enum value definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_OBJECT", "description": "Location adjacent to an input object type definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_FIELD_DEFINITION", "description": "Location adjacent to an input object field definition.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}], "directives": [{"name": "include", "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], "args": [{"name": "if", "description": "Included when true.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "defaultValue": null}]}, {"name": "skip", "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], "args": [{"name": "if", "description": "Skipped when true.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "defaultValue": null}]}, {"name": "deprecated", "description": "Marks an element of a GraphQL schema as no longer supported.", "locations": ["FIELD_DEFINITION", "ARGUMENT_DEFINITION", "INPUT_FIELD_DEFINITION", "ENUM_VALUE"], "args": [{"name": "reason", "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).", "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "defaultValue": "\"No longer supported\""}]}, {"name": "specifiedBy", "description": "Exposes a URL that specifies the behavior of this scalar.", "locations": ["SCALAR"], "args": [{"name": "url", "description": "The URL that specifies the behavior of this scalar.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}]}]}}}}
<<< {"type":"complete","id":"1","payload":null}
Exception in subscribe: GeneratorExit()
In subscribe finally for query_id 1
listener 1 deleted, 0 remaining
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
INFO     gql.transport.websockets:websockets_base.py:218 >>> {"id": "1", "type": "start", "payload": {"query": "query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}}
INFO     gql.transport.websockets:websockets_base.py:240 <<< {"type":"data","id":"1","payload":{"data":{"__schema": {"queryType": {"name": "Query"}, "mutationType": {"name": "Mutation"}, "subscriptionType": {"name": "Subscription"}, "types": [{"kind": "OBJECT", "name": "Human", "description": "A humanoid creature in the Star Wars universe.", "fields": [{"name": "id", "description": "The id of the human.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the human.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the human, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "homePlanet", "description": "The home planet of the human, or null if unknown.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [{"kind": "INTERFACE", "name": "Character", "ofType": null}], "enumValues": null, "possibleTypes": null}, {"kind": "INTERFACE", "name": "Character", "description": "A character in the Star Wars Trilogy", "fields": [{"name": "id", "description": "The id of the character.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the character.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the character, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": [{"kind": "OBJECT", "name": "Human", "ofType": null}, {"kind": "OBJECT", "name": "Droid", "ofType": null}]}, {"kind": "SCALAR", "name": "String", "description": "The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "Episode", "description": "One of the films in the Star Wars Trilogy", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "NEWHOPE", "description": "Released in 1977.", "isDeprecated": false, "deprecationReason": null}, {"name": "EMPIRE", "description": "Released in 1980.", "isDeprecated": false, "deprecationReason": null}, {"name": "JEDI", "description": "Released in 1983.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}, {"kind": "OBJECT", "name": "Droid", "description": "A mechanical creature in the Star Wars universe.", "fields": [{"name": "id", "description": "The id of the droid.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": "The name of the droid.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "friends", "description": "The friends of the droid, or an empty list if they have none.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "appearsIn", "description": "Which movies they appear in.", "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "ENUM", "name": "Episode", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "primaryFunction", "description": "The primary function of the droid.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [{"kind": "INTERFACE", "name": "Character", "ofType": null}], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Review", "description": "Represents a review for a movie", "fields": [{"name": "episode", "description": "The movie", "args": [], "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "stars", "description": "The number of stars this review gave, 1-5", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Int", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "commentary", "description": "Comment about the movie", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "SCALAR", "name": "Int", "description": "The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "INPUT_OBJECT", "name": "ReviewInput", "description": "The input object sent when someone is creating a new review", "fields": null, "inputFields": [{"name": "stars", "description": "0-5 stars", "type": {"kind": "SCALAR", "name": "Int", "ofType": null}, "defaultValue": null}, {"name": "commentary", "description": "Comment about the movie, optional", "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "defaultValue": null}], "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Query", "description": null, "fields": [{"name": "hero", "description": null, "args": [{"name": "episode", "description": "If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}], "type": {"kind": "INTERFACE", "name": "Character", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "human", "description": null, "args": [{"name": "id", "description": "id of the human", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Human", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "droid", "description": null, "args": [{"name": "id", "description": "id of the droid", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Droid", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "characters", "description": null, "args": [{"name": "ids", "description": "list of character ids", "type": {"kind": "LIST", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "INTERFACE", "name": "Character", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Mutation", "description": "The mutation type, represents all updates we can make to our data", "fields": [{"name": "createReview", "description": null, "args": [{"name": "episode", "description": "Episode to create review", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}, {"name": "review", "description": "set alive status", "type": {"kind": "INPUT_OBJECT", "name": "ReviewInput", "ofType": null}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Review", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "Subscription", "description": null, "fields": [{"name": "reviewAdded", "description": null, "args": [{"name": "episode", "description": "Episode to review", "type": {"kind": "ENUM", "name": "Episode", "ofType": null}, "defaultValue": null}], "type": {"kind": "OBJECT", "name": "Review", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "SCALAR", "name": "Boolean", "description": "The `Boolean` scalar type represents `true` or `false`.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Schema", "description": "A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.", "fields": [{"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "types", "description": "A list of all types supported by this server.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "queryType", "description": "The type that query operations will be rooted at.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "mutationType", "description": "If this server supports mutation, the type that mutation operations will be rooted at.", "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "subscriptionType", "description": "If this server support subscription, the type that subscription operations will be rooted at.", "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "directives", "description": "A list of all directives supported by this server.", "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Directive", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Type", "description": "The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\n\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.", "fields": [{"name": "kind", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "ENUM", "name": "__TypeKind", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "name", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "specifiedByURL", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "fields", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Field", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "interfaces", "description": null, "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "possibleTypes", "description": null, "args": [], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "enumValues", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__EnumValue", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "inputFields", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "ofType", "description": null, "args": [], "type": {"kind": "OBJECT", "name": "__Type", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "__TypeKind", "description": "An enum describing what kind of type a given `__Type` is.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "SCALAR", "description": "Indicates this type is a scalar.", "isDeprecated": false, "deprecationReason": null}, {"name": "OBJECT", "description": "Indicates this type is an object. `fields` and `interfaces` are valid fields.", "isDeprecated": false, "deprecationReason": null}, {"name": "INTERFACE", "description": "Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.", "isDeprecated": false, "deprecationReason": null}, {"name": "UNION", "description": "Indicates this type is a union. `possibleTypes` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM", "description": "Indicates this type is an enum. `enumValues` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_OBJECT", "description": "Indicates this type is an input object. `inputFields` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "LIST", "description": "Indicates this type is a list. `ofType` is a valid field.", "isDeprecated": false, "deprecationReason": null}, {"name": "NON_NULL", "description": "Indicates this type is a non-null. `ofType` is a valid field.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}, {"kind": "OBJECT", "name": "__Field", "description": "Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "args", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "type", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__InputValue", "description": "Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "type", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__Type", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "defaultValue", "description": "A GraphQL-formatted string representing the default value for this input value.", "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__EnumValue", "description": "One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isDeprecated", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "deprecationReason", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "OBJECT", "name": "__Directive", "description": "A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\n\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.", "fields": [{"name": "name", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "description", "description": null, "args": [], "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "isDeprecated": false, "deprecationReason": null}, {"name": "isRepeatable", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "isDeprecated": false, "deprecationReason": null}, {"name": "locations", "description": null, "args": [], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "ENUM", "name": "__DirectiveLocation", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}, {"name": "args", "description": null, "args": [{"name": "includeDeprecated", "description": null, "type": {"kind": "SCALAR", "name": "Boolean", "ofType": null}, "defaultValue": "false"}], "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "LIST", "name": null, "ofType": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "OBJECT", "name": "__InputValue", "ofType": null}}}}, "isDeprecated": false, "deprecationReason": null}], "inputFields": null, "interfaces": [], "enumValues": null, "possibleTypes": null}, {"kind": "ENUM", "name": "__DirectiveLocation", "description": "A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.", "fields": null, "inputFields": null, "interfaces": null, "enumValues": [{"name": "QUERY", "description": "Location adjacent to a query operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "MUTATION", "description": "Location adjacent to a mutation operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "SUBSCRIPTION", "description": "Location adjacent to a subscription operation.", "isDeprecated": false, "deprecationReason": null}, {"name": "FIELD", "description": "Location adjacent to a field.", "isDeprecated": false, "deprecationReason": null}, {"name": "FRAGMENT_DEFINITION", "description": "Location adjacent to a fragment definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "FRAGMENT_SPREAD", "description": "Location adjacent to a fragment spread.", "isDeprecated": false, "deprecationReason": null}, {"name": "INLINE_FRAGMENT", "description": "Location adjacent to an inline fragment.", "isDeprecated": false, "deprecationReason": null}, {"name": "VARIABLE_DEFINITION", "description": "Location adjacent to a variable definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "SCHEMA", "description": "Location adjacent to a schema definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "SCALAR", "description": "Location adjacent to a scalar definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "OBJECT", "description": "Location adjacent to an object type definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "FIELD_DEFINITION", "description": "Location adjacent to a field definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ARGUMENT_DEFINITION", "description": "Location adjacent to an argument definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INTERFACE", "description": "Location adjacent to an interface definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "UNION", "description": "Location adjacent to a union definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM", "description": "Location adjacent to an enum definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "ENUM_VALUE", "description": "Location adjacent to an enum value definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_OBJECT", "description": "Location adjacent to an input object type definition.", "isDeprecated": false, "deprecationReason": null}, {"name": "INPUT_FIELD_DEFINITION", "description": "Location adjacent to an input object field definition.", "isDeprecated": false, "deprecationReason": null}], "possibleTypes": null}], "directives": [{"name": "include", "description": "Directs the executor to include this field or fragment only when the `if` argument is true.", "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], "args": [{"name": "if", "description": "Included when true.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "defaultValue": null}]}, {"name": "skip", "description": "Directs the executor to skip this field or fragment when the `if` argument is true.", "locations": ["FIELD", "FRAGMENT_SPREAD", "INLINE_FRAGMENT"], "args": [{"name": "if", "description": "Skipped when true.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "Boolean", "ofType": null}}, "defaultValue": null}]}, {"name": "deprecated", "description": "Marks an element of a GraphQL schema as no longer supported.", "locations": ["FIELD_DEFINITION", "ARGUMENT_DEFINITION", "INPUT_FIELD_DEFINITION", "ENUM_VALUE"], "args": [{"name": "reason", "description": "Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).", "type": {"kind": "SCALAR", "name": "String", "ofType": null}, "defaultValue": "\"No longer supported\""}]}, {"name": "specifiedBy", "description": "Exposes a URL that specifies the behavior of this scalar.", "locations": ["SCALAR"], "args": [{"name": "url", "description": "The URL that specifies the behavior of this scalar.", "type": {"kind": "NON_NULL", "name": null, "ofType": {"kind": "SCALAR", "name": "String", "ofType": null}}, "defaultValue": null}]}]}}}}
INFO     gql.transport.websockets:websockets_base.py:240 <<< {"type":"complete","id":"1","payload":null}
DEBUG    gql.transport.websockets:websockets_base.py:404 Exception in subscribe: GeneratorExit()
DEBUG    gql.transport.websockets:websockets_base.py:410 In subscribe finally for query_id 1
DEBUG    gql.transport.websockets:websockets_base.py:545 listener 1 deleted, 0 remaining
--------------------------------------------------------------------------------- Captured stdout teardown ----------------------------------------------------------------------------------
Stopping server
Server stopped



--------------------------------------------------------------------------------- Captured stderr teardown ----------------------------------------------------------------------------------
close: starting
_fail: starting with exception: TransportClosed('Websocket GraphQL transport closed by user')
wait_close: starting
_close_coro: starting
_close_coro: starting clean_close
>>> {"type": "connection_terminate"}
_close_coro: sending exception to listeners
_close_coro: close websocket connection
Server received: {"type": "connection_terminate"}
_fail: starting with exception: ConnectionClosedOK(Close(code=1000, reason=''), Close(code=<CloseCode.NORMAL_CLOSURE: 1000>, reason=''), False)
close_task is not None in _fail. Previous exception is: TransportClosed('Websocket GraphQL transport closed by user') New exception is: ConnectionClosedOK(Close(code=1000, reason=''), Close(code=<CloseCode.NORMAL_CLOSURE: 1000>, reason=''), False)
Exiting _receive_data_loop()
_close_coro: websocket connection closed
_close_coro: start cleanup
_close_coro: exiting
wait_close: done
close: done
----------------------------------------------------------------------------------- Captured log teardown -----------------------------------------------------------------------------------
DEBUG    gql.transport.websockets:websockets_base.py:657 close: starting
DEBUG    gql.transport.websockets:websockets_base.py:638 _fail: starting with exception: TransportClosed('Websocket GraphQL transport closed by user')
DEBUG    gql.transport.websockets:websockets_base.py:665 wait_close: starting
DEBUG    gql.transport.websockets:websockets_base.py:583 _close_coro: starting
DEBUG    gql.transport.websockets:websockets_base.py:605 _close_coro: starting clean_close
INFO     gql.transport.websockets:websockets_base.py:218 >>> {"type": "connection_terminate"}
DEBUG    gql.transport.websockets:websockets_base.py:611 _close_coro: sending exception to listeners
DEBUG    gql.transport.websockets:websockets_base.py:617 _close_coro: close websocket connection
DEBUG    gql.transport.websockets:websockets_base.py:638 _fail: starting with exception: ConnectionClosedOK(Close(code=1000, reason=''), Close(code=<CloseCode.NORMAL_CLOSURE: 1000>, reason=''), False)
DEBUG    gql.transport.websockets:websockets_base.py:649 close_task is not None in _fail. Previous exception is: TransportClosed('Websocket GraphQL transport closed by user') New exception is: ConnectionClosedOK(Close(code=1000, reason=''), Close(code=<CloseCode.NORMAL_CLOSURE: 1000>, reason=''), False)
DEBUG    gql.transport.websockets:websockets_base.py:339 Exiting _receive_data_loop()
DEBUG    gql.transport.websockets:websockets_base.py:621 _close_coro: websocket connection closed
DEBUG    gql.transport.websockets:websockets_base.py:628 _close_coro: start cleanup
DEBUG    gql.transport.websockets:websockets_base.py:635 _close_coro: exiting
DEBUG    gql.transport.websockets:websockets_base.py:669 wait_close: done
DEBUG    gql.transport.websockets:websockets_base.py:662 close: done
___________________________________________________________________________________ test_hero_name_query ____________________________________________________________________________________

self = <urllib3.connection.HTTPConnection object at 0x7f06fef89240>

    def _new_conn(self) -> socket.socket:
        """Establish a socket connection and set nodelay settings on it.

        :return: New socket connection.
        """
        try:
>           sock = connection.create_connection(
                (self._dns_host, self.port),
                self.timeout,
                source_address=self.source_address,
                socket_options=self.socket_options,
            )

/usr/lib/python3.10/site-packages/urllib3/connection.py:196:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/urllib3/util/connection.py:85: in create_connection
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

address = ('127.0.0.1', 8000), timeout = None, source_address = None, socket_options = [(6, 1, 1)]

    def create_connection(
        address: tuple[str, int],
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        source_address: tuple[str, int] | None = None,
        socket_options: _TYPE_SOCKET_OPTIONS | None = None,
    ) -> socket.socket:
        """Connect to *address* and return the socket object.

        Convenience function.  Connect to *address* (a 2-tuple ``(host,
        port)``) and return the socket object.  Passing the optional
        *timeout* parameter will set the timeout on the socket instance
        before attempting to connect.  If no *timeout* is supplied, the
        global default timeout setting returned by :func:`socket.getdefaulttimeout`
        is used.  If *source_address* is set it must be a tuple of (host, port)
        for the socket to bind as a source address before making the connection.
        An host of '' or port 0 tells the OS to use the default.
        """

        host, port = address
        if host.startswith("["):
            host = host.strip("[]")
        err = None

        # Using the value from allowed_gai_family() in the context of getaddrinfo lets
        # us select whether to work with IPv4 DNS records, IPv6 records, or both.
        # The original create_connection function always returns all records.
        family = allowed_gai_family()

        try:
            host.encode("idna")
        except UnicodeError:
            raise LocationParseError(f"'{host}', label empty or too long") from None

        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
            af, socktype, proto, canonname, sa = res
            sock = None
            try:
                sock = socket.socket(af, socktype, proto)

                # If provided, set socket level options before connecting.
                _set_socket_options(sock, socket_options)

                if timeout is not _DEFAULT_TIMEOUT:
                    sock.settimeout(timeout)
                if source_address:
                    sock.bind(source_address)
>               sock.connect(sa)
E               ConnectionRefusedError: [Errno 111] Connection refused

/usr/lib/python3.10/site-packages/urllib3/util/connection.py:73: ConnectionRefusedError

The above exception was the direct cause of the following exception:

self = <urllib3.connectionpool.HTTPConnectionPool object at 0x7f06fef88640>, method = 'POST', url = '/graphql'
body = b'{"query": "query IntrospectionQuery {\\n  __schema {\\n    queryType {\\n      name\\n    }\\n    mutationType {\\n ...       }\\n                }\\n              }\\n            }\\n          }\\n        }\\n      }\\n    }\\n  }\\n}"}'
headers = {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-aliv...GXZfkKUtWtvUROaFfDe2GBiV7yIRsqs3r2j9aYchRDXTNo3lHp72h5k', 'Content-Length': '1609', 'Content-Type': 'application/json'}
retries = Retry(total=0, connect=None, read=False, redirect=None, status=None), redirect = False, assert_same_host = False, timeout = Timeout(connect=None, read=None, total=None)
pool_timeout = None, release_conn = False, chunked = False, body_pos = None, preload_content = False, decode_content = False, response_kw = {}
parsed_url = Url(scheme=None, auth=None, host=None, port=None, path='/graphql', query=None, fragment=None), destination_scheme = None, conn = None, release_this_conn = True
http_tunnel_required = False, err = None, clean_exit = False

    def urlopen(  # type: ignore[override]
        self,
        method: str,
        url: str,
        body: _TYPE_BODY | None = None,
        headers: typing.Mapping[str, str] | None = None,
        retries: Retry | bool | int | None = None,
        redirect: bool = True,
        assert_same_host: bool = True,
        timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT,
        pool_timeout: int | None = None,
        release_conn: bool | None = None,
        chunked: bool = False,
        body_pos: _TYPE_BODY_POSITION | None = None,
        preload_content: bool = True,
        decode_content: bool = True,
        **response_kw: typing.Any,
    ) -> BaseHTTPResponse:
        """
        Get a connection from the pool and perform an HTTP request. This is the
        lowest level call for making a request, so you'll need to specify all
        the raw details.

        .. note::

           More commonly, it's appropriate to use a convenience method
           such as :meth:`request`.

        .. note::

           `release_conn` will only behave as expected if
           `preload_content=False` because we want to make
           `preload_content=False` the default behaviour someday soon without
           breaking backwards compatibility.

        :param method:
            HTTP request method (such as GET, POST, PUT, etc.)

        :param url:
            The URL to perform the request on.

        :param body:
            Data to send in the request body, either :class:`str`, :class:`bytes`,
            an iterable of :class:`str`/:class:`bytes`, or a file-like object.

        :param headers:
            Dictionary of custom headers to send, such as User-Agent,
            If-None-Match, etc. If None, pool headers are used. If provided,
            these headers completely replace any pool-specific headers.

        :param retries:
            Configure the number of retries to allow before raising a
            :class:`~urllib3.exceptions.MaxRetryError` exception.

            If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a
            :class:`~urllib3.util.retry.Retry` object for fine-grained control
            over different types of retries.
            Pass an integer number to retry connection errors that many times,
            but no other types of errors. Pass zero to never retry.

            If ``False``, then retries are disabled and any exception is raised
            immediately. Also, instead of raising a MaxRetryError on redirects,
            the redirect response will be returned.

        :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int.

        :param redirect:
            If True, automatically handle redirects (status codes 301, 302,
            303, 307, 308). Each redirect counts as a retry. Disabling retries
            will disable redirect, too.

        :param assert_same_host:
            If ``True``, will make sure that the host of the pool requests is
            consistent else will raise HostChangedError. When ``False``, you can
            use the pool on an HTTP proxy and request foreign hosts.

        :param timeout:
            If specified, overrides the default timeout for this one
            request. It may be a float (in seconds) or an instance of
            :class:`urllib3.util.Timeout`.

        :param pool_timeout:
            If set and the pool is set to block=True, then this method will
            block for ``pool_timeout`` seconds and raise EmptyPoolError if no
            connection is available within the time period.

        :param bool preload_content:
            If True, the response's body will be preloaded into memory.

        :param bool decode_content:
            If True, will attempt to decode the body based on the
            'content-encoding' header.

        :param release_conn:
            If False, then the urlopen call will not release the connection
            back into the pool once a response is received (but will release if
            you read the entire contents of the response such as when
            `preload_content=True`). This is useful if you're not preloading
            the response's content immediately. You will need to call
            ``r.release_conn()`` on the response ``r`` to return the connection
            back into the pool. If None, it takes the value of ``preload_content``
            which defaults to ``True``.

        :param bool chunked:
            If True, urllib3 will send the body using chunked transfer
            encoding. Otherwise, urllib3 will send the body using the standard
            content-length form. Defaults to False.

        :param int body_pos:
            Position to seek to in file-like body in the event of a retry or
            redirect. Typically this won't need to be set because urllib3 will
            auto-populate the value when needed.
        """
        parsed_url = parse_url(url)
        destination_scheme = parsed_url.scheme

        if headers is None:
            headers = self.headers

        if not isinstance(retries, Retry):
            retries = Retry.from_int(retries, redirect=redirect, default=self.retries)

        if release_conn is None:
            release_conn = preload_content

        # Check host
        if assert_same_host and not self.is_same_host(url):
            raise HostChangedError(self, url, retries)

        # Ensure that the URL we're connecting to is properly encoded
        if url.startswith("/"):
            url = to_str(_encode_target(url))
        else:
            url = to_str(parsed_url.url)

        conn = None

        # Track whether `conn` needs to be released before
        # returning/raising/recursing. Update this variable if necessary, and
        # leave `release_conn` constant throughout the function. That way, if
        # the function recurses, the original value of `release_conn` will be
        # passed down into the recursive call, and its value will be respected.
        #
        # See issue #651 [1] for details.
        #
        # [1] <https://github.com/urllib3/urllib3/issues/651>
        release_this_conn = release_conn

        http_tunnel_required = connection_requires_http_tunnel(
            self.proxy, self.proxy_config, destination_scheme
        )

        # Merge the proxy headers. Only done when not using HTTP CONNECT. We
        # have to copy the headers dict so we can safely change it without those
        # changes being reflected in anyone else's copy.
        if not http_tunnel_required:
            headers = headers.copy()  # type: ignore[attr-defined]
            headers.update(self.proxy_headers)  # type: ignore[union-attr]

        # Must keep the exception bound to a separate variable or else Python 3
        # complains about UnboundLocalError.
        err = None

        # Keep track of whether we cleanly exited the except block. This
        # ensures we do proper cleanup in finally.
        clean_exit = False

        # Rewind body position, if needed. Record current position
        # for future rewinds in the event of a redirect/retry.
        body_pos = set_file_position(body, body_pos)

        try:
            # Request a connection from the queue.
            timeout_obj = self._get_timeout(timeout)
            conn = self._get_conn(timeout=pool_timeout)

            conn.timeout = timeout_obj.connect_timeout  # type: ignore[assignment]

            # Is this a closed/new connection that requires CONNECT tunnelling?
            if self.proxy is not None and http_tunnel_required and conn.is_closed:
                try:
                    self._prepare_proxy(conn)
                except (BaseSSLError, OSError, SocketTimeout) as e:
                    self._raise_timeout(
                        err=e, url=self.proxy.url, timeout_value=conn.timeout
                    )
                    raise

            # If we're going to release the connection in ``finally:``, then
            # the response doesn't need to know about the connection. Otherwise
            # it will also try to release it and we'll have a double-release
            # mess.
            response_conn = conn if not release_conn else None

            # Make the request on the HTTPConnection object
>           response = self._make_request(
                conn,
                method,
                url,
                timeout=timeout_obj,
                body=body,
                headers=headers,
                chunked=chunked,
                retries=retries,
                response_conn=response_conn,
                preload_content=preload_content,
                decode_content=decode_content,
                **response_kw,
            )

/usr/lib/python3.10/site-packages/urllib3/connectionpool.py:789:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/urllib3/connectionpool.py:536: in _make_request
    response = conn.getresponse()
/usr/lib/python3.10/site-packages/vcr/stubs/__init__.py:277: in getresponse
    self.real_connection.request(
/usr/lib/python3.10/site-packages/urllib3/connection.py:398: in request
    self.endheaders()
/usr/lib64/python3.10/http/client.py:1278: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/lib64/python3.10/http/client.py:1038: in _send_output
    self.send(msg)
/usr/lib64/python3.10/http/client.py:976: in send
    self.connect()
/usr/lib/python3.10/site-packages/urllib3/connection.py:236: in connect
    self.sock = self._new_conn()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <urllib3.connection.HTTPConnection object at 0x7f06fef89240>

    def _new_conn(self) -> socket.socket:
        """Establish a socket connection and set nodelay settings on it.

        :return: New socket connection.
        """
        try:
            sock = connection.create_connection(
                (self._dns_host, self.port),
                self.timeout,
                source_address=self.source_address,
                socket_options=self.socket_options,
            )
        except socket.gaierror as e:
            raise NameResolutionError(self.host, self, e) from e
        except SocketTimeout as e:
            raise ConnectTimeoutError(
                self,
                f"Connection to {self.host} timed out. (connect timeout={self.timeout})",
            ) from e

        except OSError as e:
>           raise NewConnectionError(
                self, f"Failed to establish a new connection: {e}"
            ) from e
E           urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f06fef89240>: Failed to establish a new connection: [Errno 111] Connection refused

/usr/lib/python3.10/site-packages/urllib3/connection.py:211: NewConnectionError

The above exception was the direct cause of the following exception:

self = <requests.adapters.HTTPAdapter object at 0x7f06fef87df0>, request = <PreparedRequest [POST]>, stream = False, timeout = Timeout(connect=None, read=None, total=None), verify = True
cert = None, proxies = OrderedDict()

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
>           resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

/usr/lib/python3.10/site-packages/requests/adapters.py:667:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.10/site-packages/urllib3/connectionpool.py:843: in urlopen
    retries = retries.increment(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = Retry(total=0, connect=None, read=False, redirect=None, status=None), method = 'POST', url = '/graphql', response = None
error = NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f06fef89240>: Failed to establish a new connection: [Errno 111] Connection refused')
_pool = <urllib3.connectionpool.HTTPConnectionPool object at 0x7f06fef88640>, _stacktrace = <traceback object at 0x7f06ff30aa40>

    def increment(
        self,
        method: str | None = None,
        url: str | None = None,
        response: BaseHTTPResponse | None = None,
        error: Exception | None = None,
        _pool: ConnectionPool | None = None,
        _stacktrace: TracebackType | None = None,
    ) -> Self:
        """Return a new Retry object with incremented retry counters.

        :param response: A response object, or None, if the server did not
            return a response.
        :type response: :class:`~urllib3.response.BaseHTTPResponse`
        :param Exception error: An error encountered during the request, or
            None if the response was received successfully.

        :return: A new ``Retry`` object.
        """
        if self.total is False and error:
            # Disabled, indicate to re-raise the error.
            raise reraise(type(error), error, _stacktrace)

        total = self.total
        if total is not None:
            total -= 1

        connect = self.connect
        read = self.read
        redirect = self.redirect
        status_count = self.status
        other = self.other
        cause = "unknown"
        status = None
        redirect_location = None

        if error and self._is_connection_error(error):
            # Connect retry?
            if connect is False:
                raise reraise(type(error), error, _stacktrace)
            elif connect is not None:
                connect -= 1

        elif error and self._is_read_error(error):
            # Read retry?
            if read is False or method is None or not self._is_method_retryable(method):
                raise reraise(type(error), error, _stacktrace)
            elif read is not None:
                read -= 1

        elif error:
            # Other retry?
            if other is not None:
                other -= 1

        elif response and response.get_redirect_location():
            # Redirect retry?
            if redirect is not None:
                redirect -= 1
            cause = "too many redirects"
            response_redirect_location = response.get_redirect_location()
            if response_redirect_location:
                redirect_location = response_redirect_location
            status = response.status

        else:
            # Incrementing because of a server error like a 500 in
            # status_forcelist and the given method is in the allowed_methods
            cause = ResponseError.GENERIC_ERROR
            if response and response.status:
                if status_count is not None:
                    status_count -= 1
                cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status)
                status = response.status

        history = self.history + (
            RequestHistory(method, url, error, status, redirect_location),
        )

        new_retry = self.new(
            total=total,
            connect=connect,
            read=read,
            redirect=redirect,
            status=status_count,
            other=other,
            history=history,
        )

        if new_retry.is_exhausted():
            reason = error or ResponseError(cause)
>           raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
E           urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f06fef89240>: Failed to establish a new connection: [Errno 111] Connection refused'))

/usr/lib/python3.10/site-packages/urllib3/util/retry.py:519: MaxRetryError

During handling of the above exception, another exception occurred:

client = <gql.client.Client object at 0x7f06ff1af010>

    def test_hero_name_query(client):
        query = gql(
            """
            {
              myFavoriteFilm: film(id:"RmlsbToz") {
                id
                title
                episodeId
                characters(first:5) {
                  edges {
                    node {
                      name
                    }
                  }
                }
              }
            }
            """
        )
        expected = {
            "myFavoriteFilm": {
                "id": "RmlsbToz",
                "title": "Return of the Jedi",
                "episodeId": 6,
                "characters": {
                    "edges": [
                        {"node": {"name": "Luke Skywalker"}},
                        {"node": {"name": "C-3PO"}},
                        {"node": {"name": "R2-D2"}},
                        {"node": {"name": "Darth Vader"}},
                        {"node": {"name": "Leia Organa"}},
                    ]
                },
            }
        }
        with use_cassette("queries"):
>           result = client.execute(query)

tests/test_transport.py:84:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
gql/client.py:484: in execute
    return self.execute_sync(
gql/client.py:247: in execute_sync
    with self as session:
gql/client.py:860: in __enter__
    return self.connect_sync()
gql/client.py:841: in connect_sync
    self.session.fetch_schema()
gql/client.py:1293: in fetch_schema
    execution_result = self.transport.execute(parse(introspection_query))
gql/transport/requests.py:237: in execute
    response = self.session.request(
/usr/lib/python3.10/site-packages/requests/sessions.py:589: in request
    resp = self.send(prep, **send_kwargs)
/usr/lib/python3.10/site-packages/requests/sessions.py:703: in send
    r = adapter.send(request, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <requests.adapters.HTTPAdapter object at 0x7f06fef87df0>, request = <PreparedRequest [POST]>, stream = False, timeout = Timeout(connect=None, read=None, total=None), verify = True
cert = None, proxies = OrderedDict()

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
            resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

        except (ProtocolError, OSError) as err:
            raise ConnectionError(err, request=request)

        except MaxRetryError as e:
            if isinstance(e.reason, ConnectTimeoutError):
                # TODO: Remove this in 3.0.0: see #2811
                if not isinstance(e.reason, NewConnectionError):
                    raise ConnectTimeout(e, request=request)

            if isinstance(e.reason, ResponseError):
                raise RetryError(e, request=request)

            if isinstance(e.reason, _ProxyError):
                raise ProxyError(e, request=request)

            if isinstance(e.reason, _SSLError):
                # This branch is for urllib3 v1.22 and later.
                raise SSLError(e, request=request)

>           raise ConnectionError(e, request=request)
E           requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f06fef89240>: Failed to establish a new connection: [Errno 111] Connection refused'))

/usr/lib/python3.10/site-packages/requests/adapters.py:700: ConnectionError
----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
>>> {"query": "query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}
------------------------------------------------------------------------------------- Captured log call -------------------------------------------------------------------------------------
INFO     gql.transport.requests:requests.py:227 >>> {"query": "query IntrospectionQuery {\n  __schema {\n    queryType {\n      name\n    }\n    mutationType {\n      name\n    }\n    subscriptionType {\n      name\n    }\n    types {\n      ...FullType\n    }\n    directives {\n      name\n      description\n      locations\n      args {\n        ...InputValue\n      }\n    }\n  }\n}\n\nfragment FullType on __Type {\n  kind\n  name\n  description\n  fields(includeDeprecated: true) {\n    name\n    description\n    args {\n      ...InputValue\n    }\n    type {\n      ...TypeRef\n    }\n    isDeprecated\n    deprecationReason\n  }\n  inputFields {\n    ...InputValue\n  }\n  interfaces {\n    ...TypeRef\n  }\n  enumValues(includeDeprecated: true) {\n    name\n    description\n    isDeprecated\n    deprecationReason\n  }\n  possibleTypes {\n    ...TypeRef\n  }\n}\n\nfragment InputValue on __InputValue {\n  name\n  description\n  type {\n    ...TypeRef\n  }\n  defaultValue\n}\n\nfragment TypeRef on __Type {\n  kind\n  name\n  ofType {\n    kind\n    name\n    ofType {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}"}
_________________________________________________________________________________ test_query_with_variable __________________________________________________________________________________

self = <urllib3.connection.HTTPConnection object at 0x7f06fe3e3460>

    def _new_conn(self) -> socket.socket:
        """Establish a socket connection and set nodelay settings on it.

        :return: New socket connection.
        """
        try:
>           sock = connection.create_connection(
                (self._dns_host, self.port),
                self.timeout,
                source_address=self.source_address,
                socket_options=self.socket_options,
            )

/usr/lib/python3.10/site-packages/urllib3/connection.py:196:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

[..]

----------------------------------------------------------------------------------- Captured stderr call ------------------------------------------------------------------------------------
[..]
================================================================================== short test summary info ==================================================================================
SKIPPED [1] tests/test_aiohttp_online.py:11: need --run-online option to run
SKIPPED [1] tests/test_aiohttp_online.py:56: need --run-online option to run
SKIPPED [1] tests/test_aiohttp_online.py:84: need --run-online option to run
SKIPPED [1] tests/test_client.py:121: need --run-online option to run
SKIPPED [1] tests/test_client.py:156: need --run-online option to run
SKIPPED [1] tests/test_client.py:188: need --run-online option to run
SKIPPED [2] tests/test_http_async_sync.py:6: need --run-online option to run
SKIPPED [2] tests/test_http_async_sync.py:50: need --run-online option to run
SKIPPED [2] tests/test_http_async_sync.py:74: need --run-online option to run
SKIPPED [2] tests/test_http_async_sync.py:117: need --run-online option to run
SKIPPED [1] tests/test_httpx_online.py:11: need --run-online option to run
SKIPPED [1] tests/test_httpx_online.py:56: need --run-online option to run
SKIPPED [1] tests/test_httpx_online.py:84: need --run-online option to run
SKIPPED [1] tests/test_requests_batch.py:548: backend does not support batching anymore...
SKIPPED [1] tests/test_requests_batch.py:614: backend does not support batching anymore...
SKIPPED [1] tests/test_requests_batch.py:652: backend does not support batching anymore...
SKIPPED [1] tests/test_websocket_online.py:24: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
SKIPPED [1] tests/test_websocket_online.py:65: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
SKIPPED [1] tests/test_websocket_online.py:95: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
SKIPPED [1] tests/test_websocket_online.py:131: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
SKIPPED [1] tests/test_websocket_online.py:153: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
SKIPPED [1] tests/test_websocket_online.py:205: backend does not support websockets anymore: https://github.com/trevorblades/countries/issues/42
FAILED tests/starwars/test_dsl.py::test_get_introspection_query_ast[True] - AssertionError: assert 'query Intros...    }\n  }\n}' == 'query Intros...    }\n  }\n}'
FAILED tests/starwars/test_dsl.py::test_get_introspection_query_ast[False] - AssertionError: assert 'query Intros...    }\n  }\n}' == 'query Intros...    }\n  }\n}'
FAILED tests/test_async_client_validation.py::test_async_client_validation_fetch_schema_from_server_valid_query[server0] - AssertionError: assert {'__schema': ...ption'}, ...}} == {'__schema': ...ption'}, ...}}
FAILED tests/test_transport.py::test_hero_name_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport.py::test_query_with_variable - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport.py::test_named_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport.py::test_header_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport_batch.py::test_hero_name_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport_batch.py::test_query_with_variable - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport_batch.py::test_named_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
FAILED tests/test_transport_batch.py::test_header_query - requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8000): Max retries exceeded with url: /graphql (Caused by NewConnectionError('<urllib3.connection.HTTPCon...
================================================================= 11 failed, 530 passed, 26 skipped, 446 warnings in 25.86s =================================================================

probably still something is missing in build env but cannot find what 🤔

@leszekhanusz
Copy link
Collaborator

You don't have the correct test/dev dependencies. You can install them in your env with python -m pip install -e.[dev]

The necessary dependencies are:

tests_requires = [                                                                                                      
    "parse==1.15.0",                                                                                                    
    "pytest==7.4.2",                                                                                                    
    "pytest-asyncio==0.21.1",                                                                                           
    "pytest-console-scripts==1.3.1",                                                                                    
    "pytest-cov==5.0.0",                                                                                                
    "mock==4.0.2",                                                                                                      
    "vcrpy==4.4.0",                                                                                                     
    "aiofiles",                                                                                                         
]                                                                                                                       
                                                                                                                        
dev_requires = [                                                                                                        
    "black==22.3.0",                                                                                                    
    "check-manifest>=0.42,<1",                                                                                          
    "flake8==3.8.1",                                                                                                    
    "isort==4.3.21",                                                                                                    
    "mypy==1.10",                                                                                                       
    "sphinx>=5.3.0,<6",                                                                                                 
    "sphinx_rtd_theme>=0.4,<1",                                                                                         
    "sphinx-argparse==0.2.5",                                                                                           
    "types-aiofiles",                                                                                                   
    "types-mock",                                                                                                       
    "types-requests",                                                                                                   
] + tests_requires

@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

You don't have the correct test/dev dependencies. You can install them in your env with python -m pip install -e.[dev]

The necessary dependencies are:

tests_requires = [                                                                                                      
    "parse==1.15.0",                                                                                                    
    "pytest==7.4.2",                                                                                                    
    "pytest-asyncio==0.21.1",                                                                                           
    "pytest-console-scripts==1.3.1",                                                                                    
    "pytest-cov==5.0.0",                                                                                                
    "mock==4.0.2",                                                                                                      
    "vcrpy==4.4.0",                                                                                                     
    "aiofiles",                                                                                                         
]                                                                                                                       

I'm using latest version of above modules. Did you try to unstick versions of above list?

From above list mock can be removed (unittest.mock is used).

[tkloczko@pers-jacek gql-3.5.0]$ grep -r mock
gql-checker/gql_checker/stdlib_list.py:    "unittest.mock",
tests/test_appsync_auth.py:mock_transport_host = "appsyncapp.awsgateway.com.example.org"
tests/test_appsync_auth.py:mock_transport_url = f"https://{mock_transport_host}/graphql"
tests/test_appsync_auth.py:        url=mock_transport_url, session=fake_session_factory()
tests/test_appsync_auth.py:            url=mock_transport_url,
tests/test_appsync_auth.py:    auth = AppSyncJWTAuthentication(host=mock_transport_host, jwt="some-jwt")
tests/test_appsync_auth.py:    sample_transport = AppSyncWebsocketsTransport(url=mock_transport_url, auth=auth)
tests/test_appsync_auth.py:        "host": mock_transport_host,
tests/test_appsync_auth.py:    auth = AppSyncApiKeyAuthentication(host=mock_transport_host, api_key="some-api-key")
tests/test_appsync_auth.py:    sample_transport = AppSyncWebsocketsTransport(url=mock_transport_url, auth=auth)
tests/test_appsync_auth.py:        "host": mock_transport_host,
tests/test_appsync_auth.py:        host=mock_transport_host,
tests/test_appsync_auth.py:        AppSyncWebsocketsTransport(url=mock_transport_url, auth=auth)
tests/test_appsync_auth.py:        host=mock_transport_host,
tests/test_appsync_auth.py:    sample_transport = AppSyncWebsocketsTransport(url=mock_transport_url, auth=auth)
tests/test_appsync_auth.py:        transport = AppSyncWebsocketsTransport(url=mock_transport_url, session=session)
tests/test_client.py:from unittest import mock
tests/test_client.py:@mock.patch("urllib3.connection.HTTPConnection._new_conn")
tests/test_client.py:def test_retries_on_transport(execute_mock):
tests/test_client.py:    execute_mock.side_effect = NewConnectionError(
tests/test_client.py:    assert execute_mock.call_count == expected_retries + 1
tests/test_client.py:    execute_mock.reset_mock()
tests/test_client.py:    assert execute_mock.call_count == expected_retries + 1
setup.py:    "mock==4.0.2",
setup.py:    "types-mock",

coverity is optional. Everything else is installed.

dev_requires = [
"black==22.3.0",
"check-manifest>=0.42,<1",
"flake8==3.8.1",
"isort==4.3.21",
"mypy==1.10",
"sphinx>=5.3.0,<6",
"sphinx_rtd_theme>=0.4,<1",
"sphinx-argparse==0.2.5",
"types-aiofiles",
"types-mock",
"types-requests",
] + tests_requires

None of those modules are used on testing.

@leszekhanusz
Copy link
Collaborator

I'm using latest version of above modules.

That's the current problem. Of course we could and should also bump those dependencies and fix the problems but you should not always expect the code to work if you don't have the versions of the dependencies required.

From above list mock can be removed (unittest.mock is used).

Thanks for your issues and your recommendations. It's done in PR #504

@kloczek
Copy link
Author

kloczek commented Oct 28, 2024

Another suggestion .. please filter all code over pyupgrade --py38-plus and than ruff.
End of this month python 3.8 will b EOSed so it would be good as well filter all code over pyupgrade --py39-plus .

@leszekhanusz
Copy link
Collaborator

Another suggestion .. please filter all code over pyupgrade --py38-plus and than ruff.

I've modified the code with pyupgrade, but I don't see the point of ruff since we are already using black as a code formatter.

@kloczek
Copy link
Author

kloczek commented Oct 29, 2024

Please try to check what can do ruff after black.
ruff is not formater.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: chore Changes to the build process or auxiliary tools and libraries such as documentation generation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants