14
14
15
15
import calendar
16
16
import datetime
17
+ from datetime import timezone , timedelta
17
18
18
19
import pytest
19
- import pytz
20
20
21
21
from google .api_core import datetime_helpers
22
22
from google .protobuf import timestamp_pb2
23
23
24
24
25
+ UTC = timezone .utc
25
26
ONE_MINUTE_IN_MICROSECONDS = 60 * 1e6
26
27
27
28
@@ -31,7 +32,7 @@ def test_utcnow():
31
32
32
33
33
34
def test_to_milliseconds ():
34
- dt = datetime .datetime (1970 , 1 , 1 , 0 , 0 , 1 , tzinfo = pytz . utc )
35
+ dt = datetime .datetime (1970 , 1 , 1 , 0 , 0 , 1 , tzinfo = UTC )
35
36
assert datetime_helpers .to_milliseconds (dt ) == 1000
36
37
37
38
@@ -42,7 +43,7 @@ def test_to_microseconds():
42
43
43
44
44
45
def test_to_microseconds_non_utc ():
45
- zone = pytz . FixedOffset ( - 1 )
46
+ zone = timezone ( timedelta ( minutes = - 1 ) )
46
47
dt = datetime .datetime (1970 , 1 , 1 , 0 , 0 , 0 , tzinfo = zone )
47
48
assert datetime_helpers .to_microseconds (dt ) == ONE_MINUTE_IN_MICROSECONDS
48
49
@@ -56,7 +57,7 @@ def test_to_microseconds_naive():
56
57
def test_from_microseconds ():
57
58
five_mins_from_epoch_in_microseconds = 5 * ONE_MINUTE_IN_MICROSECONDS
58
59
five_mins_from_epoch_datetime = datetime .datetime (
59
- 1970 , 1 , 1 , 0 , 5 , 0 , tzinfo = pytz . utc
60
+ 1970 , 1 , 1 , 0 , 5 , 0 , tzinfo = UTC
60
61
)
61
62
62
63
result = datetime_helpers .from_microseconds (five_mins_from_epoch_in_microseconds )
@@ -78,28 +79,28 @@ def test_from_iso8601_time():
78
79
def test_from_rfc3339 ():
79
80
value = "2009-12-17T12:44:32.123456Z"
80
81
assert datetime_helpers .from_rfc3339 (value ) == datetime .datetime (
81
- 2009 , 12 , 17 , 12 , 44 , 32 , 123456 , pytz . utc
82
+ 2009 , 12 , 17 , 12 , 44 , 32 , 123456 , UTC
82
83
)
83
84
84
85
85
86
def test_from_rfc3339_nanos ():
86
87
value = "2009-12-17T12:44:32.123456Z"
87
88
assert datetime_helpers .from_rfc3339_nanos (value ) == datetime .datetime (
88
- 2009 , 12 , 17 , 12 , 44 , 32 , 123456 , pytz . utc
89
+ 2009 , 12 , 17 , 12 , 44 , 32 , 123456 , UTC
89
90
)
90
91
91
92
92
93
def test_from_rfc3339_without_nanos ():
93
94
value = "2009-12-17T12:44:32Z"
94
95
assert datetime_helpers .from_rfc3339 (value ) == datetime .datetime (
95
- 2009 , 12 , 17 , 12 , 44 , 32 , 0 , pytz . utc
96
+ 2009 , 12 , 17 , 12 , 44 , 32 , 0 , UTC
96
97
)
97
98
98
99
99
100
def test_from_rfc3339_nanos_without_nanos ():
100
101
value = "2009-12-17T12:44:32Z"
101
102
assert datetime_helpers .from_rfc3339_nanos (value ) == datetime .datetime (
102
- 2009 , 12 , 17 , 12 , 44 , 32 , 0 , pytz . utc
103
+ 2009 , 12 , 17 , 12 , 44 , 32 , 0 , UTC
103
104
)
104
105
105
106
@@ -119,7 +120,7 @@ def test_from_rfc3339_nanos_without_nanos():
119
120
def test_from_rfc3339_with_truncated_nanos (truncated , micros ):
120
121
value = "2009-12-17T12:44:32.{}Z" .format (truncated )
121
122
assert datetime_helpers .from_rfc3339 (value ) == datetime .datetime (
122
- 2009 , 12 , 17 , 12 , 44 , 32 , micros , pytz . utc
123
+ 2009 , 12 , 17 , 12 , 44 , 32 , micros , UTC
123
124
)
124
125
125
126
@@ -148,7 +149,7 @@ def test_from_rfc3339_nanos_is_deprecated():
148
149
def test_from_rfc3339_nanos_with_truncated_nanos (truncated , micros ):
149
150
value = "2009-12-17T12:44:32.{}Z" .format (truncated )
150
151
assert datetime_helpers .from_rfc3339_nanos (value ) == datetime .datetime (
151
- 2009 , 12 , 17 , 12 , 44 , 32 , micros , pytz . utc
152
+ 2009 , 12 , 17 , 12 , 44 , 32 , micros , UTC
152
153
)
153
154
154
155
@@ -171,20 +172,20 @@ def test_to_rfc3339():
171
172
172
173
173
174
def test_to_rfc3339_with_utc ():
174
- value = datetime .datetime (2016 , 4 , 5 , 13 , 30 , 0 , tzinfo = pytz . utc )
175
+ value = datetime .datetime (2016 , 4 , 5 , 13 , 30 , 0 , tzinfo = UTC )
175
176
expected = "2016-04-05T13:30:00.000000Z"
176
177
assert datetime_helpers .to_rfc3339 (value , ignore_zone = False ) == expected
177
178
178
179
179
180
def test_to_rfc3339_with_non_utc ():
180
- zone = pytz . FixedOffset ( - 60 )
181
+ zone = timezone ( timedelta ( minutes = - 60 ) )
181
182
value = datetime .datetime (2016 , 4 , 5 , 13 , 30 , 0 , tzinfo = zone )
182
183
expected = "2016-04-05T14:30:00.000000Z"
183
184
assert datetime_helpers .to_rfc3339 (value , ignore_zone = False ) == expected
184
185
185
186
186
187
def test_to_rfc3339_with_non_utc_ignore_zone ():
187
- zone = pytz . FixedOffset ( - 60 )
188
+ zone = timezone ( timedelta ( minutes = - 60 ) )
188
189
value = datetime .datetime (2016 , 4 , 5 , 13 , 30 , 0 , tzinfo = zone )
189
190
expected = "2016-04-05T13:30:00.000000Z"
190
191
assert datetime_helpers .to_rfc3339 (value , ignore_zone = True ) == expected
@@ -283,7 +284,7 @@ def test_from_rfc3339_w_invalid():
283
284
def test_from_rfc3339_wo_fraction ():
284
285
timestamp = "2016-12-20T21:13:47Z"
285
286
expected = datetime_helpers .DatetimeWithNanoseconds (
286
- 2016 , 12 , 20 , 21 , 13 , 47 , tzinfo = pytz . UTC
287
+ 2016 , 12 , 20 , 21 , 13 , 47 , tzinfo = UTC
287
288
)
288
289
stamp = datetime_helpers .DatetimeWithNanoseconds .from_rfc3339 (timestamp )
289
290
assert stamp == expected
@@ -292,7 +293,7 @@ def test_from_rfc3339_wo_fraction():
292
293
def test_from_rfc3339_w_partial_precision ():
293
294
timestamp = "2016-12-20T21:13:47.1Z"
294
295
expected = datetime_helpers .DatetimeWithNanoseconds (
295
- 2016 , 12 , 20 , 21 , 13 , 47 , microsecond = 100000 , tzinfo = pytz . UTC
296
+ 2016 , 12 , 20 , 21 , 13 , 47 , microsecond = 100000 , tzinfo = UTC
296
297
)
297
298
stamp = datetime_helpers .DatetimeWithNanoseconds .from_rfc3339 (timestamp )
298
299
assert stamp == expected
@@ -301,7 +302,7 @@ def test_from_rfc3339_w_partial_precision():
301
302
def test_from_rfc3339_w_full_precision ():
302
303
timestamp = "2016-12-20T21:13:47.123456789Z"
303
304
expected = datetime_helpers .DatetimeWithNanoseconds (
304
- 2016 , 12 , 20 , 21 , 13 , 47 , nanosecond = 123456789 , tzinfo = pytz . UTC
305
+ 2016 , 12 , 20 , 21 , 13 , 47 , nanosecond = 123456789 , tzinfo = UTC
305
306
)
306
307
stamp = datetime_helpers .DatetimeWithNanoseconds .from_rfc3339 (timestamp )
307
308
assert stamp == expected
@@ -332,7 +333,7 @@ def test_timestamp_pb_wo_nanos_naive():
332
333
stamp = datetime_helpers .DatetimeWithNanoseconds (
333
334
2016 , 12 , 20 , 21 , 13 , 47 , 123456
334
335
)
335
- delta = stamp .replace (tzinfo = pytz . UTC ) - datetime_helpers ._UTC_EPOCH
336
+ delta = stamp .replace (tzinfo = UTC ) - datetime_helpers ._UTC_EPOCH
336
337
seconds = int (delta .total_seconds ())
337
338
nanos = 123456000
338
339
timestamp = timestamp_pb2 .Timestamp (seconds = seconds , nanos = nanos )
@@ -341,7 +342,7 @@ def test_timestamp_pb_wo_nanos_naive():
341
342
@staticmethod
342
343
def test_timestamp_pb_w_nanos ():
343
344
stamp = datetime_helpers .DatetimeWithNanoseconds (
344
- 2016 , 12 , 20 , 21 , 13 , 47 , nanosecond = 123456789 , tzinfo = pytz . UTC
345
+ 2016 , 12 , 20 , 21 , 13 , 47 , nanosecond = 123456789 , tzinfo = UTC
345
346
)
346
347
delta = stamp - datetime_helpers ._UTC_EPOCH
347
348
timestamp = timestamp_pb2 .Timestamp (
@@ -351,7 +352,7 @@ def test_timestamp_pb_w_nanos():
351
352
352
353
@staticmethod
353
354
def test_from_timestamp_pb_wo_nanos ():
354
- when = datetime .datetime (2016 , 12 , 20 , 21 , 13 , 47 , 123456 , tzinfo = pytz . UTC )
355
+ when = datetime .datetime (2016 , 12 , 20 , 21 , 13 , 47 , 123456 , tzinfo = UTC )
355
356
delta = when - datetime_helpers ._UTC_EPOCH
356
357
seconds = int (delta .total_seconds ())
357
358
timestamp = timestamp_pb2 .Timestamp (seconds = seconds )
@@ -361,11 +362,11 @@ def test_from_timestamp_pb_wo_nanos():
361
362
assert _to_seconds (when ) == _to_seconds (stamp )
362
363
assert stamp .microsecond == 0
363
364
assert stamp .nanosecond == 0
364
- assert stamp .tzinfo == pytz . UTC
365
+ assert stamp .tzinfo == UTC
365
366
366
367
@staticmethod
367
368
def test_from_timestamp_pb_w_nanos ():
368
- when = datetime .datetime (2016 , 12 , 20 , 21 , 13 , 47 , 123456 , tzinfo = pytz . UTC )
369
+ when = datetime .datetime (2016 , 12 , 20 , 21 , 13 , 47 , 123456 , tzinfo = UTC )
369
370
delta = when - datetime_helpers ._UTC_EPOCH
370
371
seconds = int (delta .total_seconds ())
371
372
timestamp = timestamp_pb2 .Timestamp (seconds = seconds , nanos = 123456789 )
@@ -375,7 +376,7 @@ def test_from_timestamp_pb_w_nanos():
375
376
assert _to_seconds (when ) == _to_seconds (stamp )
376
377
assert stamp .microsecond == 123456
377
378
assert stamp .nanosecond == 123456789
378
- assert stamp .tzinfo == pytz . UTC
379
+ assert stamp .tzinfo == UTC
379
380
380
381
381
382
def _to_seconds (value ):
@@ -387,5 +388,5 @@ def _to_seconds(value):
387
388
Returns:
388
389
int: Microseconds since the unix epoch.
389
390
"""
390
- assert value .tzinfo is pytz . UTC
391
+ assert value .tzinfo is UTC
391
392
return calendar .timegm (value .timetuple ())
0 commit comments