Skip to content

Commit b4e3544

Browse files
[Storage] Fix for missing expires_on kwarg in request handler (#38767)
1 parent edfce47 commit b4e3544

File tree

6 files changed

+24
-11
lines changed

6 files changed

+24
-11
lines changed

sdk/storage/azure-storage-file-datalake/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
### Features Added
66

7+
### Bugs Fixed
8+
- Fixed request handler to handle `None` value for `expires_on` keyword to `set_file_expiry` API.
9+
710
## 12.18.0 (2024-11-13)
811

912
### Features Added

sdk/storage/azure-storage-file-datalake/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "python",
44
"TagPrefix": "python/storage/azure-storage-file-datalake",
5-
"Tag": "python/storage/azure-storage-file-datalake_e5d1c29802"
5+
"Tag": "python/storage/azure-storage-file-datalake_202e9f5227"
66
}

sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/_data_lake_file_client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# --------------------------------------------------------------------------
66
# pylint: disable=docstring-keyword-should-match-keyword-only
77

8+
from datetime import datetime
89
from io import BytesIO
910
from typing import (
1011
Any, AnyStr, AsyncIterable, Dict, IO, Iterable, Optional, Union,
@@ -32,7 +33,6 @@
3233

3334
if TYPE_CHECKING:
3435
from azure.core.credentials import AzureNamedKeyCredential, AzureSasCredential, TokenCredential
35-
from datetime import datetime
3636
from ._models import ContentSettings
3737

3838

@@ -368,9 +368,9 @@ def set_file_expiry(self, expiry_options, # type: str
368368
#other-client--per-operation-configuration>`_.
369369
:rtype: None
370370
"""
371-
try:
371+
if isinstance(expires_on, datetime):
372372
expires_on = convert_datetime_to_rfc1123(expires_on)
373-
except AttributeError:
373+
elif expires_on is not None:
374374
expires_on = str(expires_on)
375375
self._datalake_client_for_blob_operation.path \
376376
.set_expiry(expiry_options, expires_on=expires_on, **kwargs)

sdk/storage/azure-storage-file-datalake/azure/storage/filedatalake/aio/_data_lake_file_client_async.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# --------------------------------------------------------------------------
66
# pylint: disable=invalid-overridden-method, docstring-keyword-should-match-keyword-only
77

8+
from datetime import datetime
89
from typing import (
910
Any, AnyStr, AsyncIterable, Dict, IO, Iterable, Optional, Union,
1011
TYPE_CHECKING)
@@ -23,7 +24,6 @@
2324
if TYPE_CHECKING:
2425
from azure.core.credentials import AzureNamedKeyCredential, AzureSasCredential
2526
from azure.core.credentials_async import AsyncTokenCredential
26-
from datetime import datetime
2727
from .._models import ContentSettings
2828

2929

@@ -328,9 +328,9 @@ async def set_file_expiry(self, expiry_options, # type: str
328328
#other-client--per-operation-configuration>`_.
329329
:rtype: None
330330
"""
331-
try:
331+
if isinstance(expires_on, datetime):
332332
expires_on = convert_datetime_to_rfc1123(expires_on)
333-
except AttributeError:
333+
elif expires_on is not None:
334334
expires_on = str(expires_on)
335335
await self._datalake_client_for_blob_operation.path.set_expiry(expiry_options, expires_on=expires_on,
336336
**kwargs)

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,13 +1188,18 @@ def test_set_expiry(self, **kwargs):
11881188
content_disposition='inline')
11891189
expiry_time = self.get_datetime_variable(variables, 'expiry_time', datetime.utcnow() + timedelta(hours=1))
11901190
file_client = directory_client.create_file("newfile", metadata=metadata, content_settings=content_settings)
1191+
1192+
# Act / Assert
11911193
file_client.set_file_expiry("Absolute", expires_on=expiry_time)
11921194
properties = file_client.get_file_properties()
1193-
1194-
# Assert
11951195
assert properties
11961196
assert properties.expiry_time is not None
11971197

1198+
file_client.set_file_expiry("NeverExpire")
1199+
properties = file_client.get_file_properties()
1200+
assert properties
1201+
assert properties.expiry_time is None
1202+
11981203
return variables
11991204

12001205
@DataLakePreparer()

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1137,13 +1137,18 @@ async def test_set_expiry(self, **kwargs):
11371137
content_disposition='inline')
11381138
expiry_time = self.get_datetime_variable(variables, 'expiry_time', datetime.utcnow() + timedelta(hours=1))
11391139
file_client = await directory_client.create_file("newfile", metadata=metadata, content_settings=content_settings)
1140+
1141+
# Act / Assert
11401142
await file_client.set_file_expiry("Absolute", expires_on=expiry_time)
11411143
properties = await file_client.get_file_properties()
1142-
1143-
# Assert
11441144
assert properties
11451145
assert properties.expiry_time is not None
11461146

1147+
await file_client.set_file_expiry("NeverExpire")
1148+
properties = await file_client.get_file_properties()
1149+
assert properties
1150+
assert properties.expiry_time is None
1151+
11471152
return variables
11481153

11491154
@DataLakePreparer()

0 commit comments

Comments
 (0)