Skip to content

Commit 1a41646

Browse files
committed
Bindings: UnknownSchema added data property
Signed-off-by: Natchar Ratanasirigulchai <natchar.r@outlook.com>
1 parent 7adfb27 commit 1a41646

3 files changed

Lines changed: 34 additions & 0 deletions

File tree

src/opentimelineio/unknownSchema.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ class OTIO_API_TYPE UnknownSchema : public SerializableObject
3939
return _original_schema_version;
4040
}
4141

42+
AnyDictionary data() const noexcept
43+
{
44+
return _data;
45+
}
46+
4247
bool read_from(Reader&) override;
4348
void write_to(Writer&) const override;
4449

src/py-opentimelineio/opentimelineio-bindings/otio_serializableObjects.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,9 @@ define_bases1(py::module m)
301301
py::class_<UnknownSchema, SerializableObject, managing_ptr<UnknownSchema>>(
302302
m,
303303
"UnknownSchema")
304+
.def_property_readonly("data", [](UnknownSchema* schema) {
305+
auto ptr = schema->data().get_or_create_mutation_stamp();
306+
return (AnyDictionaryProxy*)(ptr); }, py::return_value_policy::take_ownership)
304307
.def_property_readonly(
305308
"original_schema_name",
306309
&UnknownSchema::original_schema_name)

tests/test_unknown_schema.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,32 @@ def test_is_unknown_schema(self):
6363
unknown = self.orig.media_reference.metadata["stuff"]
6464
self.assertTrue(unknown.is_unknown_schema)
6565

66+
def test_unknown_to_dict(self):
67+
unknown = self.orig.media_reference.metadata["stuff"]
68+
self.assertTrue(unknown.is_unknown_schema)
69+
unknown_data = unknown.data
70+
self.assertIsNotNone(
71+
unknown_data
72+
)
73+
74+
self.assertEqual(
75+
unknown_data,
76+
{
77+
"some_data": 895,
78+
"howlongami": otio.opentime.RationalTime(rate=30, value=100)
79+
}
80+
)
81+
82+
# Mutation of unkown_data should not mutate the unknown object.
83+
unknown_data["some_data"] = 0
84+
self.assertEqual(
85+
unknown.data,
86+
{
87+
"some_data": 895,
88+
"howlongami": otio.opentime.RationalTime(rate=30, value=100)
89+
}
90+
)
91+
6692

6793
if __name__ == '__main__':
6894
unittest.main()

0 commit comments

Comments
 (0)