77# --------------------------------------------------------------------------
88
99from copy import deepcopy
10- from typing import Any , TYPE_CHECKING
10+ from typing import Any , Optional , TYPE_CHECKING , cast
11+ from typing_extensions import Self
1112
1213from azure .core .pipeline import policies
1314from azure .core .rest import HttpRequest , HttpResponse
15+ from azure .core .settings import settings
1416from azure .mgmt .core import ARMPipelineClient
1517from azure .mgmt .core .policies import ARMAutoResourceProviderRegistrationPolicy
18+ from azure .mgmt .core .tools import get_arm_endpoints
1619
1720from . import models as _models
1821from ._configuration import AzureSphereMgmtClientConfiguration
19- from ._serialization import Deserializer , Serializer
22+ from ._utils . serialization import Deserializer , Serializer
2023from .operations import (
2124 CatalogsOperations ,
2225 CertificatesOperations ,
2932)
3033
3134if TYPE_CHECKING :
32- # pylint: disable=unused-import,ungrouped-imports
3335 from azure .core .credentials import TokenCredential
3436
3537
36- class AzureSphereMgmtClient : # pylint: disable=client-accepts-api-version-keyword, too-many-instance-attributes
38+ class AzureSphereMgmtClient : # pylint: disable=too-many-instance-attributes
3739 """Azure Sphere resource management API.
3840
3941 :ivar operations: Operations operations
@@ -56,7 +58,7 @@ class AzureSphereMgmtClient: # pylint: disable=client-accepts-api-version-keywo
5658 :type credential: ~azure.core.credentials.TokenCredential
5759 :param subscription_id: The ID of the target subscription. Required.
5860 :type subscription_id: str
59- :param base_url: Service URL. Default value is "https://management.azure.com" .
61+ :param base_url: Service URL. Default value is None .
6062 :type base_url: str
6163 :keyword api_version: Api Version. Default value is "2024-04-01". Note that overriding this
6264 default value may result in unsupported behavior.
@@ -66,15 +68,17 @@ class AzureSphereMgmtClient: # pylint: disable=client-accepts-api-version-keywo
6668 """
6769
6870 def __init__ (
69- self ,
70- credential : "TokenCredential" ,
71- subscription_id : str ,
72- base_url : str = "https://management.azure.com" ,
73- ** kwargs : Any
71+ self , credential : "TokenCredential" , subscription_id : str , base_url : Optional [str ] = None , ** kwargs : Any
7472 ) -> None :
73+ _cloud = kwargs .pop ("cloud_setting" , None ) or settings .current .azure_cloud # type: ignore
74+ _endpoints = get_arm_endpoints (_cloud )
75+ if not base_url :
76+ base_url = _endpoints ["resource_manager" ]
77+ credential_scopes = kwargs .pop ("credential_scopes" , _endpoints ["credential_scopes" ])
7578 self ._config = AzureSphereMgmtClientConfiguration (
76- credential = credential , subscription_id = subscription_id , ** kwargs
79+ credential = credential , subscription_id = subscription_id , credential_scopes = credential_scopes , ** kwargs
7780 )
81+
7882 _policies = kwargs .pop ("policies" , None )
7983 if _policies is None :
8084 _policies = [
@@ -93,7 +97,7 @@ def __init__(
9397 policies .SensitiveHeaderCleanupPolicy (** kwargs ) if self ._config .redirect_policy else None ,
9498 self ._config .http_logging_policy ,
9599 ]
96- self ._client : ARMPipelineClient = ARMPipelineClient (base_url = base_url , policies = _policies , ** kwargs )
100+ self ._client : ARMPipelineClient = ARMPipelineClient (base_url = cast ( str , base_url ) , policies = _policies , ** kwargs )
97101
98102 client_models = {k : v for k , v in _models .__dict__ .items () if isinstance (v , type )}
99103 self ._serialize = Serializer (client_models )
@@ -133,7 +137,7 @@ def _send_request(self, request: HttpRequest, *, stream: bool = False, **kwargs:
133137 def close (self ) -> None :
134138 self ._client .close ()
135139
136- def __enter__ (self ) -> "AzureSphereMgmtClient" :
140+ def __enter__ (self ) -> Self :
137141 self ._client .__enter__ ()
138142 return self
139143
0 commit comments