'Given a serialized value, decode the attribute.
Only attributes which have been previously defined are permitted.
Args:
attribute_name: The string name of the attribute.
value: The serialized attribute value.
ts: The timestamp of this attribute.'

def DecodeValueFromAttribute(self, attribute_name, value, ts):

    try:
        attribute = Attribute.PREDICATES[attribute_name]
        cls = attribute.attribute_type
        self._AddAttributeToCache(attribute, LazyDecoder(cls, value, ts), self.synced_attributes)
    except KeyError:
        pass
    except (ValueError, rdfvalue.DecodeError):
        logging.debug('%s:    %s    invalid    encoding.    Skipping.', self.urn, attribute_name)
