From 0f0ad50d7c4d84ff4e02f415731a984aadbea9bc Mon Sep 17 00:00:00 2001 From: Daniel Thiele Date: Wed, 25 Mar 2026 23:16:37 +0100 Subject: [PATCH 1/2] Perform boolean serialization before integer serialization. --- pyangbind/lib/serialise.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyangbind/lib/serialise.py b/pyangbind/lib/serialise.py index f1d4d782..4b8f2190 100644 --- a/pyangbind/lib/serialise.py +++ b/pyangbind/lib/serialise.py @@ -160,10 +160,10 @@ def default(self, obj): return ndict elif isinstance(obj, (str,)): return str(obj) - elif isinstance(obj, (int,)): - return int(obj) elif isinstance(obj, (YANGBool, bool)): return bool(obj) + elif isinstance(obj, (int,)): + return int(obj) elif isinstance(obj, Decimal): return self.yangt_decimal(obj) From ffdfd77f50f9c333b6f65ca6ab06a3b7fb740c9a Mon Sep 17 00:00:00 2001 From: Daniel Thiele Date: Sat, 18 Apr 2026 00:23:27 +0200 Subject: [PATCH 2/2] Add test case --- tests/serialise/json-serialise/json-serialise.yang | 6 ++++++ tests/serialise/json-serialise/run.py | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/tests/serialise/json-serialise/json-serialise.yang b/tests/serialise/json-serialise/json-serialise.yang index 07a8e0d5..8f2a3f2f 100644 --- a/tests/serialise/json-serialise/json-serialise.yang +++ b/tests/serialise/json-serialise/json-serialise.yang @@ -244,6 +244,12 @@ module json-serialise { } } + container c2 { + leaf-list ll0 { + type boolean; + } + } + container two { leaf string-test { type string; diff --git a/tests/serialise/json-serialise/run.py b/tests/serialise/json-serialise/run.py index 9036caba..d053e2bb 100755 --- a/tests/serialise/json-serialise/run.py +++ b/tests/serialise/json-serialise/run.py @@ -72,6 +72,14 @@ def test_full_serialise(self): external_json = json.load(fp) self.assertEqual(pybind_json, external_json, "JSON did not match expected output.") + def test_boolean_before_int_serialize(self): + self.serialise_obj.c2.ll0 = [True, False] + + pybind_json = json.loads(dumps(self.serialise_obj)) + + self.assertIs(pybind_json["c2"]["ll0"][0], True, "JSON did not match expected output.") + self.assertIs(pybind_json["c2"]["ll0"][1], False, "JSON did not match expected output.") + if __name__ == "__main__": unittest.main()