summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomi Pieviläinen <tomi.pievilainen+launchpad@iki.fi>2012-02-18 23:59:15 +0200
committerTomi Pieviläinen <tomi.pievilainen+launchpad@iki.fi>2012-02-18 23:59:15 +0200
commitf21920abb2739e37b97669b2b5c303b80f611858 (patch)
treefda7b39d18b4132eab74a0c3fe5d01014bc7af56
parent628cb9e642dc7b188c7f1a21879a29429b2cb9c2 (diff)
downloaddateutil-f21920abb2739e37b97669b2b5c303b80f611858.tar.gz
Check for longs and ints in Python2.x
-rw-r--r--dateutil/parser.py4
-rw-r--r--dateutil/relativedelta.py4
-rw-r--r--dateutil/rrule.py26
-rwxr-xr-xtest.py35
4 files changed, 51 insertions, 18 deletions
diff --git a/dateutil/parser.py b/dateutil/parser.py
index aa3eae0..369bfc2 100644
--- a/dateutil/parser.py
+++ b/dateutil/parser.py
@@ -22,7 +22,7 @@ try:
except ImportError:
from io import StringIO
-from six import text_type, binary_type
+from six import text_type, binary_type, integer_types
from . import relativedelta
from . import tz
@@ -328,7 +328,7 @@ class parser(object):
tzinfo = tzdata
elif isinstance(tzdata, str):
tzinfo = tz.tzstr(tzdata)
- elif isinstance(tzdata, int):
+ elif isinstance(tzdata, integer_types):
tzinfo = tz.tzoffset(res.tzname, tzdata)
else:
raise ValueError("offset must be tzinfo subclass, " \
diff --git a/dateutil/relativedelta.py b/dateutil/relativedelta.py
index d0b599a..a1b8929 100644
--- a/dateutil/relativedelta.py
+++ b/dateutil/relativedelta.py
@@ -10,6 +10,8 @@ __license__ = "Simplified BSD"
import datetime
import calendar
+from six import integer_types
+
__all__ = ["relativedelta", "MO", "TU", "WE", "TH", "FR", "SA", "SU"]
class weekday(object):
@@ -171,7 +173,7 @@ Here is the behavior of operations with relativedelta:
self.second = second
self.microsecond = microsecond
- if isinstance(weekday, int):
+ if isinstance(weekday, integer_types):
self.weekday = weekdays[weekday]
else:
self.weekday = weekday
diff --git a/dateutil/rrule.py b/dateutil/rrule.py
index 48013f8..b65afc0 100644
--- a/dateutil/rrule.py
+++ b/dateutil/rrule.py
@@ -16,7 +16,7 @@ except ImportError:
import thread as _thread
import sys
-from six import advance_iterator
+from six import advance_iterator, integer_types
__all__ = ["rrule", "rruleset", "rrulestr",
"YEARLY", "MONTHLY", "WEEKLY", "DAILY",
@@ -255,13 +255,13 @@ class rrule(rrulebase):
self._until = until
if wkst is None:
self._wkst = calendar.firstweekday()
- elif isinstance(wkst, int):
+ elif isinstance(wkst, integer_types):
self._wkst = wkst
else:
self._wkst = wkst.weekday
if bysetpos is None:
self._bysetpos = None
- elif isinstance(bysetpos, int):
+ elif isinstance(bysetpos, integer_types):
if bysetpos == 0 or not (-366 <= bysetpos <= 366):
raise ValueError("bysetpos must be between 1 and 366, "
"or between -366 and -1")
@@ -285,14 +285,14 @@ class rrule(rrulebase):
# bymonth
if not bymonth:
self._bymonth = None
- elif isinstance(bymonth, int):
+ elif isinstance(bymonth, integer_types):
self._bymonth = (bymonth,)
else:
self._bymonth = tuple(bymonth)
# byyearday
if not byyearday:
self._byyearday = None
- elif isinstance(byyearday, int):
+ elif isinstance(byyearday, integer_types):
self._byyearday = (byyearday,)
else:
self._byyearday = tuple(byyearday)
@@ -300,7 +300,7 @@ class rrule(rrulebase):
if byeaster is not None:
if not easter:
from dateutil import easter
- if isinstance(byeaster, int):
+ if isinstance(byeaster, integer_types):
self._byeaster = (byeaster,)
else:
self._byeaster = tuple(byeaster)
@@ -310,7 +310,7 @@ class rrule(rrulebase):
if not bymonthday:
self._bymonthday = ()
self._bynmonthday = ()
- elif isinstance(bymonthday, int):
+ elif isinstance(bymonthday, integer_types):
if bymonthday < 0:
self._bynmonthday = (bymonthday,)
self._bymonthday = ()
@@ -323,7 +323,7 @@ class rrule(rrulebase):
# byweekno
if byweekno is None:
self._byweekno = None
- elif isinstance(byweekno, int):
+ elif isinstance(byweekno, integer_types):
self._byweekno = (byweekno,)
else:
self._byweekno = tuple(byweekno)
@@ -331,7 +331,7 @@ class rrule(rrulebase):
if byweekday is None:
self._byweekday = None
self._bynweekday = None
- elif isinstance(byweekday, int):
+ elif isinstance(byweekday, integer_types):
self._byweekday = (byweekday,)
self._bynweekday = None
elif hasattr(byweekday, "n"):
@@ -345,7 +345,7 @@ class rrule(rrulebase):
self._byweekday = []
self._bynweekday = []
for wday in byweekday:
- if isinstance(wday, int):
+ if isinstance(wday, integer_types):
self._byweekday.append(wday)
elif not wday.n or freq > MONTHLY:
self._byweekday.append(wday.weekday)
@@ -363,7 +363,7 @@ class rrule(rrulebase):
self._byhour = (dtstart.hour,)
else:
self._byhour = None
- elif isinstance(byhour, int):
+ elif isinstance(byhour, integer_types):
self._byhour = (byhour,)
else:
self._byhour = tuple(byhour)
@@ -373,7 +373,7 @@ class rrule(rrulebase):
self._byminute = (dtstart.minute,)
else:
self._byminute = None
- elif isinstance(byminute, int):
+ elif isinstance(byminute, integer_types):
self._byminute = (byminute,)
else:
self._byminute = tuple(byminute)
@@ -383,7 +383,7 @@ class rrule(rrulebase):
self._bysecond = (dtstart.second,)
else:
self._bysecond = None
- elif isinstance(bysecond, int):
+ elif isinstance(bysecond, integer_types):
self._bysecond = (bysecond,)
else:
self._bysecond = tuple(bysecond)
diff --git a/test.py b/test.py
index 3fa865d..b705343 100755
--- a/test.py
+++ b/test.py
@@ -2,7 +2,7 @@
# -*- encoding: utf-8 -*-
from __future__ import unicode_literals
-from six import StringIO, BytesIO
+from six import StringIO, BytesIO, PY3
import unittest
import calendar
import time
@@ -98,7 +98,7 @@ class RelativeDeltaTest(unittest.TestCase):
def testNextWenesdayNotToday(self):
self.assertEqual(self.today+relativedelta(days=+1, weekday=WE),
date(2003, 9, 24))
-
+
def test15thISOYearWeek(self):
self.assertEqual(date(2003, 1, 1) +
relativedelta(day=4, weeks=+14, weekday=MO(-1)),
@@ -157,6 +157,10 @@ class RelativeDeltaTest(unittest.TestCase):
c = a+b
self.assertEqual(c.microsecond, b.microsecond)
+ def test28Days(self):
+ self.assertEqual(datetime(2000, 1, 1) + relativedelta(days=1) * 28,
+ datetime(2000, 1, 29))
+
class RRuleTest(unittest.TestCase):
def testYearly(self):
@@ -2399,6 +2403,27 @@ class RRuleTest(unittest.TestCase):
datetime(2010, 3, 22, 13, 1),
datetime(2010, 3, 22, 14, 1)])
+ def testLongIntegers(self):
+ if not PY3: # There is no longs in python3
+ self.assertEqual(list(rrule(MINUTELY,
+ count=long(2),
+ interval=long(2),
+ bymonth=long(2),
+ byweekday=long(3),
+ byhour=long(6),
+ byminute=long(6),
+ bysecond=long(6),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 2, 5, 6, 6, 6),
+ datetime(1998, 2, 12, 6, 6, 6)])
+ self.assertEqual(list(rrule(YEARLY,
+ count=long(2),
+ bymonthday=long(5),
+ byweekno=long(2),
+ dtstart=parse("19970902T090000"))),
+ [datetime(1998, 1, 5, 9, 0),
+ datetime(2004, 1, 5, 9, 0)])
+
def testUntilNotMatching(self):
self.assertEqual(list(rrule(DAILY,
count=3,
@@ -3002,6 +3027,12 @@ class ParserTest(unittest.TestCase):
datetime(2003, 9, 25, 10, 36, 28,
tzinfo=self.brsttz))
+ def testDateCommandFormatWithLong(self):
+ if not PY3:
+ self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003",
+ tzinfos={"BRST": long(-10800)}),
+ datetime(2003, 9, 25, 10, 36, 28,
+ tzinfo=self.brsttz))
def testDateCommandFormatIgnoreTz(self):
self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003",
ignoretz=True),