Skip to content
Snippets Groups Projects
Commit 6465e070 authored by Fynn Becker's avatar Fynn Becker :crab:
Browse files

Parse date strings as date

parent 4792c0e3
No related branches found
No related tags found
No related merge requests found
Pipeline #7877 failed
import importlib.util
import logging
import re
from datetime import datetime, timedelta, timezone
from datetime import date, datetime, timedelta, timezone
from typing import Dict, Union
_DJANGO = importlib.util.find_spec("django") is not None
......@@ -71,6 +71,13 @@ def _try_python_parse_dt(value: str) -> Union[datetime, str]:
_try_parse_dt = _try_django_parse_dt if _DJANGO else _try_python_parse_dt
def _try_parse_date(value: str) -> Union[date, str]:
try:
return datetime.strptime(value, "%Y-%m-%d").date()
except ValueError:
return value
def datetime_parser(json_dict: dict) -> dict:
"""
A function to use as `object_hook` when deserializing JSON that parses
......@@ -78,7 +85,11 @@ def datetime_parser(json_dict: dict) -> dict:
:param json_dict: the original `json_dict` to process
:return: the modified `json_dict`
"""
str_parsers = (_try_parse_dt, _try_parse_date)
for key, value in json_dict.items():
if isinstance(value, str):
json_dict[key] = _try_parse_dt(value)
for parser in str_parsers:
json_dict[key] = parser(value)
# json_dict[key] = _try_parse_dt(value)
return json_dict
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment