def set_value( self, instance: 'ObjectBase', pb: protobuf.Message, pool: 'Pool', value: OBJECT ) -> None: if value is not None: _checktype(value, self.otype) elif not self.allow_none: raise ValueError("None not allowed for '%s'." % self.name) if pb.HasField(self.name): old_id = getattr(pb, self.name) else: old_id = None new_id = value.id if value is not None else None if new_id == old_id: return old_value = pool[old_id] if old_id is not None else None if value is None: pb.ClearField(self.name) else: setattr(pb, self.name, value.id) if not instance.in_setup: instance.property_changed(PropertyValueChange(instance, self.name, old_value, value))
def set_value( self, instance: 'ObjectBase', pb: protobuf.Message, pool: 'Pool', value: VALUE ) -> None: if pb.HasField(self.name): old_value = getattr(pb, self.name) else: old_value = self.default if value is None: if self.allow_none: pb.ClearField(self.name) else: raise ValueError("None not allowed for '%s'." % self.name) else: setattr(pb, self.name, value) if value != old_value and not instance.in_setup: instance.property_changed(PropertyValueChange(instance, self.name, old_value, value))
def assertProtoPartiallyEquals( self, expected: Union[str, message.Message], actual: message.Message, ignored_fields: Optional[Iterable[str]] = None, ): """Asserts proto messages are equal except the ignored fields.""" if isinstance(expected, str): expected = text_format.Merge(expected, actual.__class__()) else: expected = copy.deepcopy(expected) actual = copy.deepcopy(actual) # Currently only supports one-level for ignored fields. for ignored_field in ignored_fields or []: expected.ClearField(ignored_field) actual.ClearField(ignored_field) return self.assertProtoEquals(expected, actual)
def set_value( self, instance: 'ObjectBase', pb: protobuf.Message, pool: 'Pool', value: PROTOVAL ) -> None: if pb.HasField(self.name): old_value = self.ptype.from_proto(getattr(pb, self.name)) else: old_value = self.default if value is None: if self.allow_none: pb.ClearField(self.name) else: raise ValueError("None not allowed for '%s'." % self.name) else: _checktype(value, self.ptype) getattr(pb, self.name).CopyFrom(value.to_proto()) if value != old_value and not instance.in_setup: instance.property_changed(PropertyValueChange(instance, self.name, old_value, value))