diff options
Diffstat (limited to 'paste/util/intset.py')
-rw-r--r-- | paste/util/intset.py | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/paste/util/intset.py b/paste/util/intset.py index c124eb6..3e026e2 100644 --- a/paste/util/intset.py +++ b/paste/util/intset.py @@ -6,6 +6,7 @@ Integer set class. Copyright (C) 2006, Heiko Wundram. Released under the MIT license. """ +import six # Version information # ------------------- @@ -28,40 +29,43 @@ class _Infinity(object): self._neg = neg def __lt__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return ( self._neg and not ( isinstance(value,_Infinity) and value._neg ) ) def __le__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return self._neg def __gt__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return not ( self._neg or ( isinstance(value,_Infinity) and not value._neg ) ) def __ge__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return not self._neg def __eq__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return isinstance(value,_Infinity) and self._neg == value._neg def __ne__(self,value): - if not isinstance(value,(int,long,_Infinity)): + if not isinstance(value, _VALID_TYPES): return NotImplemented return not isinstance(value,_Infinity) or self._neg != value._neg def __repr__(self): return "None" +_VALID_TYPES = six.integer_types + (_Infinity,) + + # Constants # --------- @@ -117,19 +121,19 @@ class IntSet(object): # Check keyword arguments. if kwargs: raise ValueError("Invalid keyword argument.") - if not ( isinstance(self._min,(int,long)) or self._min is _MININF ): + if not ( isinstance(self._min, six.integer_types) or self._min is _MININF ): raise TypeError("Invalid type of min argument.") - if not ( isinstance(self._max,(int,long)) or self._max is _MAXINF ): + if not ( isinstance(self._max, six.integer_types) or self._max is _MAXINF ): raise TypeError("Invalid type of max argument.") if ( self._min is not _MININF and self._max is not _MAXINF and self._min > self._max ): raise ValueError("Minimum is not smaller than maximum.") - if isinstance(self._max,(int,long)): + if isinstance(self._max, six.integer_types): self._max += 1 # Process arguments. for arg in args: - if isinstance(arg,(int,long)): + if isinstance(arg, six.integer_types): start, stop = arg, arg+1 elif isinstance(arg,tuple): if len(arg) != 2: @@ -143,14 +147,14 @@ class IntSet(object): stop = self._max # Check arguments. - if not ( isinstance(start,(int,long)) or start is _MININF ): + if not ( isinstance(start, six.integer_types) or start is _MININF ): raise TypeError("Invalid type of tuple start.") - if not ( isinstance(stop,(int,long)) or stop is _MAXINF ): + if not ( isinstance(stop, six.integer_types) or stop is _MAXINF ): raise TypeError("Invalid type of tuple stop.") if ( start is not _MININF and stop is not _MAXINF and start > stop ): continue - if isinstance(stop,(int,long)): + if isinstance(stop, six.integer_types): stop += 1 else: raise TypeError("Invalid argument.") @@ -211,7 +215,7 @@ class IntSet(object): def __coerce__(self,other): if isinstance(other,IntSet): return self, other - elif isinstance(other,(int,long,tuple)): + elif isinstance(other, six.integer_types + (tuple,)): try: return self, self.__class__(other) except TypeError: @@ -471,10 +475,10 @@ class IntSet(object): rv = [] for start, stop in self._ranges: - if ( isinstance(start,(int,long)) and isinstance(stop,(int,long)) + if ( isinstance(start, six.integer_types) and isinstance(stop, six.integer_types) and stop-start == 1 ): rv.append("%r" % start) - elif isinstance(stop,(int,long)): + elif isinstance(stop, six.integer_types): rv.append("(%r,%r)" % (start,stop-1)) else: rv.append("(%r,%r)" % (start,stop)) |