aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py185
1 files changed, 185 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py b/.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py
new file mode 100644
index 00000000..c0866a32
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/storage/filedatalake/_serialize.py
@@ -0,0 +1,185 @@
+# -------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for
+# license information.
+# --------------------------------------------------------------------------
+
+from typing import Any, Dict, Optional, Union
+
+from azure.storage.blob._serialize import _get_match_headers
+from ._shared import encode_base64
+from ._generated.models import ModifiedAccessConditions, PathHTTPHeaders, \
+ SourceModifiedAccessConditions, LeaseAccessConditions, CpkInfo
+
+
+_SUPPORTED_API_VERSIONS = [
+ '2019-02-02',
+ '2019-07-07',
+ '2019-10-10',
+ '2019-12-12',
+ '2020-02-10',
+ '2020-04-08',
+ '2020-06-12',
+ '2020-08-04',
+ '2020-10-02',
+ '2020-12-06',
+ '2021-02-12',
+ '2021-04-10',
+ '2021-06-08',
+ '2021-08-06',
+ '2021-12-02',
+ '2022-11-02',
+ '2023-01-03',
+ '2023-05-03',
+ '2023-08-03',
+ '2023-11-03',
+ '2024-05-04',
+ '2024-08-04',
+ '2024-11-04',
+ '2025-01-05',
+ '2025-05-05',
+] # This list must be in chronological order!
+
+
+def get_api_version(kwargs):
+ # type: (Dict[str, Any]) -> str
+ api_version = kwargs.get('api_version', None)
+ if api_version and api_version not in _SUPPORTED_API_VERSIONS:
+ versions = '\n'.join(_SUPPORTED_API_VERSIONS)
+ raise ValueError(f"Unsupported API version '{api_version}'. Please select from:\n{versions}")
+ return api_version or _SUPPORTED_API_VERSIONS[-1]
+
+
+def compare_api_versions(version1: str, version2: str) -> int:
+ v1 = _SUPPORTED_API_VERSIONS.index(version1)
+ v2 = _SUPPORTED_API_VERSIONS.index(version2)
+ if v1 == v2:
+ return 0
+ if v1 < v2:
+ return -1
+ return 1
+
+
+def convert_dfs_url_to_blob_url(dfs_account_url):
+ return dfs_account_url.replace('.dfs.', '.blob.', 1)
+
+
+def convert_datetime_to_rfc1123(date):
+ weekday = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"][date.weekday()]
+ month = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
+ "Oct", "Nov", "Dec"][date.month - 1]
+ return f"{weekday}, {date.day:02} {month} {date.year:04} {date.hour:02}:{date.minute:02}:{date.second:02} GMT"
+
+
+def add_metadata_headers(metadata=None):
+ # type: (Optional[Dict[str, str]]) -> str
+ if not metadata:
+ return None
+ headers = []
+ if metadata:
+ for key, value in metadata.items():
+ headers.append(key + '=')
+ headers.append(encode_base64(value))
+ headers.append(',')
+
+ if headers:
+ del headers[-1]
+
+ return ''.join(headers)
+
+
+def get_mod_conditions(kwargs):
+ # type: (Dict[str, Any]) -> ModifiedAccessConditions
+ if_match, if_none_match = _get_match_headers(kwargs, 'match_condition', 'etag')
+ return ModifiedAccessConditions(
+ if_modified_since=kwargs.pop('if_modified_since', None),
+ if_unmodified_since=kwargs.pop('if_unmodified_since', None),
+ if_match=if_match or kwargs.pop('if_match', None),
+ if_none_match=if_none_match or kwargs.pop('if_none_match', None)
+ )
+
+
+def get_source_mod_conditions(kwargs):
+ # type: (Dict[str, Any]) -> SourceModifiedAccessConditions
+ if_match, if_none_match = _get_match_headers(kwargs, 'source_match_condition', 'source_etag')
+ return SourceModifiedAccessConditions(
+ source_if_modified_since=kwargs.pop('source_if_modified_since', None),
+ source_if_unmodified_since=kwargs.pop('source_if_unmodified_since', None),
+ source_if_match=if_match or kwargs.pop('source_if_match', None),
+ source_if_none_match=if_none_match or kwargs.pop('source_if_none_match', None)
+ )
+
+
+def get_path_http_headers(content_settings):
+ path_headers = PathHTTPHeaders(
+ cache_control=content_settings.cache_control,
+ content_type=content_settings.content_type,
+ content_md5=bytearray(content_settings.content_md5) if content_settings.content_md5 else None,
+ content_encoding=content_settings.content_encoding,
+ content_language=content_settings.content_language,
+ content_disposition=content_settings.content_disposition
+ )
+ return path_headers
+
+
+def get_access_conditions(lease):
+ # type: (Optional[Union[BlobLeaseClient, str]]) -> Union[LeaseAccessConditions, None]
+ try:
+ lease_id = lease.id # type: ignore
+ except AttributeError:
+ lease_id = lease # type: ignore
+ return LeaseAccessConditions(lease_id=lease_id) if lease_id else None
+
+
+def get_lease_id(lease):
+ if not lease:
+ return ""
+ try:
+ lease_id = lease.id
+ except AttributeError:
+ lease_id = lease
+ return lease_id
+
+
+def get_lease_action_properties(kwargs: Dict[str, Any]) -> Dict[str, Any]:
+ lease_action = kwargs.pop('lease_action', None)
+ lease_duration = kwargs.pop('lease_duration', None)
+ lease = kwargs.pop('lease', None)
+ try:
+ lease_id = lease.id
+ except AttributeError:
+ lease_id = lease
+
+ proposed_lease_id = None
+ access_conditions = None
+
+ # Acquiring a new lease
+ if lease_action in ['acquire', 'acquire-release']:
+ # Use provided lease id as the new lease id
+ proposed_lease_id = lease_id
+ # Assign a default lease duration if not provided
+ lease_duration = lease_duration or -1
+ else:
+ # Use lease id as access conditions
+ access_conditions = LeaseAccessConditions(lease_id=lease_id) if lease_id else None
+
+ return {
+ 'lease_action': lease_action,
+ 'lease_duration': lease_duration,
+ 'proposed_lease_id': proposed_lease_id,
+ 'lease_access_conditions': access_conditions
+ }
+
+
+def get_cpk_info(scheme, kwargs):
+ # type: (str, Dict[str, Any]) -> CpkInfo
+ cpk = kwargs.pop('cpk', None)
+ if cpk:
+ if scheme.lower() != 'https':
+ raise ValueError("Customer provided encryption key must be used over HTTPS.")
+ return CpkInfo(
+ encryption_key=cpk.key_value,
+ encryption_key_sha256=cpk.key_hash,
+ encryption_algorithm=cpk.algorithm)
+
+ return None