NumberRange renamed to NumericRange

I was avoiding Numeric to avoid conflicting with the 'numeric'
Postgres type, which is an alias for 'decimal'. But now that there
is a single numeric range I can use the preferred name
This commit is contained in:
Daniele Varrazzo 2012-09-23 21:11:06 +01:00
parent 45cbcc0713
commit 94c6353d55
3 changed files with 25 additions and 25 deletions

View File

@ -343,7 +343,7 @@ where typname = %s and (%s is null or ns.nspname = %s);
register_adapter(self.range, self.adapter)
class NumberRange(Range):
class NumericRange(Range):
"""A `Range` suitable to pass Python numeric types to a PostgreSQL range."""
pass
@ -360,10 +360,10 @@ class DateTimeTZRange(Range):
pass
# Special adaptation for NumberRange. Allows to pass number range regardless
# Special adaptation for NumericRange. Allows to pass number range regardless
# of whether they are ints, floats and what size of ints are, which are
# pointless in Python world. On the way back, no numeric range is casted to
# NumberRange, but only to their subclasses
# NumericRange, but only to their subclasses
class NumberRangeAdapter(RangeAdapter):
"""Adapt a range if the subtype doesn't need quotes."""
@ -390,21 +390,21 @@ class NumberRangeAdapter(RangeAdapter):
r._bounds[0], lower, upper, r._bounds[1])
# TODO: probably won't work with infs, nans and other tricky cases.
register_adapter(NumberRange, NumberRangeAdapter)
register_adapter(NumericRange, NumberRangeAdapter)
# Register globally typecasters and adapters for builtin range types.
# note: the adapter is registered more than once, but this is harmless.
int4range_caster = RangeCaster(NumberRangeAdapter, NumberRange,
int4range_caster = RangeCaster(NumberRangeAdapter, NumericRange,
oid=3904, subtype_oid=23, array_oid=3905)
int4range_caster._register()
int8range_caster = RangeCaster(NumberRangeAdapter, NumberRange,
int8range_caster = RangeCaster(NumberRangeAdapter, NumericRange,
oid=3926, subtype_oid=20, array_oid=3927)
int8range_caster._register()
numrange_caster = RangeCaster(NumberRangeAdapter, NumberRange,
numrange_caster = RangeCaster(NumberRangeAdapter, NumericRange,
oid=3906, subtype_oid=1700, array_oid=3907)
numrange_caster._register()

View File

@ -968,7 +968,7 @@ def register_composite(name, conn_or_curs, globally=False):
# Expose range-related objects
from psycopg2._range import Range, NumberRange
from psycopg2._range import Range, NumericRange
from psycopg2._range import DateRange, DateTimeRange, DateTimeTZRange
from psycopg2._range import register_range, RangeAdapter, RangeCaster

View File

@ -911,12 +911,12 @@ class RangeCasterTestCase(unittest.TestCase):
self.assert_(r.upper_inf)
def test_cast_numbers(self):
from psycopg2.extras import NumberRange
from psycopg2.extras import NumericRange
cur = self.conn.cursor()
for type in ('int4range', 'int8range'):
cur.execute("select '(10,20)'::%s" % type)
r = cur.fetchone()[0]
self.assert_(isinstance(r, NumberRange))
self.assert_(isinstance(r, NumericRange))
self.assert_(not r.isempty)
self.assertEqual(r.lower, 11)
self.assertEqual(r.upper, 20)
@ -927,7 +927,7 @@ class RangeCasterTestCase(unittest.TestCase):
cur.execute("select '(10.2,20.6)'::numrange")
r = cur.fetchone()[0]
self.assert_(isinstance(r, NumberRange))
self.assert_(isinstance(r, NumericRange))
self.assert_(not r.isempty)
self.assertEqual(r.lower, Decimal('10.2'))
self.assertEqual(r.upper, Decimal('20.6'))
@ -984,56 +984,56 @@ class RangeCasterTestCase(unittest.TestCase):
self.assert_(r.upper_inc)
def test_adapt_number_range(self):
from psycopg2.extras import NumberRange
from psycopg2.extras import NumericRange
cur = self.conn.cursor()
r = NumberRange(empty=True)
r = NumericRange(empty=True)
cur.execute("select %s::int4range", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange))
self.assert_(isinstance(r1, NumericRange))
self.assert_(r1.isempty)
r = NumberRange(10, 20)
r = NumericRange(10, 20)
cur.execute("select %s::int8range", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange))
self.assert_(isinstance(r1, NumericRange))
self.assertEqual(r1.lower, 10)
self.assertEqual(r1.upper, 20)
self.assert_(r1.lower_inc)
self.assert_(not r1.upper_inc)
r = NumberRange(10.2, 20.5, '(]')
r = NumericRange(10.2, 20.5, '(]')
cur.execute("select %s::numrange", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange))
self.assert_(isinstance(r1, NumericRange))
self.assertEqual(r1.lower, Decimal('10.2'))
self.assertEqual(r1.upper, Decimal('20.5'))
self.assert_(not r1.lower_inc)
self.assert_(r1.upper_inc)
def test_adapt_numeric_range(self):
from psycopg2.extras import NumberRange
from psycopg2.extras import NumericRange
cur = self.conn.cursor()
r = NumberRange(empty=True)
r = NumericRange(empty=True)
cur.execute("select %s::int4range", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange), r1)
self.assert_(isinstance(r1, NumericRange), r1)
self.assert_(r1.isempty)
r = NumberRange(10, 20)
r = NumericRange(10, 20)
cur.execute("select %s::int8range", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange))
self.assert_(isinstance(r1, NumericRange))
self.assertEqual(r1.lower, 10)
self.assertEqual(r1.upper, 20)
self.assert_(r1.lower_inc)
self.assert_(not r1.upper_inc)
r = NumberRange(10.2, 20.5, '(]')
r = NumericRange(10.2, 20.5, '(]')
cur.execute("select %s::numrange", (r,))
r1 = cur.fetchone()[0]
self.assert_(isinstance(r1, NumberRange))
self.assert_(isinstance(r1, NumericRange))
self.assertEqual(r1.lower, Decimal('10.2'))
self.assertEqual(r1.upper, Decimal('20.5'))
self.assert_(not r1.lower_inc)