Skip to content

Commit

Permalink
[PR #10074/f733258e backport][3.12] Support absolute url to override …
Browse files Browse the repository at this point in the history
…base url (#10094)

**This is a backport of PR #10074 as merged into master
(f733258).**
Co-authored-by: vivodi <103735539+vivodi@users.noreply.github.com>
  • Loading branch information
patchback[bot] authored Dec 2, 2024
1 parent 6865d6b commit d872e34
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGES/10074.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Added support for overriding the base URL with an absolute one in client sessions
-- by :user:`vivodi`.
1 change: 1 addition & 0 deletions CONTRIBUTORS.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ Arseny Timoniq
Artem Yushkovskiy
Arthur Darcet
Austin Scola
Bai Haoran
Ben Bader
Ben Greiner
Ben Kallus
Expand Down
6 changes: 2 additions & 4 deletions aiohttp/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -461,11 +461,9 @@ def request(

def _build_url(self, str_or_url: StrOrURL) -> URL:
url = URL(str_or_url)
if self._base_url is None:
return url
else:
assert not url.absolute
if self._base_url and not url.absolute:
return self._base_url.join(url)
return url

async def _request(
self,
Expand Down
4 changes: 4 additions & 0 deletions docs/client_reference.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ The client session supports the context manager protocol for self closing.

.. versionadded:: 3.8

.. versionchanged:: 3.12

Added support for overriding the base URL with an absolute one in client sessions.

:param aiohttp.BaseConnector connector: BaseConnector
sub-class instance to support connection pooling.

Expand Down
18 changes: 18 additions & 0 deletions tests/test_client_session.py
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,24 @@ async def test_requote_redirect_setter() -> None:
URL("http://example.com/test1/test2?q=foo#bar"),
id="base_url=URL('http://example.com/test1/') url='test2?q=foo#bar'",
),
pytest.param(
URL("http://example.com/test1/"),
"http://foo.com/bar",
URL("http://foo.com/bar"),
id="base_url=URL('http://example.com/test1/') url='http://foo.com/bar'",
),
pytest.param(
URL("http://example.com"),
"http://foo.com/bar",
URL("http://foo.com/bar"),
id="base_url=URL('http://example.com') url='http://foo.com/bar'",
),
pytest.param(
URL("http://example.com/test1/"),
"http://foo.com",
URL("http://foo.com"),
id="base_url=URL('http://example.com/test1/') url='http://foo.com'",
),
],
)
async def test_build_url_returns_expected_url(
Expand Down

0 comments on commit d872e34

Please sign in to comment.