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.
Files changed (37) hide show
  1. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/application.py +1 -1
  2. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py +1 -1
  3. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py +1 -1
  4. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_cli.py +1 -1
  5. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_pipelines.py +1 -1
  6. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py +1 -1
  7. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/chained.py +1 -1
  8. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/default.py +1 -1
  9. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/environment.py +4 -1
  10. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/managed_identity.py +48 -21
  11. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/shared_cache.py +1 -1
  12. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/user_password.py +10 -0
  13. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py +1 -1
  14. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aad_client_base.py +13 -3
  15. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py +28 -1
  16. py2docfx/venv/venv1/Lib/site-packages/azure/identity/_version.py +1 -1
  17. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/application.py +1 -1
  18. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py +1 -1
  19. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py +1 -1
  20. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_cli.py +1 -1
  21. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_pipelines.py +1 -1
  22. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py +1 -1
  23. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py +3 -3
  24. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py +1 -1
  25. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/default.py +1 -1
  26. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py +1 -1
  27. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/managed_identity.py +23 -12
  28. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/shared_cache.py +1 -1
  29. py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py +1 -1
  30. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming.py +2 -2
  31. py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py +2 -2
  32. py2docfx/venv/venv1/Lib/site-packages/google/api_core/version.py +1 -1
  33. py2docfx/venv/venv1/Lib/site-packages/proto/version.py +1 -1
  34. {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/METADATA +1 -1
  35. {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/RECORD +37 -37
  36. {py2docfx-0.1.15.dev2021664.dist-info → py2docfx-0.1.15.dev2025501.dist-info}/WHEEL +0 -0
  37. {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(client_id: Optional[str], identity_config: Optional[Mapping[str, str]]) -> None:
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 ("object_id", "resource_id", "client_id")):
24
+ if any(key in identity_config for key in valid_keys):
22
25
  raise ValueError(
23
- "identity_config must not contain 'object_id', 'resource_id', or 'client_id' when 'client_id' is "
24
- "provided as a keyword argument."
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
- # Only one of these keys should be present if one is present.
27
- valid_keys = {"object_id", "resource_id", "client_id"}
28
- if len(identity_config.keys() & valid_keys) > 1:
29
- raise ValueError(
30
- f"identity_config must not contain more than one of the following keys: {', '.join(valid_keys)}"
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
- _LOGGER.info("%s will use Service Fabric managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use App Service managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Azure Arc managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Azure ML managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Cloud Shell managed identity", self.__class__.__name__)
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('Configure the environment with a client ID or pass a value for "client_id" argument')
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
- header = json.dumps({"typ": "JWT", "alg": "RS256", "x5t": certificate.thumbprint}).encode("utf-8")
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(header) + b"." + base64.urlsafe_b64encode(payload)
254
- signature = certificate.sign(jws)
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
- def sign(self, plaintext: bytes) -> bytes:
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
+ )
@@ -2,4 +2,4 @@
2
2
  # Copyright (c) Microsoft Corporation.
3
3
  # Licensed under the MIT License.
4
4
  # ------------------------------------
5
- VERSION = "1.20.0"
5
+ VERSION = "1.21.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.
@@ -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: Path to a PEM-encoded certificate file including the private key. If not provided,
25
- `certificate_data` is required.
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
- _LOGGER.info("%s will use Service Fabric managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use App Service managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Azure Arc managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Azure ML managed identity", self.__class__.__name__)
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
- _LOGGER.info("%s will use Cloud Shell managed identity", self.__class__.__name__)
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('Configure the environment with a client ID or pass a value for "client_id" argument')
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: _P.args = (),
63
- init_kwargs: _P.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: _P.args = (),
66
- init_kwargs: _P.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.
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "2.24.1"
15
+ __version__ = "2.24.2"
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #
15
- __version__ = "1.26.0"
15
+ __version__ = "1.26.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2docfx
3
- Version: 0.1.15.dev2021664
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=ZFc7EBHITbgcUxJk-s7aMH90qVVpXl15b9zzsytfKd0,170
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=Ew2pypi9Z81E0xLoROEyX0IUlnYG_e4p1NJ3OckNHpM,6435
1984
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/authorization_code.py,sha256=ZmdEIn710IqPXSeVNzgdHc9IZ-XrN8krZFhp3KYnAzM,7217
1985
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azd_cli.py,sha256=KcUoPaJaftVTL6-7r0f1W7L1D2Ds3dEb6JCWJjoNDA0,12440
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=ypx8tGKbPRVE7oOXOQQn73uUeMfuDhkaSrU0RTYTVLo,11275
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=xbWqDL0SAM84C_sunvPBQ1fMN8pS3iIdprwmZEa_rLs,8542
1990
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/azure_powershell.py,sha256=dp-k5ydDPn7gt1kqzr7fWN4YdBqm3F-P29-hRuM47p8,10929
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=FQO13rzJxthtCrlJzR-4HwMP4S7m1yMza0GbjiDxP1E,10015
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=1HM5XNFhDWpF-44_TqprGyt5hGq1ytSkG6WTaijq-6A,15323
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=uI3hrPNKdgVxNb1r6-Imaa__30o0nmOGb8VID8QzUR0,9511
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=3sr0wbxGUw2lvJXP25V_APV1yuL3zdc2euMKJdxPB1k,9654
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=kqlEMbHJb1Ky2Whnuwn72N1EjpaEAxW45cCsq72R5Ek,8997
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=x92tkv7xe-YK-mbM0QBFu0kaHShuMHRZusZs8ByxoSI,4556
2007
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_credentials/vscode.py,sha256=39g07fYproZ8QR5klBXBNR0p70sClTJOTfrup7EPRDI,10986
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=5CZE19MJAyFmdGShM-S-RxPYGWCEhbj53uMZyMas5jo,16675
2012
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/_internal/aadclient_certificate.py,sha256=bURwToOkDTu1C1R-wgDltfDQpmeioQxmMl__Xq64H4g,1890
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=vflikwr_RbG7UJaeMiSO7XxlgnAZr8hR_9thacNh7CQ,6539
2035
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/authorization_code.py,sha256=05qyzHrEgo2EroIgrZz3af0T8H9AC3jod2TaIR1DTD0,7401
2036
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azd_cli.py,sha256=TiCwnuluniSH9yyZ1ifbW2dpYJ8qYjHPnVVvYzjqRqc,10975
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=iUsXxt-nXvY2rXYE08blaSSu7FFgK6ys26cmgPx1yro,9902
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=FHVId296gbLEIXgBWYiXThMx0_W0lQB6-3LMyrkBa9U,7434
2041
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/azure_powershell.py,sha256=zmmW6n5KwtNphkAHex0rg7IOx8i0qzXYIq-NSBdJWng,8693
2042
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/certificate.py,sha256=EkJCVZskfqE396JzWRHvD_il2QZZX4UPMTwUJwUX6cs,3920
2043
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/chained.py,sha256=-H_XhRxe8_M-QtcHWp0TqcuNXWaxJk-hISzVZItTB0c,9588
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=wSDNeR94ISWuwaDSHzkOsAqyYp0yQ883tqgIHqqOdtk,13964
2048
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/environment.py,sha256=1Duguy5dyhWKx4_vwwH2NMQyiBTPWQsWWy_u5auiRUA,7923
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=gj37QkYZtNJLi0b19b-9CGYy_Z12JNwCVAoJCKgNTfw,9034
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=_soM-tNKtnmvZ8bbNxyz1tsyR7CTgH2tknbdxFa_rbk,7410
2054
- py2docfx/venv/venv1/Lib/site-packages/azure/identity/aio/_credentials/vscode.py,sha256=DEDSuV-2_xfEDxPqc-Srtecles8wMG7lRLMgbI05XAA,6883
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=1salxwXO169HefiutfiSEjSjnLITiIL_Ua_MKy0_Y-k,598
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=kt5ucutVWGYzIsBugqag2DKBwucBmRtkKUvvlKHQ5ew,10860
2258
- py2docfx/venv/venv1/Lib/site-packages/google/api_core/retry/retry_streaming_async.py,sha256=7liXfL9o9X9BvDxwFoHdgcClQJq8A9l_Ir5Z_gN4ZvA,14343
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=Qed30x1JJcM1k0xzw2wdqux4mF-izEZNoYl79iX4A_o,599
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.dev2021664.dist-info/METADATA,sha256=Lt2ie62zhUHin10MBJ6-GWqtqHO-7EtA1YRCIPjve_0,550
4211
- py2docfx-0.1.15.dev2021664.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
4212
- py2docfx-0.1.15.dev2021664.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
4213
- py2docfx-0.1.15.dev2021664.dist-info/RECORD,,
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,,