Skip to content

Commit bea1d48

Browse files
committed
Bindings: UnknownSchema added data property
Signed-off-by: Natchar Ratanasirigulchai <[email protected]>
1 parent 7f1ee9c commit bea1d48

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

src/opentimelineio/unknownSchema.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ class 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
@@ -183,6 +183,9 @@ static void define_bases1(py::module m) {
183183
.def_property_readonly("is_unknown_schema", &SerializableObject::is_unknown_schema);
184184

185185
py::class_<UnknownSchema, SerializableObject, managing_ptr<UnknownSchema>>(m, "UnknownSchema")
186+
.def_property_readonly("data", [](UnknownSchema* schema) {
187+
auto ptr = schema->data().get_or_create_mutation_stamp();
188+
return (AnyDictionaryProxy*)(ptr); }, py::return_value_policy::take_ownership)
186189
.def_property_readonly("original_schema_name", &UnknownSchema::original_schema_name)
187190
.def_property_readonly("original_schema_version", &UnknownSchema::original_schema_version);
188191

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)