Refactor date parsing to use lru_cache
This commit is contained in:
parent
f1841bbe78
commit
d09d83dbf7
1 changed files with 8 additions and 2 deletions
|
|
@ -5,6 +5,7 @@ import shutil
|
|||
import time
|
||||
import traceback
|
||||
from datetime import timedelta
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
|
|
@ -22,6 +23,7 @@ if TYPE_CHECKING:
|
|||
from typing import Literal
|
||||
|
||||
|
||||
@lru_cache(maxsize=4096)
|
||||
def parse_date(value: str | None) -> datetime | None:
|
||||
"""Parse a datetime string into a timezone-aware datetime using dateparser.
|
||||
|
||||
|
|
@ -33,10 +35,14 @@ def parse_date(value: str | None) -> datetime | None:
|
|||
"""
|
||||
value = (value or "").strip()
|
||||
|
||||
if not value or value == "None":
|
||||
if not value:
|
||||
return None
|
||||
|
||||
dt: datetime | None = dateparser.parse(value, settings={"RETURN_AS_TIMEZONE_AWARE": True})
|
||||
dateparser_settings: dict[str, bool | int] = {
|
||||
"RETURN_AS_TIMEZONE_AWARE": True,
|
||||
"CACHE_SIZE_LIMIT": 0,
|
||||
}
|
||||
dt: datetime | None = dateparser.parse(date_string=value, settings=dateparser_settings) # pyright: ignore[reportArgumentType]
|
||||
if not dt:
|
||||
return None
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue