11import re
2- import pytz
32import pytest
43
5- from datetime import date , datetime
4+ from datetime import date , datetime , timezone
65
76from flask_restx import inputs
87
@@ -37,18 +36,18 @@ class Iso8601DatetimeTest(object):
3736 "value,expected" ,
3837 [
3938 ("2011-01-01" , datetime (2011 , 1 , 1 )),
40- ("2011-01-01T00:00:00+00:00" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
39+ ("2011-01-01T00:00:00+00:00" , datetime (2011 , 1 , 1 , tzinfo = timezone .utc )),
4140 (
4241 "2011-01-01T23:59:59+00:00" ,
43- datetime (2011 , 1 , 1 , 23 , 59 , 59 , tzinfo = pytz .utc ),
42+ datetime (2011 , 1 , 1 , 23 , 59 , 59 , tzinfo = timezone .utc ),
4443 ),
4544 (
4645 "2011-01-01T23:59:59.001000+00:00" ,
47- datetime (2011 , 1 , 1 , 23 , 59 , 59 , 1000 , tzinfo = pytz .utc ),
46+ datetime (2011 , 1 , 1 , 23 , 59 , 59 , 1000 , tzinfo = timezone .utc ),
4847 ),
4948 (
5049 "2011-01-01T23:59:59+02:00" ,
51- datetime (2011 , 1 , 1 , 21 , 59 , 59 , tzinfo = pytz .utc ),
50+ datetime (2011 , 1 , 1 , 21 , 59 , 59 , tzinfo = timezone .utc ),
5251 ),
5352 ],
5453 )
@@ -70,22 +69,28 @@ class Rfc822DatetimeTest(object):
7069 @pytest .mark .parametrize (
7170 "value,expected" ,
7271 [
73- ("Sat, 01 Jan 2011" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
74- ("Sat, 01 Jan 2011 00:00" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
75- ("Sat, 01 Jan 2011 00:00:00" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
76- ("Sat, 01 Jan 2011 00:00:00 +0000" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
77- ("Sat, 01 Jan 2011 00:00:00 -0000" , datetime (2011 , 1 , 1 , tzinfo = pytz .utc )),
72+ ("Sat, 01 Jan 2011" , datetime (2011 , 1 , 1 , tzinfo = timezone .utc )),
73+ ("Sat, 01 Jan 2011 00:00" , datetime (2011 , 1 , 1 , tzinfo = timezone .utc )),
74+ ("Sat, 01 Jan 2011 00:00:00" , datetime (2011 , 1 , 1 , tzinfo = timezone .utc )),
75+ (
76+ "Sat, 01 Jan 2011 00:00:00 +0000" ,
77+ datetime (2011 , 1 , 1 , tzinfo = timezone .utc ),
78+ ),
79+ (
80+ "Sat, 01 Jan 2011 00:00:00 -0000" ,
81+ datetime (2011 , 1 , 1 , tzinfo = timezone .utc ),
82+ ),
7883 (
7984 "Sat, 01 Jan 2011 23:59:59 -0000" ,
80- datetime (2011 , 1 , 1 , 23 , 59 , 59 , tzinfo = pytz .utc ),
85+ datetime (2011 , 1 , 1 , 23 , 59 , 59 , tzinfo = timezone .utc ),
8186 ),
8287 (
8388 "Sat, 01 Jan 2011 21:00:00 +0200" ,
84- datetime (2011 , 1 , 1 , 19 , 0 , 0 , tzinfo = pytz .utc ),
89+ datetime (2011 , 1 , 1 , 19 , 0 , 0 , tzinfo = timezone .utc ),
8590 ),
8691 (
8792 "Sat, 01 Jan 2011 21:00:00 -0200" ,
88- datetime (2011 , 1 , 1 , 23 , 0 , 0 , tzinfo = pytz .utc ),
93+ datetime (2011 , 1 , 1 , 23 , 0 , 0 , tzinfo = timezone .utc ),
8994 ),
9095 ],
9196 )
@@ -985,145 +990,145 @@ def test_schema(self):
985990 # Full precision with explicit UTC.
986991 "2013-01-01T12:30:00Z/P1Y2M3DT4H5M6S" ,
987992 (
988- datetime (2013 , 1 , 1 , 12 , 30 , 0 , tzinfo = pytz .utc ),
989- datetime (2014 , 3 , 5 , 16 , 35 , 6 , tzinfo = pytz .utc ),
993+ datetime (2013 , 1 , 1 , 12 , 30 , 0 , tzinfo = timezone .utc ),
994+ datetime (2014 , 3 , 5 , 16 , 35 , 6 , tzinfo = timezone .utc ),
990995 ),
991996 ),
992997 (
993998 # Full precision with alternate UTC indication
994999 "2013-01-01T12:30+00:00/P2D" ,
9951000 (
996- datetime (2013 , 1 , 1 , 12 , 30 , 0 , tzinfo = pytz .utc ),
997- datetime (2013 , 1 , 3 , 12 , 30 , 0 , tzinfo = pytz .utc ),
1001+ datetime (2013 , 1 , 1 , 12 , 30 , 0 , tzinfo = timezone .utc ),
1002+ datetime (2013 , 1 , 3 , 12 , 30 , 0 , tzinfo = timezone .utc ),
9981003 ),
9991004 ),
10001005 (
10011006 # Implicit UTC with time
10021007 "2013-01-01T15:00/P1M" ,
10031008 (
1004- datetime (2013 , 1 , 1 , 15 , 0 , 0 , tzinfo = pytz .utc ),
1005- datetime (2013 , 1 , 31 , 15 , 0 , 0 , tzinfo = pytz .utc ),
1009+ datetime (2013 , 1 , 1 , 15 , 0 , 0 , tzinfo = timezone .utc ),
1010+ datetime (2013 , 1 , 31 , 15 , 0 , 0 , tzinfo = timezone .utc ),
10061011 ),
10071012 ),
10081013 (
10091014 # TZ conversion
10101015 "2013-01-01T17:00-05:00/P2W" ,
10111016 (
1012- datetime (2013 , 1 , 1 , 22 , 0 , 0 , tzinfo = pytz .utc ),
1013- datetime (2013 , 1 , 15 , 22 , 0 , 0 , tzinfo = pytz .utc ),
1017+ datetime (2013 , 1 , 1 , 22 , 0 , 0 , tzinfo = timezone .utc ),
1018+ datetime (2013 , 1 , 15 , 22 , 0 , 0 , tzinfo = timezone .utc ),
10141019 ),
10151020 ),
10161021 (
10171022 # Date upgrade to midnight-midnight period
10181023 "2013-01-01/P3D" ,
10191024 (
1020- datetime (2013 , 1 , 1 , 0 , 0 , 0 , tzinfo = pytz .utc ),
1021- datetime (2013 , 1 , 4 , 0 , 0 , 0 , 0 , tzinfo = pytz .utc ),
1025+ datetime (2013 , 1 , 1 , 0 , 0 , 0 , tzinfo = timezone .utc ),
1026+ datetime (2013 , 1 , 4 , 0 , 0 , 0 , 0 , tzinfo = timezone .utc ),
10221027 ),
10231028 ),
10241029 (
10251030 # Start/end with UTC
10261031 "2013-01-01T12:00:00Z/2013-02-01T12:00:00Z" ,
10271032 (
1028- datetime (2013 , 1 , 1 , 12 , 0 , 0 , tzinfo = pytz .utc ),
1029- datetime (2013 , 2 , 1 , 12 , 0 , 0 , tzinfo = pytz .utc ),
1033+ datetime (2013 , 1 , 1 , 12 , 0 , 0 , tzinfo = timezone .utc ),
1034+ datetime (2013 , 2 , 1 , 12 , 0 , 0 , tzinfo = timezone .utc ),
10301035 ),
10311036 ),
10321037 (
10331038 # Start/end with time upgrade
10341039 "2013-01-01/2013-06-30" ,
10351040 (
1036- datetime (2013 , 1 , 1 , tzinfo = pytz .utc ),
1037- datetime (2013 , 6 , 30 , tzinfo = pytz .utc ),
1041+ datetime (2013 , 1 , 1 , tzinfo = timezone .utc ),
1042+ datetime (2013 , 6 , 30 , tzinfo = timezone .utc ),
10381043 ),
10391044 ),
10401045 (
10411046 # Start/end with TZ conversion
10421047 "2013-02-17T12:00:00-07:00/2013-02-28T15:00:00-07:00" ,
10431048 (
1044- datetime (2013 , 2 , 17 , 19 , 0 , 0 , tzinfo = pytz .utc ),
1045- datetime (2013 , 2 , 28 , 22 , 0 , 0 , tzinfo = pytz .utc ),
1049+ datetime (2013 , 2 , 17 , 19 , 0 , 0 , tzinfo = timezone .utc ),
1050+ datetime (2013 , 2 , 28 , 22 , 0 , 0 , tzinfo = timezone .utc ),
10461051 ),
10471052 ),
10481053 ( # Resolution expansion for single date(time)
10491054 # Second with UTC
10501055 "2013-01-01T12:30:45Z" ,
10511056 (
1052- datetime (2013 , 1 , 1 , 12 , 30 , 45 , tzinfo = pytz .utc ),
1053- datetime (2013 , 1 , 1 , 12 , 30 , 46 , tzinfo = pytz .utc ),
1057+ datetime (2013 , 1 , 1 , 12 , 30 , 45 , tzinfo = timezone .utc ),
1058+ datetime (2013 , 1 , 1 , 12 , 30 , 46 , tzinfo = timezone .utc ),
10541059 ),
10551060 ),
10561061 (
10571062 # Second with tz conversion
10581063 "2013-01-01T12:30:45+02:00" ,
10591064 (
1060- datetime (2013 , 1 , 1 , 10 , 30 , 45 , tzinfo = pytz .utc ),
1061- datetime (2013 , 1 , 1 , 10 , 30 , 46 , tzinfo = pytz .utc ),
1065+ datetime (2013 , 1 , 1 , 10 , 30 , 45 , tzinfo = timezone .utc ),
1066+ datetime (2013 , 1 , 1 , 10 , 30 , 46 , tzinfo = timezone .utc ),
10621067 ),
10631068 ),
10641069 (
10651070 # Second with implicit UTC
10661071 "2013-01-01T12:30:45" ,
10671072 (
1068- datetime (2013 , 1 , 1 , 12 , 30 , 45 , tzinfo = pytz .utc ),
1069- datetime (2013 , 1 , 1 , 12 , 30 , 46 , tzinfo = pytz .utc ),
1073+ datetime (2013 , 1 , 1 , 12 , 30 , 45 , tzinfo = timezone .utc ),
1074+ datetime (2013 , 1 , 1 , 12 , 30 , 46 , tzinfo = timezone .utc ),
10701075 ),
10711076 ),
10721077 (
10731078 # Minute with UTC
10741079 "2013-01-01T12:30+00:00" ,
10751080 (
1076- datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = pytz .utc ),
1077- datetime (2013 , 1 , 1 , 12 , 31 , tzinfo = pytz .utc ),
1081+ datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = timezone .utc ),
1082+ datetime (2013 , 1 , 1 , 12 , 31 , tzinfo = timezone .utc ),
10781083 ),
10791084 ),
10801085 (
10811086 # Minute with conversion
10821087 "2013-01-01T12:30+04:00" ,
10831088 (
1084- datetime (2013 , 1 , 1 , 8 , 30 , tzinfo = pytz .utc ),
1085- datetime (2013 , 1 , 1 , 8 , 31 , tzinfo = pytz .utc ),
1089+ datetime (2013 , 1 , 1 , 8 , 30 , tzinfo = timezone .utc ),
1090+ datetime (2013 , 1 , 1 , 8 , 31 , tzinfo = timezone .utc ),
10861091 ),
10871092 ),
10881093 (
10891094 # Minute with implicit UTC
10901095 "2013-01-01T12:30" ,
10911096 (
1092- datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = pytz .utc ),
1093- datetime (2013 , 1 , 1 , 12 , 31 , tzinfo = pytz .utc ),
1097+ datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = timezone .utc ),
1098+ datetime (2013 , 1 , 1 , 12 , 31 , tzinfo = timezone .utc ),
10941099 ),
10951100 ),
10961101 (
10971102 # Hour, explicit UTC
10981103 "2013-01-01T12Z" ,
10991104 (
1100- datetime (2013 , 1 , 1 , 12 , tzinfo = pytz .utc ),
1101- datetime (2013 , 1 , 1 , 13 , tzinfo = pytz .utc ),
1105+ datetime (2013 , 1 , 1 , 12 , tzinfo = timezone .utc ),
1106+ datetime (2013 , 1 , 1 , 13 , tzinfo = timezone .utc ),
11021107 ),
11031108 ),
11041109 (
11051110 # Hour with offset
11061111 "2013-01-01T12-07:00" ,
11071112 (
1108- datetime (2013 , 1 , 1 , 19 , tzinfo = pytz .utc ),
1109- datetime (2013 , 1 , 1 , 20 , tzinfo = pytz .utc ),
1113+ datetime (2013 , 1 , 1 , 19 , tzinfo = timezone .utc ),
1114+ datetime (2013 , 1 , 1 , 20 , tzinfo = timezone .utc ),
11101115 ),
11111116 ),
11121117 (
11131118 # Hour with implicit UTC
11141119 "2013-01-01T12" ,
11151120 (
1116- datetime (2013 , 1 , 1 , 12 , tzinfo = pytz .utc ),
1117- datetime (2013 , 1 , 1 , 13 , tzinfo = pytz .utc ),
1121+ datetime (2013 , 1 , 1 , 12 , tzinfo = timezone .utc ),
1122+ datetime (2013 , 1 , 1 , 13 , tzinfo = timezone .utc ),
11181123 ),
11191124 ),
11201125 (
11211126 # Interval with trailing zero fractional seconds should
11221127 # be accepted.
11231128 "2013-01-01T12:00:00.0/2013-01-01T12:30:00.000000" ,
11241129 (
1125- datetime (2013 , 1 , 1 , 12 , tzinfo = pytz .utc ),
1126- datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = pytz .utc ),
1130+ datetime (2013 , 1 , 1 , 12 , tzinfo = timezone .utc ),
1131+ datetime (2013 , 1 , 1 , 12 , 30 , tzinfo = timezone .utc ),
11271132 ),
11281133 ),
11291134]
0 commit comments