<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def FromType(name, otype):
 """ ValueOption subclasses factory, creates a convenient option to store data from a given Type. attribute precedence : * ``|attrs| > 0`` (``multi`` and ``uniq`` are implicit) => NotImplementedError * ``uniq`` (``multi`` is implicit) => NotImplementedError * ``multi`` and ``not uniq`` => NotImplementedError * ``not multi`` => ValueOption :param name: Name of the option :type name: str :param otype: the desired type of field :type otype: subclass of :class:`.GenericType` """

        if otype.attrs is not None and len(otype.attrs):
            raise NotImplementedError("for otype, options can't have attributs")
            #return VectorField(ftype)
        elif otype.uniq:
            return SetOption(name, otype)
        elif otype.multi:
            #XXX: dbl check needed?
            #raise NotImplementedError("for now, options can't have multiple values")
            return ListOption(name, otype)
        else:
            return ValueOption(name, otype)