def __new__(cls, arg=None, name=NN, Error=UnitError, low=0, high=None, **name_arg): '''New named C{int} instance with limits. @kwarg cls: This class (C{Int_} or sub-class). @arg arg: The value (any C{type} convertable to C{int}). @kwarg name: Optional instance name (C{str}). @kwarg Error: Optional error to raise, overriding the default C{UnitError}. @kwarg low: Optional lower B{C{arg}} limit (C{float} or C{None}). @kwarg high: Optional upper B{C{arg}} limit (C{float} or C{None}). @kwarg name_arg: Optional C{name=arg} keyword argument, inlieu of B{C{name}} and B{C{arg}}. @returns: An L{Int_} instance. @raise Error: Invalid B{C{arg}} or B{C{arg}} below B{C{low}} or above B{C{high}}. ''' if name_arg: name, arg = _xkwds_popitem(name_arg) self = Int.__new__(cls, arg=arg, name=name, Error=Error) if (low is not None) and self < low: txt = Fmt.limit(below=low) elif (high is not None) and self > high: txt = Fmt.limit(above=high) else: return self raise _Error(cls, arg, name=name, Error=Error, txt=txt)
def __new__(cls, arg=None, name=_degrees_, Error=UnitError, suffix=_NSEW_, low=None, high=None, **name_arg): '''New named C{Degrees} instance. @arg cls: This class (C{Degrees_} or sub-class). @kwarg arg: The value (any C{type} convertable to C{float} or parsable by L{parseDMS}). @kwarg name: Optional instance name (C{str}). @kwarg Error: Optional error to raise, overriding the default L{UnitError}. @kwarg suffix: Optional, valid compass direction suffixes (C{NSEW}). @kwarg low: Optional lower B{C{arg}} limit (C{float} or C{None}). @kwarg high: Optional upper B{C{arg}} limit (C{float} or C{None}). @kwarg name_arg: Optional C{name=arg} keyword argument, inlieu of B{C{name}} and B{C{arg}}. @returns: A C{Degrees} instance. @raise Error: Invalid B{C{arg}} or B{C{abs(deg)}} below B{C{low}} or above B{C{high}}. ''' if name_arg: name, arg = _xkwds_popitem(name_arg) self = Degrees.__new__(cls, arg=arg, name=name, Error=Error, suffix=suffix, clip=0) if (low is not None) and self < low: txt = Fmt.limit(below=low) elif (high is not None) and self > high: txt = Fmt.limit(above=high) else: return self raise _Error(cls, arg, name=name, Error=Error, txt=txt)