<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def attribute(name, value, getter=None, setter=None, deleter=None, label=None, desc=None, meta=None):
 """ Annotates a model attribute. @param name: attribute name, unique for a model. @type name: str or unicode @param value: attribute type information. @type value: implementer of L{src.feat.models.interface.IValueInfo} @param getter: an effect or None if the attribute is write-only; the retrieved value that will be validated; see feat.models.call for effect information. @type getter: callable or None @param setter: an effect or None if the attribute is read-only; the new value will be validated, possibly converted and returned; see feat.models.call for effect information. @type setter: callable or None @param deleter: an effect or None if the attribute cannot be deleted; @type deleter: callable or None @param label: the attribute label or None. @type label: str or unicode or None @param desc: the description of the attribute or None if not documented. @type desc: str or unicode or None @param meta: model item metadata atoms. @type meta: list of tuple """

    _annotate("attribute", name, value, getter=getter, setter=setter,
              deleter=deleter,
              label=label, desc=desc, meta=meta)