+8
-5
@@ -32,22 +32,23 @@
|
||||
import base64
|
||||
from copy import deepcopy
|
||||
from filelock import FileLock
|
||||
import json
|
||||
import logging
|
||||
import mimetypes
|
||||
import os
|
||||
import re
|
||||
import functools
|
||||
from functools import partial
|
||||
from dataclasses import dataclass
|
||||
from datetime import date, datetime, time
|
||||
from decimal import Decimal
|
||||
from enum import Enum
|
||||
import json
|
||||
import logging
|
||||
import mimetypes
|
||||
import os
|
||||
import pathlib
|
||||
from pathlib import Path
|
||||
import re
|
||||
from typing import Any, IO, Union, List, Optional, Callable
|
||||
from urllib.parse import urlparse
|
||||
from urllib.request import urlopen
|
||||
import uuid
|
||||
|
||||
import dateutil.parser
|
||||
from shapely import ops
|
||||
@@ -400,6 +401,8 @@ def json_serial(obj: Any) -> str:
|
||||
return l10n.locale2str(obj)
|
||||
elif isinstance(obj, (pathlib.PurePath, Path)):
|
||||
return str(obj)
|
||||
elif isinstance(obj, uuid.UUID):
|
||||
return str(obj)
|
||||
else:
|
||||
msg = f'{obj} type {type(obj)} not serializable'
|
||||
LOGGER.error(msg)
|
||||
|
||||
@@ -33,6 +33,7 @@ from contextlib import nullcontext as does_not_raise
|
||||
from copy import deepcopy
|
||||
from io import StringIO
|
||||
from unittest import mock
|
||||
import uuid
|
||||
|
||||
import pytest
|
||||
from pyproj.exceptions import CRSError
|
||||
@@ -142,6 +143,9 @@ def test_json_serial():
|
||||
d = Decimal(1.0)
|
||||
assert util.json_serial(d) == 1.0
|
||||
|
||||
d = uuid.UUID('12345678-1234-5678-1234-567812345678')
|
||||
assert util.json_serial(d) == '12345678-1234-5678-1234-567812345678'
|
||||
|
||||
with pytest.raises(TypeError):
|
||||
util.json_serial('foo')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user