Skip to content

Commit 1d35fe8

Browse files
committed
Don't return naive datetimes from bucket/blob timestamp accessors.
Addresses: #835 (comment)
1 parent 5d13cbe commit 1d35fe8

File tree

4 files changed

+15
-6
lines changed

4 files changed

+15
-6
lines changed

gcloud/storage/blob.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import os
2323
import time
2424

25+
import pytz
2526
import six
2627
from six.moves.urllib.parse import quote # pylint: disable=F0401
2728

@@ -749,7 +750,8 @@ def time_deleted(self):
749750
"""
750751
value = self._properties.get('timeDeleted')
751752
if value is not None:
752-
return datetime.datetime.strptime(value, _RFC3339_MICROS)
753+
naive = datetime.datetime.strptime(value, _RFC3339_MICROS)
754+
return naive.replace(tzinfo=pytz.utc)
753755

754756
@property
755757
def updated(self):
@@ -763,7 +765,8 @@ def updated(self):
763765
"""
764766
value = self._properties.get('updated')
765767
if value is not None:
766-
return datetime.datetime.strptime(value, _RFC3339_MICROS)
768+
naive = datetime.datetime.strptime(value, _RFC3339_MICROS)
769+
return naive.replace(tzinfo=pytz.utc)
767770

768771

769772
class _UploadConfig(object):

gcloud/storage/bucket.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import datetime
3737
import copy
3838
import os
39+
40+
import pytz
3941
import six
4042

4143
from gcloud._helpers import get_default_project
@@ -693,7 +695,8 @@ def time_created(self):
693695
"""
694696
value = self._properties.get('timeCreated')
695697
if value is not None:
696-
return datetime.datetime.strptime(value, _RFC3339_MICROS)
698+
naive = datetime.datetime.strptime(value, _RFC3339_MICROS)
699+
return naive.replace(tzinfo=pytz.utc)
697700

698701
@property
699702
def versioning_enabled(self):

gcloud/storage/test_blob.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,11 +1016,12 @@ def test_storage_class(self):
10161016

10171017
def test_time_deleted(self):
10181018
import datetime
1019+
from pytz import utc
10191020
from gcloud._helpers import _RFC3339_MICROS
10201021
BLOB_NAME = 'blob-name'
10211022
connection = _Connection()
10221023
bucket = _Bucket(connection)
1023-
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37)
1024+
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37, tzinfo=utc)
10241025
TIME_DELETED = TIMESTAMP.strftime(_RFC3339_MICROS)
10251026
properties = {'timeDeleted': TIME_DELETED}
10261027
blob = self._makeOne(BLOB_NAME, bucket=bucket, properties=properties)
@@ -1033,11 +1034,12 @@ def test_time_deleted_unset(self):
10331034

10341035
def test_updated(self):
10351036
import datetime
1037+
from pytz import utc
10361038
from gcloud._helpers import _RFC3339_MICROS
10371039
BLOB_NAME = 'blob-name'
10381040
connection = _Connection()
10391041
bucket = _Bucket(connection)
1040-
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37)
1042+
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37, tzinfo=utc)
10411043
UPDATED = TIMESTAMP.strftime(_RFC3339_MICROS)
10421044
properties = {'updated': UPDATED}
10431045
blob = self._makeOne(BLOB_NAME, bucket=bucket, properties=properties)

gcloud/storage/test_bucket.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,8 +790,9 @@ def test_storage_class(self):
790790

791791
def test_time_created(self):
792792
import datetime
793+
from pytz import utc
793794
from gcloud._helpers import _RFC3339_MICROS
794-
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37)
795+
TIMESTAMP = datetime.datetime(2014, 11, 5, 20, 34, 37, tzinfo=utc)
795796
TIME_CREATED = TIMESTAMP.strftime(_RFC3339_MICROS)
796797
properties = {'timeCreated': TIME_CREATED}
797798
bucket = self._makeOne(properties=properties)

0 commit comments

Comments
 (0)