Skip to content

Commit 4449b2a

Browse files
committed
Remove iso8601 dependency
As of Python 3.11 this is a built in method so we don’t need an external dependency https://docs.python.org/3/library/datetime.html#datetime.date.fromisoformat
1 parent dadeaae commit 4449b2a

File tree

6 files changed

+5
-13
lines changed

6 files changed

+5
-13
lines changed

app/celery/process_ses_receipts_tasks.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import logging
22
from datetime import datetime, timedelta
33

4-
import iso8601
54
from celery.exceptions import Retry
65
from flask import current_app, json
76
from sqlalchemy.orm.exc import NoResultFound
@@ -42,7 +41,7 @@ def process_ses_results(self, response):
4241
try:
4342
notification = notifications_dao.dao_get_notification_or_history_by_reference(reference=reference)
4443
except NoResultFound:
45-
message_time = iso8601.parse_date(ses_message["mail"]["timestamp"]).replace(tzinfo=None)
44+
message_time = datetime.fromisoformat(ses_message["mail"]["timestamp"]).replace(tzinfo=None)
4645
if datetime.utcnow() - message_time < timedelta(minutes=5):
4746
extra = {"notification_reference": reference, "notification_status": notification_status}
4847
current_app.logger.info(

app/notifications/receive_notifications.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from datetime import datetime
22
from urllib.parse import unquote
33

4-
import iso8601
54
from flask import Blueprint, abort, current_app, jsonify, request
65
from gds_metrics.metrics import Counter
76

@@ -142,9 +141,9 @@ def format_mmg_datetime(date):
142141
"""
143142
try:
144143
orig_date = format_mmg_message(date)
145-
parsed_datetime = iso8601.parse_date(orig_date).replace(tzinfo=None)
144+
parsed_datetime = datetime.fromisoformat(orig_date).replace(tzinfo=None)
146145
return parsed_datetime
147-
except iso8601.ParseError:
146+
except ValueError:
148147
return datetime.utcnow()
149148

150149

app/schema_validation/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
from datetime import datetime, timedelta
44
from uuid import UUID
55

6-
from iso8601 import ParseError, iso8601
76
from jsonschema import Draft7Validator, FormatChecker, ValidationError
87
from notifications_utils.recipient_validation.email_address import validate_email_address
98
from notifications_utils.recipient_validation.errors import InvalidEmailError, InvalidPhoneError
@@ -67,12 +66,12 @@ def validate_schema_postage_including_international(instance):
6766
def validate_schema_date_with_hour(instance):
6867
if isinstance(instance, str):
6968
try:
70-
dt = iso8601.parse_date(instance).replace(tzinfo=None)
69+
dt = datetime.fromisoformat(instance).replace(tzinfo=None)
7170
if dt < datetime.utcnow():
7271
raise ValidationError("datetime can not be in the past")
7372
if dt > datetime.utcnow() + timedelta(hours=24):
7473
raise ValidationError("datetime can only be 24 hours in the future")
75-
except ParseError as e:
74+
except ValueError as e:
7675
raise ValidationError(
7776
"datetime format is invalid. It must be a valid ISO8601 date time format, "
7877
"https://en.wikipedia.org/wiki/ISO_8601"

requirements.in

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ flask-sqlalchemy==3.1.1
1111
click-datetime~=0.2
1212
gunicorn[eventlet]~=25.1
1313
eventlet~=0.40.4
14-
iso8601~=2.1
1514
jsonschema[format]==4.23.0
1615
marshmallow-sqlalchemy==1.0.0
1716
marshmallow==3.21.3

requirements.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,6 @@ idna==3.11
106106
# via
107107
# jsonschema
108108
# requests
109-
iso8601==2.1.0
110-
# via -r requirements.in
111109
isoduration==20.11.0
112110
# via jsonschema
113111
itsdangerous==2.2.0

requirements_for_test.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,6 @@ idna==3.11
162162
# trustme
163163
iniconfig==2.3.0
164164
# via pytest
165-
iso8601==2.1.0
166-
# via -r requirements.txt
167165
isoduration==20.11.0
168166
# via -r requirements.txt
169167
itsdangerous==2.2.0

0 commit comments

Comments
 (0)