'Check that a timeout attribute is valid.
:param value: The timeout value to validate
:param name: The name of the timeout attribute to validate. This is
used to specify in error messages.
:return: The validated and casted version of the given value.
:raises ValueError: If the type is not an integer or a float, or if it
is a numeric value less than zero.'

@classmethod
def _validate_timeout(cls, value, name):

    if (value is _Default):
        return cls.DEFAULT_TIMEOUT
    if ((value is None) or (value is cls.DEFAULT_TIMEOUT)):
        return value
    try:
        float(value)
    except (TypeError, ValueError):
        raise ValueError(('Timeout    value    %s    was    %s,    but    it    must    be    an    int    or    float.' % (name, value)))
    try:
        if (value < 0):
            raise ValueError(('Attempted    to    set    %s    timeout    to    %s,    but    the    timeout    cannot    be    set    to    a    value    less    than    0.' % (name, value)))
    except TypeError:
        raise ValueError(('Timeout    value    %s    was    %s,    but    it    must    be    an    int    or    float.' % (name, value)))
    return value
