Merge pull request #31841 from sagarvora/preprocess-types

perf: pre-create `UnionType` objects
This commit is contained in:
Sagar Vora 2025-03-20 21:49:09 +05:30 committed by GitHub
commit deaf5e1049
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 11 deletions

View file

@ -41,6 +41,7 @@ if TYPE_CHECKING:
from frappe.model.document import Document
D = TypeVar("D", bound="Document")
DatetimeTypes = datetime.date | datetime.datetime | datetime.time | datetime.timedelta
max_positive_value = {"smallint": 2**15 - 1, "int": 2**31 - 1, "bigint": 2**63 - 1}
@ -460,9 +461,7 @@ class BaseDocument:
):
value = None
if convert_dates_to_str and isinstance(
value, datetime.datetime | datetime.date | datetime.time | datetime.timedelta
):
if convert_dates_to_str and isinstance(value, DatetimeTypes):
value = str(value)
if ignore_nulls and not is_virtual_field and value is None:

View file

@ -8,7 +8,9 @@ import mimetypes
import os
import sys
import uuid
from collections.abc import Iterable
from pathlib import Path
from re import Match
from typing import TYPE_CHECKING
from urllib.parse import quote
@ -29,7 +31,8 @@ from frappe.utils.local import LocalProxy, WerkzeugLocalProxy
if TYPE_CHECKING:
from frappe.core.doctype.file.file import File
LocalProxyType = LocalProxy | WerkzeugLocalProxy
LocalProxyTypes = LocalProxy | WerkzeugLocalProxy
DateOrTimeTypes = datetime.date | datetime.datetime | datetime.time
def report_error(status_code):
@ -212,19 +215,14 @@ def _make_logs_v2():
def json_handler(obj):
"""serialize non-serializable data for json"""
from collections.abc import Iterable
from re import Match
if isinstance(obj, datetime.date | datetime.datetime | datetime.time):
if isinstance(obj, DateOrTimeTypes):
return str(obj)
elif isinstance(obj, datetime.timedelta):
return format_timedelta(obj)
elif isinstance(obj, decimal.Decimal):
return float(obj)
elif isinstance(obj, LocalProxyType):
elif isinstance(obj, LocalProxyTypes):
return str(obj)
elif hasattr(obj, "__json__"):
@ -233,6 +231,9 @@ def json_handler(obj):
elif isinstance(obj, Iterable):
return list(obj)
elif isinstance(obj, decimal.Decimal):
return float(obj)
elif isinstance(obj, Match):
return obj.string