django / channels

Developer-friendly asynchrony for Django
https://channels.readthedocs.io
BSD 3-Clause "New" or "Revised" License
6.09k stars 800 forks source link

v3.0.5 test failure: AttributeError: 'async_generator' object has no attribute 'send'/'new_channel' #1915

Closed jayvdb closed 2 years ago

jayvdb commented 2 years ago

I am running the v3.0.5 tests on openSUSE Tumbleweed, and seeing the following failures. The dont occur on main or v4 beta

> git checkout 3.0.5
Previous HEAD position was b1f5cd0 Update changelog.
HEAD is now at 6f20a7b Bumped version and release notes for v3.0.5. (#1860)
> tox -e py310
py310 develop-inst-nodeps: /home/jayvdb/django/channels
py310 installed: asgiref==3.5.2,async-timeout==4.0.2,attrs==22.1.0,autobahn==22.7.1,Automat==20.2.0,cffi==1.15.1,-e git+https://github.com/django/channels@6f20a7be026aef046ac3ca0ad76093ec6dcae30f#egg=channels,constantly==15.1.0,coverage==4.5.4,cryptography==37.0.4,daphne==3.0.2,Django==4.1,hyperlink==21.0.0,idna==3.3,incremental==21.3.0,iniconfig==1.1.1,packaging==21.3,pluggy==1.0.0,py==1.11.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pycparser==2.21,pyOpenSSL==22.0.0,pyparsing==3.0.9,pytest==7.1.2,pytest-asyncio==0.19.0,pytest-django==4.5.2,service-identity==21.1.0,six==1.16.0,sqlparse==0.4.2,tomli==2.0.1,Twisted==22.4.0,txaio==22.2.1,typing_extensions==4.3.0,zope.interface==5.4.0
py310 run-test-pre: PYTHONHASHSEED='4198645905'
py310 run-test: commands[0] | pytest -v
============================================================================================================ test session starts ============================================================================================================
platform linux -- Python 3.10.5, pytest-7.1.2, pluggy-1.0.0 -- /home/jayvdb/django/channels/.tox/py310/bin/python
cachedir: .tox/py310/.pytest_cache
rootdir: /home/jayvdb/django/channels, configfile: setup.cfg, testpaths: tests
plugins: django-4.5.2, asyncio-0.19.0
asyncio: mode=strict
collected 79 items                                                                                                                                                                                                                          

...                                                                                                                                                           [ 63%]
tests/test_inmemorychannel.py::test_send_receive FAILED                                                                                                                                                                               [ 64%]
tests/test_inmemorychannel.py::test_send_capacity FAILED                                                                                                                                                                              [ 65%]
tests/test_inmemorychannel.py::test_process_local_send_receive FAILED                                                                                                                                                                 [ 67%]
...

================================================================================================================= FAILURES ==================================================================================================================
_____________________________________________________________________________________________________________ test_send_receive _____________________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f75a15148c0>

    @pytest.mark.asyncio
    async def test_send_receive(channel_layer):
        """
        Makes sure we can send a message to a normal channel then receive it.
        """
>       await channel_layer.send(
            "test-channel-1", {"type": "test.message", "text": "Ahoy-hoy!"}
        )
E       AttributeError: 'async_generator' object has no attribute 'send'

tests/test_inmemorychannel.py:26: AttributeError
____________________________________________________________________________________________________________ test_send_capacity _____________________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f75a1517bc0>

    @pytest.mark.asyncio
    async def test_send_capacity(channel_layer):
        """
        Makes sure we get ChannelFull when we hit the send capacity
        """
>       await channel_layer.send("test-channel-1", {"type": "test.message"})
E       AttributeError: 'async_generator' object has no attribute 'send'

tests/test_inmemorychannel.py:39: AttributeError
______________________________________________________________________________________________________ test_process_local_send_receive ______________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f75a1517e40>

    @pytest.mark.asyncio
    async def test_process_local_send_receive(channel_layer):
        """
        Makes sure we can send a message to a process-local channel then receive it.
        """
>       channel_name = await channel_layer.new_channel()
E       AttributeError: 'async_generator' object has no attribute 'new_channel'

tests/test_inmemorychannel.py:51: AttributeError
============================================================================================================= warnings summary ==============================================================================================================
tests/test_staticfiles.py::test_staticfiles_handler_can_generate_file_path
  /home/jayvdb/django/channels/channels/staticfiles.py:40: DeprecationWarning: Channel's inbuilt http protocol AsgiHandler is deprecated. Use Django's get_asgi_application() instead.
    return await self.staticfiles_handler_class()(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========================================================================================================== short test summary info ==========================================================================================================
FAILED tests/test_inmemorychannel.py::test_send_receive - AttributeError: 'async_generator' object has no attribute 'send'
FAILED tests/test_inmemorychannel.py::test_send_capacity - AttributeError: 'async_generator' object has no attribute 'send'
FAILED tests/test_inmemorychannel.py::test_process_local_send_receive - AttributeError: 'async_generator' object has no attribute 'new_channel'
================================================================================================== 3 failed, 76 passed, 1 warning in 7.24s ==================================================================================================
Task was destroyed but it is pending!
task: <Task pending name='Task-202' coro=<AsyncConsumer.__call__() done, defined at /home/jayvdb/django/channels/channels/consumer.py:37> wait_for=<Task pending name='Task-204' coro=<Queue.get() running at /usr/lib64/python3.10/asyncio/queues.py:159> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-204' coro=<Queue.get() done, defined at /usr/lib64/python3.10/asyncio/queues.py:150> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>
ERROR: InvocationError for command /home/jayvdb/django/channels/.tox/py310/bin/pytest -v (exited with code 1)
__________________________________________________________________________________________________________________ summary __________________________________________________________________________________________________________________
ERROR:   py310: commands failed

Same occurs on docker

> docker run -it --rm python bash -c "pip install tox; git clone --branch 3.0.5 https://github.com/django/channels/; cd channels; tox -e py310-dj40"
Collecting tox
  Downloading tox-3.25.1-py2.py3-none-any.whl (85 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.0/86.0 kB 1.1 MB/s eta 0:00:00
Collecting py>=1.4.17
  Downloading py-1.11.0-py2.py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.7/98.7 kB 1.3 MB/s eta 0:00:00
Collecting six>=1.14.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting pluggy>=0.12.0
  Downloading pluggy-1.0.0-py2.py3-none-any.whl (13 kB)
Collecting packaging>=14
  Downloading packaging-21.3-py3-none-any.whl (40 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.8/40.8 kB 1.2 MB/s eta 0:00:00
Collecting virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0
  Downloading virtualenv-20.16.4-py3-none-any.whl (8.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.8/8.8 MB 1.5 MB/s eta 0:00:00
Collecting toml>=0.9.4
  Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting filelock>=3.0.0
  Downloading filelock-3.8.0-py3-none-any.whl (10 kB)
Collecting pyparsing!=3.0.5,>=2.0.2
  Downloading pyparsing-3.0.9-py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.3/98.3 kB 1.2 MB/s eta 0:00:00
Collecting platformdirs<3,>=2.4
  Downloading platformdirs-2.5.2-py3-none-any.whl (14 kB)
Collecting distlib<1,>=0.3.5
  Downloading distlib-0.3.6-py2.py3-none-any.whl (468 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 468.5/468.5 kB 1.4 MB/s eta 0:00:00
Installing collected packages: distlib, toml, six, pyparsing, py, pluggy, platformdirs, filelock, virtualenv, packaging, tox
Successfully installed distlib-0.3.6 filelock-3.8.0 packaging-21.3 platformdirs-2.5.2 pluggy-1.0.0 py-1.11.0 pyparsing-3.0.9 six-1.16.0 toml-0.10.2 tox-3.25.1 virtualenv-20.16.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip available: 22.2.1 -> 22.2.2
[notice] To update, run: pip install --upgrade pip
Cloning into 'channels'...
remote: Enumerating objects: 7180, done.
remote: Counting objects: 100% (414/414), done.
remote: Compressing objects: 100% (239/239), done.
remote: Total 7180 (delta 241), reused 292 (delta 167), pack-reused 6766
Receiving objects: 100% (7180/7180), 2.02 MiB | 943.00 KiB/s, done.
Resolving deltas: 100% (4836/4836), done.
Note: switching to '6f20a7be026aef046ac3ca0ad76093ec6dcae30f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

py310-dj40 create: /channels/.tox/py310-dj40
py310-dj40 installdeps: Django>=4.0,<5.0
py310-dj40 develop-inst: /channels
py310-dj40 installed: asgiref==3.5.2,async-timeout==4.0.2,attrs==22.1.0,autobahn==22.7.1,Automat==20.2.0,cffi==1.15.1,-e git+https://github.com/django/channels/@6f20a7be026aef046ac3ca0ad76093ec6dcae30f#egg=channels,constantly==15.1.0,coverage==4.5.4,cryptography==37.0.4,daphne==3.0.2,Django==4.1,hyperlink==21.0.0,idna==3.3,incremental==21.3.0,iniconfig==1.1.1,packaging==21.3,pluggy==1.0.0,py==1.11.0,pyasn1==0.4.8,pyasn1-modules==0.2.8,pycparser==2.21,pyOpenSSL==22.0.0,pyparsing==3.0.9,pytest==7.1.2,pytest-asyncio==0.19.0,pytest-django==4.5.2,service-identity==21.1.0,six==1.16.0,sqlparse==0.4.2,tomli==2.0.1,Twisted==22.4.0,txaio==22.2.1,typing_extensions==4.3.0,zope.interface==5.4.0
py310-dj40 run-test-pre: PYTHONHASHSEED='2683219208'
py310-dj40 run-test: commands[0] | pytest -v
============================================================================================================ test session starts ============================================================================================================
platform linux -- Python 3.10.6, pytest-7.1.2, pluggy-1.0.0 -- /channels/.tox/py310-dj40/bin/python
cachedir: .tox/py310-dj40/.pytest_cache
rootdir: /channels, configfile: setup.cfg, testpaths: tests
plugins: django-4.5.2, asyncio-0.19.0
asyncio: mode=strict
collected 79 items                                                                                                                                                                                                                          

tests/test_generic_websocket.py::test_websocket_consumer PASSED                                                                                                                                                                       [  1%]
tests/test_generic_websocket.py::test_multiple_websocket_consumers_with_sessions PASSED                                                                                                                                               [  2%]
tests/test_generic_websocket.py::test_websocket_consumer_subprotocol PASSED                                                                                                                                                           [  3%]
tests/test_generic_websocket.py::test_websocket_consumer_groups PASSED                                                                                                                                                                [  5%]
tests/test_generic_websocket.py::test_json_websocket_consumer PASSED                                                                                                                                                                  [  6%]
tests/test_http.py::test_handler_basic PASSED                                                                                                                                                                                         [  7%]
tests/test_http.py::test_handler_body_single PASSED                                                                                                                                                                                   [  8%]
tests/test_http.py::test_handler_body_multiple PASSED                                                                                                                                                                                 [ 10%]
tests/test_http.py::test_handler_body_ignore_extra PASSED                                                                                                                                                                             [ 11%]
tests/test_http.py::test_handler_concurrent_requests PASSED                                                                                                                                                                           [ 12%]
tests/test_testing.py::test_websocket_communicator PASSED                                                                                                                                                                             [ 13%]
tests/test_testing.py::test_websocket_application PASSED                                                                                                                                                                              [ 15%]
tests/test_testing.py::test_timeout_disconnect PASSED                                                                                                                                                                                 [ 16%]
tests/test_testing.py::test_connection_scope[user:pass@example.com:8080/p/a/t/h?query=string#hash] PASSED                                                                                                                             [ 17%]
tests/test_testing.py::test_connection_scope[wss://user:pass@example.com:8080/p/a/t/h?query=string#hash] PASSED                                                                                                                       [ 18%]
tests/test_testing.py::test_connection_scope[ws://www.example.com/%E9%A6%96%E9%A1%B5/index.php?foo=%E9%A6%96%E9%A1%B5&spam=eggs] PASSED                                                                                               [ 20%]
tests/test_http.py::test_sessions PASSED                                                                                                                                                                                              [ 21%]
tests/test_http.py::test_session_samesite[Strict] PASSED                                                                                                                                                                              [ 22%]
tests/test_http.py::test_session_samesite[None] PASSED                                                                                                                                                                                [ 24%]
tests/test_http.py::test_session_samesite_invalid PASSED                                                                                                                                                                              [ 25%]
tests/test_http.py::test_muliple_sessions PASSED                                                                                                                                                                                      [ 26%]
tests/security/test_auth.py::test_login_no_session_in_scope PASSED                                                                                                                                                                    [ 27%]
tests/security/test_auth.py::test_login_no_user_in_scope PASSED                                                                                                                                                                       [ 29%]
tests/security/test_auth.py::test_login_user_as_argument PASSED                                                                                                                                                                       [ 30%]
tests/security/test_auth.py::test_login_user_on_scope PASSED                                                                                                                                                                          [ 31%]
tests/security/test_auth.py::test_login_change_user PASSED                                                                                                                                                                            [ 32%]
tests/security/test_auth.py::test_logout PASSED                                                                                                                                                                                       [ 34%]
tests/security/test_auth.py::test_logout_not_logged_in PASSED                                                                                                                                                                         [ 35%]
tests/test_deprecations.py::test_automatical_http_protocol_registration_deprecation PASSED                                                                                                                                            [ 36%]
tests/test_deprecations.py::test_asgi_handler_deprecation PASSED                                                                                                                                                                      [ 37%]
tests/test_generic_http.py::test_async_http_consumer PASSED                                                                                                                                                                           [ 39%]
tests/test_generic_http.py::test_per_scope_consumers PASSED                                                                                                                                                                           [ 40%]
tests/test_generic_websocket.py::test_async_websocket_consumer PASSED                                                                                                                                                                 [ 41%]
tests/test_generic_websocket.py::test_async_websocket_consumer_subprotocol PASSED                                                                                                                                                     [ 43%]
tests/test_generic_websocket.py::test_async_websocket_consumer_groups PASSED                                                                                                                                                          [ 44%]
tests/test_generic_websocket.py::test_async_websocket_consumer_specific_channel_layer PASSED                                                                                                                                          [ 45%]
tests/test_generic_websocket.py::test_async_json_websocket_consumer PASSED                                                                                                                                                            [ 46%]
tests/test_generic_websocket.py::test_block_underscored_type_function_call PASSED                                                                                                                                                     [ 48%]
tests/test_generic_websocket.py::test_block_leading_dot_type_function_call PASSED                                                                                                                                                     [ 49%]
tests/test_http.py::RequestTests::test_basic PASSED                                                                                                                                                                                   [ 50%]
tests/test_http.py::RequestTests::test_extended PASSED                                                                                                                                                                                [ 51%]
tests/test_http.py::RequestTests::test_latin1_headers PASSED                                                                                                                                                                          [ 53%]
tests/test_http.py::RequestTests::test_post PASSED                                                                                                                                                                                    [ 54%]
tests/test_http.py::RequestTests::test_post_files PASSED                                                                                                                                                                              [ 55%]
tests/test_http.py::RequestTests::test_reading_body_after_stream_raises PASSED                                                                                                                                                        [ 56%]
tests/test_http.py::RequestTests::test_script_name PASSED                                                                                                                                                                             [ 58%]
tests/test_http.py::RequestTests::test_size_check_ignores_files PASSED                                                                                                                                                                [ 59%]
tests/test_http.py::RequestTests::test_size_exceeded PASSED                                                                                                                                                                           [ 60%]
tests/test_http.py::RequestTests::test_stream PASSED                                                                                                                                                                                  [ 62%]
tests/test_http.py::MiddlewareTests::test_middleware_caching PASSED                                                                                                                                                                   [ 63%]
tests/test_inmemorychannel.py::test_send_receive FAILED                                                                                                                                                                               [ 64%]
tests/test_inmemorychannel.py::test_send_capacity FAILED                                                                                                                                                                              [ 65%]
tests/test_inmemorychannel.py::test_process_local_send_receive FAILED                                                                                                                                                                 [ 67%]
tests/test_inmemorychannel.py::test_multi_send_receive PASSED                                                                                                                                                                         [ 68%]
tests/test_inmemorychannel.py::test_groups_basic PASSED                                                                                                                                                                               [ 69%]
tests/test_inmemorychannel.py::test_groups_channel_full PASSED                                                                                                                                                                        [ 70%]
tests/test_inmemorychannel.py::test_expiry_single PASSED                                                                                                                                                                              [ 72%]
tests/test_inmemorychannel.py::test_expiry_unread PASSED                                                                                                                                                                              [ 73%]
tests/test_inmemorychannel.py::test_expiry_multi PASSED                                                                                                                                                                               [ 74%]
tests/test_layers.py::TestChannelLayerManager::test_config_error PASSED                                                                                                                                                               [ 75%]
tests/test_layers.py::TestChannelLayerManager::test_config_instance PASSED                                                                                                                                                            [ 77%]
tests/test_layers.py::TestChannelLayerManager::test_override_settings PASSED                                                                                                                                                          [ 78%]
tests/test_layers.py::test_send_receive PASSED                                                                                                                                                                                        [ 79%]
tests/test_routing.py::test_protocol_type_router PASSED                                                                                                                                                                               [ 81%]
tests/test_routing.py::test_channel_name_router PASSED                                                                                                                                                                                [ 82%]
tests/test_routing.py::test_url_router PASSED                                                                                                                                                                                         [ 83%]
tests/test_routing.py::test_url_router_nesting PASSED                                                                                                                                                                                 [ 84%]
tests/test_routing.py::test_url_router_nesting_path PASSED                                                                                                                                                                            [ 86%]
tests/test_routing.py::test_url_router_path PASSED                                                                                                                                                                                    [ 87%]
tests/test_routing.py::test_path_remaining PASSED                                                                                                                                                                                     [ 88%]
tests/test_routing.py::test_invalid_routes PASSED                                                                                                                                                                                     [ 89%]
tests/test_staticfiles.py::test_staticfiles_wrapper_serves_static_http_requests PASSED                                                                                                                                                [ 91%]
tests/test_staticfiles.py::test_staticfiles_wrapper_calls_application_for_non_static_http_requests PASSED                                                                                                                             [ 92%]
tests/test_staticfiles.py::test_staticfiles_wrapper_calls_application_for_non_http_paths PASSED                                                                                                                                       [ 93%]
tests/test_staticfiles.py::test_staticfiles_wrapper_calls_application_if_static_url_has_host PASSED                                                                                                                                   [ 94%]
tests/test_staticfiles.py::test_is_single_callable PASSED                                                                                                                                                                             [ 96%]
tests/test_staticfiles.py::test_staticfiles_handler_can_generate_file_path PASSED                                                                                                                                                     [ 97%]
tests/test_testing.py::test_http_communicator PASSED                                                                                                                                                                                  [ 98%]
tests/security/test_websocket.py::test_origin_validator PASSED                                                                                                                                                                        [100%]

================================================================================================================= FAILURES ==================================================================================================================
_____________________________________________________________________________________________________________ test_send_receive _____________________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f5f7aacf340>

    @pytest.mark.asyncio
    async def test_send_receive(channel_layer):
        """
        Makes sure we can send a message to a normal channel then receive it.
        """
>       await channel_layer.send(
            "test-channel-1", {"type": "test.message", "text": "Ahoy-hoy!"}
        )
E       AttributeError: 'async_generator' object has no attribute 'send'

tests/test_inmemorychannel.py:26: AttributeError
____________________________________________________________________________________________________________ test_send_capacity _____________________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f5f7aacfdc0>

    @pytest.mark.asyncio
    async def test_send_capacity(channel_layer):
        """
        Makes sure we get ChannelFull when we hit the send capacity
        """
>       await channel_layer.send("test-channel-1", {"type": "test.message"})
E       AttributeError: 'async_generator' object has no attribute 'send'

tests/test_inmemorychannel.py:39: AttributeError
______________________________________________________________________________________________________ test_process_local_send_receive ______________________________________________________________________________________________________

channel_layer = <async_generator object channel_layer at 0x7f5f7aacfd40>

    @pytest.mark.asyncio
    async def test_process_local_send_receive(channel_layer):
        """
        Makes sure we can send a message to a process-local channel then receive it.
        """
>       channel_name = await channel_layer.new_channel()
E       AttributeError: 'async_generator' object has no attribute 'new_channel'

tests/test_inmemorychannel.py:51: AttributeError
============================================================================================================= warnings summary ==============================================================================================================
tests/test_staticfiles.py::test_staticfiles_handler_can_generate_file_path
  /channels/channels/staticfiles.py:40: DeprecationWarning: Channel's inbuilt http protocol AsgiHandler is deprecated. Use Django's get_asgi_application() instead.
    return await self.staticfiles_handler_class()(

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
========================================================================================================== short test summary info ==========================================================================================================
FAILED tests/test_inmemorychannel.py::test_send_receive - AttributeError: 'async_generator' object has no attribute 'send'
FAILED tests/test_inmemorychannel.py::test_send_capacity - AttributeError: 'async_generator' object has no attribute 'send'
FAILED tests/test_inmemorychannel.py::test_process_local_send_receive - AttributeError: 'async_generator' object has no attribute 'new_channel'
================================================================================================== 3 failed, 76 passed, 1 warning in 7.50s ==================================================================================================
Task was destroyed but it is pending!
task: <Task pending name='Task-116' coro=<Queue.get() running at /usr/local/lib/python3.10/asyncio/queues.py:159> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>
Task was destroyed but it is pending!
task: <Task pending name='Task-114' coro=<CookieMiddleware.__call__() running at /channels/channels/sessions.py:47> wait_for=<Task pending name='Task-116' coro=<Queue.get() done, defined at /usr/local/lib/python3.10/asyncio/queues.py:150> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-202' coro=<AsyncConsumer.__call__() done, defined at /channels/channels/consumer.py:37> wait_for=<Task pending name='Task-204' coro=<Queue.get() running at /usr/local/lib/python3.10/asyncio/queues.py:159> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>>
Task was destroyed but it is pending!
task: <Task pending name='Task-204' coro=<Queue.get() done, defined at /usr/local/lib/python3.10/asyncio/queues.py:150> wait_for=<Future cancelled> cb=[Task.task_wakeup()]>
ERROR: InvocationError for command /channels/.tox/py310-dj40/bin/pytest -v (exited with code 1)
__________________________________________________________________________________________________________________ summary __________________________________________________________________________________________________________________
ERROR:   py310-dj40: commands failed
carltongibson commented 2 years ago

This is due to the breaking change in pytest-asyncio 0.19. It was fixed in 1fcb4252a195fb98b30f923a874cae9d6c58f424