Check schema version and perform upgrades if necessary.
115 def _check_version_and_upgrade(self, pb_doc, mx):
116 """
117 @brief Check schema version and perform upgrades if necessary.
118 @param pb_doc The Protobuf MaterialXDocument message.
119 @param mx The MaterialX Python module.
120 @return A new MaterialX document object.
121 """
122 doc = mx.createDocument()
123
124
125 if pb_doc.HasField('schema_version'):
126 major = pb_doc.schema_version.major
127 minor = pb_doc.schema_version.minor
128 patch = pb_doc.schema_version.patch
129
130
131 if major > SCHEMA_VERSION_MAJOR:
132 raise ValueError(
133 f"Document schema version {major}.{minor}.{patch} is newer than "
134 f"supported version {SCHEMA_VERSION_MAJOR}.{SCHEMA_VERSION_MINOR}.{SCHEMA_VERSION_PATCH}. "
135 f"Please upgrade your software."
136 )
137
138
139 if major < SCHEMA_VERSION_MAJOR:
140 print(f"Warning: Upgrading document from version {major}.{minor}.{patch} "
141 f"to {SCHEMA_VERSION_MAJOR}.{SCHEMA_VERSION_MINOR}.{SCHEMA_VERSION_PATCH}")
142
143
144 else:
145
146 print("Warning: Document has no schema version information. Assuming legacy format.")
147
148 return doc
149