+ yml = file_hdl.read()
+
+ try:
+ desc_msg = self.yang_class.from_yaml(self.model, decode(yml), strict=False)
+ return self.yang_class_project.from_dict(desc_msg.as_dict())
+ except Exception as e:
+ self._log.exception(e)
+ raise e
+
+ def to_desc_msg(self, pb_msg, project_rooted=True):
+ """Convert to and from project rooted pb msg descriptor to catalog
+ rooted pb msg
+ project_rooted: if pb_msg is project rooted or not
+ """
+ if project_rooted:
+ if isinstance(pb_msg, self._yang_pb_project_cls):
+ return self._yang_pb_cls.from_dict(pb_msg.as_dict())
+ elif isinstance(pb_msg, self._yang_pb_cls):
+ return pb_msg
+
+ else:
+ if isinstance(pb_msg, self._yang_pb_cls):
+ return self._yang_pb_project_cls.from_dict(pb_msg.as_dict())
+ elif isinstance(pb_msg, self._yang_pb_project_cls):
+ return pb_msg