Skip to content

Commit c48bfd7

Browse files
chore(internal): codegen related update
1 parent 3cd15f0 commit c48bfd7

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

‎src/brapi/_base_client.py‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,10 @@ def _build_request(
540540
files = cast(HttpxRequestFiles, ForceMultipartDict())
541541

542542
prepared_url = self._prepare_url(options.url)
543+
# preserve hard-coded query params from the url
544+
if params and prepared_url.query:
545+
params = {**dict(prepared_url.params.items()), **params}
546+
prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
543547
if "_" in prepared_url.host:
544548
# work around https://github.com/encode/httpx/discussions/2880
545549
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}

‎tests/test_client.py‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,30 @@ def test_default_query_option(self) -> None:
417417

418418
client.close()
419419

420+
def test_hardcoded_query_params_in_url(self, client: Brapi) -> None:
421+
request = client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
422+
url = httpx.URL(request.url)
423+
assert dict(url.params) == {"beta": "true"}
424+
425+
request = client._build_request(
426+
FinalRequestOptions(
427+
method="get",
428+
url="/foo?beta=true",
429+
params={"limit": "10", "page": "abc"},
430+
)
431+
)
432+
url = httpx.URL(request.url)
433+
assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
434+
435+
request = client._build_request(
436+
FinalRequestOptions(
437+
method="get",
438+
url="/files/a%2Fb?beta=true",
439+
params={"limit": "10"},
440+
)
441+
)
442+
assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
443+
420444
def test_request_extra_json(self, client: Brapi) -> None:
421445
request = client._build_request(
422446
FinalRequestOptions(
@@ -1310,6 +1334,30 @@ async def test_default_query_option(self) -> None:
13101334

13111335
await client.close()
13121336

1337+
async def test_hardcoded_query_params_in_url(self, async_client: AsyncBrapi) -> None:
1338+
request = async_client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
1339+
url = httpx.URL(request.url)
1340+
assert dict(url.params) == {"beta": "true"}
1341+
1342+
request = async_client._build_request(
1343+
FinalRequestOptions(
1344+
method="get",
1345+
url="/foo?beta=true",
1346+
params={"limit": "10", "page": "abc"},
1347+
)
1348+
)
1349+
url = httpx.URL(request.url)
1350+
assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
1351+
1352+
request = async_client._build_request(
1353+
FinalRequestOptions(
1354+
method="get",
1355+
url="/files/a%2Fb?beta=true",
1356+
params={"limit": "10"},
1357+
)
1358+
)
1359+
assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
1360+
13131361
def test_request_extra_json(self, client: Brapi) -> None:
13141362
request = client._build_request(
13151363
FinalRequestOptions(

0 commit comments

Comments
 (0)