From 790c31cceab535d678d2e12e9ec9885ed84c1741 Mon Sep 17 00:00:00 2001 From: dibahlfi <106994927+dibahlfi@users.noreply.github.com> Date: Wed, 11 Mar 2026 18:28:27 -0500 Subject: [PATCH 1/2] fix - TypeError: Session.request() got an unexpected word argument 'user_agent_overwrite --- .../azure/cosmos/_cosmos_client_connection.py | 3 ++- .../aio/_cosmos_client_connection_async.py | 1 + .../azure-cosmos/tests/test_user_agent.py | 16 ++++++++++++++++ .../azure-cosmos/tests/test_user_agent_async.py | 17 ++++++++++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py index 3ffe52448d14..d1f628c1db31 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/_cosmos_client_connection.py @@ -1,4 +1,4 @@ -# The MIT License (MIT) +# The MIT License (MIT) # Copyright (c) 2014 Microsoft Corporation # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -248,6 +248,7 @@ def __init__( # pylint: disable=too-many-statements ] # after passing in the user_agent into the user agent policy the user_agent is no longer needed kwargs.pop("user_agent", None) + kwargs.pop("user_agent_overwrite", None) transport = kwargs.pop("transport", None) self.pipeline_client: PipelineClient[HttpRequest, HttpResponse] = PipelineClient( diff --git a/sdk/cosmos/azure-cosmos/azure/cosmos/aio/_cosmos_client_connection_async.py b/sdk/cosmos/azure-cosmos/azure/cosmos/aio/_cosmos_client_connection_async.py index f12a8ab50e70..df06a4a554a0 100644 --- a/sdk/cosmos/azure-cosmos/azure/cosmos/aio/_cosmos_client_connection_async.py +++ b/sdk/cosmos/azure-cosmos/azure/cosmos/aio/_cosmos_client_connection_async.py @@ -245,6 +245,7 @@ def __init__( # pylint: disable=too-many-statements ] # after passing in the user_agent into the user agent policy the user_agent is no longer needed kwargs.pop("user_agent", None) + kwargs.pop("user_agent_overwrite", None) transport = kwargs.pop("transport", None) self.pipeline_client: AsyncPipelineClient[HttpRequest, AsyncHttpResponse] = AsyncPipelineClient( diff --git a/sdk/cosmos/azure-cosmos/tests/test_user_agent.py b/sdk/cosmos/azure-cosmos/tests/test_user_agent.py index 41beb3cde109..c57cf09880ce 100644 --- a/sdk/cosmos/azure-cosmos/tests/test_user_agent.py +++ b/sdk/cosmos/azure-cosmos/tests/test_user_agent.py @@ -95,6 +95,22 @@ def _run_case(use_suffix: bool) -> None: _run_case(False) # prefix scenario _run_case(True) # suffix scenario + def test_user_agent_overwrite_does_not_leak_sync(self): + """Regression test: user_agent_overwrite must not leak into the HTTP transport kwargs. + """ + # user_agent + user_agent_overwrite=True at client level + self._check({'user_agent': 'MyApp/1.0', 'user_agent_overwrite': True}) + # user_agent + user_agent_overwrite=False at client level + self._check({'user_agent': 'MyApp/1.0', 'user_agent_overwrite': False}) + # user_agent_suffix + user_agent_overwrite=True at client level + self._check({'user_agent_suffix': 'MyApp/1.0', 'user_agent_overwrite': True}) + # user_agent_suffix + user_agent_overwrite=False at client level + self._check({'user_agent_suffix': 'MyApp/1.0', 'user_agent_overwrite': False}) + # user_agent_overwrite=True alone (no custom user_agent string) + self._check({'user_agent_overwrite': True}) + # user_agent_overwrite=False alone + self._check({'user_agent_overwrite': False}) + if __name__ == '__main__': unittest.main() diff --git a/sdk/cosmos/azure-cosmos/tests/test_user_agent_async.py b/sdk/cosmos/azure-cosmos/tests/test_user_agent_async.py index 507a3f1e81b0..af6cd1ba9486 100644 --- a/sdk/cosmos/azure-cosmos/tests/test_user_agent_async.py +++ b/sdk/cosmos/azure-cosmos/tests/test_user_agent_async.py @@ -84,7 +84,22 @@ async def _run_case(use_suffix: bool): await _run_case(False) await _run_case(True) + async def test_user_agent_overwrite_does_not_leak_async(self): + """Regression test: user_agent_overwrite must not leak into the HTTP transport kwargs. + """ + # user_agent + user_agent_overwrite=True at client level + await self._check({'user_agent': 'MyApp/1.0', 'user_agent_overwrite': True}) + # user_agent + user_agent_overwrite=False at client level + await self._check({'user_agent': 'MyApp/1.0', 'user_agent_overwrite': False}) + # user_agent_suffix + user_agent_overwrite=True at client level + await self._check({'user_agent_suffix': 'MyApp/1.0', 'user_agent_overwrite': True}) + # user_agent_suffix + user_agent_overwrite=False at client level + await self._check({'user_agent_suffix': 'MyApp/1.0', 'user_agent_overwrite': False}) + # user_agent_overwrite=True alone (no custom user_agent string) + await self._check({'user_agent_overwrite': True}) + # user_agent_overwrite=False alone + await self._check({'user_agent_overwrite': False}) + if __name__ == "__main__": unittest.main() - From a7e9b70428fbf06fa9674d0f3d3511112a38e20e Mon Sep 17 00:00:00 2001 From: dibahlfi <106994927+dibahlfi@users.noreply.github.com> Date: Wed, 11 Mar 2026 18:36:45 -0500 Subject: [PATCH 2/2] fix - updating changelog --- sdk/cosmos/azure-cosmos/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/cosmos/azure-cosmos/CHANGELOG.md b/sdk/cosmos/azure-cosmos/CHANGELOG.md index 011365c27ffc..56a574dca1ad 100644 --- a/sdk/cosmos/azure-cosmos/CHANGELOG.md +++ b/sdk/cosmos/azure-cosmos/CHANGELOG.md @@ -10,6 +10,7 @@ #### Breaking Changes #### Bugs Fixed +* Fixed regression where `user_agent_overwrite` kwarg was not cleaned up properly, causing `TypeError` crash on sync client construction. See [PR 45653](https://github.com/Azure/azure-sdk-for-python/pull/45653) #### Other Changes