@@ -25,13 +25,21 @@ def _timezone(offset):
25
25
return datetime .timezone (datetime .timedelta (minutes = minutes ))
26
26
27
27
28
+ def _system_timezone ():
29
+ d = datetime .datetime .now (datetime .timezone .utc ).astimezone ()
30
+ return datetime .timezone (d .utcoffset ())
31
+
32
+
28
33
infinity_datetime = datetime .datetime (
29
34
datetime .MAXYEAR , 12 , 31 , 23 , 59 , 59 , 999999 )
30
35
negative_infinity_datetime = datetime .datetime (
31
36
datetime .MINYEAR , 1 , 1 , 0 , 0 , 0 , 0 )
32
37
33
38
infinity_date = datetime .date (datetime .MAXYEAR , 12 , 31 )
34
39
negative_infinity_date = datetime .date (datetime .MINYEAR , 1 , 1 )
40
+ current_timezone = _system_timezone ()
41
+ current_date = datetime .date .today ()
42
+ current_datetime = datetime .datetime .now ()
35
43
36
44
37
45
type_samples = [
@@ -160,6 +168,8 @@ def _timezone(offset):
160
168
negative_infinity_datetime ,
161
169
{'textinput' : 'infinity' , 'output' : infinity_datetime },
162
170
{'textinput' : '-infinity' , 'output' : negative_infinity_datetime },
171
+ {'input' : datetime .date (2000 , 1 , 1 ),
172
+ 'output' : datetime .datetime (2000 , 1 , 1 )}
163
173
]),
164
174
('date' , 'date' , [
165
175
datetime .date (3000 , 5 , 20 ),
@@ -185,6 +195,16 @@ def _timezone(offset):
185
195
datetime .datetime (2400 , 1 , 1 , 10 , 10 , 0 , tzinfo = _timezone (2000 )),
186
196
infinity_datetime ,
187
197
negative_infinity_datetime ,
198
+ {
199
+ 'input' : current_date ,
200
+ 'output' : datetime .datetime (
201
+ year = current_date .year , month = current_date .month ,
202
+ day = current_date .day , tzinfo = current_timezone ),
203
+ },
204
+ {
205
+ 'input' : current_datetime ,
206
+ 'output' : current_datetime .replace (tzinfo = current_timezone ),
207
+ }
188
208
]),
189
209
('timetz' , 'timetz' , [
190
210
# timetz retains the offset
@@ -657,6 +677,12 @@ async def test_invalid_input(self):
657
677
2 ** 32 ,
658
678
- 1 ,
659
679
]),
680
+ ('timestamp' , r"expected a datetime\.date.*got 'str'" , [
681
+ 'foo'
682
+ ]),
683
+ ('timestamptz' , r"expected a datetime\.date.*got 'str'" , [
684
+ 'foo'
685
+ ]),
660
686
]
661
687
662
688
for typname , errmsg , data in cases :
0 commit comments