diff --git a/aioresponses/core.py b/aioresponses/core.py index 2aa8e05..566e678 100644 --- a/aioresponses/core.py +++ b/aioresponses/core.py @@ -29,6 +29,7 @@ ) from aiohttp.helpers import TimerNoop from multidict import CIMultiDict, CIMultiDictProxy +from packaging.version import Version from .compat import ( URL, @@ -36,10 +37,9 @@ stream_reader_factory, merge_params, normalize_url, - RequestInfo, + RequestInfo, AIOHTTP_VERSION, ) - _FuncT = TypeVar("_FuncT", bound=Callable[..., Any]) @@ -223,7 +223,7 @@ def __repr__(self) -> str: class aioresponses(object): """Mock aiohttp requests made by ClientSession.""" _matches = None # type: Dict[str, RequestMatch] - _responses = None # type: List[ClientResponse] + _responses: List[ClientResponse] = None requests = None # type: Dict def __init__(self, **kwargs: Any): @@ -500,13 +500,15 @@ async def _request_mock(self, orig_self: ClientSession, if orig_self.closed: raise RuntimeError('Session is closed') - # Join url with ClientSession._base_url - url = orig_self._build_url(url) - url_origin = str(url) - - # Combine ClientSession headers with passed headers - if orig_self.headers: - kwargs["headers"] = orig_self._prepare_headers(kwargs.get("headers")) + if AIOHTTP_VERSION >= Version('3.8.0'): + # Join url with ClientSession._base_url + url = orig_self._build_url(url) + url_origin = str(url) + # Combine ClientSession headers with passed headers + if orig_self.headers: + kwargs["headers"] = orig_self._prepare_headers(kwargs.get("headers")) + else: + url_origin = url url = normalize_url(merge_params(url, kwargs.get('params'))) url_str = str(url) diff --git a/requirements-dev.txt b/requirements-dev.txt index bb31c52..04cea66 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,6 +1,6 @@ pip wheel -flake8==3.8.3 +flake8==5.0.4 tox==3.19.0 coverage==5.2.1 Sphinx==1.5.6 @@ -10,5 +10,4 @@ pytest-html==2.1.1 ddt==1.4.1 typing asynctest==0.13.0 -yarl==1.9.4 -setuptools==69.5.1 +yarl==1.9.4 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 0b0fe1d..9db058d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -35,6 +35,7 @@ universal = 1 [flake8] exclude = docs +max-line-length = 120 [tool:pytest] testpaths = tests diff --git a/tests/test_aioresponses.py b/tests/test_aioresponses.py index 23fce89..7b53b0b 100644 --- a/tests/test_aioresponses.py +++ b/tests/test_aioresponses.py @@ -86,6 +86,7 @@ async def test_returned_instance_and_status_code(self, m): ("http://example.com/", "/api?foo=bar#fragment") ) @aioresponses() + @skipIf(condition=AIOHTTP_VERSION < Version('3.8.0'), reason='aiohttp must be >= 3.8.0') async def test_base_url(self, base_url, relative_url, m): m.get(self.url, status=200) self.session = ClientSession(base_url=base_url) @@ -93,6 +94,7 @@ async def test_base_url(self, base_url, relative_url, m): self.assertEqual(response.status, 200) @aioresponses() + @skipIf(condition=AIOHTTP_VERSION < Version('3.8.0'), reason='aiohttp must be >= 3.8.0') async def test_session_headers(self, m): m.get(self.url) self.session = ClientSession(headers={"Authorization": "Bearer foobar"})