Skip to content

Bump aiohttp from 3.13.5 to 3.14.3 - #166

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

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

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 4, 2026

Copy link
Copy Markdown
Contributor

Bumps aiohttp from 3.13.5 to 3.14.3.

Changelog

Sourced from aiohttp's changelog.

3.14.3 (2026-07-22)

Bug fixes

  • Fixed the client dropping only the first Authorization, Cookie and Proxy-Authorization header when a redirect crossed an origin -- by :user:arshsmith1.

    Related issues and pull requests on GitHub: :issue:13180.

  • Fixed error message construction in the C HTTP parser -- by :user:bdraco.

    Related issues and pull requests on GitHub: :issue:13222.


3.14.2 (2026-07-20)

Bug fixes

  • Fixed :py:attr:~aiohttp.web.StreamResponse.last_modified rounding a :class:datetime.datetime with a fractional second down.

    Related issues and pull requests on GitHub: :issue:5303.

  • Fixed resolving localhost on Windows to fall back without AI_ADDRCONFIG when the first lookup fails, so localhost still works without an active network.

    Related issues and pull requests on GitHub: :issue:5357.

... (truncated)

Commits

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.

Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.13.5 to 3.14.3.
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](aio-libs/aiohttp@v3.13.5...v3.14.3)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.14.3
  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 Aug 4, 2026
@codecov

codecov Bot commented Aug 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 0x7fa452ff1d50>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452d94c00>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa4657e04d0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452fa7790>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452fe74d0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452ffb980>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452deef30>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452a2db30>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa4526ca2d0>
time = datetime.datetime(2026, 8, 6, 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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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-08-06T09%253A00%253A00%252B09%253A00&goal=1914&start=133')
url = URL('https://map.naver..../api/pubtrans/subway-directions?departureTime=2026-08-06T09%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 0x7fa4525d7250>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452a26cd0>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa453d257d0>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa4529710d0>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452fa9fd0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa4764b02d0>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452eedfd0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.apps.info.packtpub_test::test_no_packtpub_dotd
Stack Traces | 0.005s run time
bot = <tests.util.FakeBot object at 0x7fa452cc8d50>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452ab8cb0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.005s run time
bot = <tests.util.FakeBot object at 0x7fa452756150>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452a43f70>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.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 0x7fa453a60cd0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa45256af50>
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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa4525e3a50>
bot = <tests.util.FakeBot object at 0x7fa4525e29d0>, 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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452fe7310>
response_mock = <aioresponses.core.aioresponses object at 0x7fa45267fba0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452e589f0>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452eec7d0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.026s run time
bot = <tests.util.FakeBot object at 0x7fa452dec410>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452e58050>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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_wrong_body
Stack Traces | 0.042s run time
bot = <tests.util.FakeBot object at 0x7fa4527ca3d0>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7fa4529874d0>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452756350>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.info.rss_test::test_add_empty_body
Stack Traces | 0.044s run time
bot = <tests.util.FakeBot object at 0x7fa4526c9f50>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7fa452986900>
response_mock = <aioresponses.core.aioresponses object at 0x7fa4526c8d50>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.044s run time
bot = <tests.util.FakeBot object at 0x7fa452a26cd0>
fx_sess = <sqlalchemy.orm.session.AsyncSession object at 0x7fa452a3dbe0>
response_mock = <aioresponses.core.aioresponses object at 0x7fa452671f50>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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.animal_test::test_get_cat_image_url
Stack Traces | 0.205s run time
response_mock = <aioresponses.core.aioresponses object at 0x7fa452d04fc0>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452f4e190>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452ff6e90>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452ff7c50>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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 0x7fa452ff3b50>

    @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:1693: in __aenter__
    self._resp: _RetType_co = await self._coro
                              ^^^^^^^^^^^^^^^^
<string>:3: in _request
    ???
../...../_temp/uv-python-dir/cpython-3.13.14-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