'Checks that the input is a CartesianRepresentation with the correct
unit, or the special value ``[0, 0, 0]``.
Parameters
value : object
Input value to be converted.
Returns
out, converted : correctly-typed object, boolean
Tuple consisting of the correctly-typed object and a boolean which
indicates if conversion was actually performed.
Raises
ValueError
If the input is not valid for this attribute.'

def convert_input(self, value):

    if (isinstance(value, list) and (len(value) == 3) and all(((v == 0) for v in value)) and (self.unit is not None)):
        return (CartesianRepresentation((np.zeros(3) * self.unit)), True)
    else:
        if (hasattr(value, u'xyz') and (value.xyz.unit == self.unit)):
            return (value, False)
        converted = True
        value = getattr(value, u'xyz', value)
        if (not hasattr(value, u'unit')):
            raise TypeError(u'tried    to    set    a    {0}    with    something    that    does    not    have    a    unit.'.format(self.__class__.__name__))
        value = value.to(self.unit)
        cartrep = CartesianRepresentation(value, copy=False)
        return (cartrep, converted)
