Skip to content

Commit 16ce680

Browse files
author
Yalin Li
authored
[Tables] Enable to run black in ci (Azure#31306)
1 parent f052189 commit 16ce680

File tree

78 files changed

+4932
-5330
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+4932
-5330
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore
1+
__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__path__ = __import__('pkgutil').extend_path(__path__, __name__) # type: ignore
1+
__path__ = __import__("pkgutil").extend_path(__path__, __name__) # type: ignore

sdk/tables/azure-data-tables/azure/data/tables/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
TableItem,
2121
ResourceTypes,
2222
AccountSasPermissions,
23-
TransactionOperation
23+
TransactionOperation,
2424
)
2525
from ._version import VERSION
2626

sdk/tables/azure-data-tables/azure/data/tables/_authentication.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
AsyncHttpTransport = None # type: ignore
2121

2222
try:
23-
from yarl import URL # cspell:disable-line
23+
from yarl import URL # cspell:disable-line
2424
except ImportError:
2525
pass
2626

@@ -88,9 +88,7 @@ def __init__(self, credential, is_emulated=False):
8888
self.is_emulated = is_emulated
8989

9090
def _get_headers(self, request, headers_to_sign):
91-
headers = dict(
92-
(name.lower(), value) for name, value in request.headers.items() if value
93-
)
91+
headers = dict((name.lower(), value) for name, value in request.headers.items() if value)
9492
if "content-length" in headers and headers["content-length"] == "0":
9593
del headers["content-length"]
9694
return "\n".join(headers.get(x, "") for x in headers_to_sign) + "\n"
@@ -187,7 +185,7 @@ def __init__(
187185
*scopes: str,
188186
discover_tenant: bool = True,
189187
discover_scopes: bool = True,
190-
**kwargs
188+
**kwargs,
191189
) -> None:
192190
self._discover_tenant = discover_tenant
193191
self._discover_scopes = discover_scopes
@@ -228,43 +226,33 @@ def on_challenge(self, request: PipelineRequest, response: PipelineResponse) ->
228226
def _configure_credential(credential: AzureNamedKeyCredential) -> SharedKeyCredentialPolicy:
229227
...
230228

229+
231230
@overload
232231
def _configure_credential(credential: SharedKeyCredentialPolicy) -> SharedKeyCredentialPolicy:
233232
...
234233

234+
235235
@overload
236236
def _configure_credential(credential: AzureSasCredential) -> AzureSasCredentialPolicy:
237237
...
238238

239+
239240
@overload
240241
def _configure_credential(credential: TokenCredential) -> BearerTokenChallengePolicy:
241242
...
242243

244+
243245
@overload
244246
def _configure_credential(credential: None) -> None:
245247
...
246248

249+
247250
def _configure_credential(
248-
credential: Optional[
249-
Union[
250-
AzureNamedKeyCredential,
251-
AzureSasCredential,
252-
TokenCredential,
253-
SharedKeyCredentialPolicy
254-
]
255-
]
256-
) -> Optional[
257-
Union[
258-
BearerTokenChallengePolicy,
259-
AzureSasCredentialPolicy,
260-
SharedKeyCredentialPolicy
261-
]
262-
]:
251+
credential: Optional[Union[AzureNamedKeyCredential, AzureSasCredential, TokenCredential, SharedKeyCredentialPolicy]]
252+
) -> Optional[Union[BearerTokenChallengePolicy, AzureSasCredentialPolicy, SharedKeyCredentialPolicy]]:
263253
if hasattr(credential, "get_token"):
264254
credential = cast(TokenCredential, credential)
265-
return BearerTokenChallengePolicy(
266-
credential, STORAGE_OAUTH_SCOPE
267-
)
255+
return BearerTokenChallengePolicy(credential, STORAGE_OAUTH_SCOPE)
268256
if isinstance(credential, SharedKeyCredentialPolicy):
269257
return credential
270258
if isinstance(credential, AzureSasCredential):

sdk/tables/azure-data-tables/azure/data/tables/_base_client.py

Lines changed: 27 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from uuid import uuid4
99
from typing import Any, Dict, List, Optional, Mapping, Union
10+
1011
try:
1112
from urllib.parse import parse_qs, quote, urlparse
1213
except ImportError:
@@ -38,12 +39,7 @@
3839
DEFAULT_COSMOS_ENDPOINT_SUFFIX,
3940
DEFAULT_STORAGE_ENDPOINT_SUFFIX,
4041
)
41-
from ._error import (
42-
RequestTooLargeError,
43-
TableTransactionError,
44-
_decode_error,
45-
_validate_tablename_error
46-
)
42+
from ._error import RequestTooLargeError, TableTransactionError, _decode_error, _validate_tablename_error
4743
from ._models import LocationMode
4844
from ._authentication import _configure_credential
4945
from ._policies import (
@@ -56,16 +52,14 @@
5652

5753
_SUPPORTED_API_VERSIONS = ["2019-02-02", "2019-07-07", "2020-12-06"]
5854
# cspell:disable-next-line
59-
_DEV_CONN_STRING = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1" # pylint: disable=line-too-long
55+
_DEV_CONN_STRING = "DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;TableEndpoint=http://127.0.0.1:10002/devstoreaccount1" # pylint: disable=line-too-long
6056

6157

6258
def get_api_version(kwargs: Dict[str, Any], default: str) -> str:
6359
api_version = kwargs.pop("api_version", None)
6460
if api_version and api_version not in _SUPPORTED_API_VERSIONS:
6561
versions = "\n".join(_SUPPORTED_API_VERSIONS)
66-
raise ValueError(
67-
f"Unsupported API version '{api_version}'. Please select from:\n{versions}"
68-
)
62+
raise ValueError(f"Unsupported API version '{api_version}'. Please select from:\n{versions}")
6963
return api_version or default
7064

7165

@@ -74,7 +68,7 @@ def __init__(
7468
self,
7569
account_url: str,
7670
credential: Optional[Union[AzureNamedKeyCredential, AzureSasCredential, TokenCredential]] = None,
77-
**kwargs
71+
**kwargs,
7872
) -> None:
7973
try:
8074
if not account_url.lower().startswith("http"):
@@ -87,9 +81,7 @@ def __init__(
8781

8882
_, sas_token = parse_query(parsed_url.query)
8983
if not sas_token and not credential:
90-
raise ValueError(
91-
"You need to provide either an AzureSasCredential or AzureNamedKeyCredential"
92-
)
84+
raise ValueError("You need to provide either an AzureSasCredential or AzureNamedKeyCredential")
9385
self._query_str, credential = format_query_string(sas_token, credential)
9486
self._location_mode = kwargs.get("location_mode", LocationMode.PRIMARY)
9587
self._hosts = kwargs.get("_hosts")
@@ -115,17 +107,15 @@ def __init__(
115107
if self.scheme.lower() != "https" and hasattr(self.credential, "get_token"):
116108
raise ValueError("Token credential is only supported with HTTPS.")
117109
if hasattr(self.credential, "named_key"):
118-
self.account_name = self.credential.named_key.name # type: ignore
110+
self.account_name = self.credential.named_key.name # type: ignore
119111
endpoint_suffix = os.getenv("TABLES_STORAGE_ENDPOINT_SUFFIX", DEFAULT_STORAGE_ENDPOINT_SUFFIX)
120112
secondary_hostname = f"{self.account_name}-secondary.table.{endpoint_suffix}"
121113

122114
if not self._hosts:
123115
if len(account) > 1:
124116
secondary_hostname = parsed_url.netloc.replace(
125117
account[0], account[0] + "-secondary"
126-
) + parsed_url.path.replace(
127-
account[0], account[0] + "-secondary"
128-
).rstrip("/")
118+
) + parsed_url.path.replace(account[0], account[0] + "-secondary").rstrip("/")
129119
if kwargs.get("secondary_hostname"):
130120
secondary_hostname = kwargs["secondary_hostname"]
131121
primary_hostname = (parsed_url.netloc + parsed_url.path).rstrip("/")
@@ -214,12 +204,12 @@ class TablesBaseClient(AccountHostsMixin):
214204
:ivar str api_version: The service API version.
215205
"""
216206

217-
def __init__( # pylint: disable=missing-client-constructor-parameter-credential
207+
def __init__( # pylint: disable=missing-client-constructor-parameter-credential
218208
self,
219209
endpoint: str,
220210
*,
221211
credential: Optional[Union[AzureSasCredential, AzureNamedKeyCredential, TokenCredential]] = None,
222-
**kwargs
212+
**kwargs,
223213
) -> None:
224214
"""Create TablesBaseClient from a Credential.
225215
@@ -236,13 +226,9 @@ def __init__( # pylint: disable=missing-client-constructor-parameter-credential
236226
is "2019-02-02".
237227
:paramtype api_version: str
238228
"""
239-
super(TablesBaseClient, self).__init__(endpoint, credential=credential, **kwargs) # type: ignore
240-
self._client = AzureTable(
241-
self.url,
242-
policies=kwargs.pop('policies', self._policies),
243-
**kwargs
244-
)
245-
self._client._config.version = get_api_version(kwargs, self._client._config.version) # type: ignore # pylint: disable=protected-access
229+
super(TablesBaseClient, self).__init__(endpoint, credential=credential, **kwargs) # type: ignore
230+
self._client = AzureTable(self.url, policies=kwargs.pop("policies", self._policies), **kwargs)
231+
self._client._config.version = get_api_version(kwargs, self._client._config.version) # type: ignore # pylint: disable=protected-access
246232

247233
def __enter__(self):
248234
self._client.__enter__()
@@ -284,17 +270,15 @@ def _batch_send(self, table_name: str, *reqs: HttpRequest, **kwargs) -> List[Map
284270
policies = [StorageHeadersPolicy()]
285271

286272
changeset = HttpRequest("POST", None) # type: ignore
287-
changeset.set_multipart_mixed(
288-
*reqs, policies=policies, boundary=f"changeset_{uuid4()}" # type: ignore
289-
)
273+
changeset.set_multipart_mixed(*reqs, policies=policies, boundary=f"changeset_{uuid4()}") # type: ignore
290274
request = self._client._client.post( # pylint: disable=protected-access
291275
url=f"{self.scheme}://{self._primary_hostname}/$batch",
292276
headers={
293277
"x-ms-version": self.api_version,
294278
"DataServiceVersion": "3.0",
295279
"MaxDataServiceVersion": "3.0;NetFx",
296-
'Content-Type': 'application/json',
297-
'Accept': 'application/json'
280+
"Content-Type": "application/json",
281+
"Accept": "application/json",
298282
},
299283
)
300284
request.set_multipart_mixed(
@@ -307,9 +291,8 @@ def _batch_send(self, table_name: str, *reqs: HttpRequest, **kwargs) -> List[Map
307291
response = pipeline_response.http_response
308292
if response.status_code == 413:
309293
raise _decode_error(
310-
response,
311-
error_message="The transaction request was too large",
312-
error_type=RequestTooLargeError)
294+
response, error_message="The transaction request was too large", error_type=RequestTooLargeError
295+
)
313296
if response.status_code != 202:
314297
decoded = _decode_error(response)
315298
_validate_tablename_error(decoded, table_name)
@@ -320,13 +303,9 @@ def _batch_send(self, table_name: str, *reqs: HttpRequest, **kwargs) -> List[Map
320303
if any(error_parts):
321304
if error_parts[0].status_code == 413:
322305
raise _decode_error(
323-
response,
324-
error_message="The transaction request was too large",
325-
error_type=RequestTooLargeError)
326-
decoded = _decode_error(
327-
response=error_parts[0],
328-
error_type=TableTransactionError
329-
)
306+
response, error_message="The transaction request was too large", error_type=RequestTooLargeError
307+
)
308+
decoded = _decode_error(response=error_parts[0], error_type=TableTransactionError)
330309
_validate_tablename_error(decoded, table_name)
331310
raise decoded
332311
return [extract_batch_part_metadata(p) for p in parts]
@@ -346,6 +325,7 @@ class TransportWrapper(HttpTransport):
346325
:param transport: The Http Transport instance
347326
:type transport: ~azure.core.pipeline.transport.HttpTransport
348327
"""
328+
349329
def __init__(self, transport):
350330
self._transport = transport
351331

@@ -409,16 +389,17 @@ def parse_connection_str(conn_str, credential, keyword_args):
409389

410390
def extract_batch_part_metadata(response_part):
411391
metadata = {}
412-
if 'Etag' in response_part.headers:
413-
metadata['etag'] = response_part.headers['Etag']
392+
if "Etag" in response_part.headers:
393+
metadata["etag"] = response_part.headers["Etag"]
414394
return metadata
415395

416396

417397
def format_query_string(sas_token, credential):
418398
query_str = "?"
419399
if sas_token and isinstance(credential, AzureSasCredential):
420400
raise ValueError(
421-
"You cannot use AzureSasCredential when the resource URI also contains a Shared Access Signature.")
401+
"You cannot use AzureSasCredential when the resource URI also contains a Shared Access Signature."
402+
)
422403
if sas_token and not credential:
423404
query_str += sas_token
424405
elif credential:
@@ -429,11 +410,7 @@ def format_query_string(sas_token, credential):
429410
def parse_query(query_str):
430411
sas_values = QueryStringConstants.to_list()
431412
parsed_query = {k: v[0] for k, v in parse_qs(query_str).items()}
432-
sas_params = [
433-
f"{k}={quote(v, safe='')}"
434-
for k, v in parsed_query.items()
435-
if k in sas_values
436-
]
413+
sas_params = [f"{k}={quote(v, safe='')}" for k, v in parsed_query.items() if k in sas_values]
437414
sas_token = None
438415
if sas_params:
439416
sas_token = "&".join(sas_params)

sdk/tables/azure-data-tables/azure/data/tables/_deserialize.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323

2424
class TablesEntityDatetime(datetime):
25-
2625
@property
2726
def tables_service_value(self):
2827
try:
@@ -60,13 +59,9 @@ def _from_entity_datetime(value):
6059
# Cosmos returns this with a decimal point that throws an error on deserialization
6160
cleaned_value = clean_up_dotnet_timestamps(value)
6261
try:
63-
dt_obj = TablesEntityDatetime.strptime(cleaned_value, "%Y-%m-%dT%H:%M:%S.%fZ").replace(
64-
tzinfo=timezone.utc
65-
)
62+
dt_obj = TablesEntityDatetime.strptime(cleaned_value, "%Y-%m-%dT%H:%M:%S.%fZ").replace(tzinfo=timezone.utc)
6663
except ValueError:
67-
dt_obj = TablesEntityDatetime.strptime(cleaned_value, "%Y-%m-%dT%H:%M:%SZ").replace(
68-
tzinfo=timezone.utc
69-
)
64+
dt_obj = TablesEntityDatetime.strptime(cleaned_value, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
7065
dt_obj._service_value = value # pylint:disable=protected-access,assigning-non-slot
7166
return dt_obj
7267

@@ -98,7 +93,7 @@ def _from_entity_guid(value):
9893

9994
def _from_entity_str(value: Union[str, bytes]) -> str:
10095
if isinstance(value, bytes):
101-
return value.decode('utf-8')
96+
return value.decode("utf-8")
10297
return value
10398

10499

@@ -181,7 +176,7 @@ def _convert_to_entity(entry_element):
181176
if isinstance(value, int) and mtype is None:
182177
mtype = EdmType.INT32
183178

184-
if value >= 2 ** 31 or value < (-(2 ** 31)):
179+
if value >= 2**31 or value < (-(2**31)):
185180
mtype = EdmType.INT64
186181

187182
# Add type for String
@@ -212,13 +207,13 @@ def _convert_to_entity(entry_element):
212207
if not etag:
213208
etag = "W/\"datetime'" + url_quote(timestamp) + "'\""
214209
timestamp = _from_entity_datetime(timestamp)
215-
odata.update({'etag': etag, 'timestamp': timestamp})
210+
odata.update({"etag": etag, "timestamp": timestamp})
216211
entity._metadata = odata # pylint: disable=protected-access
217212
return entity
218213

219214

220215
def _extract_etag(response):
221-
""" Extracts the etag from the response headers.
216+
"""Extracts the etag from the response headers.
222217
223218
:param response: The PipelineResponse object.
224219
:type response: ~azure.core.pipeline.PipelineResponse
@@ -255,16 +250,12 @@ def _normalize_headers(headers):
255250
return normalized
256251

257252

258-
def _return_headers_and_deserialized(
259-
response, deserialized, response_headers
260-
): # pylint: disable=unused-argument
253+
def _return_headers_and_deserialized(response, deserialized, response_headers): # pylint: disable=unused-argument
261254
return _normalize_headers(response_headers), deserialized
262255

263256

264-
def _return_context_and_deserialized(
265-
response, deserialized, response_headers
266-
): # pylint: disable=unused-argument
267-
return response.context['location_mode'], deserialized, response_headers
257+
def _return_context_and_deserialized(response, deserialized, response_headers): # pylint: disable=unused-argument
258+
return response.context["location_mode"], deserialized, response_headers
268259

269260

270261
def _trim_service_metadata(metadata: Dict[str, str], content: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
@@ -273,7 +264,7 @@ def _trim_service_metadata(metadata: Dict[str, str], content: Optional[Dict[str,
273264
"etag": metadata.pop("etag", None),
274265
"version": metadata.pop("version", None),
275266
}
276-
preference = metadata.pop('preference_applied', None)
267+
preference = metadata.pop("preference_applied", None)
277268
if preference:
278269
result["preference_applied"] = preference
279270
result["content"] = content # type: ignore

0 commit comments

Comments
 (0)