Skip to content

Bump aiohttp from 3.13.5 to 3.14.0#163

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/aiohttp-3.14.0
Open

Bump aiohttp from 3.13.5 to 3.14.0#163
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/aiohttp-3.14.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jun 3, 2026

Copy link
Copy Markdown
Contributor

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code labels Jun 3, 2026
@codecov

codecov Bot commented Jun 4, 2026

Copy link
Copy Markdown

❌ 31 Tests Failed:

Tests completed Failed Passed Skipped
571 31 540 5
View the top 3 failed test(s) by shortest run time
tests.apps.animal_test::test_get_dog_image_url_empty_url
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52c55250>

    @pytest.mark.anyio
    async def test_get_dog_image_url_empty_url(response_mock):
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": ""},
        )
        with pytest.raises(APIServerError):
>           await get_dog_image_url(1.0)

tests/apps/animal_test.py:213: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 200
body = b'{"status": "success", "message": ""}'
content_type = 'application/json'
payload = {'message': '', 'status': 'success'}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_dog_image_url_no_url
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52b30490>

    @pytest.mark.anyio
    async def test_get_dog_image_url_no_url(response_mock):
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success"},
        )
        with pytest.raises(APIServerError):
>           await get_dog_image_url(1.0)

tests/apps/animal_test.py:203: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 200, body = b'{"status": "success"}'
content_type = 'application/json', payload = {'status': 'success'}
headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_dog_image_url_server_error
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc67529010>

    @pytest.mark.anyio
    async def test_get_dog_image_url_server_error(response_mock):
        response_mock.get(
            DOG_API_URL,
            status=500,
        )
        with pytest.raises(APIServerError):
>           await get_dog_image_url(1.0)

tests/apps/animal_test.py:178: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 500, body = b''
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Internal Server Error'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_dog_image_url_timeout
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52d7bdf0>

    @pytest.mark.anyio
    async def test_get_dog_image_url_timeout(response_mock):
        URL_TIMEOUT = "http://dog.com/timeout.jpg"
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": URL_TIMEOUT},
        )
        response_mock.get(
            URL_TIMEOUT,
            exception=TimeoutError(),
        )
        with pytest.raises(TimeoutError):
>           await get_dog_image_url(10.0)

tests/apps/animal_test.py:193: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 200
body = b'{"status": "success", "message": "http://dog.com/timeout.jpg"}'
content_type = 'application/json'
payload = {'message': 'http://dog.com/timeout.jpg', 'status': 'success'}
headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_fox_image_url
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52b83150>

    @pytest.mark.anyio
    async def test_get_fox_image_url(response_mock):
        IMAGE_URL = "http://fox.com/img1.png"
        response_mock.get(
            FOX_GALLERY_URL,
            body=(
                '<div id="gallery-0">'
                '<img src="http://fox.com/not-gallery-0.png" class="attachment-thumbnail">'
                "</div>"
                '<div id="gallery-1">'
                '<img src="http://fox.com/not-thumbnail.png">'
                f'<img src="{IMAGE_URL}" class="attachment-thumbnail">'
                '<img src="http://fox.com/img2.png" class="attachment-thumbnail">'
                '<img src="http://fox.com/img3.png" class="attachment-thumbnail">'
                "</div>"
            ),
            headers={"Content-Type": "text/html"},
        )
>       url = await get_fox_image_url(0.001)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/apps/animal_test.py:291: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:91: in get_fox_image_url
    session.get(FOX_GALLERY_URL) as resp,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('http://fox-info.net/fox-gallery')
url = URL('http://fox-info.net/fox-gallery'), method = 'get'
request_headers = {}, status = 200
body = b'<div id="gallery-0"><img src="http://fox.com/not-gallery-0.png" class="attachment-thumbnail"></div><div id="gallery-.../fox.com/img2.png" class="attachment-thumbnail"><img src="http://fox.com/img3.png" class="attachment-thumbnail"></div>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_fox_image_url_no_image
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52d8a210>

    @pytest.mark.anyio
    async def test_get_fox_image_url_no_image(response_mock):
        response_mock.get(
            FOX_GALLERY_URL,
            body="<!doctype html><html></html>",
            headers={"Content-Type": "text/html"},
        )
        with pytest.raises(APIServerError):
>           await get_fox_image_url(0.001)

tests/apps/animal_test.py:270: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:91: in get_fox_image_url
    session.get(FOX_GALLERY_URL) as resp,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('http://fox-info.net/fox-gallery')
url = URL('http://fox-info.net/fox-gallery'), method = 'get'
request_headers = {}, status = 200, body = b'<!doctype html><html></html>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_fox_image_url_server_error
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52b2b5c0>

    @pytest.mark.anyio
    async def test_get_fox_image_url_server_error(response_mock):
        response_mock.get(
            FOX_GALLERY_URL,
            status=500,
        )
        with pytest.raises(APIServerError):
>           await get_fox_image_url(1.0)

tests/apps/animal_test.py:259: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:91: in get_fox_image_url
    session.get(FOX_GALLERY_URL) as resp,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('http://fox-info.net/fox-gallery')
url = URL('http://fox-info.net/fox-gallery'), method = 'get'
request_headers = {}, status = 500, body = b''
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Internal Server Error'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.packtpub_test::test_auto_packtpub_dotd
Stack Traces | 0.004s run time
bot_config = Config(DEBUG=True, RECEIVE_TIMEOUT=300, REGISTER_CRONTAB=False, PREFIX='', APPS=(), DATABASE_URL='postgresql+psycopg:/..._TOKEN', BOT_TOKEN='TEST_BOT_TOKEN', CHANNELS={'general': 'C0FFEE'}, USERS={'owner': 'U0000'}, WEBSOCKETDEBUGGERURL='')
response_mock = <aioresponses.core.aioresponses object at 0x7efc529a13b0>
channel_id = 'C0FFEE'

    @pytest.mark.anyio
    @travel(datetime(2018, 10, 7), tick=False)
    async def test_auto_packtpub_dotd(bot_config, response_mock, channel_id):
        title = "test book"
        image_url = "test url"
        response_mock.get(
            "https://www.packtpub.com/free-learning",
            body=MOCK_BODY.format(title=title, image_url=image_url),
            headers={"Content-Type": "text/html"},
        )
    
        bot_config.CHANNELS = {
            "general": channel_id,
        }
        bot = FakeBot(bot_config)
    
>       await auto_packtpub_dotd(bot)

.../apps/info/packtpub_test.py:123: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/packtpub/tasks.py:7: in auto_packtpub_dotd
    await say_packtpub_dotd(bot, bot.config.CHANNELS["general"])
.../info/packtpub/commons.py:19: in say_packtpub_dotd
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://www.packtpub.com/free-learning')
url = URL('https://www.packtpub.com/free-learning'), method = 'get'
request_headers = <CIMultiDict('User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36')>
status = 200
body = b'<!doctype html>\n<html>\n<main class="product">\n<h3 class="product-info__title">Free eBook - test book</h3>\n<img class="product-image" src="test url" alt="">\n</main>\n</html>\n'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.packtpub_test::test_no_packtpub_dotd
Stack Traces | 0.004s run time
bot = <tests.util.FakeBot object at 0x7efc52adcd50>
response_mock = <aioresponses.core.aioresponses object at 0x7efc529949f0>

    @pytest.mark.anyio
    @travel(datetime(2018, 10, 7), tick=False)
    async def test_no_packtpub_dotd(bot, response_mock):
        response_mock.get(
            "https://www.packtpub.com/free-learning",
            body="""\
    <!doctype html>
    <html>
    <main class="product">
    <p>Something else</p>
    </main>
    </html>
    """,
            headers={"Content-Type": "text/html"},
        )
    
        event = bot.create_message()
    
>       await packtpub_dotd(bot, event)

.../apps/info/packtpub_test.py:45: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/packtpub/commands.py:17: in packtpub_dotd
    await say_packtpub_dotd(bot, event.channel)
.../info/packtpub/commons.py:19: in say_packtpub_dotd
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://www.packtpub.com/free-learning')
url = URL('https://www.packtpub.com/free-learning'), method = 'get'
request_headers = <CIMultiDict('User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36')>
status = 200
body = b'<!doctype html>\n<html>\n<main class="product">\n<p>Something else</p>\n</main>\n</html>\n'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.packtpub_test::test_packtpub_dotd
Stack Traces | 0.004s run time
bot = <tests.util.FakeBot object at 0x7efc52859e50>
response_mock = <aioresponses.core.aioresponses object at 0x7efc529a6df0>

    @pytest.mark.anyio
    @travel(datetime(2018, 10, 7), tick=False)
    async def test_packtpub_dotd(bot, response_mock):
        title = "test book"
        image_url = "test url"
        response_mock.get(
            "https://www.packtpub.com/free-learning",
            body=MOCK_BODY.format(title=title, image_url=image_url),
            headers={"Content-Type": "text/html"},
        )
    
        event = bot.create_message()
    
>       await packtpub_dotd(bot, event)

.../apps/info/packtpub_test.py:66: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/packtpub/commands.py:17: in packtpub_dotd
    await say_packtpub_dotd(bot, event.channel)
.../info/packtpub/commons.py:19: in say_packtpub_dotd
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://www.packtpub.com/free-learning')
url = URL('https://www.packtpub.com/free-learning'), method = 'get'
request_headers = <CIMultiDict('User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36')>
status = 200
body = b'<!doctype html>\n<html>\n<main class="product">\n<h3 class="product-info__title">Free eBook - test book</h3>\n<img class="product-image" src="test url" alt="">\n</main>\n</html>\n'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.search.subway_test::test_get_shortest_route_fail
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52437c50>
time = datetime.datetime(2026, 6, 5, 9, 0, tzinfo=zoneinfo.ZoneInfo(key='Asia/Seoul'))
start_id = '133', goal_id = '1914'

    @pytest.mark.anyio
    async def test_get_shortest_route_fail(response_mock, time, start_id, goal_id):
        url = URL(
            "https://map.naver..../api/pubtrans/subway-directions",
        ).with_query(
            start=start_id,
            goal=goal_id,
            departureTime=time.strftime("%Y-%m-%dT%H:%M:%S") + "+09:00",
        )
        response_mock.get(
            url,
            payload={"error": "error"},
        )
        response_mock.get(
            url,
            payload={"paths": []},
        )
        with pytest.raises(ValueError):
>           await get_shortest_route(
                REGION_TABLE["수도권"][0],
                start_id,
                goal_id,
                time,
            )

.../apps/search/subway_test.py:278: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/search/subway.py:138: in get_shortest_route
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://map.naver..../api/pubtrans/subway-directions?departureTime=2026-06-05T09%253A00%253A00%252B09%253A00&goal=1914&start=133')
url = URL('https://map.naver..../api/pubtrans/subway-directions?departureTime=2026-06-05T09%253A00%253A00%252B09%253A00&goal=1914&start=133')
method = 'get'
request_headers = <CIMultiDict('User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36', 'Referer': 'https://map.naver..../p/subway/1000/-/-/-')>
status = 200, body = b'{"error": "error"}', content_type = 'application/json'
payload = {'error': 'error'}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.weather.geo_test::test_get_weather_google_427
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc5390afd0>
unavailable_address = 'WRONG'

    @pytest.mark.anyio
    async def test_get_weather_google_427(
        response_mock,
        unavailable_address,
    ):
        key = "XXX"
        response_mock.get(
            URL("https://maps.googleapis..../api/geocode/json").with_query(
                region="kr",
                address=unavailable_address,
                key=key,
            ),
            payload={
                "results": [],
            },
            status=427,
        )
        with pytest.raises(WeatherResponseError):
>           await get_geometric_info_by_address(
                unavailable_address,
                key,
            )

.../apps/weather/geo_test.py:75: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/weather/geo.py:21: in get_geometric_info_by_address
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://maps.googleapis..../api/geocode/json?address=WRONG&key=XXX&region=kr')
url = URL('https://maps.googleapis..../api/geocode/json?address=WRONG&key=XXX&region=kr')
method = 'get', request_headers = <CIMultiDict('Accept-Language': 'ko-KR')>
status = 427, body = b'{"results": []}', content_type = 'application/json'
payload = {'results': []}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = ''

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.weather.geo_test::test_get_weather_wrong_geometric_info
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc4afa8650>
unavailable_address = 'WRONG'

    @pytest.mark.anyio
    async def test_get_weather_wrong_geometric_info(
        response_mock,
        unavailable_address,
    ):
        key = "XXX"
        response_mock.get(
            URL("https://maps.googleapis..../api/geocode/json").with_query(
                region="kr",
                address=unavailable_address,
                key=key,
            ),
            payload={
                "results": [],
            },
        )
        with pytest.raises(IndexError):
>           await get_geometric_info_by_address(
                unavailable_address,
                key,
            )

.../apps/weather/geo_test.py:51: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/weather/geo.py:21: in get_geometric_info_by_address
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://maps.googleapis..../api/geocode/json?address=WRONG&key=XXX&region=kr')
url = URL('https://maps.googleapis..../api/geocode/json?address=WRONG&key=XXX&region=kr')
method = 'get', request_headers = <CIMultiDict('Accept-Language': 'ko-KR')>
status = 200, body = b'{"results": []}', content_type = 'application/json'
payload = {'results': []}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.weather.weather_test::test_get_weather_with_bad_json
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc525a7c50>
address = '부천'

    @pytest.mark.anyio
    async def test_get_weather_with_bad_json(response_mock, address):
        response_mock.get(
            "https://item4.net/api/weather/",
            body="[}",
            status=200,
        )
    
        with pytest.raises(WeatherResponseError, match="JSON 파싱 실패"):
>           await get_weather_by_keyword(address)

.../apps/weather/weather_test.py:43: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/weather/weather.py:114: in get_weather_by_keyword
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://item4.net/api/weather/')
url = URL('https://item4.net/api/weather/'), method = 'get'
request_headers = {}, status = 200, body = b'[}'
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.weather.weather_test::test_get_weather_with_bad_response
Stack Traces | 0.004s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc539d8950>
address = '부천'

    @pytest.mark.anyio
    async def test_get_weather_with_bad_response(response_mock, address):
        response_mock.get(
            "https://item4.net/api/weather/",
            payload={},
            status=400,
        )
    
        with pytest.raises(WeatherResponseError, match="Bad HTTP Response"):
>           await get_weather_by_keyword(address)

.../apps/weather/weather_test.py:31: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/weather/weather.py:114: in get_weather_by_keyword
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://item4.net/api/weather/')
url = URL('https://item4.net/api/weather/'), method = 'get'
request_headers = {}, status = 400, body = b'{}'
content_type = 'application/json', payload = {}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Bad Request'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_cat_image_url_server_error
Stack Traces | 0.005s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52dae270>

    @pytest.mark.anyio
    async def test_get_cat_image_url_server_error(response_mock):
        response_mock.get(
            CAT_API_URL,
            status=500,
        )
        with pytest.raises(APIServerError):
>           await get_cat_image_url(1.0)

tests/apps/animal_test.py:41: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 500, body = b''
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Internal Server Error'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.compute.exchange_test::test_exchange_error
Stack Traces | 0.005s run time
bot = <tests.util.FakeBot object at 0x7efc75c69f50>
response_mock = <aioresponses.core.aioresponses object at 0x7efc52c6e390>

    @pytest.mark.anyio
    async def test_exchange_error(bot, response_mock):
        response_mock.get(
            URL("https://api.manana.kr/exchange/rate.json").with_query(
                base="KRW",
                code="JPY",
            ),
            payload=[False],
        )
        event = bot.create_message()
    
>       await exchange(bot, event, "100엔")

.../apps/compute/exchange_test.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/compute/exchange.py:100: in exchange
    data = await get_exchange_rate(base, to, timeout=timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../apps/compute/exchange.py:62: in get_exchange_rate
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://api.manana.kr/exchange/rate.json?base=KRW&code=JPY')
url = URL('https://api.manana.kr/exchange/rate.json?base=KRW&code=JPY')
method = 'get', request_headers = {}, status = 200, body = b'[false]'
content_type = 'application/json', payload = [False], headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.bot_test::test_call
Stack Traces | 0.006s run time
bot_config = Config(DEBUG=True, RECEIVE_TIMEOUT=300, REGISTER_CRONTAB=False, PREFIX='', APPS=(), DATABASE_URL='postgresql+psycopg:/...APP_TOKEN='TEST_APP_TOKEN', BOT_TOKEN='TEST_BOT_TOKEN', CHANNELS={}, USERS={'owner': 'U0000'}, WEBSOCKETDEBUGGERURL='')
response_mock = <aioresponses.core.aioresponses object at 0x7efc538cce50>

    @pytest.mark.anyio
    async def test_call(bot_config, response_mock):
        token = "asdf1234"  # noqa: S105
    
        response_mock.post(
            "https://slack.com/api/test11",
            payload={"res": "hello world!"},
        )
        response_mock.post(
            "https://slack.com/api/test12",
            payload={"res": "hello world!", "data": {"extra": "wow"}},
        )
    
        response_mock.post(
            "https://slack.com/api/test21",
            payload={"error": "aaa"},
            status=404,
        )
        response_mock.post(
            "https://slack.com/api/test22",
            payload={"error": "aaa"},
            status=404,
        )
        response_mock.post(
            "https://slack.com/api/test3",
            payload={"res": "hello world!"},
        )
        response_mock.post(
            "https://slack.com/api/test4",
            body="error",
            content_type="text/plain",
        )
    
        box = Box()
        async with Bot(bot_config, using_box=box) as bot:
            bot.api.throttle_interval = defaultdict(lambda: timedelta(0))
    
>           resp = await bot.call("test11")
                   ^^^^^^^^^^^^^^^^^^^^^^^^

tests/bot_test.py:74: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/bot.py:362: in call
    session.post(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://slack.com/api/test11')
url = URL('https://slack.com/api/test11'), method = 'post'
request_headers = <CIMultiDict('Content-Type': 'application/x-www-form-urlencoded')>
status = 200, body = b'{"res": "hello world!"}'
content_type = 'application/json', payload = {'res': 'hello world!'}
headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.bot_test::test_call_json
Stack Traces | 0.006s run time
bot_config = Config(DEBUG=True, RECEIVE_TIMEOUT=300, REGISTER_CRONTAB=False, PREFIX='', APPS=(), DATABASE_URL='postgresql+psycopg:/...APP_TOKEN='TEST_APP_TOKEN', BOT_TOKEN='TEST_BOT_TOKEN', CHANNELS={}, USERS={'owner': 'U0000'}, WEBSOCKETDEBUGGERURL='')
response_mock = <aioresponses.core.aioresponses object at 0x7efc53a30650>
channel_id = 'C0FFEE'

    @pytest.mark.anyio
    async def test_call_json(bot_config, response_mock, channel_id):
        response_mock.post(
            "https://slack.com/api/chat.postMessage",
            payload={"ok": True},
        )
    
        box = Box()
        async with Bot(bot_config, using_box=box) as bot:
            bot.api.throttle_interval = defaultdict(lambda: timedelta(0))
    
>           resp = await bot.api.chat.postMessage(channel_id, "hello world!")
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/bot_test.py:122: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/api/chat.py:160: in postMessage
    return await self._call(
yui/api/endpoint.py:49: in _call
    return await self.bot.call(
yui/bot.py:362: in call
    session.post(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://slack.com/api/chat.postMessage')
url = URL('https://slack.com/api/chat.postMessage'), method = 'post'
request_headers = <CIMultiDict('Content-Type': 'application/json; charset=utf-8', 'Authorization': 'Bearer TEST_BOT_TOKEN')>
status = 200, body = b'{"ok": true}', content_type = 'application/json'
payload = {'ok': True}, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.weather.commands_test::test_weather_command_server_error
Stack Traces | 0.009s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc539e7150>
bot = <tests.util.FakeBot object at 0x7efc5275f8d0>, address = '부천'

    @pytest.mark.anyio
    async def test_weather_command_server_error(
        response_mock,
        bot,
        address,
    ):
        response_mock.get(
            "https://item4.net/api/weather/",
            body="[}",
        )
        event = bot.create_message()
    
>       await weather(bot, event, address)

.../apps/weather/commands_test.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../apps/weather/commands.py:32: in weather
    result = await get_weather_by_keyword(keyword)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.../apps/weather/weather.py:114: in get_weather_by_keyword
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://item4.net/api/weather/')
url = URL('https://item4.net/api/weather/'), method = 'get'
request_headers = {}, status = 200, body = b'[}'
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_dog_command
Stack Traces | 0.01s run time
bot = <tests.util.FakeBot object at 0x7efc52b82510>
response_mock = <aioresponses.core.aioresponses object at 0x7efc524894a0>

    @pytest.mark.anyio
    async def test_dog_command(bot, response_mock):
        response_mock.get(
            DOG_API_URL,
            status=500,
        )
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": "http://dog.com/200.jpg"},
        )
        response_mock.get(
            DOG_API_URL,
            status=500,
        )
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": "http://dog.com/200.jpg"},
        )
        response_mock.get("http://dog.com/200.jpg")
        response_mock.get("http://dog.com/200.jpg")
    
        event = bot.create_message()
    
        last_call = await bot.cache.get(f"YUI_APPS_ANIMAL_DOG_{event.channel}")
        assert last_call is None
    
>       await dog(bot, event)

tests/apps/animal_test.py:441: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:184: in dog
    url = await get_dog_image_url(timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 500, body = b''
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Internal Server Error'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_fox_command
Stack Traces | 0.01s run time
bot = <tests.util.FakeBot object at 0x7efc52cdcbb0>
response_mock = <aioresponses.core.aioresponses object at 0x7efc52c6cb90>

    @pytest.mark.anyio
    async def test_fox_command(bot, response_mock):
        response_mock.get(
            FOX_GALLERY_URL,
            body="<!doctype html><html></html>",
            headers={"Content-Type": "text/html"},
        )
        response_mock.get(
            FOX_GALLERY_URL,
            body=(
                '<div id="gallery-1">'
                '<img src="http://fox.com/img1.png" class="attachment-thumbnail">'
                '<img src="http://fox.com/img2.png" class="attachment-thumbnail">'
                '<img src="http://fox.com/img3.png" class="attachment-thumbnail">'
                "</div>"
            ),
            headers={"Content-Type": "text/html"},
        )
        response_mock.get(
            FOX_GALLERY_URL,
            body="<!doctype html><html></html>",
            headers={"Content-Type": "text/html"},
        )
        response_mock.get(
            FOX_GALLERY_URL,
            body=(
                '<div id="gallery-1">'
                '<img src="http://fox.com/img1.png" class="attachment-thumbnail">'
                '<img src="http://fox.com/img2.png" class="attachment-thumbnail">'
                '<img src="http://fox.com/img3.png" class="attachment-thumbnail">'
                "</div>"
            ),
            headers={"Content-Type": "text/html"},
        )
        event = bot.create_message()
    
        last_call = await bot.cache.get(f"YUI_APPS_ANIMAL_FOX_{event.channel}")
        assert last_call is None
    
>       await fox(bot, event)

tests/apps/animal_test.py:558: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:231: in fox
    url = await get_fox_image_url(timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yui/apps/animal.py:91: in get_fox_image_url
    session.get(FOX_GALLERY_URL) as resp,
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('http://fox-info.net/fox-gallery')
url = URL('http://fox-info.net/fox-gallery'), method = 'get'
request_headers = {}, status = 200, body = b'<!doctype html><html></html>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/html'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_cat_command
Stack Traces | 0.025s run time
bot = <tests.util.FakeBot object at 0x7efc52b28500>
response_mock = <aioresponses.core.aioresponses object at 0x7efc52b53d90>

    @pytest.mark.anyio
    async def test_cat_command(bot, response_mock):
        response_mock.get(
            CAT_API_URL,
            status=500,
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                "<url>http://cat.com/200.jpg</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get(
            CAT_API_URL,
            status=500,
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                "<url>http://cat.com/200.jpg</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get("http://cat.com/200.jpg")
        response_mock.get("http://cat.com/200.jpg")
    
        event = bot.create_message()
    
        last_call = await bot.cache.get(f"YUI_APPS_ANIMAL_CAT_{event.channel}")
        assert last_call is None
    
>       await cat(bot, event)

tests/apps/animal_test.py:337: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:137: in cat
    url = await get_cat_image_url(timeout)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 500, body = b''
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'Internal Server Error'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.rss_test::test_add_empty_body
Stack Traces | 0.043s run time
bot = <tests.util.FakeBot object at 0x7efc52596450>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7efc52456ba0>
response_mock = <aioresponses.core.aioresponses object at 0x7efc52594ad0>

    @pytest.mark.anyio
    async def test_add_empty_body(bot, fx_sess, response_mock):
        response_mock.get(
            URL("https://test.dev/rss.xml"),
            body=b"",
        )
        r = RSS()
    
        event = bot.create_message()
    
>       await r.add(bot, event, fx_sess, "https://test.dev/rss.xml")

.../apps/info/rss_test.py:97: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/rss/commands.py:67: in add
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://test.dev/rss.xml')
url = URL('https://test.dev/rss.xml'), method = 'get', request_headers = {}
status = 200, body = b'', content_type = 'application/json', payload = None
headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.rss_test::test_add_success
Stack Traces | 0.043s run time
bot = <tests.util.FakeBot object at 0x7efc528bebd0>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7efc52925e80>
response_mock = <aioresponses.core.aioresponses object at 0x7efc529d28d0>

    @pytest.mark.anyio
    async def test_add_success(bot, fx_sess, response_mock):
        response_mock.get(
            URL("https://test.dev/rss.xml"),
            body="""\
    <rss xmlns:c="http://purl.org/rss/1.0/modules/content/" version="2.0">
    <channel>
    <title>item4 dev story</title>
    <link>https://item4.blog</link>
    <description>한국인 소프트웨어 엔지니어 item4의 기술 블로그</description>
    <lastBuildDate>Sun, 22 Mar 2020 09:09:00 GMT</lastBuildDate>
    <docs>https://validator.w3..../feed/docs/rss2.html</docs>
    <generator>item4 Next.js blog Powered by Feed for nodejs</generator>
    <language>ko-KR</language>
    <image>
    <title>item4 dev story</title>
    <url>https://item4.blog/item4.png</url>
    <link>https://item4.blog</link>
    </image>
    <copyright>CCL 4.0 BY-SA</copyright>
    <item>
    <title>
    <![CDATA[ drf-yasg-examples ]]>
    </title>
    <link>https://item4.blog/2020-03-22/drf-yasg-examples/</link>
    <guid>https://item4.blog/2020-03-22/drf-yasg-examples/</guid>
    <pubDate>Sun, 22 Mar 2020 09:09:00 GMT</pubDate>
    <description>
    <![CDATA[ Introduce drf-yasg-examples Package ]]>
    </description>
    <c:encoded>
    <![CDATA[ Introduce drf-yasg-examples Package ]]>
    </c:encoded>
    <category domain="https://item4.blog/tags/Python/">Python</category>
    <category domain="https://item4.blog/tags/Django/">Django</category>
    <category domain="https://item4.blog/tags/django-rest-framework/">django-rest-framework</category>
    <category domain="https://item4.blog/tags/drf-yasg/">drf-yasg</category>
    <category domain="https://item4.blog/tags/Swagger/">Swagger</category>
    <category domain="https://item4.blog/tags/openapi/">openapi</category>
    <category domain="https://item4.blog/tags/API/">API</category>
    <category domain="https://item4.blog/tags/Documentation/">Documentation</category>
    <category domain="https://item4.blog/tags/drf-yasg-examples/">drf-yasg-examples</category>
    </item>
    </channel>
    </rss>
    """,
        )
        r = RSS()
    
        event = bot.create_message()
    
>       await r.add(bot, event, fx_sess, "https://test.dev/rss.xml")

.../apps/info/rss_test.py:177: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/rss/commands.py:67: in add
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://test.dev/rss.xml')
url = URL('https://test.dev/rss.xml'), method = 'get', request_headers = {}
status = 200
body = b'<rss xmlns:c="http://purl.org/rss/1.0/modules/content/" version="2.0">\n<channel>\n<title>item4 dev story</title>\n<...tegory domain="https://item4.blog/tags/drf-yasg-examples/">drf-yasg-examples</category>\n</item>\n</channel>\n</rss>\n'
content_type = 'application/json', payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.info.rss_test::test_add_wrong_body
Stack Traces | 0.046s run time
bot = <tests.util.FakeBot object at 0x7efc5299e8d0>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7efc52457770>
response_mock = <aioresponses.core.aioresponses object at 0x7efc529efa50>

    @pytest.mark.anyio
    async def test_add_wrong_body(bot, fx_sess, response_mock):
        response_mock.get(
            URL("https://test.dev/rss.xml"),
            body=b"wrong body",
        )
        r = RSS()
    
        event = bot.create_message()
    
>       await r.add(bot, event, fx_sess, "https://test.dev/rss.xml")

.../apps/info/rss_test.py:115: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../info/rss/commands.py:67: in add
    session.get(
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://test.dev/rss.xml')
url = URL('https://test.dev/rss.xml'), method = 'get', request_headers = {}
status = 200, body = b'wrong body', content_type = 'application/json'
payload = None, headers = None
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_cat_image_url
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52bf0fc0>

    @pytest.mark.anyio
    async def test_get_cat_image_url(response_mock):
        URL_200 = "http://cat.com/200.jpg"
        URL_404 = "http://cat.com/404.jpg"
        URL_CLIENT_ERROR = "http://cat.com/err.jpg"
        response_mock.get(
            CAT_API_URL,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                f"<url>{URL_404}</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get(URL_404, status=404)
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                f"<url>{URL_CLIENT_ERROR}</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get(
            URL_CLIENT_ERROR,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                f"<url>{URL_200}</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get(URL_200)
    
>       url = await get_cat_image_url(0.001)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/apps/animal_test.py:167: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 200
body = b'<?xml version="1.0"?><response><data><images><image><url>http://cat.com/404.jpg</url><id>cdu</id><source_url>http://thecatapi.com/?id=cdu</source_url></image></images></data></response>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/xml'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_cat_image_url_empty_url
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52db6650>

    @pytest.mark.anyio
    async def test_get_cat_image_url_empty_url(response_mock):
        response_mock.get(
            CAT_API_URL,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                "<url></url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        with pytest.raises(APIServerError):
>           await get_cat_image_url(0.001)

tests/apps/animal_test.py:112: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 200
body = b'<?xml version="1.0"?><response><data><images><image><url></url><id>cdu</id><source_url>http://thecatapi.com/?id=cdu</source_url></image></images></data></response>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/xml'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_cat_image_url_no_url
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52df6710>

    @pytest.mark.anyio
    async def test_get_cat_image_url_no_url(response_mock):
        response_mock.get(
            CAT_API_URL,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
    
        with pytest.raises(APIServerError):
>           await get_cat_image_url(0.001)

tests/apps/animal_test.py:90: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 200
body = b'<?xml version="1.0"?><response><data><images><image><id>cdu</id><source_url>http://thecatapi.com/?id=cdu</source_url></image></images></data></response>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/xml'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_cat_image_url_timeout
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52df7c50>

    @pytest.mark.anyio
    async def test_get_cat_image_url_timeout(response_mock):
        URL_TIMEOUT = "http://cat.com/timeout.jpg"
        response_mock.get(
            CAT_API_URL,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            CAT_API_URL,
            body=(
                '<?xml version="1.0"?>'
                "<response><data><images><image>"
                f"<url>{URL_TIMEOUT}</url>"
                "<id>cdu</id>"
                "<source_url>http://thecatapi.com/?id=cdu</source_url>"
                "</image></images></data></response>"
            ),
            headers={"Content-Type": "text/xml"},
        )
        response_mock.get(
            URL_TIMEOUT,
            exception=TimeoutError(),
        )
        with pytest.raises(TimeoutError):
>           await get_cat_image_url(10.0)

tests/apps/animal_test.py:68: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:40: in get_cat_image_url
    async with session.get(CAT_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
url = URL('https://thecatapi..../api/images/get?format=xml&type=jpg%252Cpng')
method = 'get', request_headers = {}, status = 200
body = b'<?xml version="1.0"?><response><data><images><image><url>http://cat.com/timeout.jpg</url><id>cdu</id><source_url>http://thecatapi.com/?id=cdu</source_url></image></images></data></response>'
content_type = 'application/json', payload = None
headers = {'Content-Type': 'text/xml'}
response_class = <class 'aiohttp.client_reqrep.ClientResponse'>, reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError
tests.apps.animal_test::test_get_dog_image_url
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7efc52c56550>

    @pytest.mark.anyio
    async def test_get_dog_image_url(response_mock):
        URL_200 = "http://dog.com/200.jpg"
        URL_404 = "http://dog.com/404.jpg"
        URL_CLIENT_ERROR = "http://dog.com/err.jpg"
        response_mock.get(
            DOG_API_URL,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": URL_404},
        )
        response_mock.get(URL_404, status=404)
        response_mock.get(
            DOG_API_URL,
            payload={
                "status": "success",
                "message": URL_CLIENT_ERROR,
            },
        )
        response_mock.get(
            URL_CLIENT_ERROR,
            exception=ClientConnectionError(),
        )
        response_mock.get(
            DOG_API_URL,
            payload={"status": "success", "message": URL_200},
        )
    
        response_mock.get(URL_200)
    
>       url = await get_dog_image_url(1.0)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

tests/apps/animal_test.py:248: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
yui/apps/animal.py:67: in get_dog_image_url
    async with session.get(DOG_API_URL) as resp:
               ^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13.../site-packages/aiohttp/client.py:1683: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.13-linux-x86_64-gnu/lib/python3.13/unittest/mock.py:2338: in _execute_mock_call
    result = await effect(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:531: in _request_mock
    response = await self.match(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.venv/lib/python3.13............/site-packages/aioresponses/core.py:461: in match
    response_or_exc = await matcher.build_response(
.venv/lib/python3.13............/site-packages/aioresponses/core.py:203: in build_response
    resp = self._build_response(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = RequestMatch('https://dog..../breeds/image/random')
url = URL('https://dog..../breeds/image/random'), method = 'get'
request_headers = {}, status = 200
body = b'{"status": "success", "message": "http://dog.com/404.jpg"}'
content_type = 'application/json'
payload = {'message': 'http://dog.com/404.jpg', 'status': 'success'}
headers = None, response_class = <class 'aiohttp.client_reqrep.ClientResponse'>
reason = 'OK'

    def _build_response(self, url: 'Union[URL, str]',
                        method: str = hdrs.METH_GET,
                        request_headers: Optional[Dict] = None,
                        status: int = 200,
                        body: Union[str, bytes] = '',
                        content_type: str = 'application/json',
                        payload: Optional[Dict] = None,
                        headers: Optional[Dict] = None,
                        response_class: Optional[Type[ClientResponse]] = None,
                        reason: Optional[str] = None) -> ClientResponse:
        if response_class is None:
            response_class = ClientResponse
        if payload is not None:
            body = json.dumps(payload)
        if not isinstance(body, bytes):
            body = str.encode(body)
        if request_headers is None:
            request_headers = {}
        loop = Mock()
        loop.get_debug = Mock()
        loop.get_debug.return_value = True
        kwargs = {}  # type: Dict[str, Any]
        kwargs['request_info'] = RequestInfo(
            url=url,
            method=method,
            headers=CIMultiDictProxy(CIMultiDict(**request_headers)),
            real_url=url
        )
        kwargs['writer'] = None
        kwargs['continue100'] = None
        kwargs['timer'] = TimerNoop()
        kwargs['traces'] = []
        kwargs['loop'] = loop
        kwargs['session'] = None
    
        # We need to initialize headers manually
        _headers = CIMultiDict({hdrs.CONTENT_TYPE: content_type})
        if headers:
            _headers.update(headers)
        raw_headers = self._build_raw_headers(_headers)
>       resp = response_class(method, url, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer'

.venv/lib/python3.13............/site-packages/aioresponses/core.py:172: TypeError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python:uv Pull requests that update python:uv code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants