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 time
|
||||||
import traceback
|
import traceback
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
from functools import lru_cache
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
|
|
@ -22,6 +23,7 @@ if TYPE_CHECKING:
|
||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=4096)
|
||||||
def parse_date(value: str | None) -> datetime | None:
|
def parse_date(value: str | None) -> datetime | None:
|
||||||
"""Parse a datetime string into a timezone-aware datetime using dateparser.
|
"""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()
|
value = (value or "").strip()
|
||||||
|
|
||||||
if not value or value == "None":
|
if not value:
|
||||||
return None
|
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:
|
if not dt:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue