Merge pull request #1694 from Boren/uuid-id

Support UUID serialization
This commit is contained in:
Tom Kralidis
2024-06-24 20:51:49 -04:00
committed by GitHub
2 changed files with 12 additions and 5 deletions
+8 -5
View File
@@ -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)
+4
View File
@@ -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')