diff options
Diffstat (limited to 'lib/_range.py')
-rw-r--r-- | lib/_range.py | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/lib/_range.py b/lib/_range.py index 4cfd387..ee9c329 100644 --- a/lib/_range.py +++ b/lib/_range.py @@ -30,6 +30,7 @@ from psycopg2._psycopg import ProgrammingError, InterfaceError from psycopg2.extensions import ISQLQuote, adapt, register_adapter from psycopg2.extensions import new_type, new_array_type, register_type + class Range(object): """Python representation for a PostgreSQL |range|_ type. @@ -78,42 +79,50 @@ class Range(object): @property def lower_inf(self): """`!True` if the range doesn't have a lower bound.""" - if self._bounds is None: return False + if self._bounds is None: + return False return self._lower is None @property def upper_inf(self): """`!True` if the range doesn't have an upper bound.""" - if self._bounds is None: return False + if self._bounds is None: + return False return self._upper is None @property def lower_inc(self): """`!True` if the lower bound is included in the range.""" - if self._bounds is None: return False - if self._lower is None: return False + if self._bounds is None or self._lower is None: + return False return self._bounds[0] == '[' @property def upper_inc(self): """`!True` if the upper bound is included in the range.""" - if self._bounds is None: return False - if self._upper is None: return False + if self._bounds is None or self._upper is None: + return False return self._bounds[1] == ']' def __contains__(self, x): - if self._bounds is None: return False + if self._bounds is None: + return False + if self._lower is not None: if self._bounds[0] == '[': - if x < self._lower: return False + if x < self._lower: + return False else: - if x <= self._lower: return False + if x <= self._lower: + return False if self._upper is not None: if self._bounds[1] == ']': - if x > self._upper: return False + if x > self._upper: + return False else: - if x >= self._upper: return False + if x >= self._upper: + return False return True @@ -295,7 +304,8 @@ class RangeCaster(object): self.adapter.name = pgrange else: try: - if issubclass(pgrange, RangeAdapter) and pgrange is not RangeAdapter: + if issubclass(pgrange, RangeAdapter) \ + and pgrange is not RangeAdapter: self.adapter = pgrange except TypeError: pass @@ -436,14 +446,17 @@ class NumericRange(Range): """ pass + class DateRange(Range): """Represents :sql:`daterange` values.""" pass + class DateTimeRange(Range): """Represents :sql:`tsrange` values.""" pass + class DateTimeTZRange(Range): """Represents :sql:`tstzrange` values.""" pass @@ -508,5 +521,3 @@ tsrange_caster._register() tstzrange_caster = RangeCaster('tstzrange', DateTimeTZRange, oid=3910, subtype_oid=1184, array_oid=3911) tstzrange_caster._register() - - |