Skip to content

Commit 892146b

Browse files
[Storage] Added support for timezone awareness datetime objects in FileProperties (Azure#43566)
1 parent 9302423 commit 892146b

File tree

5 files changed

+31
-25
lines changed

5 files changed

+31
-25
lines changed

sdk/storage/azure-storage-file-share/azure/storage/fileshare/_models.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
from azure.core.exceptions import HttpResponseError
1818
from azure.core.paging import PageIterator
1919

20+
from ._generated._utils.serialization import Deserializer
2021
from ._generated.models import AccessPolicy as GenAccessPolicy
2122
from ._generated.models import CorsRule as GeneratedCorsRule
2223
from ._generated.models import DirectoryItem
@@ -26,7 +27,6 @@
2627
from ._generated.models import ShareSmbSettings as GeneratedShareSmbSettings
2728
from ._generated.models import SmbMultichannel as GeneratedSmbMultichannel
2829
from ._generated.models import StorageServiceProperties as GeneratedStorageServiceProperties
29-
from ._parser import _parse_datetime_from_str
3030
from ._shared.models import DictMixin, get_enum_value
3131
from ._shared.response_handlers import process_storage_error, return_context_and_deserialized
3232

@@ -932,9 +932,12 @@ def __init__(self, **kwargs: Any) -> None:
932932
self.etag = kwargs.get('ETag') # type: ignore [assignment]
933933
self.server_encrypted = kwargs.get('x-ms-server-encrypted') # type: ignore [assignment]
934934
self.metadata = kwargs.get('metadata') # type: ignore [assignment]
935-
self.change_time = _parse_datetime_from_str(kwargs.get('x-ms-file-change-time'))
936-
self.creation_time = _parse_datetime_from_str(kwargs.get('x-ms-file-creation-time'))
937-
self.last_write_time = _parse_datetime_from_str(kwargs.get('x-ms-file-last-write-time'))
935+
self.change_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-change-time')) if (
936+
kwargs.get('x-ms-file-change-time') is not None) else None
937+
self.creation_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-creation-time')) if (
938+
kwargs.get('x-ms-file-creation-time') is not None) else None
939+
self.last_write_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-last-write-time')) if (
940+
kwargs.get('x-ms-file-last-write-time') is not None) else None
938941
self.last_access_time = None
939942
self.file_attributes = kwargs.get('x-ms-file-attributes') # type: ignore [assignment]
940943
self.permission_key = kwargs.get('x-ms-file-permission-key') # type: ignore [assignment]
@@ -1180,9 +1183,12 @@ def __init__(self, **kwargs: Any) -> None:
11801183
self.copy = CopyProperties(**kwargs)
11811184
self.content_settings = ContentSettings(**kwargs)
11821185
self.lease = LeaseProperties(**kwargs)
1183-
self.change_time = _parse_datetime_from_str(kwargs.get('x-ms-file-change-time'))
1184-
self.creation_time = _parse_datetime_from_str(kwargs.get('x-ms-file-creation-time'))
1185-
self.last_write_time = _parse_datetime_from_str(kwargs.get('x-ms-file-last-write-time'))
1186+
self.change_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-change-time')) if (
1187+
kwargs.get('x-ms-file-change-time') is not None) else None
1188+
self.creation_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-creation-time')) if (
1189+
kwargs.get('x-ms-file-creation-time') is not None) else None
1190+
self.last_write_time = Deserializer.deserialize_iso(kwargs.get('x-ms-file-last-write-time')) if (
1191+
kwargs.get('x-ms-file-last-write-time') is not None) else None
11861192
self.last_access_time = None
11871193
self.file_attributes = kwargs.get('x-ms-file-attributes') # type: ignore [assignment]
11881194
self.permission_key = kwargs.get('x-ms-file-permission-key') # type: ignore [assignment]

sdk/storage/azure-storage-file-share/tests/test_directory.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# license information.
55
# --------------------------------------------------------------------------
66
import unittest
7-
from datetime import datetime, timedelta
7+
from datetime import datetime, timedelta, timezone
88

99
import pytest
1010
from azure.core.exceptions import ClientAuthenticationError, ResourceExistsError, ResourceNotFoundError
@@ -110,7 +110,7 @@ def test_create_directory_set_smb_properties(self, **kwargs):
110110

111111
directory_client = share_client.get_directory_client('dir1')
112112
file_attributes = NTFSAttributes(read_only=True, directory=True)
113-
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000)
113+
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000, tzinfo=timezone.utc)
114114

115115
# Act
116116
directory_client.create_directory(
@@ -1262,9 +1262,9 @@ def test_rename_directory_smb_properties(self, **kwargs):
12621262
source_directory = share_client.create_directory('dir1')
12631263

12641264
file_attributes = NTFSAttributes(read_only=True, directory=True)
1265-
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000)
1266-
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000)
1267-
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000)
1265+
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000, tzinfo=timezone.utc)
1266+
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000, tzinfo=timezone.utc)
1267+
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000, tzinfo=timezone.utc)
12681268

12691269
# Act
12701270
new_directory = source_directory.rename_directory(

sdk/storage/azure-storage-file-share/tests/test_directory_async.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# --------------------------------------------------------------------------
88
import unittest
99
import asyncio
10-
from datetime import datetime, timedelta
10+
from datetime import datetime, timedelta, timezone
1111

1212
import pytest
1313
from azure.core.exceptions import ClientAuthenticationError, ResourceExistsError, ResourceNotFoundError
@@ -115,7 +115,7 @@ async def test_create_directory_set_smb_properties(self, **kwargs):
115115

116116
directory_client = share_client.get_directory_client('dir1')
117117
file_attributes = NTFSAttributes(read_only=True, directory=True)
118-
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000)
118+
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000, tzinfo=timezone.utc)
119119

120120
# Act
121121
await directory_client.create_directory(
@@ -1362,9 +1362,9 @@ async def test_rename_directory_smb_properties(self, **kwargs):
13621362
source_directory = await share_client.create_directory('dir1')
13631363

13641364
file_attributes = NTFSAttributes(read_only=True, directory=True)
1365-
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000)
1366-
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000)
1367-
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000)
1365+
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000, tzinfo=timezone.utc)
1366+
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000, tzinfo=timezone.utc)
1367+
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000, tzinfo=timezone.utc)
13681368

13691369
# Act
13701370
new_directory = await source_directory.rename_directory(

sdk/storage/azure-storage-file-share/tests/test_file.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,7 @@ def test_create_file_set_smb_properties(self, **kwargs):
642642
file_client = self._get_file_client()
643643

644644
file_attributes = NTFSAttributes(read_only=True, archive=True)
645-
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000)
645+
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000, tzinfo=timezone.utc)
646646

647647
# Act
648648
file_client.create_file(
@@ -3598,9 +3598,9 @@ def test_rename_file_smb_properties(self, **kwargs):
35983598
source_file = self._create_file('file1')
35993599

36003600
file_attributes = NTFSAttributes(read_only=True, archive=True)
3601-
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000)
3602-
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000)
3603-
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000)
3601+
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000, tzinfo=timezone.utc)
3602+
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000, tzinfo=timezone.utc)
3603+
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000, tzinfo=timezone.utc)
36043604

36053605
# Act
36063606
new_file = source_file.rename_file(

sdk/storage/azure-storage-file-share/tests/test_file_async.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ async def test_create_file_set_smb_properties(self, **kwargs):
657657
file_client = await self._get_file_client(storage_account_name, storage_account_key)
658658

659659
file_attributes = NTFSAttributes(read_only=True, archive=True)
660-
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000)
660+
file_creation_time = file_last_write_time = file_change_time = datetime(2022, 3, 10, 10, 14, 30, 500000, tzinfo=timezone.utc)
661661

662662
# Act
663663
await file_client.create_file(
@@ -3711,9 +3711,9 @@ async def test_rename_file_smb_properties(self, **kwargs):
37113711
source_file = await self._create_file(storage_account_name, storage_account_key, 'file1')
37123712

37133713
file_attributes = NTFSAttributes(read_only=True, archive=True)
3714-
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000)
3715-
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000)
3716-
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000)
3714+
file_creation_time = datetime(2022, 1, 26, 10, 9, 30, 500000, tzinfo=timezone.utc)
3715+
file_last_write_time = datetime(2022, 1, 26, 10, 14, 30, 500000, tzinfo=timezone.utc)
3716+
file_change_time = datetime(2022, 3, 7, 10, 14, 30, 500000, tzinfo=timezone.utc)
37173717

37183718
# Act
37193719
new_file = await source_file.rename_file(

0 commit comments

Comments
 (0)