1212from math import exp
1313
1414import dateutil .parser
15- from pytz import utc
15+ from zoneinfo import ZoneInfo
1616
17- DEFAULT_START_DATE = datetime (2030 , 1 , 1 , tzinfo = utc )
17+ DEFAULT_START_DATE = datetime (2030 , 1 , 1 , tzinfo = ZoneInfo ( "UTC" ) )
1818
1919"""
2020Default grading policy for a course run.
@@ -95,7 +95,7 @@ def has_course_started(start_date):
9595 start_date (datetime): The start datetime of the course in question.
9696 """
9797 # TODO: This will throw if start_date is None... consider changing this behavior?
98- return datetime .now (utc ) > start_date
98+ return datetime .now (ZoneInfo ( "UTC" ) ) > start_date
9999
100100
101101def has_course_ended (end_date ):
@@ -107,7 +107,7 @@ def has_course_ended(end_date):
107107 Arguments:
108108 end_date (datetime): The end datetime of the course in question.
109109 """
110- return datetime .now (utc ) > end_date if end_date is not None else False
110+ return datetime .now (ZoneInfo ( "UTC" ) ) > end_date if end_date is not None else False
111111
112112
113113def is_enrollment_open (enrollment_start_date , enrollment_end_date ):
@@ -118,9 +118,9 @@ def is_enrollment_open(enrollment_start_date, enrollment_end_date):
118118 enrollment_start_date (datetime): The enrollment start datetime of the course.
119119 enrollment_end_date (datetime): The enrollment end datetime of the course.
120120 """
121- now = datetime .now (utc )
122- enrollment_start_date = enrollment_start_date or datetime .min .replace (tzinfo = utc )
123- enrollment_end_date = enrollment_end_date or datetime .max .replace (tzinfo = utc )
121+ now = datetime .now (ZoneInfo ( "UTC" ) )
122+ enrollment_start_date = enrollment_start_date or datetime .min .replace (tzinfo = ZoneInfo ( "UTC" ) )
123+ enrollment_end_date = enrollment_end_date or datetime .max .replace (tzinfo = ZoneInfo ( "UTC" ) )
124124 return enrollment_start_date < now < enrollment_end_date
125125
126126
@@ -133,7 +133,7 @@ def course_starts_within(start_date, look_ahead_days):
133133 start_date (datetime): The start datetime of the course in question.
134134 look_ahead_days (int): number of days to see in future for course start date.
135135 """
136- return datetime .now (utc ) + timedelta (days = look_ahead_days ) > start_date
136+ return datetime .now (ZoneInfo ( "UTC" ) ) + timedelta (days = look_ahead_days ) > start_date
137137
138138
139139def course_start_date_is_default (start , advertised_start ):
@@ -179,10 +179,10 @@ def sorting_dates(start, advertised_start, announcement):
179179 try :
180180 start = dateutil .parser .parse (advertised_start )
181181 if start .tzinfo is None :
182- start = start .replace (tzinfo = utc )
182+ start = start .replace (tzinfo = ZoneInfo ( "UTC" ) )
183183 except (TypeError , ValueError , AttributeError ):
184184 start = start # lint-amnesty, pylint: disable=self-assigning-variable
185185
186- now = datetime .now (utc )
186+ now = datetime .now (ZoneInfo ( "UTC" ) )
187187
188188 return announcement , start , now
0 commit comments