fix(serialization): move end and begin write

This commit is contained in:
izzy lyseggen
2022-06-20 07:52:58 +01:00
parent 9d038de3ab
commit 72dcb674eb
2 changed files with 13 additions and 14 deletions
-5
View File
@@ -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: