fix: handle TIME column serialization (#16869)

* Add support for datetime.time in json_int_dttm_ser

* Test base_json_conv support for datetime.time

* Group types by conversion function for JSON dump
This commit is contained in:
Francesco Frassinelli
2021-11-11 09:35:00 +01:00
committed by GitHub
parent 675ffaf8df
commit 0d77f36679
2 changed files with 3 additions and 4 deletions

View File

@@ -563,7 +563,7 @@ def base_json_conv(obj: Any,) -> Any: # pylint: disable=inconsistent-return-sta
return list(obj)
if isinstance(obj, decimal.Decimal):
return float(obj)
if isinstance(obj, uuid.UUID):
if isinstance(obj, (uuid.UUID, time, LazyString)):
return str(obj)
if isinstance(obj, timedelta):
return format_timedelta(obj)
@@ -572,8 +572,6 @@ def base_json_conv(obj: Any,) -> Any: # pylint: disable=inconsistent-return-sta
return obj.decode("utf-8")
except Exception: # pylint: disable=broad-except
return "[bytes]"
if isinstance(obj, LazyString):
return str(obj)
def json_iso_dttm_ser(obj: Any, pessimistic: bool = False) -> str:
@@ -587,7 +585,7 @@ def json_iso_dttm_ser(obj: Any, pessimistic: bool = False) -> str:
val = base_json_conv(obj)
if val is not None:
return val
if isinstance(obj, (datetime, date, time, pd.Timestamp)):
if isinstance(obj, (datetime, date, pd.Timestamp)):
obj = obj.isoformat()
else:
if pessimistic:

View File

@@ -117,6 +117,7 @@ class TestUtils(SupersetTestCase):
assert isinstance(base_json_conv(set([1])), list) is True
assert isinstance(base_json_conv(Decimal("1.0")), float) is True
assert isinstance(base_json_conv(uuid.uuid4()), str) is True
assert isinstance(base_json_conv(time()), str) is True
assert isinstance(base_json_conv(timedelta(0)), str) is True
def test_zlib_compression(self):