@@ -25,13 +25,21 @@ def _timezone(offset):
2525 return datetime .timezone (datetime .timedelta (minutes = minutes ))
2626
2727
28+ def _system_timezone ():
29+ d = datetime .datetime .now (datetime .timezone .utc ).astimezone ()
30+ return datetime .timezone (d .utcoffset ())
31+
32+
2833infinity_datetime = datetime .datetime (
2934 datetime .MAXYEAR , 12 , 31 , 23 , 59 , 59 , 999999 )
3035negative_infinity_datetime = datetime .datetime (
3136 datetime .MINYEAR , 1 , 1 , 0 , 0 , 0 , 0 )
3237
3338infinity_date = datetime .date (datetime .MAXYEAR , 12 , 31 )
3439negative_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 ()
3543
3644
3745type_samples = [
@@ -160,6 +168,8 @@ def _timezone(offset):
160168 negative_infinity_datetime ,
161169 {'textinput' : 'infinity' , 'output' : infinity_datetime },
162170 {'textinput' : '-infinity' , 'output' : negative_infinity_datetime },
171+ {'input' : datetime .date (2000 , 1 , 1 ),
172+ 'output' : datetime .datetime (2000 , 1 , 1 )}
163173 ]),
164174 ('date' , 'date' , [
165175 datetime .date (3000 , 5 , 20 ),
@@ -185,6 +195,16 @@ def _timezone(offset):
185195 datetime .datetime (2400 , 1 , 1 , 10 , 10 , 0 , tzinfo = _timezone (2000 )),
186196 infinity_datetime ,
187197 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+ }
188208 ]),
189209 ('timetz' , 'timetz' , [
190210 # timetz retains the offset
@@ -657,6 +677,12 @@ async def test_invalid_input(self):
657677 2 ** 32 ,
658678 - 1 ,
659679 ]),
680+ ('timestamp' , r"expected a datetime\.date.*got 'str'" , [
681+ 'foo'
682+ ]),
683+ ('timestamptz' , r"expected a datetime\.date.*got 'str'" , [
684+ 'foo'
685+ ]),
660686 ]
661687
662688 for typname , errmsg , data in cases :
0 commit comments