py2docfx 0.1.15.dev2021664__py3-none-any.whl → 0.1.15.dev2025501__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +4 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py +48 -21
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +10 -0
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py +13 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py +28 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py +3 -3
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py +23 -12
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +2 -2
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
- py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
- {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/METADATA +1 -1
- {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/RECORD +37 -37
- {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/WHEEL +0 -0
- {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/top_level.txt +0 -0
@@ -104,7 +104,7 @@ class AzureApplicationCredential(ChainedTokenCredential):
|
|
104
104
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
105
105
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
106
106
|
|
107
|
-
:rtype: AccessTokenInfo
|
107
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
108
108
|
:return: An AccessTokenInfo instance containing information about the token.
|
109
109
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
110
110
|
`message` attribute listing each authentication attempt and its error message.
|
@@ -105,7 +105,7 @@ class AuthorizationCodeCredential(GetTokenMixin):
|
|
105
105
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
106
106
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
107
107
|
|
108
|
-
:rtype: AccessTokenInfo
|
108
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
109
109
|
:return: An AccessTokenInfo instance containing information about the token.
|
110
110
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message``
|
111
111
|
attribute gives a reason. Any error response from Microsoft Entra ID is available as the error's
|
@@ -142,7 +142,7 @@ class AzureDeveloperCliCredential:
|
|
142
142
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
143
143
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
144
144
|
|
145
|
-
:rtype: AccessTokenInfo
|
145
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
146
146
|
:return: An AccessTokenInfo instance containing information about the token.
|
147
147
|
|
148
148
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke
|
@@ -133,7 +133,7 @@ class AzureCliCredential:
|
|
133
133
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
134
134
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
135
135
|
|
136
|
-
:rtype: AccessTokenInfo
|
136
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
137
137
|
:return: An AccessTokenInfo instance containing information about the token.
|
138
138
|
|
139
139
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke the Azure CLI.
|
@@ -141,7 +141,7 @@ class AzurePipelinesCredential:
|
|
141
141
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
142
142
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
143
143
|
|
144
|
-
:rtype: AccessTokenInfo
|
144
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
145
145
|
:return: An AccessTokenInfo instance containing information about the token.
|
146
146
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message``
|
147
147
|
attribute gives a reason.
|
@@ -146,7 +146,7 @@ class AzurePowerShellCredential:
|
|
146
146
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
147
147
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
148
148
|
|
149
|
-
:rtype: AccessTokenInfo
|
149
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
150
150
|
:return: An AccessTokenInfo instance containing information about the token.
|
151
151
|
|
152
152
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke Azure PowerShell, or
|
@@ -166,7 +166,7 @@ class ChainedTokenCredential:
|
|
166
166
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
167
167
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
168
168
|
|
169
|
-
:rtype: AccessTokenInfo
|
169
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
170
170
|
:return: An AccessTokenInfo instance containing information about the token.
|
171
171
|
|
172
172
|
:raises ~azure.core.exceptions.ClientAuthenticationError: no credential in the chain provided a token.
|
@@ -239,7 +239,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
239
239
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
240
240
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
241
241
|
|
242
|
-
:rtype: AccessTokenInfo
|
242
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
243
243
|
:return: An AccessTokenInfo instance containing information about the token.
|
244
244
|
|
245
245
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
@@ -46,6 +46,9 @@ class EnvironmentCredential:
|
|
46
46
|
when no value is given.
|
47
47
|
|
48
48
|
User with username and password:
|
49
|
+
**Deprecated**: Username and password authentication doesn't support multifactor authentication (MFA).
|
50
|
+
For more details on Microsoft Entra MFA enforcement, see https://aka.ms/azsdk/identity/mfa.
|
51
|
+
|
49
52
|
- **AZURE_CLIENT_ID**: the application's client ID
|
50
53
|
- **AZURE_USERNAME**: a username (usually an email address)
|
51
54
|
- **AZURE_PASSWORD**: that user's password
|
@@ -168,7 +171,7 @@ class EnvironmentCredential:
|
|
168
171
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
169
172
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
170
173
|
|
171
|
-
:rtype: AccessTokenInfo
|
174
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
172
175
|
:return: An AccessTokenInfo instance containing information about the token.
|
173
176
|
|
174
177
|
:raises ~azure.identity.CredentialUnavailableError: environment variable configuration is incomplete.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# ------------------------------------
|
5
5
|
import logging
|
6
6
|
import os
|
7
|
-
from typing import Optional, Any, Mapping, cast
|
7
|
+
from typing import Optional, Any, Mapping, cast, Tuple
|
8
8
|
|
9
9
|
from azure.core.credentials import AccessToken, AccessTokenInfo, TokenRequestOptions, TokenCredential, SupportsTokenInfo
|
10
10
|
from .. import CredentialUnavailableError
|
@@ -15,20 +15,34 @@ from .._internal.decorators import log_get_token
|
|
15
15
|
_LOGGER = logging.getLogger(__name__)
|
16
16
|
|
17
17
|
|
18
|
-
def validate_identity_config(
|
18
|
+
def validate_identity_config(
|
19
|
+
client_id: Optional[str], identity_config: Optional[Mapping[str, str]]
|
20
|
+
) -> Optional[Tuple[str, str]]:
|
19
21
|
if identity_config:
|
22
|
+
valid_keys = {"object_id", "resource_id", "client_id"}
|
20
23
|
if client_id:
|
21
|
-
if any(key in identity_config for key in
|
24
|
+
if any(key in identity_config for key in valid_keys):
|
22
25
|
raise ValueError(
|
23
|
-
"
|
24
|
-
"
|
26
|
+
"When 'client_id' is provided as a keyword argument, 'identity_config' must not contain any of the "
|
27
|
+
f"following keys: {', '.join(valid_keys)}"
|
25
28
|
)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
return "client_id", client_id
|
30
|
+
|
31
|
+
# Only one of the valid keys should be present if one is present.
|
32
|
+
result = None
|
33
|
+
for key in valid_keys:
|
34
|
+
if key in identity_config:
|
35
|
+
if result:
|
36
|
+
raise ValueError(
|
37
|
+
"identity_config must not contain more than one of the following keys: "
|
38
|
+
f"{', '.join(valid_keys)}"
|
39
|
+
)
|
40
|
+
result = key, identity_config[key]
|
41
|
+
return result
|
42
|
+
|
43
|
+
if client_id:
|
44
|
+
return "client_id", client_id
|
45
|
+
return None
|
32
46
|
|
33
47
|
|
34
48
|
class ManagedIdentityCredential:
|
@@ -59,38 +73,40 @@ class ManagedIdentityCredential:
|
|
59
73
|
def __init__(
|
60
74
|
self, *, client_id: Optional[str] = None, identity_config: Optional[Mapping[str, str]] = None, **kwargs: Any
|
61
75
|
) -> None:
|
62
|
-
validate_identity_config(client_id, identity_config)
|
76
|
+
user_identity_info = validate_identity_config(client_id, identity_config)
|
63
77
|
self._credential: Optional[SupportsTokenInfo] = None
|
64
78
|
exclude_workload_identity = kwargs.pop("_exclude_workload_identity_credential", False)
|
79
|
+
managed_identity_type = None
|
80
|
+
|
65
81
|
if os.environ.get(EnvironmentVariables.IDENTITY_ENDPOINT):
|
66
82
|
if os.environ.get(EnvironmentVariables.IDENTITY_HEADER):
|
67
83
|
if os.environ.get(EnvironmentVariables.IDENTITY_SERVER_THUMBPRINT):
|
68
|
-
|
84
|
+
managed_identity_type = "Service Fabric managed identity"
|
69
85
|
from .service_fabric import ServiceFabricCredential
|
70
86
|
|
71
87
|
self._credential = ServiceFabricCredential(
|
72
88
|
client_id=client_id, identity_config=identity_config, **kwargs
|
73
89
|
)
|
74
90
|
else:
|
75
|
-
|
91
|
+
managed_identity_type = "App Service managed identity"
|
76
92
|
from .app_service import AppServiceCredential
|
77
93
|
|
78
94
|
self._credential = AppServiceCredential(
|
79
95
|
client_id=client_id, identity_config=identity_config, **kwargs
|
80
96
|
)
|
81
97
|
elif os.environ.get(EnvironmentVariables.IMDS_ENDPOINT):
|
82
|
-
|
98
|
+
managed_identity_type = "Azure Arc managed identity"
|
83
99
|
from .azure_arc import AzureArcCredential
|
84
100
|
|
85
101
|
self._credential = AzureArcCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
86
102
|
elif os.environ.get(EnvironmentVariables.MSI_ENDPOINT):
|
87
103
|
if os.environ.get(EnvironmentVariables.MSI_SECRET):
|
88
|
-
|
104
|
+
managed_identity_type = "Azure ML managed identity"
|
89
105
|
from .azure_ml import AzureMLCredential
|
90
106
|
|
91
107
|
self._credential = AzureMLCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
92
108
|
else:
|
93
|
-
|
109
|
+
managed_identity_type = "Cloud Shell managed identity"
|
94
110
|
from .cloud_shell import CloudShellCredential
|
95
111
|
|
96
112
|
self._credential = CloudShellCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
@@ -98,12 +114,17 @@ class ManagedIdentityCredential:
|
|
98
114
|
all(os.environ.get(var) for var in EnvironmentVariables.WORKLOAD_IDENTITY_VARS)
|
99
115
|
and not exclude_workload_identity
|
100
116
|
):
|
101
|
-
_LOGGER.info("%s will use workload identity", self.__class__.__name__)
|
102
117
|
from .workload_identity import WorkloadIdentityCredential
|
103
118
|
|
104
119
|
workload_client_id = client_id or os.environ.get(EnvironmentVariables.AZURE_CLIENT_ID)
|
105
120
|
if not workload_client_id:
|
106
|
-
raise ValueError(
|
121
|
+
raise ValueError(
|
122
|
+
"Workload identity was selected but no client ID was provided. "
|
123
|
+
'Configure the environment with a client ID or pass a value for "client_id" argument'
|
124
|
+
)
|
125
|
+
|
126
|
+
managed_identity_type = "workload identity"
|
127
|
+
user_identity_info = ("client_id", workload_client_id)
|
107
128
|
|
108
129
|
self._credential = WorkloadIdentityCredential(
|
109
130
|
tenant_id=os.environ[EnvironmentVariables.AZURE_TENANT_ID],
|
@@ -112,11 +133,17 @@ class ManagedIdentityCredential:
|
|
112
133
|
**kwargs,
|
113
134
|
)
|
114
135
|
else:
|
136
|
+
managed_identity_type = "IMDS"
|
115
137
|
from .imds import ImdsCredential
|
116
138
|
|
117
|
-
_LOGGER.info("%s will use IMDS", self.__class__.__name__)
|
118
139
|
self._credential = ImdsCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
119
140
|
|
141
|
+
if managed_identity_type:
|
142
|
+
log_msg = f"{self.__class__.__name__} will use {managed_identity_type}"
|
143
|
+
if user_identity_info:
|
144
|
+
log_msg += f" with {user_identity_info[0]}: {user_identity_info[1]}"
|
145
|
+
_LOGGER.info(log_msg)
|
146
|
+
|
120
147
|
def __enter__(self) -> "ManagedIdentityCredential":
|
121
148
|
if self._credential:
|
122
149
|
self._credential.__enter__() # type: ignore
|
@@ -171,7 +198,7 @@ class ManagedIdentityCredential:
|
|
171
198
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
172
199
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
173
200
|
|
174
|
-
:rtype: AccessTokenInfo
|
201
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
175
202
|
:return: An AccessTokenInfo instance containing information about the token.
|
176
203
|
:raises ~azure.identity.CredentialUnavailableError: managed identity isn't available in the hosting environment.
|
177
204
|
"""
|
@@ -100,7 +100,7 @@ class SharedTokenCacheCredential:
|
|
100
100
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
101
101
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
102
102
|
|
103
|
-
:rtype: AccessTokenInfo
|
103
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
104
104
|
:return: An AccessTokenInfo instance containing information about the token.
|
105
105
|
:raises ~azure.identity.CredentialUnavailableError: the cache is unavailable or contains insufficient user
|
106
106
|
information.
|
@@ -3,6 +3,7 @@
|
|
3
3
|
# Licensed under the MIT License.
|
4
4
|
# ------------------------------------
|
5
5
|
from typing import Any, Dict
|
6
|
+
import warnings
|
6
7
|
|
7
8
|
from .._internal import InteractiveCredential, wrap_exceptions
|
8
9
|
|
@@ -10,6 +11,9 @@ from .._internal import InteractiveCredential, wrap_exceptions
|
|
10
11
|
class UsernamePasswordCredential(InteractiveCredential):
|
11
12
|
"""Authenticates a user with a username and password.
|
12
13
|
|
14
|
+
**Deprecated**: This credential doesn't support multifactor authentication (MFA).
|
15
|
+
For more details on Microsoft Entra MFA enforcement, see https://aka.ms/azsdk/identity/mfa.
|
16
|
+
|
13
17
|
In general, Microsoft doesn't recommend this kind of authentication, because it's less secure than other
|
14
18
|
authentication flows.
|
15
19
|
|
@@ -59,6 +63,12 @@ class UsernamePasswordCredential(InteractiveCredential):
|
|
59
63
|
"""
|
60
64
|
|
61
65
|
def __init__(self, client_id: str, username: str, password: str, **kwargs: Any) -> None:
|
66
|
+
warnings.warn(
|
67
|
+
f"{self.__class__.__name__} is deprecated, as is it doesn't support multifactor "
|
68
|
+
"authentication (MFA). For more details, see https://aka.ms/azsdk/identity/mfa.",
|
69
|
+
category=DeprecationWarning,
|
70
|
+
stacklevel=2,
|
71
|
+
)
|
62
72
|
# The base class will accept an AuthenticationRecord, allowing this credential to authenticate silently the
|
63
73
|
# first time it's asked for a token. However, we want to ensure this first authentication is not silent, to
|
64
74
|
# validate the given password. This class therefore doesn't document the authentication_record argument, and we
|
@@ -183,7 +183,7 @@ class VisualStudioCodeCredential(_VSCodeCredentialBase, GetTokenMixin):
|
|
183
183
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
184
184
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
185
185
|
|
186
|
-
:rtype: AccessTokenInfo
|
186
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
187
187
|
:return: An AccessTokenInfo instance containing information about the token.
|
188
188
|
:raises ~azure.identity.CredentialUnavailableError: the credential cannot retrieve user details from Visual
|
189
189
|
Studio Code.
|
@@ -61,6 +61,7 @@ class AadClientBase(abc.ABC):
|
|
61
61
|
self._custom_cache = True
|
62
62
|
else:
|
63
63
|
self._custom_cache = False
|
64
|
+
self._is_adfs = self._tenant_id.lower() == "adfs"
|
64
65
|
|
65
66
|
def _get_cache(self, **kwargs: Any) -> TokenCache:
|
66
67
|
cache = self._cae_cache if kwargs.get("enable_cae") else self._cache
|
@@ -239,7 +240,16 @@ class AadClientBase(abc.ABC):
|
|
239
240
|
|
240
241
|
def _get_client_certificate_assertion(self, certificate: AadClientCertificate, **kwargs: Any) -> str:
|
241
242
|
now = int(time.time())
|
242
|
-
|
243
|
+
headers = {"typ": "JWT"}
|
244
|
+
if self._is_adfs:
|
245
|
+
# Maintain backwards compatibility with older versions of ADFS.
|
246
|
+
headers["alg"] = "RS256"
|
247
|
+
headers["x5t"] = certificate.thumbprint
|
248
|
+
else:
|
249
|
+
headers["alg"] = "PS256"
|
250
|
+
headers["x5t#S256"] = certificate.sha256_thumbprint
|
251
|
+
|
252
|
+
jwt_header = json.dumps(headers).encode("utf-8")
|
243
253
|
payload = json.dumps(
|
244
254
|
{
|
245
255
|
"jti": str(uuid4()),
|
@@ -250,8 +260,8 @@ class AadClientBase(abc.ABC):
|
|
250
260
|
"exp": now + (60 * 30),
|
251
261
|
}
|
252
262
|
).encode("utf-8")
|
253
|
-
jws = base64.urlsafe_b64encode(
|
254
|
-
signature = certificate.
|
263
|
+
jws = base64.urlsafe_b64encode(jwt_header) + b"." + base64.urlsafe_b64encode(payload)
|
264
|
+
signature = certificate.sign_ps256(jws) if not self._is_adfs else certificate.sign_rs256(jws)
|
255
265
|
jwt_bytes = jws + b"." + base64.urlsafe_b64encode(signature)
|
256
266
|
return jwt_bytes.decode("utf-8")
|
257
267
|
|
@@ -26,7 +26,9 @@ class AadClientCertificate:
|
|
26
26
|
|
27
27
|
cert = x509.load_pem_x509_certificate(pem_bytes, default_backend())
|
28
28
|
fingerprint = cert.fingerprint(hashes.SHA1()) # nosec
|
29
|
+
sha256_fingerprint = cert.fingerprint(hashes.SHA256())
|
29
30
|
self._thumbprint = base64.urlsafe_b64encode(fingerprint).decode("utf-8")
|
31
|
+
self._sha256_thumbprint = base64.urlsafe_b64encode(sha256_fingerprint).decode("utf-8")
|
30
32
|
|
31
33
|
@property
|
32
34
|
def thumbprint(self) -> str:
|
@@ -36,7 +38,15 @@ class AadClientCertificate:
|
|
36
38
|
"""
|
37
39
|
return self._thumbprint
|
38
40
|
|
39
|
-
|
41
|
+
@property
|
42
|
+
def sha256_thumbprint(self) -> str:
|
43
|
+
"""The certificate's SHA256 thumbprint as a base64url-encoded string.
|
44
|
+
|
45
|
+
:rtype: str
|
46
|
+
"""
|
47
|
+
return self._sha256_thumbprint
|
48
|
+
|
49
|
+
def sign_rs256(self, plaintext: bytes) -> bytes:
|
40
50
|
"""Sign bytes using RS256.
|
41
51
|
|
42
52
|
:param bytes plaintext: Bytes to sign.
|
@@ -44,3 +54,20 @@ class AadClientCertificate:
|
|
44
54
|
:rtype: bytes
|
45
55
|
"""
|
46
56
|
return self._private_key.sign(plaintext, padding.PKCS1v15(), hashes.SHA256())
|
57
|
+
|
58
|
+
def sign_ps256(self, plaintext: bytes) -> bytes:
|
59
|
+
"""Sign bytes using PS256.
|
60
|
+
|
61
|
+
:param bytes plaintext: Bytes to sign.
|
62
|
+
:return: The signature.
|
63
|
+
:rtype: bytes
|
64
|
+
"""
|
65
|
+
hash_alg = hashes.SHA256()
|
66
|
+
|
67
|
+
# Note: For PS265, the salt length should match the hash output size, so we use the hash algorithm's
|
68
|
+
# digest_size property to get the correct value.
|
69
|
+
return self._private_key.sign(
|
70
|
+
plaintext,
|
71
|
+
padding.PSS(mgf=padding.MGF1(hash_alg), salt_length=hash_alg.digest_size),
|
72
|
+
hash_alg,
|
73
|
+
)
|
@@ -104,7 +104,7 @@ class AzureApplicationCredential(ChainedTokenCredential):
|
|
104
104
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
105
105
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
106
106
|
|
107
|
-
:rtype: AccessTokenInfo
|
107
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
108
108
|
:return: An AccessTokenInfo instance containing information about the token.
|
109
109
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
110
110
|
`message` attribute listing each authentication attempt and its error message.
|
@@ -111,7 +111,7 @@ class AuthorizationCodeCredential(AsyncContextManager, GetTokenMixin):
|
|
111
111
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
112
112
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
113
113
|
|
114
|
-
:rtype: AccessTokenInfo
|
114
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
115
115
|
:return: An AccessTokenInfo instance containing information about the token.
|
116
116
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message``
|
117
117
|
attribute gives a reason. Any error response from Microsoft Entra ID is available as the error's
|
@@ -132,7 +132,7 @@ class AzureDeveloperCliCredential(AsyncContextManager):
|
|
132
132
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
133
133
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
134
134
|
|
135
|
-
:rtype: AccessTokenInfo
|
135
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
136
136
|
:return: An AccessTokenInfo instance containing information about the token.
|
137
137
|
|
138
138
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke
|
@@ -127,7 +127,7 @@ class AzureCliCredential(AsyncContextManager):
|
|
127
127
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
128
128
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
129
129
|
|
130
|
-
:rtype: AccessTokenInfo
|
130
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
131
131
|
:return: An AccessTokenInfo instance containing information about the token.
|
132
132
|
|
133
133
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke the Azure CLI.
|
@@ -114,7 +114,7 @@ class AzurePipelinesCredential(AsyncContextManager):
|
|
114
114
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
115
115
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
116
116
|
|
117
|
-
:rtype: AccessTokenInfo
|
117
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
118
118
|
:return: An AccessTokenInfo instance containing information about the token.
|
119
119
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The error's ``message``
|
120
120
|
attribute gives a reason.
|
@@ -104,7 +104,7 @@ class AzurePowerShellCredential(AsyncContextManager):
|
|
104
104
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
105
105
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
106
106
|
|
107
|
-
:rtype: AccessTokenInfo
|
107
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
108
108
|
:return: An AccessTokenInfo instance containing information about the token.
|
109
109
|
|
110
110
|
:raises ~azure.identity.CredentialUnavailableError: the credential was unable to invoke Azure PowerShell, or
|
@@ -21,13 +21,13 @@ class CertificateCredential(AsyncContextManager, GetTokenMixin):
|
|
21
21
|
|
22
22
|
:param str tenant_id: ID of the service principal's tenant. Also called its 'directory' ID.
|
23
23
|
:param str client_id: The service principal's client ID
|
24
|
-
:param str certificate_path:
|
25
|
-
|
24
|
+
:param str certificate_path: Optional path to a certificate file in PEM or PKCS12 format, including the private
|
25
|
+
key. If not provided, **certificate_data** is required.
|
26
26
|
|
27
27
|
:keyword str authority: Authority of a Microsoft Entra endpoint, for example 'login.microsoftonline.com',
|
28
28
|
the authority for Azure Public Cloud (which is the default). :class:`~azure.identity.AzureAuthorityHosts`
|
29
29
|
defines authorities for other clouds.
|
30
|
-
:keyword bytes certificate_data: The bytes of a certificate in PEM format, including the private key
|
30
|
+
:keyword bytes certificate_data: The bytes of a certificate in PEM or PKCS12 format, including the private key.
|
31
31
|
:keyword password: The certificate's password. If a unicode string, it will be encoded as UTF-8. If the certificate
|
32
32
|
requires a different encoding, pass appropriately encoded bytes instead.
|
33
33
|
:paramtype password: str or bytes
|
@@ -139,7 +139,7 @@ class ChainedTokenCredential(AsyncContextManager):
|
|
139
139
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
140
140
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
141
141
|
|
142
|
-
:rtype: AccessTokenInfo
|
142
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
143
143
|
:return: An AccessTokenInfo instance containing information about the token.
|
144
144
|
|
145
145
|
:raises ~azure.core.exceptions.ClientAuthenticationError: no credential in the chain provided a token.
|
@@ -221,7 +221,7 @@ class DefaultAzureCredential(ChainedTokenCredential):
|
|
221
221
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
222
222
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
223
223
|
|
224
|
-
:rtype: AccessTokenInfo
|
224
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
225
225
|
:return: An AccessTokenInfo instance containing information about the token.
|
226
226
|
|
227
227
|
:raises ~azure.core.exceptions.ClientAuthenticationError: authentication failed. The exception has a
|
@@ -138,7 +138,7 @@ class EnvironmentCredential(AsyncContextManager):
|
|
138
138
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
139
139
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
140
140
|
|
141
|
-
:rtype: AccessTokenInfo
|
141
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
142
142
|
:return: An AccessTokenInfo instance containing information about the token.
|
143
143
|
|
144
144
|
:raises ~azure.identity.CredentialUnavailableError: environment variable configuration is incomplete.
|
@@ -46,39 +46,39 @@ class ManagedIdentityCredential(AsyncContextManager):
|
|
46
46
|
def __init__(
|
47
47
|
self, *, client_id: Optional[str] = None, identity_config: Optional[Mapping[str, str]] = None, **kwargs: Any
|
48
48
|
) -> None:
|
49
|
-
validate_identity_config(client_id, identity_config)
|
49
|
+
user_identity_info = validate_identity_config(client_id, identity_config)
|
50
50
|
self._credential: Optional[AsyncSupportsTokenInfo] = None
|
51
51
|
exclude_workload_identity = kwargs.pop("_exclude_workload_identity_credential", False)
|
52
|
-
|
52
|
+
managed_identity_type = None
|
53
53
|
if os.environ.get(EnvironmentVariables.IDENTITY_ENDPOINT):
|
54
54
|
if os.environ.get(EnvironmentVariables.IDENTITY_HEADER):
|
55
55
|
if os.environ.get(EnvironmentVariables.IDENTITY_SERVER_THUMBPRINT):
|
56
|
-
|
56
|
+
managed_identity_type = "Service Fabric managed identity"
|
57
57
|
from .service_fabric import ServiceFabricCredential
|
58
58
|
|
59
59
|
self._credential = ServiceFabricCredential(
|
60
60
|
client_id=client_id, identity_config=identity_config, **kwargs
|
61
61
|
)
|
62
62
|
else:
|
63
|
-
|
63
|
+
managed_identity_type = "App Service managed identity"
|
64
64
|
from .app_service import AppServiceCredential
|
65
65
|
|
66
66
|
self._credential = AppServiceCredential(
|
67
67
|
client_id=client_id, identity_config=identity_config, **kwargs
|
68
68
|
)
|
69
69
|
elif os.environ.get(EnvironmentVariables.IMDS_ENDPOINT):
|
70
|
-
|
70
|
+
managed_identity_type = "Azure Arc managed identity"
|
71
71
|
from .azure_arc import AzureArcCredential
|
72
72
|
|
73
73
|
self._credential = AzureArcCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
74
74
|
elif os.environ.get(EnvironmentVariables.MSI_ENDPOINT):
|
75
75
|
if os.environ.get(EnvironmentVariables.MSI_SECRET):
|
76
|
-
|
76
|
+
managed_identity_type = "Azure ML managed identity"
|
77
77
|
from .azure_ml import AzureMLCredential
|
78
78
|
|
79
79
|
self._credential = AzureMLCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
80
80
|
else:
|
81
|
-
|
81
|
+
managed_identity_type = "Cloud Shell managed identity"
|
82
82
|
from .cloud_shell import CloudShellCredential
|
83
83
|
|
84
84
|
self._credential = CloudShellCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
@@ -86,25 +86,36 @@ class ManagedIdentityCredential(AsyncContextManager):
|
|
86
86
|
all(os.environ.get(var) for var in EnvironmentVariables.WORKLOAD_IDENTITY_VARS)
|
87
87
|
and not exclude_workload_identity
|
88
88
|
):
|
89
|
-
_LOGGER.info("%s will use workload identity", self.__class__.__name__)
|
90
89
|
from .workload_identity import WorkloadIdentityCredential
|
91
90
|
|
92
91
|
workload_client_id = client_id or os.environ.get(EnvironmentVariables.AZURE_CLIENT_ID)
|
93
92
|
if not workload_client_id:
|
94
|
-
raise ValueError(
|
93
|
+
raise ValueError(
|
94
|
+
"Workload identity was selected but no client ID was provided. "
|
95
|
+
'Configure the environment with a client ID or pass a value for "client_id" argument'
|
96
|
+
)
|
97
|
+
|
98
|
+
managed_identity_type = "workload identity"
|
99
|
+
user_identity_info = ("client_id", workload_client_id)
|
95
100
|
|
96
101
|
self._credential = WorkloadIdentityCredential(
|
97
102
|
tenant_id=os.environ[EnvironmentVariables.AZURE_TENANT_ID],
|
98
103
|
client_id=workload_client_id,
|
99
104
|
token_file_path=os.environ[EnvironmentVariables.AZURE_FEDERATED_TOKEN_FILE],
|
100
|
-
**kwargs
|
105
|
+
**kwargs,
|
101
106
|
)
|
102
107
|
else:
|
108
|
+
managed_identity_type = "IMDS"
|
103
109
|
from .imds import ImdsCredential
|
104
110
|
|
105
|
-
_LOGGER.info("%s will use IMDS", self.__class__.__name__)
|
106
111
|
self._credential = ImdsCredential(client_id=client_id, identity_config=identity_config, **kwargs)
|
107
112
|
|
113
|
+
if managed_identity_type:
|
114
|
+
log_msg = f"{self.__class__.__name__} will use {managed_identity_type}"
|
115
|
+
if user_identity_info:
|
116
|
+
log_msg += f" with {user_identity_info[0]}: {user_identity_info[1]}"
|
117
|
+
_LOGGER.info(log_msg)
|
118
|
+
|
108
119
|
async def __aenter__(self) -> "ManagedIdentityCredential":
|
109
120
|
if self._credential:
|
110
121
|
await self._credential.__aenter__()
|
@@ -156,7 +167,7 @@ class ManagedIdentityCredential(AsyncContextManager):
|
|
156
167
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
157
168
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
158
169
|
|
159
|
-
:rtype: AccessTokenInfo
|
170
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
160
171
|
:return: An AccessTokenInfo instance containing information about the token.
|
161
172
|
:raises ~azure.identity.CredentialUnavailableError: managed identity isn't available in the hosting environment.
|
162
173
|
"""
|
@@ -97,7 +97,7 @@ class SharedTokenCacheCredential(SharedTokenCacheBase, AsyncContextManager):
|
|
97
97
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
98
98
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
99
99
|
|
100
|
-
:rtype: AccessTokenInfo
|
100
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
101
101
|
:return: An AccessTokenInfo instance containing information about the token.
|
102
102
|
:raises ~azure.identity.CredentialUnavailableError: the cache is unavailable or contains insufficient user
|
103
103
|
information
|
@@ -94,7 +94,7 @@ class VisualStudioCodeCredential(_VSCodeCredentialBase, AsyncContextManager, Get
|
|
94
94
|
:keyword options: A dictionary of options for the token request. Unknown options will be ignored. Optional.
|
95
95
|
:paramtype options: ~azure.core.credentials.TokenRequestOptions
|
96
96
|
|
97
|
-
:rtype: AccessTokenInfo
|
97
|
+
:rtype: ~azure.core.credentials.AccessTokenInfo
|
98
98
|
:return: An AccessTokenInfo instance containing information about the token.
|
99
99
|
:raises ~azure.identity.CredentialUnavailableError: the credential cannot retrieve user details from Visual
|
100
100
|
Studio Code.
|
@@ -59,8 +59,8 @@ def retry_target_stream(
|
|
59
59
|
[List[Exception], RetryFailureReason, Optional[float]],
|
60
60
|
Tuple[Exception, Optional[Exception]],
|
61
61
|
] = build_retry_error,
|
62
|
-
init_args:
|
63
|
-
init_kwargs:
|
62
|
+
init_args: tuple = (),
|
63
|
+
init_kwargs: dict = {},
|
64
64
|
**kwargs,
|
65
65
|
) -> Generator[_Y, Any, None]:
|
66
66
|
"""Create a generator wrapper that retries the wrapped stream if it fails.
|
@@ -62,8 +62,8 @@ async def retry_target_stream(
|
|
62
62
|
[list[Exception], RetryFailureReason, float | None],
|
63
63
|
tuple[Exception, Exception | None],
|
64
64
|
] = build_retry_error,
|
65
|
-
init_args:
|
66
|
-
init_kwargs:
|
65
|
+
init_args: tuple = (),
|
66
|
+
init_kwargs: dict = {},
|
67
67
|
**kwargs,
|
68
68
|
) -> AsyncGenerator[_Y, None]:
|
69
69
|
"""Create a generator wrapper that retries the wrapped stream if it fails.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py2docfx
|
3
|
-
Version: 0.1.15.
|
3
|
+
Version: 0.1.15.dev2025501
|
4
4
|
Summary: A package built based on Sphinx which download source code package and generate yaml files supported by docfx.
|
5
5
|
Author: Microsoft Corporation
|
6
6
|
License: MIT License
|
@@ -1977,39 +1977,39 @@ py2docfx/venv/venv1/Lib/site-packages/azure/identity/_constants.py,sha256=CawcaT
|
|
1977
1977
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_enums.py,sha256=kaZnPeoAQiEYVW19_BaXFaP_rt4viwfiIRPzYuo5rGs,2399
|
1978
1978
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_exceptions.py,sha256=Ilad2QoECsI81JrVIFV3gZfMEetA9EL5PoyBwzLIDWY,1954
|
1979
1979
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_persistent_cache.py,sha256=cCcS1K8dkuaVQ6GiPIsa1ifB8NM74Z2CAKm-Ty6CVLs,5840
|
1980
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py,sha256=
|
1980
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py,sha256=GxoVTC7HyHbnbtpCs42y3WLCnY4FyMkuIAYgH3kMUlQ,170
|
1981
1981
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/__init__.py,sha256=HiD0uRVJ7Okw8ICCzWrMWKeEvf2RUa3DuwdDUgIxg5s,1756
|
1982
1982
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/app_service.py,sha256=mc0GqUWXLjcgkZX64IV3aVmJd1M1-fo5h6ssVe0Iklo,1424
|
1983
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py,sha256=
|
1984
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py,sha256=
|
1985
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py,sha256=
|
1983
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py,sha256=QMnnSPC4oln1kscYdMarRqpmxfrb6H_cz0LnNZbHNWA,6459
|
1984
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py,sha256=foaBIuRfVPLLKln62gsCU8ZIhIH6q7qjAxJtWvHV1Nw,7241
|
1985
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py,sha256=G7gUKrdOX0E2NHe05PiubmaL7V9Gfb8gVJNAWkJmJrM,12464
|
1986
1986
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_arc.py,sha256=2B5SYKKGIEg8y8kC_zccSspxqVllKrIgP4WF_WD9ky0,4907
|
1987
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py,sha256
|
1987
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py,sha256=-cwiVbFsrMf--PbKzHhjx-hrV-c30ZtrG-wGe96BVKE,11299
|
1988
1988
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_ml.py,sha256=qLMRTkkecgZRwA6HoXf-9GoEp0HddbPoYioBcWYwOF4,3000
|
1989
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py,sha256=
|
1990
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py,sha256=
|
1989
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py,sha256=QtMuhYSeSDMJo76W5OHJORRu2IRb61ueKyZoi8R2bck,8566
|
1990
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py,sha256=uRTACAXyh3CNBNt1JlDUKsuetAXfJtKqE2Yj7-rPb5c,10953
|
1991
1991
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/browser.py,sha256=mkkIqHvkNPYwqcPHRQscx_qtQWDpf0TNBuxVu2ynf6Q,8307
|
1992
1992
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/certificate.py,sha256=uHVCvvdcjkIuamb_66ANHh6TVQAO9lUhcSjxr4J2V-0,9179
|
1993
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py,sha256=
|
1993
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py,sha256=5aSwVupdvgLtIikillHhKAAkJLC-fiivAxfl_prx3vM,10039
|
1994
1994
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_assertion.py,sha256=cMzxMC46PU0RxWaYjjQ7pdSO6MDaXuaWBN3ZzCfhakY,3434
|
1995
1995
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/client_secret.py,sha256=U4d2uOTMfXCfjTBtZLpM1_uvVDSqQgtfPlMx88oqO_8,3114
|
1996
1996
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/cloud_shell.py,sha256=yyuxWKBM8cp0EI6IbVuGP2LvXfkidV0se5NABBuMH7k,1928
|
1997
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py,sha256=
|
1997
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py,sha256=vOuzhv-Vkoeny6TYEdxGFyAY164bB-yf8BxQllesrNQ,15347
|
1998
1998
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/device_code.py,sha256=DXW99i6FiKJ1EeTbqMqLbRZW8zpHpJkuyURHSe56i8E,6763
|
1999
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py,sha256=
|
1999
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py,sha256=exODrSbusgGRpAiKhCWvfYlMJifOFzvNAcfcaGsFYIE,9743
|
2000
2000
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/imds.py,sha256=3-qDYPz5TH38Uamjb1ZxdUPo-V5FlsOLJMJMg5w3GDY,5550
|
2001
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py,sha256=
|
2001
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py,sha256=xCvspdwk3MP1UFL_489PfLaYOlmOktdO265fowR4ZUU,10332
|
2002
2002
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/on_behalf_of.py,sha256=e8av70lj1hwwqrQc7bX1MI5bH5OWsZA6LZvy1ib_M4U,9014
|
2003
2003
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/service_fabric.py,sha256=t2ir_-JJi4krqOa6TqwbiU7vosIZP3_mN0GrQ-sABsc,1454
|
2004
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py,sha256=
|
2004
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py,sha256=Sr5sFj8QHz6IK69BxrcsTVLargk45BDzqrctKdOfQZE,9021
|
2005
2005
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/silent.py,sha256=8gq0CyQOThOkAF6KF9ku1YO1JuBdY_ZgJOXl-BHFK2o,9329
|
2006
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py,sha256=
|
2007
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py,sha256=
|
2006
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py,sha256=eBedKuMsY7_hLE7zH9ZYlTvcrMyCofedBF0aMJ9Qm0Q,5043
|
2007
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py,sha256=5HPyI9mEtMedC6HJWjXcSdKpQzWedSNC2PVNck8KZRY,11010
|
2008
2008
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/workload_identity.py,sha256=hxVmnqh8lqJ6hfmkgBfU84Au34_KaJ_S6zrtyPlCAqg,4378
|
2009
2009
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/__init__.py,sha256=bZ5LRc-OWVx1WTrL4gPzz6BUrjlZbSC0nvcY_JUJ1uU,1586
|
2010
2010
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client.py,sha256=O8b9pnlc6HIRdV0YqrCjYaMOt1z8mYKPE4bOdrYtR-Q,3299
|
2011
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py,sha256=
|
2012
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py,sha256=
|
2011
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py,sha256=XrKbEcpvSLbagJUvucRkNSze4cLRYYFMH6qh2ASMgf8,17087
|
2012
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py,sha256=JuKCDKkophr1D0y9DUWnX_P9DIo0tIIDHKsy3zQEw5g,2845
|
2013
2013
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/auth_code_redirect_handler.py,sha256=E4rQw6AvhEDS_CcBOX_dzNPtfcUGp1WXpLO2kK8QFHc,2288
|
2014
2014
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/client_credential_base.py,sha256=YBEnqgTBOebvSoTaCY20qt3ue7_ovK4i0O_HyX_pC3E,2508
|
2015
2015
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/decorators.py,sha256=uM-aP4FsVYT2aR1BX41kdvHHs83XxB-O0vYzRq3YUw4,2877
|
@@ -2031,27 +2031,27 @@ py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/__init__.py,sha256=sXPK
|
|
2031
2031
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_bearer_token_provider.py,sha256=2vUCmdarROmCg_tIuY20SIVP5J7NIO-spprGLrt7TDE,1783
|
2032
2032
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/__init__.py,sha256=HQ-rmMldjHhb9kHne-0zbGFcIPraamf_Y4l2tJQ8LBg,1482
|
2033
2033
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/app_service.py,sha256=xb8LIoDfAdCZj60CiaKtdjUDLecNbLfkuC9Xy1ItwuE,836
|
2034
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py,sha256=
|
2035
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py,sha256=
|
2036
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py,sha256=
|
2034
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py,sha256=5UIMekDaVQixEuz3DgjwA6XLyVG5vWzkPQHlus1Xdyc,6563
|
2035
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py,sha256=jMxorvZj43t71__8jnXS2-X75fjZa2pTjw2YEx_7vd0,7425
|
2036
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py,sha256=QJpJ0dKJ8doqF0S7LQZBNJqFo-jKN1neZ9YJ4pHsEww,10999
|
2037
2037
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_arc.py,sha256=ottnsKp-t7mpUXrn1I_TtgHKqT75WsZR5qGMkz7_mF0,1857
|
2038
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py,sha256=
|
2038
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py,sha256=RFQMIIep7JZOxUszMTk1VYyPyI9eVEN-0yGaUaQVhtM,9926
|
2039
2039
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_ml.py,sha256=D7hQWuNLFHQb60Za5cXFeAK7aRT5ta0i8banjc4j0tQ,827
|
2040
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py,sha256=
|
2041
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py,sha256=
|
2042
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py,sha256=
|
2043
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py,sha256
|
2040
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py,sha256=jNGC1o_pG6cZ8zaJFN6dOZQpvMyEzVdf4EYMqwQV-AQ,7458
|
2041
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py,sha256=aM6hM3DjS7KQlcZtRjpDfz28Yh-0DaC8d6Rgp5jwZFQ,8717
|
2042
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py,sha256=a_j-ZM4V9Bb6M1gskSCVSjhKNWNQGIdfYYNNXXqRYJw,3953
|
2043
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py,sha256=fE7bkfWhlOaRhlN7KUtsLQMm0Uf8s7aWjQCUGIjNlks,9612
|
2044
2044
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_assertion.py,sha256=f46y6n1fMTTBaEZaMc9Dux7TwcSwGXkQq4pScLf8Jic,3511
|
2045
2045
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/client_secret.py,sha256=JHI9N_0qzvKpV_RvMMjChfnPMRtbPb7FF_n6GIVnKRk,3218
|
2046
2046
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/cloud_shell.py,sha256=jJ4b3hacR-Mzk3vcwvzbxwF4DrN60uyHv1BIhUzD3bA,1225
|
2047
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py,sha256=
|
2048
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py,sha256=
|
2047
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py,sha256=Fwk3uAtb6g7dKB6erxSKj_TWG7C4bMgwBEwsj-FLKO8,13988
|
2048
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py,sha256=mPgnl-IbhoV2mIiFY5kCPGDN-tvKvCBT_hSbCYTO5gQ,7947
|
2049
2049
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/imds.py,sha256=IsANbJ1R8JbJ7OAlUa2sy6rXfnT51goG49gIAahNfug,4078
|
2050
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py,sha256=
|
2050
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py,sha256=JlZqlGuCQP0iSlUF1LTsFSNTD6nZYoLypk3cyTbj-Co,9391
|
2051
2051
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/on_behalf_of.py,sha256=M6kn3uC-04wywCl9KpuYX1VvFJJBIfIT25TllDhxgzA,7300
|
2052
2052
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/service_fabric.py,sha256=15SUsJiLD29uKgYLeHJgh0EJumCYuM3TYx-JXe-IzOc,845
|
2053
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py,sha256=
|
2054
|
-
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py,sha256=
|
2053
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py,sha256=EIdUzL98uKA4Mncm_7hcGo-R9qqTbaCAzx15JM_DVO8,7434
|
2054
|
+
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py,sha256=3UCPYxFnIqPKJTiwi9bCyxnIKRpVHdsLTOQhBN75wpE,6907
|
2055
2055
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/workload_identity.py,sha256=6kvXuQKxiIFWqEgW6qJdoB6eo3bqctmlfI2T63h0Fqs,3896
|
2056
2056
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/__init__.py,sha256=kqVXG7igSXSP_Gi4MzJPHoXaudlQV18A7U1qNEvXeMM,838
|
2057
2057
|
py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_internal/aad_client.py,sha256=nDPSqqrFjtmm5xWLc7exa3aWxDvhwwge8yEZ__5ZtrQ,4260
|
@@ -2224,7 +2224,7 @@ py2docfx/venv/venv1/Lib/site-packages/google/api_core/rest_streaming_async.py,sh
|
|
2224
2224
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry_async.py,sha256=_r0ROYeQqdATtRMx-q_6o4bPmqFzPyjr_oV3lfloDSM,1514
|
2225
2225
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/timeout.py,sha256=heil0E6scuyFkMvymbR2bA33ZmJSavH_SmRNK9kpqcM,10279
|
2226
2226
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/universe.py,sha256=k_K5J0I3kKQiM2yEHvxeqAWxXEQZKJ2SfDlMAH-rQ08,2952
|
2227
|
-
py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py,sha256=
|
2227
|
+
py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py,sha256=97P6Jn16qbMxAeS6QRH78Yy0EMd3OOMhh_7iPrB69Ak,598
|
2228
2228
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/version_header.py,sha256=uEFXosCp8UH7XhznG5GQseTYtWNoJHXRPA557DWsUxA,1046
|
2229
2229
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/__init__.py,sha256=7sToxNNu9c_xqcpmO8dbrcSLOOxplnYOOSXjOX9QIXw,702
|
2230
2230
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/future/_helpers.py,sha256=jA6m2L1aqlOJA-9NdC1BDosPksZQ7FmLLYWDOrsQOPc,1248
|
@@ -2254,8 +2254,8 @@ py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/r
|
|
2254
2254
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/operations_v1/transports/rest_asyncio.py,sha256=t6ub6RgxKqPfRYO5ahy4l6vVqY2EvIKYuJSiT7TYPNw,24822
|
2255
2255
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/__init__.py,sha256=WhgtLBQO2oK-AehH_AHbGbfWo1IdG5ahUGrs3aFGw0o,2088
|
2256
2256
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_base.py,sha256=WJtEMphRNm1c3ldnuTjCzVu3Xzm-NwjmZhnULpHGVBM,12433
|
2257
|
-
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py,sha256=
|
2258
|
-
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py,sha256=
|
2257
|
+
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py,sha256=HtU2aTQNVK8-visW2-4yPVAeSmAx5OA5WRdL_nQD4W8,10853
|
2258
|
+
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py,sha256=kI_2cJO4NV5QvCzyAO3lJ_ZMFzCE240lWWp7eyYKGe0,14336
|
2259
2259
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary.py,sha256=DWAMzjFxd56SYJOPvZpCOdQq835tsxfA3BSyw0txHAU,13338
|
2260
2260
|
py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_unary_async.py,sha256=Js6ebrLmtITG3E95LR6QUlge64l-goRDfVVchL6OiTU,9415
|
2261
2261
|
py2docfx/venv/venv1/Lib/site-packages/google/auth/__init__.py,sha256=wg5MWwRk8nfJFMmUMU2gLirrPdGe9NMwqLkdSwdFwE8,1639
|
@@ -3120,7 +3120,7 @@ py2docfx/venv/venv1/Lib/site-packages/proto/message.py,sha256=0PM6ULYveFZ0lPM7jg
|
|
3120
3120
|
py2docfx/venv/venv1/Lib/site-packages/proto/modules.py,sha256=1g3HAZW0JWBx7LCrlMPamUOMHxaaf-QFwbYa6zgiplg,1585
|
3121
3121
|
py2docfx/venv/venv1/Lib/site-packages/proto/primitives.py,sha256=Fwu6KQdn1i6vVPPD3MxQXHKvbz7z5B42QlOwSTkcidI,1000
|
3122
3122
|
py2docfx/venv/venv1/Lib/site-packages/proto/utils.py,sha256=5-Dqe2WOPJQ0gsT5MTiMiPTDa8q56VfD-EcqIJD4eD0,1651
|
3123
|
-
py2docfx/venv/venv1/Lib/site-packages/proto/version.py,sha256=
|
3123
|
+
py2docfx/venv/venv1/Lib/site-packages/proto/version.py,sha256=OF7j9uLRJVWUnlwxOfWDwIGwf8R0Te4sjB4goPaEtVQ,599
|
3124
3124
|
py2docfx/venv/venv1/Lib/site-packages/proto/marshal/__init__.py,sha256=ughdxBgTpZ_GtOWnS2Waz1yVEbCno-61m5eRUmYxbSo,630
|
3125
3125
|
py2docfx/venv/venv1/Lib/site-packages/proto/marshal/compat.py,sha256=MLA_C3zXO8QUJA3VeMXBgySmaqroGqjN8Ta520SkZlw,2349
|
3126
3126
|
py2docfx/venv/venv1/Lib/site-packages/proto/marshal/marshal.py,sha256=pH47NsNP-a1xnD-E4EumGLd18A3oK_CBmfGs-ZoeoGM,12030
|
@@ -4207,7 +4207,7 @@ py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_addtas
|
|
4207
4207
|
py2docfx/venv/venv1/Lib/site-packages/win32comext/taskscheduler/test/test_localsystem.py,sha256=08ojAS48W6RLsUbRD45j0SJhg_Y2NFHZT6qjT4Vrig0,75
|
4208
4208
|
py2docfx/venv/venv1/Scripts/pywin32_postinstall.py,sha256=mx4WVp1hD_8xgkSXttNtto1BVDECZOc3FCClrR1SjFM,25736
|
4209
4209
|
py2docfx/venv/venv1/Scripts/pywin32_testall.py,sha256=hyGLMKILn3_W0q-McP1VJnNFW_z5yk_gesTMQDlUocM,3847
|
4210
|
-
py2docfx-0.1.15.
|
4211
|
-
py2docfx-0.1.15.
|
4212
|
-
py2docfx-0.1.15.
|
4213
|
-
py2docfx-0.1.15.
|
4210
|
+
py2docfx-0.1.15.dev2025501.dist-info/METADATA,sha256=QvRp-L5wczCRYUOln8NyaC07anRJf2D59MPhnh4uALc,550
|
4211
|
+
py2docfx-0.1.15.dev2025501.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
4212
|
+
py2docfx-0.1.15.dev2025501.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
|
4213
|
+
py2docfx-0.1.15.dev2025501.dist-info/RECORD,,
|
File without changes
|
File without changes
|