From 10f663386d0a283c4f95fbc1bdff8bf97fa530e0 Mon Sep 17 00:00:00 2001 From: tomvanmele Date: Thu, 24 Oct 2024 18:38:59 +0200 Subject: [PATCH] Fix empty scene serialisation --- CHANGELOG.md | 1 + src/compas/scene/scene.py | 2 +- tests/compas/scene/test_scene_serialisation.py | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5a7a083908b..e6f12f4c502f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * Fixed import errors in `compas_rhino.conduits` for Rhino 8. * Fixed doctest failures. * Fixed bug in serialization when `compas.datastructures.attributes.AttributeView` is used. +* Fixed bug in the serialisation of empty scenes. ### Removed diff --git a/src/compas/scene/scene.py b/src/compas/scene/scene.py index 9faf5195b717..68b46250253c 100644 --- a/src/compas/scene/scene.py +++ b/src/compas/scene/scene.py @@ -56,7 +56,7 @@ def __from_data__(cls, data): items = {str(item.guid): item for item in data["items"]} def add(node, parent, items): - for child_node in node["children"]: + for child_node in node.get("children", []): guid = child_node["item"] settings = child_node["settings"] sceneobject = parent.add(items[guid], **settings) diff --git a/tests/compas/scene/test_scene_serialisation.py b/tests/compas/scene/test_scene_serialisation.py index 26fb03f7e9f9..a0726a770d7a 100644 --- a/tests/compas/scene/test_scene_serialisation.py +++ b/tests/compas/scene/test_scene_serialisation.py @@ -115,3 +115,9 @@ def test_scene_serialisation(items, mocker): scene2 = Scene.from_jsonstring(scene1.to_jsonstring()) assert assert_is_data_equal(scene1, scene2) + + def test_scene_serialisation_empty(): + scene = Scene() + scene = compas.json_loads(compas.json_dumps(scene)) + + assert isinstance(scene, Scene)