fix(serialization): move end and begin write
This commit is contained in:
@@ -40,13 +40,8 @@ def send(
|
||||
|
||||
serializer = BaseObjectSerializer(write_transports=transports)
|
||||
|
||||
for t in transports:
|
||||
t.begin_write()
|
||||
obj_hash, _ = serializer.write_json(base=base)
|
||||
|
||||
for t in transports:
|
||||
t.end_write()
|
||||
|
||||
return obj_hash
|
||||
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ from specklepy.logging.exceptions import (
|
||||
SpeckleWarning,
|
||||
)
|
||||
from specklepy.transports.abstract_transport import AbstractTransport
|
||||
|
||||
# import for serialization
|
||||
import specklepy.objects.geometry
|
||||
import specklepy.objects.other
|
||||
|
||||
PRIMITIVES = (int, float, str, bool)
|
||||
@@ -50,7 +53,17 @@ class BaseObjectSerializer:
|
||||
def write_json(self, base: Base):
|
||||
self.__reset_writer()
|
||||
self.detach_lineage = [True]
|
||||
|
||||
if self.write_transports:
|
||||
for wt in self.write_transports:
|
||||
wt.begin_write()
|
||||
|
||||
hash, obj = self.traverse_base(base)
|
||||
|
||||
if self.write_transports:
|
||||
print(">>> END WRITE")
|
||||
for wt in self.write_transports:
|
||||
wt.end_write()
|
||||
return hash, ujson.dumps(obj)
|
||||
|
||||
def traverse_base(self, base: Base) -> Tuple[str, Dict]:
|
||||
@@ -70,10 +83,6 @@ class BaseObjectSerializer:
|
||||
object_builder.update(speckle_type=base.speckle_type)
|
||||
obj, props = base, base.get_serializable_attributes()
|
||||
|
||||
if self.write_transports:
|
||||
for wt in self.write_transports:
|
||||
wt.begin_write()
|
||||
|
||||
while props:
|
||||
prop = props.pop(0)
|
||||
value = getattr(obj, prop, None)
|
||||
@@ -176,11 +185,6 @@ class BaseObjectSerializer:
|
||||
|
||||
del self.lineage[-1]
|
||||
|
||||
|
||||
if self.write_transports:
|
||||
for wt in self.write_transports:
|
||||
wt.end_write()
|
||||
|
||||
return hash, object_builder
|
||||
|
||||
def traverse_value(self, obj: Any, detach: bool = False) -> Any:
|
||||
|
||||
Reference in New Issue
Block a user