|
1 | 1 | import dataclasses
|
2 |
| -from abc import ABC, abstractmethod |
3 | 2 | from datetime import datetime
|
4 | 3 | from io import BytesIO
|
5 | 4 | from typing import Any
|
|
8 | 7 | from lz4.frame import compress as lz4_compress
|
9 | 8 | from lz4.frame import decompress as lz4_decompress
|
10 | 9 |
|
| 10 | +from asyncio_rpc.serialization.base import AbstractHandler |
| 11 | + |
11 | 12 | try:
|
12 | 13 | import numpy as np
|
13 | 14 | except ImportError:
|
@@ -49,25 +50,6 @@ def register(obj_def):
|
49 | 50 | REGISTRY["ext_types"][obj_def.ext_type] = obj_def
|
50 | 51 |
|
51 | 52 |
|
52 |
| -class AbstractHandler(ABC): |
53 |
| - ext_type: int = None # Unique int |
54 |
| - obj_type: Any = None # Unique object type |
55 |
| - |
56 |
| - @classmethod |
57 |
| - @abstractmethod |
58 |
| - def packb(cls, instance: Any) -> bytes: |
59 |
| - """ |
60 |
| - Pack the instance into bytes |
61 |
| - """ |
62 |
| - |
63 |
| - @classmethod |
64 |
| - @abstractmethod |
65 |
| - def unpackb(cls, data: bytes) -> Any: |
66 |
| - """ |
67 |
| - Unpack the data back into an instance |
68 |
| - """ |
69 |
| - |
70 |
| - |
71 | 53 | if np is not None:
|
72 | 54 |
|
73 | 55 | class NumpyArrayHandler(AbstractHandler):
|
@@ -202,11 +184,6 @@ def unpackb(cls, data):
|
202 | 184 | return slice(*loadb(data))
|
203 | 185 |
|
204 | 186 |
|
205 |
| -# Register custom handlers |
206 |
| -register(DatetimeHandler) |
207 |
| -register(SliceHandler) |
208 |
| - |
209 |
| - |
210 | 187 | def default(obj: Any):
|
211 | 188 | """
|
212 | 189 | Serialize (dumpb) hook for obj types that msgpack does not
|
@@ -277,3 +254,33 @@ def loadb(
|
277 | 254 | raw=raw,
|
278 | 255 | strict_map_key=strict_map_key,
|
279 | 256 | )
|
| 257 | + |
| 258 | + |
| 259 | +# Register custom handlers |
| 260 | +register(DatetimeHandler) |
| 261 | +register(SliceHandler) |
| 262 | + |
| 263 | + |
| 264 | +try: |
| 265 | + from asyncio_rpc.serialization.shapely_models import ( |
| 266 | + GeometryCollectionHandler, |
| 267 | + LinearRingHandler, |
| 268 | + LineStringHandler, |
| 269 | + MultiLineStringHandler, |
| 270 | + MultiPointHandler, |
| 271 | + MultiPolygonHandler, |
| 272 | + PointHandler, |
| 273 | + PolygonHandler, |
| 274 | + ) |
| 275 | + |
| 276 | + register(PointHandler) |
| 277 | + register(LineStringHandler) |
| 278 | + register(LinearRingHandler) |
| 279 | + register(PolygonHandler) |
| 280 | + register(MultiPointHandler) |
| 281 | + register(MultiLineStringHandler) |
| 282 | + register(MultiPolygonHandler) |
| 283 | + register(GeometryCollectionHandler) |
| 284 | +except ImportError: |
| 285 | + # Shapely is not installed, skip shapely handlers |
| 286 | + pass |
0 commit comments