|
3 | 3 | import os
|
4 | 4 | import inspect
|
5 | 5 | from typing import Any, Union, Mapping, TypeVar, Callable, Awaitable, overload
|
6 |
| -from typing_extensions import override |
| 6 | +from typing_extensions import Self, override |
7 | 7 |
|
8 | 8 | import httpx
|
9 | 9 |
|
@@ -178,7 +178,7 @@ def __init__(
|
178 | 178 | if default_query is None:
|
179 | 179 | default_query = {"api-version": api_version}
|
180 | 180 | else:
|
181 |
| - default_query = {"api-version": api_version, **default_query} |
| 181 | + default_query = {**default_query, "api-version": api_version} |
182 | 182 |
|
183 | 183 | if base_url is None:
|
184 | 184 | if azure_endpoint is None:
|
@@ -212,9 +212,53 @@ def __init__(
|
212 | 212 | http_client=http_client,
|
213 | 213 | _strict_response_validation=_strict_response_validation,
|
214 | 214 | )
|
| 215 | + self._api_version = api_version |
215 | 216 | self._azure_ad_token = azure_ad_token
|
216 | 217 | self._azure_ad_token_provider = azure_ad_token_provider
|
217 | 218 |
|
| 219 | + @override |
| 220 | + def copy( |
| 221 | + self, |
| 222 | + *, |
| 223 | + api_key: str | None = None, |
| 224 | + organization: str | None = None, |
| 225 | + api_version: str | None = None, |
| 226 | + azure_ad_token: str | None = None, |
| 227 | + azure_ad_token_provider: AzureADTokenProvider | None = None, |
| 228 | + base_url: str | httpx.URL | None = None, |
| 229 | + timeout: float | Timeout | None | NotGiven = NOT_GIVEN, |
| 230 | + http_client: httpx.Client | None = None, |
| 231 | + max_retries: int | NotGiven = NOT_GIVEN, |
| 232 | + default_headers: Mapping[str, str] | None = None, |
| 233 | + set_default_headers: Mapping[str, str] | None = None, |
| 234 | + default_query: Mapping[str, object] | None = None, |
| 235 | + set_default_query: Mapping[str, object] | None = None, |
| 236 | + _extra_kwargs: Mapping[str, Any] = {}, |
| 237 | + ) -> Self: |
| 238 | + """ |
| 239 | + Create a new client instance re-using the same options given to the current client with optional overriding. |
| 240 | + """ |
| 241 | + return super().copy( |
| 242 | + api_key=api_key, |
| 243 | + organization=organization, |
| 244 | + base_url=base_url, |
| 245 | + timeout=timeout, |
| 246 | + http_client=http_client, |
| 247 | + max_retries=max_retries, |
| 248 | + default_headers=default_headers, |
| 249 | + set_default_headers=set_default_headers, |
| 250 | + default_query=default_query, |
| 251 | + set_default_query=set_default_query, |
| 252 | + _extra_kwargs={ |
| 253 | + "api_version": api_version or self._api_version, |
| 254 | + "azure_ad_token": azure_ad_token or self._azure_ad_token, |
| 255 | + "azure_ad_token_provider": azure_ad_token_provider or self._azure_ad_token_provider, |
| 256 | + **_extra_kwargs, |
| 257 | + }, |
| 258 | + ) |
| 259 | + |
| 260 | + with_options = copy |
| 261 | + |
218 | 262 | def _get_azure_ad_token(self) -> str | None:
|
219 | 263 | if self._azure_ad_token is not None:
|
220 | 264 | return self._azure_ad_token
|
@@ -367,7 +411,7 @@ def __init__(
|
367 | 411 | if default_query is None:
|
368 | 412 | default_query = {"api-version": api_version}
|
369 | 413 | else:
|
370 |
| - default_query = {"api-version": api_version, **default_query} |
| 414 | + default_query = {**default_query, "api-version": api_version} |
371 | 415 |
|
372 | 416 | if base_url is None:
|
373 | 417 | if azure_endpoint is None:
|
@@ -401,9 +445,53 @@ def __init__(
|
401 | 445 | http_client=http_client,
|
402 | 446 | _strict_response_validation=_strict_response_validation,
|
403 | 447 | )
|
| 448 | + self._api_version = api_version |
404 | 449 | self._azure_ad_token = azure_ad_token
|
405 | 450 | self._azure_ad_token_provider = azure_ad_token_provider
|
406 | 451 |
|
| 452 | + @override |
| 453 | + def copy( |
| 454 | + self, |
| 455 | + *, |
| 456 | + api_key: str | None = None, |
| 457 | + organization: str | None = None, |
| 458 | + api_version: str | None = None, |
| 459 | + azure_ad_token: str | None = None, |
| 460 | + azure_ad_token_provider: AsyncAzureADTokenProvider | None = None, |
| 461 | + base_url: str | httpx.URL | None = None, |
| 462 | + timeout: float | Timeout | None | NotGiven = NOT_GIVEN, |
| 463 | + http_client: httpx.AsyncClient | None = None, |
| 464 | + max_retries: int | NotGiven = NOT_GIVEN, |
| 465 | + default_headers: Mapping[str, str] | None = None, |
| 466 | + set_default_headers: Mapping[str, str] | None = None, |
| 467 | + default_query: Mapping[str, object] | None = None, |
| 468 | + set_default_query: Mapping[str, object] | None = None, |
| 469 | + _extra_kwargs: Mapping[str, Any] = {}, |
| 470 | + ) -> Self: |
| 471 | + """ |
| 472 | + Create a new client instance re-using the same options given to the current client with optional overriding. |
| 473 | + """ |
| 474 | + return super().copy( |
| 475 | + api_key=api_key, |
| 476 | + organization=organization, |
| 477 | + base_url=base_url, |
| 478 | + timeout=timeout, |
| 479 | + http_client=http_client, |
| 480 | + max_retries=max_retries, |
| 481 | + default_headers=default_headers, |
| 482 | + set_default_headers=set_default_headers, |
| 483 | + default_query=default_query, |
| 484 | + set_default_query=set_default_query, |
| 485 | + _extra_kwargs={ |
| 486 | + "api_version": api_version or self._api_version, |
| 487 | + "azure_ad_token": azure_ad_token or self._azure_ad_token, |
| 488 | + "azure_ad_token_provider": azure_ad_token_provider or self._azure_ad_token_provider, |
| 489 | + **_extra_kwargs, |
| 490 | + }, |
| 491 | + ) |
| 492 | + |
| 493 | + with_options = copy |
| 494 | + |
407 | 495 | async def _get_azure_ad_token(self) -> str | None:
|
408 | 496 | if self._azure_ad_token is not None:
|
409 | 497 | return self._azure_ad_token
|
|
0 commit comments