From ac37a80ce677025e03951091284feab1eadc0404 Mon Sep 17 00:00:00 2001 From: Gustavo Niemeyer Date: Thu, 24 Mar 2011 14:16:39 -0300 Subject: Applying Python 3 support patch by Brian Jones. --- dateutil/easter.py | 4 +- dateutil/parser.py | 39 +-- dateutil/relativedelta.py | 23 +- dateutil/rrule.py | 100 ++++--- dateutil/tz.py | 93 +++--- dateutil/tzwin.py | 30 +- dateutil/zoneinfo/__init__.py | 3 +- example.py | 14 +- sandbox/scheduler.py | 4 +- setup.py | 4 +- test.py | 657 +++++++++++++++++++++--------------------- updatezinfo.py | 16 +- 12 files changed, 491 insertions(+), 496 deletions(-) diff --git a/dateutil/easter.py b/dateutil/easter.py index d794410..07e643b 100644 --- a/dateutil/easter.py +++ b/dateutil/easter.py @@ -52,7 +52,7 @@ def easter(year, method=EASTER_WESTERN): """ if not (1 <= method <= 3): - raise ValueError, "invalid method" + raise ValueError("invalid method") # g - Golden year - 1 # c - Century @@ -88,5 +88,5 @@ def easter(year, method=EASTER_WESTERN): p = i-j+e d = 1+(p+27+(p+6)//40)%31 m = 3+(p+26)//30 - return datetime.date(int(y),int(m),int(d)) + return datetime.date(int(y), int(m), int(d)) diff --git a/dateutil/parser.py b/dateutil/parser.py index 5d824e4..ad8fee4 100644 --- a/dateutil/parser.py +++ b/dateutil/parser.py @@ -13,14 +13,15 @@ import string import time import sys import os +import collections try: - from cStringIO import StringIO + from io import StringIO except ImportError: - from StringIO import StringIO + from io import StringIO -import relativedelta -import tz +from . import relativedelta +from . import tz __all__ = ["parse", "parserinfo"] @@ -39,7 +40,7 @@ __all__ = ["parse", "parserinfo"] class _timelex(object): def __init__(self, instream): - if isinstance(instream, basestring): + if isinstance(instream, str): instream = StringIO(instream) self.instream = instream self.wordchars = ('abcdfeghijklmnopqrstuvwxyz' @@ -133,7 +134,7 @@ class _timelex(object): def __iter__(self): return self - def next(self): + def __next__(self): token = self.get_token() if token is None: raise StopIteration @@ -155,7 +156,7 @@ class _resultbase(object): for attr in self.__slots__: value = getattr(self, attr) if value is not None: - l.append("%s=%s" % (attr, `value`)) + l.append("%s=%s" % (attr, repr(value))) return "%s(%s)" % (classname, ", ".join(l)) def __repr__(self): @@ -300,7 +301,7 @@ class parser(object): second=0, microsecond=0) res = self._parse(timestr, **kwargs) if res is None: - raise ValueError, "unknown string format" + raise ValueError("unknown string format") repl = {} for attr in ["year", "month", "day", "hour", "minute", "second", "microsecond"]: @@ -311,20 +312,20 @@ class parser(object): if res.weekday is not None and not res.day: ret = ret+relativedelta.relativedelta(weekday=res.weekday) if not ignoretz: - if callable(tzinfos) or tzinfos and res.tzname in tzinfos: - if callable(tzinfos): + if isinstance(tzinfos, collections.Callable) or tzinfos and res.tzname in tzinfos: + if isinstance(tzinfos, collections.Callable): tzdata = tzinfos(res.tzname, res.tzoffset) else: tzdata = tzinfos.get(res.tzname) if isinstance(tzdata, datetime.tzinfo): tzinfo = tzdata - elif isinstance(tzdata, basestring): + elif isinstance(tzdata, str): tzinfo = tz.tzstr(tzdata) elif isinstance(tzdata, int): tzinfo = tz.tzoffset(res.tzname, tzdata) else: - raise ValueError, "offset must be tzinfo subclass, " \ - "tz string, or int offset" + raise ValueError("offset must be tzinfo subclass, " \ + "tz string, or int offset") ret = ret.replace(tzinfo=tzinfo) elif res.tzname and res.tzname in time.tzname: ret = ret.replace(tzinfo=tz.tzlocal()) @@ -585,7 +586,7 @@ class parser(object): # Check for a numbered timezone if res.hour is not None and l[i] in ('+', '-'): - signal = (-1,1)[l[i] == '+'] + signal = (-1, 1)[l[i] == '+'] i += 1 len_li = len(l[i]) if len_li == 4: @@ -743,7 +744,7 @@ class _tzparser(object): if l[i] in ('+', '-'): # Yes, that's right. See the TZ variable # documentation. - signal = (1,-1)[l[i] == '+'] + signal = (1, -1)[l[i] == '+'] i += 1 else: signal = -1 @@ -801,15 +802,15 @@ class _tzparser(object): x.time = int(l[i]) i += 2 if i < len_l: - if l[i] in ('-','+'): - signal = (-1,1)[l[i] == "+"] + if l[i] in ('-', '+'): + signal = (-1, 1)[l[i] == "+"] i += 1 else: signal = 1 res.dstoffset = (res.stdoffset+int(l[i]))*signal elif (l.count(',') == 2 and l[i:].count('/') <= 2 and - not [y for x in l[i:] if x not in (',','/','J','M', - '.','-',':') + not [y for x in l[i:] if x not in (',', '/', 'J', 'M', + '.', '-', ':') for y in x if y not in "0123456789"]): for x in (res.start, res.end): if l[i] == 'J': diff --git a/dateutil/relativedelta.py b/dateutil/relativedelta.py index 0c72a81..75eb357 100644 --- a/dateutil/relativedelta.py +++ b/dateutil/relativedelta.py @@ -113,10 +113,9 @@ Here is the behavior of operations with relativedelta: yearday=None, nlyearday=None, hour=None, minute=None, second=None, microsecond=None): if dt1 and dt2: - if not isinstance(dt1, datetime.date) or \ - not isinstance(dt2, datetime.date): - raise TypeError, "relativedelta only diffs datetime/date" - if type(dt1) is not type(dt2): + if (not isinstance(dt1, datetime.date)) or (not isinstance(dt2, datetime.date)): + raise TypeError("relativedelta only diffs datetime/date") + if not type(dt1) == type(dt2): #isinstance(dt1, type(dt2)): if not isinstance(dt1, datetime.datetime): dt1 = datetime.datetime.fromordinal(dt1.toordinal()) elif not isinstance(dt2, datetime.datetime): @@ -172,7 +171,7 @@ Here is the behavior of operations with relativedelta: self.second = second self.microsecond = microsecond - if type(weekday) is int: + if isinstance(weekday, int): self.weekday = weekdays[weekday] else: self.weekday = weekday @@ -185,7 +184,7 @@ Here is the behavior of operations with relativedelta: if yearday > 59: self.leapdays = -1 if yday: - ydayidx = [31,59,90,120,151,181,212,243,273,304,334,366] + ydayidx = [31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 366] for idx, ydays in enumerate(ydayidx): if yday <= ydays: self.month = idx+1 @@ -195,7 +194,7 @@ Here is the behavior of operations with relativedelta: self.day = yday-ydayidx[idx-1] break else: - raise ValueError, "invalid year day (%d)" % yday + raise ValueError("invalid year day (%d)" % yday) self._fix() @@ -244,7 +243,7 @@ Here is the behavior of operations with relativedelta: def __radd__(self, other): if not isinstance(other, datetime.date): - raise TypeError, "unsupported type for add operation" + raise TypeError("unsupported type for add operation") elif self._has_time and not isinstance(other, datetime.datetime): other = datetime.datetime.fromordinal(other.toordinal()) year = (self.year or other.year)+self.years @@ -290,7 +289,7 @@ Here is the behavior of operations with relativedelta: def __add__(self, other): if not isinstance(other, relativedelta): - raise TypeError, "unsupported type for add operation" + raise TypeError("unsupported type for add operation") return relativedelta(years=other.years+self.years, months=other.months+self.months, days=other.days+self.days, @@ -310,7 +309,7 @@ Here is the behavior of operations with relativedelta: def __sub__(self, other): if not isinstance(other, relativedelta): - raise TypeError, "unsupported type for sub operation" + raise TypeError("unsupported type for sub operation") return relativedelta(years=other.years-self.years, months=other.months-self.months, days=other.days-self.days, @@ -346,7 +345,7 @@ Here is the behavior of operations with relativedelta: second=self.second, microsecond=self.microsecond) - def __nonzero__(self): + def __bool__(self): return not (not self.years and not self.months and not self.days and @@ -426,7 +425,7 @@ Here is the behavior of operations with relativedelta: "hour", "minute", "second", "microsecond"]: value = getattr(self, attr) if value is not None: - l.append("%s=%s" % (attr, `value`)) + l.append("%s=%s" % (attr, repr(value))) return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) # vim:ts=4:sw=4:et diff --git a/dateutil/rrule.py b/dateutil/rrule.py index 6bd83ca..a7f96ff 100644 --- a/dateutil/rrule.py +++ b/dateutil/rrule.py @@ -10,7 +10,7 @@ __license__ = "PSF License" import itertools import datetime import calendar -import thread +import _thread import sys __all__ = ["rrule", "rruleset", "rrulestr", @@ -22,15 +22,15 @@ __all__ = ["rrule", "rruleset", "rrulestr", M366MASK = tuple([1]*31+[2]*29+[3]*31+[4]*30+[5]*31+[6]*30+ [7]*31+[8]*31+[9]*30+[10]*31+[11]*30+[12]*31+[1]*7) M365MASK = list(M366MASK) -M29, M30, M31 = range(1,30), range(1,31), range(1,32) +M29, M30, M31 = list(range(1, 30)), list(range(1, 31)), list(range(1, 32)) MDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) MDAY365MASK = list(MDAY366MASK) -M29, M30, M31 = range(-29,0), range(-30,0), range(-31,0) +M29, M30, M31 = list(range(-29, 0)), list(range(-30, 0)), list(range(-31, 0)) NMDAY366MASK = tuple(M31+M29+M31+M30+M31+M30+M31+M31+M30+M31+M30+M31+M31[:7]) NMDAY365MASK = list(NMDAY366MASK) -M366RANGE = (0,31,60,91,121,152,182,213,244,274,305,335,366) -M365RANGE = (0,31,59,90,120,151,181,212,243,273,304,334,365) -WDAYMASK = [0,1,2,3,4,5,6]*55 +M366RANGE = (0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366) +M365RANGE = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365) +WDAYMASK = [0, 1, 2, 3, 4, 5, 6]*55 del M29, M30, M31, M365MASK[59], MDAY365MASK[59], NMDAY365MASK[31] MDAY365MASK = tuple(MDAY365MASK) M365MASK = tuple(M365MASK) @@ -41,7 +41,7 @@ M365MASK = tuple(M365MASK) DAILY, HOURLY, MINUTELY, - SECONDLY) = range(7) + SECONDLY) = list(range(7)) # Imported on demand. easter = None @@ -52,7 +52,7 @@ class weekday(object): def __init__(self, weekday, n=None): if n == 0: - raise ValueError, "Can't create weekday with n == 0" + raise ValueError("Can't create weekday with n == 0") self.weekday = weekday self.n = n @@ -83,7 +83,7 @@ class rrulebase: def __init__(self, cache=False): if cache: self._cache = [] - self._cache_lock = thread.allocate_lock() + self._cache_lock = _thread.allocate_lock() self._cache_gen = self._iter() self._cache_complete = False else: @@ -112,7 +112,7 @@ class rrulebase: break try: for j in range(10): - cache.append(gen.next()) + cache.append(next(gen)) except StopIteration: self._cache_gen = gen = None self._cache_complete = True @@ -133,13 +133,13 @@ class rrulebase: else: return list(itertools.islice(self, item.start or 0, - item.stop or sys.maxint, + item.stop or sys.maxsize, item.step or 1)) elif item >= 0: gen = iter(self) try: for i in range(item+1): - res = gen.next() + res = next(gen) except StopIteration: raise IndexError return res @@ -250,13 +250,13 @@ class rrule(rrulebase): self._until = until if wkst is None: self._wkst = calendar.firstweekday() - elif type(wkst) is int: + elif isinstance(wkst, int): self._wkst = wkst else: self._wkst = wkst.weekday if bysetpos is None: self._bysetpos = None - elif type(bysetpos) is int: + elif isinstance(bysetpos, int): if bysetpos == 0 or not (-366 <= bysetpos <= 366): raise ValueError("bysetpos must be between 1 and 366, " "or between -366 and -1") @@ -280,14 +280,14 @@ class rrule(rrulebase): # bymonth if not bymonth: self._bymonth = None - elif type(bymonth) is int: + elif isinstance(bymonth, int): self._bymonth = (bymonth,) else: self._bymonth = tuple(bymonth) # byyearday if not byyearday: self._byyearday = None - elif type(byyearday) is int: + elif isinstance(byyearday, int): self._byyearday = (byyearday,) else: self._byyearday = tuple(byyearday) @@ -295,7 +295,7 @@ class rrule(rrulebase): if byeaster is not None: if not easter: from dateutil import easter - if type(byeaster) is int: + if isinstance(byeaster, int): self._byeaster = (byeaster,) else: self._byeaster = tuple(byeaster) @@ -305,7 +305,7 @@ class rrule(rrulebase): if not bymonthday: self._bymonthday = () self._bynmonthday = () - elif type(bymonthday) is int: + elif isinstance(bymonthday, int): if bymonthday < 0: self._bynmonthday = (bymonthday,) self._bymonthday = () @@ -318,7 +318,7 @@ class rrule(rrulebase): # byweekno if byweekno is None: self._byweekno = None - elif type(byweekno) is int: + elif isinstance(byweekno, int): self._byweekno = (byweekno,) else: self._byweekno = tuple(byweekno) @@ -326,7 +326,7 @@ class rrule(rrulebase): if byweekday is None: self._byweekday = None self._bynweekday = None - elif type(byweekday) is int: + elif isinstance(byweekday, int): self._byweekday = (byweekday,) self._bynweekday = None elif hasattr(byweekday, "n"): @@ -340,7 +340,7 @@ class rrule(rrulebase): self._byweekday = [] self._bynweekday = [] for wday in byweekday: - if type(wday) is int: + if isinstance(wday, int): self._byweekday.append(wday) elif not wday.n or freq > MONTHLY: self._byweekday.append(wday.weekday) @@ -358,7 +358,7 @@ class rrule(rrulebase): self._byhour = (dtstart.hour,) else: self._byhour = None - elif type(byhour) is int: + elif isinstance(byhour, int): self._byhour = (byhour,) else: self._byhour = tuple(byhour) @@ -368,7 +368,7 @@ class rrule(rrulebase): self._byminute = (dtstart.minute,) else: self._byminute = None - elif type(byminute) is int: + elif isinstance(byminute, int): self._byminute = (byminute,) else: self._byminute = tuple(byminute) @@ -378,7 +378,7 @@ class rrule(rrulebase): self._bysecond = (dtstart.second,) else: self._bysecond = None - elif type(bysecond) is int: + elif isinstance(bysecond, int): self._bysecond = (bysecond,) else: self._bysecond = tuple(bysecond) @@ -716,7 +716,7 @@ class _iterinfo(object): # days from last year's last week number in # this year. if -1 not in rr._byweekno: - lyearweekday = datetime.date(year-1,1,1).weekday() + lyearweekday = datetime.date(year-1, 1, 1).weekday() lno1wkst = (7-lyearweekday+rr._wkst)%7 lyearlen = 365+calendar.isleap(year-1) if lno1wkst >= 4: @@ -768,7 +768,7 @@ class _iterinfo(object): self.lastmonth = month def ydayset(self, year, month, day): - return range(self.yearlen), 0, self.yearlen + return list(range(self.yearlen)), 0, self.yearlen def mdayset(self, year, month, day): set = [None]*self.yearlen @@ -833,14 +833,20 @@ class rruleset(rrulebase): self.genlist = genlist self.gen = gen - def next(self): + def __next__(self): try: self.dt = self.gen() except StopIteration: self.genlist.remove(self) - def __cmp__(self, other): - return cmp(self.dt, other.dt) + def __lt__(self, other): + return self.dt < other.dt + + def __gt__(self, other): + return self.dt > other.dt + + def __eq__(self, other): + return self.dt == other.dt def __init__(self, cache=False): rrulebase.__init__(self, cache) @@ -864,14 +870,14 @@ class rruleset(rrulebase): def _iter(self): rlist = [] self._rdate.sort() - self._genitem(rlist, iter(self._rdate).next) - for gen in [iter(x).next for x in self._rrule]: + self._genitem(rlist, iter(self._rdate).__next__) + for gen in [iter(x).__next__ for x in self._rrule]: self._genitem(rlist, gen) rlist.sort() exlist = [] self._exdate.sort() - self._genitem(exlist, iter(self._exdate).next) - for gen in [iter(x).next for x in self._exrule]: + self._genitem(exlist, iter(self._exdate).__next__) + for gen in [iter(x).__next__ for x in self._exrule]: self._genitem(exlist, gen) exlist.sort() lastdt = None @@ -880,13 +886,13 @@ class rruleset(rrulebase): ritem = rlist[0] if not lastdt or lastdt != ritem.dt: while exlist and exlist[0] < ritem: - exlist[0].next() + next(exlist[0]) exlist.sort() if not exlist or ritem != exlist[0]: total += 1 yield ritem.dt lastdt = ritem.dt - ritem.next() + next(ritem) rlist.sort() self._len = total @@ -932,7 +938,7 @@ class _rrulestr: ignoretz=kwargs.get("ignoretz"), tzinfos=kwargs.get("tzinfos")) except ValueError: - raise ValueError, "invalid until date" + raise ValueError("invalid until date") def _handle_WKST(self, rrkwargs, name, value, **kwargs): rrkwargs["wkst"] = self._weekday_map[value] @@ -959,7 +965,7 @@ class _rrulestr: if line.find(':') != -1: name, value = line.split(':') if name != "RRULE": - raise ValueError, "unknown parameter name" + raise ValueError("unknown parameter name") else: value = line rrkwargs = {} @@ -972,9 +978,9 @@ class _rrulestr: ignoretz=ignoretz, tzinfos=tzinfos) except AttributeError: - raise ValueError, "unknown parameter '%s'" % name + raise ValueError("unknown parameter '%s'" % name) except (KeyError, ValueError): - raise ValueError, "invalid '%s': %s" % (name, value) + raise ValueError("invalid '%s': %s" % (name, value)) return rrule(dtstart=dtstart, cache=cache, **rrkwargs) def _parse_rfc(self, s, @@ -991,7 +997,7 @@ class _rrulestr: unfold = True s = s.upper() if not s.strip(): - raise ValueError, "empty string" + raise ValueError("empty string") if unfold: lines = s.splitlines() i = 0 @@ -1026,36 +1032,36 @@ class _rrulestr: name, value = line.split(':', 1) parms = name.split(';') if not parms: - raise ValueError, "empty property name" + raise ValueError("empty property name") name = parms[0] parms = parms[1:] if name == "RRULE": for parm in parms: - raise ValueError, "unsupported RRULE parm: "+parm + raise ValueError("unsupported RRULE parm: "+parm) rrulevals.append(value) elif name == "RDATE": for parm in parms: if parm != "VALUE=DATE-TIME": - raise ValueError, "unsupported RDATE parm: "+parm + raise ValueError("unsupported RDATE parm: "+parm) rdatevals.append(value) elif name == "EXRULE": for parm in parms: - raise ValueError, "unsupported EXRULE parm: "+parm + raise ValueError("unsupported EXRULE parm: "+parm) exrulevals.append(value) elif name == "EXDATE": for parm in parms: if parm != "VALUE=DATE-TIME": - raise ValueError, "unsupported RDATE parm: "+parm + raise ValueError("unsupported RDATE parm: "+parm) exdatevals.append(value) elif name == "DTSTART": for parm in parms: - raise ValueError, "unsupported DTSTART parm: "+parm + raise ValueError("unsupported DTSTART parm: "+parm) if not parser: from dateutil import parser dtstart = parser.parse(value, ignoretz=ignoretz, tzinfos=tzinfos) else: - raise ValueError, "unsupported property: "+name + raise ValueError("unsupported property: "+name) if (forceset or len(rrulevals) > 1 or rdatevals or exrulevals or exdatevals): if not parser and (rdatevals or exdatevals): diff --git a/dateutil/tz.py b/dateutil/tz.py index 0e28d6b..29becc4 100644 --- a/dateutil/tz.py +++ b/dateutil/tz.py @@ -75,7 +75,7 @@ class tzoffset(datetime.tzinfo): def __repr__(self): return "%s(%s, %s)" % (self.__class__.__name__, - `self._name`, + repr(self._name), self._offset.days*86400+self._offset.seconds) __reduce__ = object.__reduce__ @@ -161,7 +161,7 @@ class _ttinfo(object): for attr in self.__slots__: value = getattr(self, attr) if value is not None: - l.append("%s=%s" % (attr, `value`)) + l.append("%s=%s" % (attr, repr(value))) return "%s(%s)" % (self.__class__.__name__, ", ".join(l)) def __eq__(self, other): @@ -194,13 +194,13 @@ class tzfile(datetime.tzinfo): # ftp://elsie.nci.nih.gov/pub/tz*.tar.gz def __init__(self, fileobj): - if isinstance(fileobj, basestring): + if isinstance(fileobj, str): self._filename = fileobj fileobj = open(fileobj) elif hasattr(fileobj, "name"): self._filename = fileobj.name else: - self._filename = `fileobj` + self._filename = repr(fileobj) # From tzfile(5): # @@ -212,8 +212,8 @@ class tzfile(datetime.tzinfo): # ``standard'' byte order (the high-order byte # of the value is written first). - if fileobj.read(4) != "TZif": - raise ValueError, "magic not found" + if fileobj.read(4).decode() != "TZif": + raise ValueError("magic not found") fileobj.read(16) @@ -284,7 +284,7 @@ class tzfile(datetime.tzinfo): for i in range(typecnt): ttinfo.append(struct.unpack(">lbb", fileobj.read(6))) - abbr = fileobj.read(charcnt) + abbr = fileobj.read(charcnt).decode() # Then there are tzh_leapcnt pairs of four-byte # values, written in standard byte order; the @@ -360,7 +360,7 @@ class tzfile(datetime.tzinfo): if not self._trans_list: self._ttinfo_std = self._ttinfo_first = self._ttinfo_list[0] else: - for i in range(timecnt-1,-1,-1): + for i in range(timecnt-1, -1, -1): tti = self._trans_idx[i] if not self._ttinfo_std and not tti.isdst: self._ttinfo_std = tti @@ -465,11 +465,11 @@ class tzfile(datetime.tzinfo): def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, `self._filename`) + return "%s(%s)" % (self.__class__.__name__, repr(self._filename)) def __reduce__(self): if not os.path.isfile(self._filename): - raise ValueError, "Unpickable %s class" % self.__class__.__name__ + raise ValueError("Unpickable %s class" % self.__class__.__name__) return (self.__class__, (self._filename,)) class tzrange(datetime.tzinfo): @@ -524,7 +524,7 @@ class tzrange(datetime.tzinfo): def _isdst(self, dt): if not self._start_delta: return False - year = datetime.datetime(dt.year,1,1) + year = datetime.datetime(dt.year, 1, 1) start = year+self._start_delta end = year+self._end_delta dt = dt.replace(tzinfo=None) @@ -561,7 +561,7 @@ class tzstr(tzrange): res = parser._parsetz(s) if res is None: - raise ValueError, "unknown string format" + raise ValueError("unknown string format") # Here we break the compatibility with the TZ variable handling. # GMT-3 actually *means* the timezone -3. @@ -624,7 +624,7 @@ class tzstr(tzrange): return relativedelta.relativedelta(**kwargs) def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, `self._s`) + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) class _tzicalvtzcomp: def __init__(self, tzoffsetfrom, tzoffsetto, isdst, @@ -694,7 +694,7 @@ class _tzicalvtz(datetime.tzinfo): return self._find_comp(dt).tzname def __repr__(self): - return "" % `self._tzid` + return "" % repr(self._tzid) __reduce__ = object.__reduce__ @@ -704,37 +704,37 @@ class tzical: if not rrule: from dateutil import rrule - if isinstance(fileobj, basestring): + if isinstance(fileobj, str): self._s = fileobj fileobj = open(fileobj) elif hasattr(fileobj, "name"): self._s = fileobj.name else: - self._s = `fileobj` + self._s = repr(fileobj) self._vtz = {} self._parse_rfc(fileobj.read()) def keys(self): - return self._vtz.keys() + return list(self._vtz.keys()) def get(self, tzid=None): if tzid is None: - keys = self._vtz.keys() + keys = list(self._vtz.keys()) if len(keys) == 0: - raise ValueError, "no timezones defined" + raise ValueError("no timezones defined") elif len(keys) > 1: - raise ValueError, "more than one timezone available" + raise ValueError("more than one timezone available") tzid = keys[0] return self._vtz.get(tzid) def _parse_offset(self, s): s = s.strip() if not s: - raise ValueError, "empty offset" + raise ValueError("empty offset") if s[0] in ('+', '-'): - signal = (-1,+1)[s[0]=='+'] + signal = (-1, +1)[s[0]=='+'] s = s[1:] else: signal = +1 @@ -743,12 +743,12 @@ class tzical: elif len(s) == 6: return (int(s[:2])*3600+int(s[2:4])*60+int(s[4:]))*signal else: - raise ValueError, "invalid offset: "+s + raise ValueError("invalid offset: "+s) def _parse_rfc(self, s): lines = s.splitlines() if not lines: - raise ValueError, "empty string" + raise ValueError("empty string") # Unfold i = 0 @@ -772,7 +772,7 @@ class tzical: name, value = line.split(':', 1) parms = name.split(';') if not parms: - raise ValueError, "empty property name" + raise ValueError("empty property name") name = parms[0].upper() parms = parms[1:] if invtz: @@ -781,7 +781,7 @@ class tzical: # Process component pass else: - raise ValueError, "unknown component: "+value + raise ValueError("unknown component: "+value) comptype = value founddtstart = False tzoffsetfrom = None @@ -791,27 +791,21 @@ class tzical: elif name == "END": if value == "VTIMEZONE": if comptype: - raise ValueError, \ - "component not closed: "+comptype + raise ValueError("component not closed: "+comptype) if not tzid: - raise ValueError, \ - "mandatory TZID not found" + raise ValueError("mandatory TZID not found") if not comps: - raise ValueError, \ - "at least one component is needed" + raise ValueError("at least one component is needed") # Process vtimezone self._vtz[tzid] = _tzicalvtz(tzid, comps) invtz = False elif value == comptype: if not founddtstart: - raise ValueError, \ - "mandatory DTSTART not found" + raise ValueError("mandatory DTSTART not found") if tzoffsetfrom is None: - raise ValueError, \ - "mandatory TZOFFSETFROM not found" + raise ValueError("mandatory TZOFFSETFROM not found") if tzoffsetto is None: - raise ValueError, \ - "mandatory TZOFFSETFROM not found" + raise ValueError("mandatory TZOFFSETFROM not found") # Process component rr = None if rrulelines: @@ -825,8 +819,7 @@ class tzical: comps.append(comp) comptype = None else: - raise ValueError, \ - "invalid component end: "+value + raise ValueError("invalid component end: "+value) elif comptype: if name == "DTSTART": rrulelines.append(line) @@ -835,40 +828,36 @@ class tzical: rrulelines.append(line) elif name == "TZOFFSETFROM": if parms: - raise ValueError, \ - "unsupported %s parm: %s "%(name, parms[0]) + raise ValueError("unsupported %s parm: %s "%(name, parms[0])) tzoffsetfrom = self._parse_offset(value) elif name == "TZOFFSETTO": if parms: - raise ValueError, \ - "unsupported TZOFFSETTO parm: "+parms[0] + raise ValueError("unsupported TZOFFSETTO parm: "+parms[0]) tzoffsetto = self._parse_offset(value) elif name == "TZNAME": if parms: - raise ValueError, \ - "unsupported TZNAME parm: "+parms[0] + raise ValueError("unsupported TZNAME parm: "+parms[0]) tzname = value elif name == "COMMENT": pass else: - raise ValueError, "unsupported property: "+name + raise ValueError("unsupported property: "+name) else: if name == "TZID": if parms: - raise ValueError, \ - "unsupported TZID parm: "+parms[0] + raise ValueError("unsupported TZID parm: "+parms[0]) tzid = value elif name in ("TZURL", "LAST-MODIFIED", "COMMENT"): pass else: - raise ValueError, "unsupported property: "+name + raise ValueError("unsupported property: "+name) elif name == "BEGIN" and value == "VTIMEZONE": tzid = None comps = [] invtz = True def __repr__(self): - return "%s(%s)" % (self.__class__.__name__, `self._s`) + return "%s(%s)" % (self.__class__.__name__, repr(self._s)) if sys.platform != "win32": TZFILES = ["/etc/localtime", "localtime"] @@ -914,7 +903,7 @@ def gettz(name=None): for path in TZPATHS: filepath = os.path.join(path, name) if not os.path.isfile(filepath): - filepath = filepath.replace(' ','_') + filepath = filepath.replace(' ', '_') if not os.path.isfile(filepath): continue try: diff --git a/dateutil/tzwin.py b/dateutil/tzwin.py index 073e0ff..b378f59 100644 --- a/dateutil/tzwin.py +++ b/dateutil/tzwin.py @@ -1,7 +1,7 @@ # This code was originally contributed by Jeffrey Harris. import datetime import struct -import _winreg +import winreg __author__ = "Jeffrey Harris & Gustavo Niemeyer " @@ -15,9 +15,9 @@ TZLOCALKEYNAME = r"SYSTEM\CurrentControlSet\Control\TimeZoneInformation" def _settzkeyname(): global TZKEYNAME - handle = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) try: - _winreg.OpenKey(handle, TZKEYNAMENT).Close() + winreg.OpenKey(handle, TZKEYNAMENT).Close() TZKEYNAME = TZKEYNAMENT except WindowsError: TZKEYNAME = TZKEYNAME9X @@ -49,10 +49,10 @@ class tzwinbase(datetime.tzinfo): def list(): """Return a list of all time zones known to the system.""" - handle = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) - tzkey = _winreg.OpenKey(handle, TZKEYNAME) - result = [_winreg.EnumKey(tzkey, i) - for i in range(_winreg.QueryInfoKey(tzkey)[0])] + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) + tzkey = winreg.OpenKey(handle, TZKEYNAME) + result = [winreg.EnumKey(tzkey, i) + for i in range(winreg.QueryInfoKey(tzkey)[0])] tzkey.Close() handle.Close() return result @@ -79,8 +79,8 @@ class tzwin(tzwinbase): def __init__(self, name): self._name = name - handle = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) - tzkey = _winreg.OpenKey(handle, "%s\%s" % (TZKEYNAME, name)) + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) + tzkey = winreg.OpenKey(handle, "%s\%s" % (TZKEYNAME, name)) keydict = valuestodict(tzkey) tzkey.Close() handle.Close() @@ -118,9 +118,9 @@ class tzwinlocal(tzwinbase): def __init__(self): - handle = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE) + handle = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) - tzlocalkey = _winreg.OpenKey(handle, TZLOCALKEYNAME) + tzlocalkey = winreg.OpenKey(handle, TZLOCALKEYNAME) keydict = valuestodict(tzlocalkey) tzlocalkey.Close() @@ -128,7 +128,7 @@ class tzwinlocal(tzwinbase): self._dstname = keydict["DaylightName"].encode("iso-8859-1") try: - tzkey = _winreg.OpenKey(handle, "%s\%s"%(TZKEYNAME, self._stdname)) + tzkey = winreg.OpenKey(handle, "%s\%s"%(TZKEYNAME, self._stdname)) _keydict = valuestodict(tzkey) self._display = _keydict["Display"] tzkey.Close() @@ -165,7 +165,7 @@ def picknthweekday(year, month, dayofweek, hour, minute, whichweek): """dayofweek == 0 means Sunday, whichweek 5 means last instance""" first = datetime.datetime(year, month, 1, hour, minute) weekdayone = first.replace(day=((dayofweek-first.isoweekday())%7+1)) - for n in xrange(whichweek): + for n in range(whichweek): dt = weekdayone+(whichweek-n)*ONEWEEK if dt.month == month: return dt @@ -173,8 +173,8 @@ def picknthweekday(year, month, dayofweek, hour, minute, whichweek): def valuestodict(key): """Convert a registry key's values to a dictionary.""" dict = {} - size = _winreg.QueryInfoKey(key)[1] + size = winreg.QueryInfoKey(key)[1] for i in range(size): - data = _winreg.EnumValue(key, i) + data = winreg.EnumValue(key, i) dict[data[0]] = data[1] return dict diff --git a/dateutil/zoneinfo/__init__.py b/dateutil/zoneinfo/__init__.py index 9bed626..e7709bb 100644 --- a/dateutil/zoneinfo/__init__.py +++ b/dateutil/zoneinfo/__init__.py @@ -21,8 +21,7 @@ class tzfile(tzfile): return (gettz, (self._filename,)) def getzoneinfofile(): - filenames = os.listdir(os.path.join(os.path.dirname(__file__))) - filenames.sort() + filenames = sorted(os.listdir(os.path.join(os.path.dirname(__file__)))) filenames.reverse() for entry in filenames: if entry.startswith("zoneinfo") and ".tar." in entry: diff --git a/example.py b/example.py index f5a8e6f..ffa78e7 100644 --- a/example.py +++ b/example.py @@ -3,13 +3,13 @@ from dateutil.easter import * from dateutil.rrule import * from dateutil.parser import * from datetime import * -import commands +import subprocess import os -now = parse(commands.getoutput("date")) +now = parse(subprocess.getoutput("date")) today = now.date() -year = rrule(YEARLY,bymonth=8,bymonthday=13,byweekday=FR)[0].year +year = rrule(YEARLY, bymonth=8, bymonthday=13, byweekday=FR)[0].year rdelta = relativedelta(easter(year), today) -print "Today is:", today -print "Year with next Aug 13th on a Friday is:", year -print "How far is the Easter of that year:", rdelta -print "And the Easter of that year is:", today+rdelta +print("Today is:", today) +print("Year with next Aug 13th on a Friday is:", year) +print("How far is the Easter of that year:", rdelta) +print("And the Easter of that year is:", today+rdelta) diff --git a/sandbox/scheduler.py b/sandbox/scheduler.py index c998600..6216fe6 100644 --- a/sandbox/scheduler.py +++ b/sandbox/scheduler.py @@ -8,7 +8,7 @@ __author__ = "Gustavo Niemeyer " __license__ = "PSF License" import datetime -import thread +import _thread import signal import time @@ -88,7 +88,7 @@ class schedthread: def run(self): self._running = True - thread.start_new_thread(self._loop, ()) + _thread.start_new_thread(self._loop, ()) def stop(self): self._running = False diff --git a/setup.py b/setup.py index 654ab46..7fabde7 100644 --- a/setup.py +++ b/setup.py @@ -25,8 +25,8 @@ setup(name="python-dateutil", license = "PSF License", long_description = """\ -The dateutil module provides powerful extensions to the standard -datetime module, available in Python 2.3+. +The dateutil module provides powerful extensions to the +datetime module available in the Python standard library. """, packages = ["dateutil", "dateutil.zoneinfo"], package_data={"": ["*.tar.gz"]}, diff --git a/test.py b/test.py index 049fede..2057626 100644 --- a/test.py +++ b/test.py @@ -1,6 +1,6 @@ #!/usr/bin/python # -*- encoding: utf-8 -*- -from cStringIO import StringIO +from io import StringIO,BytesIO import unittest import calendar import time @@ -13,7 +13,7 @@ if os.path.exists("build"): import sys s = "build/lib.%s-%.3s" % (get_platform(), sys.version) s = os.path.join(os.getcwd(), s) - sys.path.insert(0,s) + sys.path.insert(0, s) from dateutil.relativedelta import * from dateutil.parser import * @@ -103,7 +103,7 @@ class RelativeDeltaTest(unittest.TestCase): date(2003, 4, 7)) def testMillenniumAge(self): - self.assertEqual(relativedelta(self.now, date(2001,1,1)), + self.assertEqual(relativedelta(self.now, date(2001, 1, 1)), relativedelta(years=+2, months=+8, days=+16, hours=+20, minutes=+54, seconds=+47, microseconds=+282310)) @@ -177,7 +177,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonth(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 2, 9, 0), datetime(1998, 3, 2, 9, 0), @@ -186,7 +186,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 9, 0), datetime(1997, 10, 1, 9, 0), @@ -195,8 +195,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndMonthDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 9, 0), datetime(1998, 1, 7, 9, 0), @@ -205,7 +205,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -214,7 +214,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByNWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 25, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -223,7 +223,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByNWeekDayLarge(self): self.assertEqual(list(rrule(YEARLY, count=3, - byweekday=(TU(3),TH(-3)), + byweekday=(TU(3), TH(-3)), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 11, 9, 0), datetime(1998, 1, 20, 9, 0), @@ -232,8 +232,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -242,8 +242,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 6, 9, 0), datetime(1998, 1, 29, 9, 0), @@ -254,8 +254,8 @@ class RRuleTest(unittest.TestCase): # the TU(3). self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), - byweekday=(TU(3),TH(-3)), + bymonth=(1, 3), + byweekday=(TU(3), TH(-3)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 15, 9, 0), datetime(1998, 1, 20, 9, 0), @@ -264,8 +264,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 2, 3, 9, 0), @@ -274,9 +274,9 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(YEARLY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 3, 3, 9, 0), @@ -285,7 +285,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByYearDay(self): self.assertEqual(list(rrule(YEARLY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -295,7 +295,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByYearDayNeg(self): self.assertEqual(list(rrule(YEARLY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -305,8 +305,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndYearDay(self): self.assertEqual(list(rrule(YEARLY, count=4, - bymonth=(4,7), - byyearday=(1,100,200,365), + bymonth=(4, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -316,8 +316,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(YEARLY, count=4, - bymonth=(4,7), - byyearday=(-365,-266,-166,-1), + bymonth=(4, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -417,7 +417,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByHour(self): self.assertEqual(list(rrule(YEARLY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1998, 9, 2, 6, 0), @@ -426,7 +426,7 @@ class RRuleTest(unittest.TestCase): def testYearlyByMinute(self): self.assertEqual(list(rrule(YEARLY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -435,7 +435,7 @@ class RRuleTest(unittest.TestCase): def testYearlyBySecond(self): self.assertEqual(list(rrule(YEARLY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -444,8 +444,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByHourAndMinute(self): self.assertEqual(list(rrule(YEARLY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -454,8 +454,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByHourAndSecond(self): self.assertEqual(list(rrule(YEARLY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -464,8 +464,8 @@ class RRuleTest(unittest.TestCase): def testYearlyByMinuteAndSecond(self): self.assertEqual(list(rrule(YEARLY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -474,9 +474,9 @@ class RRuleTest(unittest.TestCase): def testYearlyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(YEARLY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -486,8 +486,8 @@ class RRuleTest(unittest.TestCase): self.assertEqual(list(rrule(YEARLY, count=3, bymonthday=15, - byhour=(6,18), - bysetpos=(3,-3), + byhour=(6, 18), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 11, 15, 18, 0), datetime(1998, 2, 15, 6, 0), @@ -522,7 +522,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonth(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 2, 9, 0), datetime(1998, 3, 2, 9, 0), @@ -532,7 +532,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 9, 0), datetime(1997, 10, 1, 9, 0), @@ -541,8 +541,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndMonthDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 9, 0), datetime(1998, 1, 7, 9, 0), @@ -551,7 +551,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -560,7 +560,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByNWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 25, 9, 0), @@ -569,7 +569,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByNWeekDayLarge(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byweekday=(TU(3),TH(-3)), + byweekday=(TU(3), TH(-3)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 11, 9, 0), datetime(1997, 9, 16, 9, 0), @@ -578,8 +578,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -588,8 +588,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 6, 9, 0), datetime(1998, 1, 29, 9, 0), @@ -598,8 +598,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndNWeekDayLarge(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), - byweekday=(TU(3),TH(-3)), + bymonth=(1, 3), + byweekday=(TU(3), TH(-3)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 15, 9, 0), datetime(1998, 1, 20, 9, 0), @@ -608,8 +608,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 2, 3, 9, 0), @@ -618,9 +618,9 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 3, 3, 9, 0), @@ -629,7 +629,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByYearDay(self): self.assertEqual(list(rrule(MONTHLY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -639,7 +639,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByYearDayNeg(self): self.assertEqual(list(rrule(MONTHLY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -649,8 +649,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndYearDay(self): self.assertEqual(list(rrule(MONTHLY, count=4, - bymonth=(4,7), - byyearday=(1,100,200,365), + bymonth=(4, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -660,8 +660,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(MONTHLY, count=4, - bymonth=(4,7), - byyearday=(-365,-266,-166,-1), + bymonth=(4, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -752,7 +752,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByHour(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 10, 2, 6, 0), @@ -761,7 +761,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMinute(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -770,7 +770,7 @@ class RRuleTest(unittest.TestCase): def testMonthlyBySecond(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -779,8 +779,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByHourAndMinute(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -789,8 +789,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByHourAndSecond(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -799,8 +799,8 @@ class RRuleTest(unittest.TestCase): def testMonthlyByMinuteAndSecond(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -809,9 +809,9 @@ class RRuleTest(unittest.TestCase): def testMonthlyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(MONTHLY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -820,9 +820,9 @@ class RRuleTest(unittest.TestCase): def testMonthlyBySetPos(self): self.assertEqual(list(rrule(MONTHLY, count=3, - bymonthday=(13,17), - byhour=(6,18), - bysetpos=(3,-3), + bymonthday=(13, 17), + byhour=(6, 18), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 13, 18, 0), datetime(1997, 9, 17, 6, 0), @@ -857,7 +857,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonth(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 6, 9, 0), datetime(1998, 1, 13, 9, 0), @@ -866,7 +866,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 9, 0), datetime(1997, 10, 1, 9, 0), @@ -875,8 +875,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthAndMonthDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 9, 0), datetime(1998, 1, 7, 9, 0), @@ -885,7 +885,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByWeekDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -894,7 +894,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByNWeekDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -906,8 +906,8 @@ class RRuleTest(unittest.TestCase): # valid recurrence. self.assertEqual(list(rrule(WEEKLY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -916,8 +916,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -926,8 +926,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 2, 3, 9, 0), @@ -936,9 +936,9 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 3, 3, 9, 0), @@ -947,7 +947,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByYearDay(self): self.assertEqual(list(rrule(WEEKLY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -957,7 +957,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByYearDayNeg(self): self.assertEqual(list(rrule(WEEKLY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -967,8 +967,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthAndYearDay(self): self.assertEqual(list(rrule(WEEKLY, count=4, - bymonth=(1,7), - byyearday=(1,100,200,365), + bymonth=(1, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -978,8 +978,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(WEEKLY, count=4, - bymonth=(1,7), - byyearday=(-365,-266,-166,-1), + bymonth=(1, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -1069,7 +1069,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByHour(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 9, 9, 6, 0), @@ -1078,7 +1078,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMinute(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -1087,7 +1087,7 @@ class RRuleTest(unittest.TestCase): def testWeeklyBySecond(self): self.assertEqual(list(rrule(WEEKLY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -1096,8 +1096,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByHourAndMinute(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -1106,8 +1106,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByHourAndSecond(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -1116,8 +1116,8 @@ class RRuleTest(unittest.TestCase): def testWeeklyByMinuteAndSecond(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -1126,9 +1126,9 @@ class RRuleTest(unittest.TestCase): def testWeeklyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -1137,9 +1137,9 @@ class RRuleTest(unittest.TestCase): def testWeeklyBySetPos(self): self.assertEqual(list(rrule(WEEKLY, count=3, - byweekday=(TU,TH), - byhour=(6,18), - bysetpos=(3,-3), + byweekday=(TU, TH), + byhour=(6, 18), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 9, 4, 6, 0), @@ -1174,7 +1174,7 @@ class RRuleTest(unittest.TestCase): def testDailyByMonth(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 2, 9, 0), @@ -1183,7 +1183,7 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 9, 0), datetime(1997, 10, 1, 9, 0), @@ -1192,8 +1192,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndMonthDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 9, 0), datetime(1998, 1, 7, 9, 0), @@ -1202,7 +1202,7 @@ class RRuleTest(unittest.TestCase): def testDailyByWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -1211,7 +1211,7 @@ class RRuleTest(unittest.TestCase): def testDailyByNWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 4, 9, 0), @@ -1220,8 +1220,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -1230,8 +1230,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 1, 6, 9, 0), @@ -1240,8 +1240,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 2, 3, 9, 0), @@ -1250,9 +1250,9 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(DAILY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 3, 3, 9, 0), @@ -1261,7 +1261,7 @@ class RRuleTest(unittest.TestCase): def testDailyByYearDay(self): self.assertEqual(list(rrule(DAILY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -1271,7 +1271,7 @@ class RRuleTest(unittest.TestCase): def testDailyByYearDayNeg(self): self.assertEqual(list(rrule(DAILY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 9, 0), datetime(1998, 1, 1, 9, 0), @@ -1281,8 +1281,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndYearDay(self): self.assertEqual(list(rrule(DAILY, count=4, - bymonth=(1,7), - byyearday=(1,100,200,365), + bymonth=(1, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -1292,8 +1292,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(DAILY, count=4, - bymonth=(1,7), - byyearday=(-365,-266,-166,-1), + bymonth=(1, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 9, 0), datetime(1998, 7, 19, 9, 0), @@ -1383,7 +1383,7 @@ class RRuleTest(unittest.TestCase): def testDailyByHour(self): self.assertEqual(list(rrule(DAILY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 9, 3, 6, 0), @@ -1392,7 +1392,7 @@ class RRuleTest(unittest.TestCase): def testDailyByMinute(self): self.assertEqual(list(rrule(DAILY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -1401,7 +1401,7 @@ class RRuleTest(unittest.TestCase): def testDailyBySecond(self): self.assertEqual(list(rrule(DAILY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -1410,8 +1410,8 @@ class RRuleTest(unittest.TestCase): def testDailyByHourAndMinute(self): self.assertEqual(list(rrule(DAILY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -1420,8 +1420,8 @@ class RRuleTest(unittest.TestCase): def testDailyByHourAndSecond(self): self.assertEqual(list(rrule(DAILY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -1430,8 +1430,8 @@ class RRuleTest(unittest.TestCase): def testDailyByMinuteAndSecond(self): self.assertEqual(list(rrule(DAILY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -1440,9 +1440,9 @@ class RRuleTest(unittest.TestCase): def testDailyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(DAILY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -1451,9 +1451,9 @@ class RRuleTest(unittest.TestCase): def testDailyBySetPos(self): self.assertEqual(list(rrule(DAILY, count=3, - byhour=(6,18), - byminute=(15,45), - bysetpos=(3,-3), + byhour=(6, 18), + byminute=(15, 45), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 15), datetime(1997, 9, 3, 6, 45), @@ -1488,7 +1488,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonth(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 1, 0), @@ -1497,7 +1497,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 0, 0), datetime(1997, 9, 3, 1, 0), @@ -1506,8 +1506,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndMonthDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 0, 0), datetime(1998, 1, 5, 1, 0), @@ -1516,7 +1516,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 2, 10, 0), @@ -1525,7 +1525,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByNWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 2, 10, 0), @@ -1534,8 +1534,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 1, 0), @@ -1544,8 +1544,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 1, 0), @@ -1554,8 +1554,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 1, 0), @@ -1564,9 +1564,9 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(HOURLY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 1, 0), @@ -1575,7 +1575,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByYearDay(self): self.assertEqual(list(rrule(HOURLY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0), datetime(1997, 12, 31, 1, 0), @@ -1585,7 +1585,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByYearDayNeg(self): self.assertEqual(list(rrule(HOURLY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0), datetime(1997, 12, 31, 1, 0), @@ -1595,8 +1595,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndYearDay(self): self.assertEqual(list(rrule(HOURLY, count=4, - bymonth=(4,7), - byyearday=(1,100,200,365), + bymonth=(4, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0), datetime(1998, 4, 10, 1, 0), @@ -1606,8 +1606,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(HOURLY, count=4, - bymonth=(4,7), - byyearday=(-365,-266,-166,-1), + bymonth=(4, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0), datetime(1998, 4, 10, 1, 0), @@ -1693,7 +1693,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByHour(self): self.assertEqual(list(rrule(HOURLY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 9, 3, 6, 0), @@ -1702,7 +1702,7 @@ class RRuleTest(unittest.TestCase): def testHourlyByMinute(self): self.assertEqual(list(rrule(HOURLY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -1711,7 +1711,7 @@ class RRuleTest(unittest.TestCase): def testHourlyBySecond(self): self.assertEqual(list(rrule(HOURLY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -1720,8 +1720,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByHourAndMinute(self): self.assertEqual(list(rrule(HOURLY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -1730,8 +1730,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByHourAndSecond(self): self.assertEqual(list(rrule(HOURLY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -1740,8 +1740,8 @@ class RRuleTest(unittest.TestCase): def testHourlyByMinuteAndSecond(self): self.assertEqual(list(rrule(HOURLY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -1750,9 +1750,9 @@ class RRuleTest(unittest.TestCase): def testHourlyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(HOURLY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -1761,9 +1761,9 @@ class RRuleTest(unittest.TestCase): def testHourlyBySetPos(self): self.assertEqual(list(rrule(HOURLY, count=3, - byminute=(15,45), - bysecond=(15,45), - bysetpos=(3,-3), + byminute=(15, 45), + bysecond=(15, 45), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 15, 45), datetime(1997, 9, 2, 9, 45, 15), @@ -1798,7 +1798,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonth(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 0, 1), @@ -1807,7 +1807,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 0, 0), datetime(1997, 9, 3, 0, 1), @@ -1816,8 +1816,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndMonthDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 0, 0), datetime(1998, 1, 5, 0, 1), @@ -1826,7 +1826,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 2, 9, 1), @@ -1835,7 +1835,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByNWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), datetime(1997, 9, 2, 9, 1), @@ -1844,8 +1844,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 0, 1), @@ -1854,8 +1854,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 0, 1), @@ -1864,8 +1864,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 0, 1), @@ -1874,9 +1874,9 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0), datetime(1998, 1, 1, 0, 1), @@ -1885,7 +1885,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByYearDay(self): self.assertEqual(list(rrule(MINUTELY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0), datetime(1997, 12, 31, 0, 1), @@ -1895,7 +1895,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByYearDayNeg(self): self.assertEqual(list(rrule(MINUTELY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0), datetime(1997, 12, 31, 0, 1), @@ -1905,8 +1905,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndYearDay(self): self.assertEqual(list(rrule(MINUTELY, count=4, - bymonth=(4,7), - byyearday=(1,100,200,365), + bymonth=(4, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0), datetime(1998, 4, 10, 0, 1), @@ -1916,8 +1916,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(MINUTELY, count=4, - bymonth=(4,7), - byyearday=(-365,-266,-166,-1), + bymonth=(4, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0), datetime(1998, 4, 10, 0, 1), @@ -2003,7 +2003,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByHour(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0), datetime(1997, 9, 2, 18, 1), @@ -2012,7 +2012,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMinute(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6), datetime(1997, 9, 2, 9, 18), @@ -2021,7 +2021,7 @@ class RRuleTest(unittest.TestCase): def testMinutelyBySecond(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -2030,8 +2030,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByHourAndMinute(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6), datetime(1997, 9, 2, 18, 18), @@ -2040,8 +2040,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByHourAndSecond(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -2050,8 +2050,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyByMinuteAndSecond(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -2060,9 +2060,9 @@ class RRuleTest(unittest.TestCase): def testMinutelyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(MINUTELY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -2071,8 +2071,8 @@ class RRuleTest(unittest.TestCase): def testMinutelyBySetPos(self): self.assertEqual(list(rrule(MINUTELY, count=3, - bysecond=(15,30,45), - bysetpos=(3,-3), + bysecond=(15, 30, 45), + bysetpos=(3, -3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 15), datetime(1997, 9, 2, 9, 0, 45), @@ -2107,7 +2107,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonth(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonth=(1,3), + bymonth=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0, 0), datetime(1998, 1, 1, 0, 0, 1), @@ -2116,7 +2116,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonthday=(1,3), + bymonthday=(1, 3), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 3, 0, 0, 0), datetime(1997, 9, 3, 0, 0, 1), @@ -2125,8 +2125,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndMonthDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonth=(1,3), - bymonthday=(5,7), + bymonth=(1, 3), + bymonthday=(5, 7), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 5, 0, 0, 0), datetime(1998, 1, 5, 0, 0, 1), @@ -2135,7 +2135,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byweekday=(TU,TH), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 0), datetime(1997, 9, 2, 9, 0, 1), @@ -2144,7 +2144,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByNWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byweekday=(TU(1),TH(-1)), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 0), datetime(1997, 9, 2, 9, 0, 1), @@ -2153,8 +2153,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonth=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0, 0), datetime(1998, 1, 1, 0, 0, 1), @@ -2163,8 +2163,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndNWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonth=(1,3), - byweekday=(TU(1),TH(-1)), + bymonth=(1, 3), + byweekday=(TU(1), TH(-1)), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0, 0), datetime(1998, 1, 1, 0, 0, 1), @@ -2173,8 +2173,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthDayAndWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonthday=(1,3), - byweekday=(TU,TH), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0, 0), datetime(1998, 1, 1, 0, 0, 1), @@ -2183,9 +2183,9 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndMonthDayAndWeekDay(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bymonth=(1,3), - bymonthday=(1,3), - byweekday=(TU,TH), + bymonth=(1, 3), + bymonthday=(1, 3), + byweekday=(TU, TH), dtstart=parse("19970902T090000"))), [datetime(1998, 1, 1, 0, 0, 0), datetime(1998, 1, 1, 0, 0, 1), @@ -2194,7 +2194,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByYearDay(self): self.assertEqual(list(rrule(SECONDLY, count=4, - byyearday=(1,100,200,365), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0, 0), datetime(1997, 12, 31, 0, 0, 1), @@ -2204,7 +2204,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByYearDayNeg(self): self.assertEqual(list(rrule(SECONDLY, count=4, - byyearday=(-365,-266,-166,-1), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1997, 12, 31, 0, 0, 0), datetime(1997, 12, 31, 0, 0, 1), @@ -2214,8 +2214,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndYearDay(self): self.assertEqual(list(rrule(SECONDLY, count=4, - bymonth=(4,7), - byyearday=(1,100,200,365), + bymonth=(4, 7), + byyearday=(1, 100, 200, 365), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0, 0), datetime(1998, 4, 10, 0, 0, 1), @@ -2225,8 +2225,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMonthAndYearDayNeg(self): self.assertEqual(list(rrule(SECONDLY, count=4, - bymonth=(4,7), - byyearday=(-365,-266,-166,-1), + bymonth=(4, 7), + byyearday=(-365, -266, -166, -1), dtstart=parse("19970902T090000"))), [datetime(1998, 4, 10, 0, 0, 0), datetime(1998, 4, 10, 0, 0, 1), @@ -2312,7 +2312,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByHour(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byhour=(6,18), + byhour=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 0), datetime(1997, 9, 2, 18, 0, 1), @@ -2321,7 +2321,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMinute(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byminute=(6,18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 0), datetime(1997, 9, 2, 9, 6, 1), @@ -2330,7 +2330,7 @@ class RRuleTest(unittest.TestCase): def testSecondlyBySecond(self): self.assertEqual(list(rrule(SECONDLY, count=3, - bysecond=(6,18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0, 6), datetime(1997, 9, 2, 9, 0, 18), @@ -2339,8 +2339,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByHourAndMinute(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byhour=(6,18), - byminute=(6,18), + byhour=(6, 18), + byminute=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 0), datetime(1997, 9, 2, 18, 6, 1), @@ -2349,8 +2349,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByHourAndSecond(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byhour=(6,18), - bysecond=(6,18), + byhour=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 0, 6), datetime(1997, 9, 2, 18, 0, 18), @@ -2359,8 +2359,8 @@ class RRuleTest(unittest.TestCase): def testSecondlyByMinuteAndSecond(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byminute=(6,18), - bysecond=(6,18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 6, 6), datetime(1997, 9, 2, 9, 6, 18), @@ -2369,9 +2369,9 @@ class RRuleTest(unittest.TestCase): def testSecondlyByHourAndMinuteAndSecond(self): self.assertEqual(list(rrule(SECONDLY, count=3, - byhour=(6,18), - byminute=(6,18), - bysecond=(6,18), + byhour=(6, 18), + byminute=(6, 18), + bysecond=(6, 18), dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 18, 6, 6), datetime(1997, 9, 2, 18, 6, 18), @@ -2433,7 +2433,7 @@ class RRuleTest(unittest.TestCase): self.assertEqual(list(rrule(WEEKLY, count=3, interval=2, - byweekday=(TU,SU), + byweekday=(TU, SU), wkst=MO, dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), @@ -2444,7 +2444,7 @@ class RRuleTest(unittest.TestCase): self.assertEqual(list(rrule(WEEKLY, count=3, interval=2, - byweekday=(TU,SU), + byweekday=(TU, SU), wkst=SU, dtstart=parse("19970902T090000"))), [datetime(1997, 9, 2, 9, 0), @@ -2669,7 +2669,7 @@ class RRuleTest(unittest.TestCase): def testSetExRule(self): set = rruleset() - set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH), + set.rrule(rrule(YEARLY, count=6, byweekday=(TU, TH), dtstart=parse("19970902T090000"))) set.exrule(rrule(YEARLY, count=3, byweekday=TH, dtstart=parse("19970902T090000"))) @@ -2680,7 +2680,7 @@ class RRuleTest(unittest.TestCase): def testSetExDate(self): set = rruleset() - set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH), + set.rrule(rrule(YEARLY, count=6, byweekday=(TU, TH), dtstart=parse("19970902T090000"))) set.exdate(datetime(1997, 9, 4, 9)) set.exdate(datetime(1997, 9, 11, 9)) @@ -2734,7 +2734,7 @@ class RRuleTest(unittest.TestCase): def testSetCount(self): set = rruleset() - set.rrule(rrule(YEARLY, count=6, byweekday=(TU,TH), + set.rrule(rrule(YEARLY, count=6, byweekday=(TU, TH), dtstart=parse("19970902T090000"))) set.exrule(rrule(YEARLY, count=3, byweekday=TH, dtstart=parse("19970902T090000"))) @@ -2961,7 +2961,7 @@ class RRuleTest(unittest.TestCase): self.assertRaises(ValueError, rrule, MONTHLY, count=1, - bysetpos=(-1,0,1), + bysetpos=(-1, 0, 1), dtstart=parse("19970902T090000")) @@ -2979,7 +2979,7 @@ class ParserTest(unittest.TestCase): tzinfo=self.brsttz)) def testDateCommandFormatUnicode(self): - self.assertEqual(parse(u"Thu Sep 25 10:36:28 BRST 2003", + self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003", tzinfos=self.tzinfos), datetime(2003, 9, 25, 10, 36, 28, tzinfo=self.brsttz)) @@ -3570,8 +3570,8 @@ class ParserTest(unittest.TestCase): # Skip found out that sad precision problem. :-( dt1 = parse("00:11:25.01") dt2 = parse("00:12:10.01") - self.assertEquals(dt1.microsecond, 10000) - self.assertEquals(dt2.microsecond, 10000) + self.assertEqual(dt1.microsecond, 10000) + self.assertEqual(dt2.microsecond, 10000) def testMicrosecondPrecisionErrorReturns(self): # One more precision issue, discovered by Eric Brown. This should @@ -3581,10 +3581,10 @@ class ParserTest(unittest.TestCase): 1001, 1000, 999, 998, 101, 100, 99, 98]: dt = datetime(2008, 2, 27, 21, 26, 1, ms) - self.assertEquals(parse(dt.isoformat()), dt) + self.assertEqual(parse(dt.isoformat()), dt) def testHighPrecisionSeconds(self): - self.assertEquals(parse("20080227T21:26:01.123456789"), + self.assertEqual(parse("20080227T21:26:01.123456789"), datetime(2008, 2, 27, 21, 26, 1, 123456)) def testCustomParserInfo(self): @@ -3595,7 +3595,7 @@ class ParserTest(unittest.TestCase): MONTHS[0] = ("Foo", "Foo") myparser = parser(myparserinfo()) dt = myparser.parse("01/Foo/2007") - self.assertEquals(dt, datetime(2007, 1, 1)) + self.assertEqual(dt, datetime(2007, 1, 1)) class EasterTest(unittest.TestCase): @@ -3677,7 +3677,7 @@ class EasterTest(unittest.TestCase): class TZTest(unittest.TestCase): - TZFILE_EST5EDT = """ + TZFILE_EST5EDT = b""" VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAADrAAAABAAAABCeph5wn7rrYKCGAHCh ms1gomXicKOD6eCkaq5wpTWnYKZTyvCnFYlgqDOs8Kj+peCqE47wqt6H4KvzcPCsvmngrdNS8K6e S+CvszTwsH4t4LGcUXCyZ0pgs3wzcLRHLGC1XBVwticOYLc793C4BvBguRvZcLnm0mC7BPXwu8a0 @@ -3703,7 +3703,7 @@ AAEAAQABAAEAAQABAAEAAQABAAEAAf//x8ABAP//ubAABP//x8ABCP//x8ABDEVEVABFU1QARVdU AEVQVAAAAAABAAAAAQ== """ - EUROPE_HELSINKI = """ + EUROPE_HELSINKI = b""" VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABQAAAAAAAAB1AAAABQAAAA2kc28Yy85RYMy/hdAV I+uQFhPckBcDzZAX876QGOOvkBnToJAaw5GQG7y9EBysrhAdnJ8QHoyQEB98gRAgbHIQIVxjECJM VBAjPEUQJCw2ECUcJxAmDBgQJwVDkCf1NJAo5SWQKdUWkCrFB5ArtPiQLKTpkC2U2pAuhMuQL3S8 @@ -3718,7 +3718,7 @@ BAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAMEAwQDBAME AwQAABdoAAAAACowAQQAABwgAAkAACowAQQAABwgAAlITVQARUVTVABFRVQAAAAAAQEAAAABAQ== """ - NEW_YORK = """ + NEW_YORK = b""" VFppZgAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAABcAAADrAAAABAAAABCeph5wn7rrYKCGAHCh ms1gomXicKOD6eCkaq5wpTWnYKZTyvCnFYlgqDOs8Kj+peCqE47wqt6H4KvzcPCsvmngrdNS8K6e S+CvszTwsH4t4LGcUXCyZ0pgs3wzcLRHLGC1XBVwticOYLc793C4BvBguRvZcLnm0mC7BPXwu8a0 @@ -3770,85 +3770,85 @@ END:VTIMEZONE """ def testStrStart1(self): - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr("EST5EDT")).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr("EST5EDT")).tzname(), "EDT") def testStrEnd1(self): - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr("EST5EDT")).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr("EST5EDT")).tzname(), "EST") def testStrStart2(self): s = "EST5EDT,4,0,6,7200,10,0,26,7200,3600" - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr(s)).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr(s)).tzname(), "EDT") def testStrEnd2(self): s = "EST5EDT,4,0,6,7200,10,0,26,7200,3600" - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr(s)).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr(s)).tzname(), "EST") def testStrStart3(self): s = "EST5EDT,4,1,0,7200,10,-1,0,7200,3600" - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr(s)).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr(s)).tzname(), "EDT") def testStrEnd3(self): s = "EST5EDT,4,1,0,7200,10,-1,0,7200,3600" - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr(s)).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr(s)).tzname(), "EST") def testStrStart4(self): s = "EST5EDT4,M4.1.0/02:00:00,M10-5-0/02:00" - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr(s)).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr(s)).tzname(), "EDT") def testStrEnd4(self): s = "EST5EDT4,M4.1.0/02:00:00,M10-5-0/02:00" - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr(s)).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr(s)).tzname(), "EST") def testStrStart5(self): s = "EST5EDT4,95/02:00:00,298/02:00" - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr(s)).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr(s)).tzname(), "EDT") def testStrEnd5(self): s = "EST5EDT4,95/02:00:00,298/02" - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr(s)).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr(s)).tzname(), "EST") def testStrStart6(self): s = "EST5EDT4,J96/02:00:00,J299/02:00" - self.assertEqual(datetime(2003,4,6,1,59, + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tzstr(s)).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00, + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tzstr(s)).tzname(), "EDT") def testStrEnd6(self): s = "EST5EDT4,J96/02:00:00,J299/02" - self.assertEqual(datetime(2003,10,26,0,59, + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tzstr(s)).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00, + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tzstr(s)).tzname(), "EST") def testStrCmp1(self): @@ -3874,77 +3874,78 @@ END:VTIMEZONE tzrange("EST", -18000, "EDT")) def testFileStart1(self): - tz = tzfile(StringIO(base64.decodestring(self.TZFILE_EST5EDT))) - self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT") + tz = tzfile(BytesIO(base64.decodebytes(self.TZFILE_EST5EDT))) + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tz).tzname(), "EST") + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tz).tzname(), "EDT") def testFileEnd1(self): - tz = tzfile(StringIO(base64.decodestring(self.TZFILE_EST5EDT))) - self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST") + tz = tzfile(BytesIO(base64.decodebytes(self.TZFILE_EST5EDT))) + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tz).tzname(), "EDT") + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tz).tzname(), "EST") def testZoneInfoFileStart1(self): tz = zoneinfo.gettz("EST5EDT") - self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT") + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tz).tzname(), "EST") + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tz).tzname(), "EDT") def testZoneInfoFileEnd1(self): tz = zoneinfo.gettz("EST5EDT") - self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST") + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tz).tzname(), "EDT") + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tz).tzname(), "EST") def testZoneInfoOffsetSignal(self): - utc = gettz("UTC") + utc = zoneinfo.gettz("UTC") nyc = zoneinfo.gettz("America/New_York") - t0 = datetime(2007,11,4,0,30, tzinfo=nyc) + self.assertFalse(any([None in [utc, nyc]])) + t0 = datetime(2007, 11, 4, 0, 30, tzinfo=nyc) t1 = t0.astimezone(utc) t2 = t1.astimezone(nyc) - self.assertEquals(t0, t2) - self.assertEquals(nyc.dst(t0), timedelta(hours=1)) + self.assertEqual(t0, t2) + self.assertEqual(nyc.dst(t0), timedelta(hours=1)) def testICalStart1(self): tz = tzical(StringIO(self.TZICAL_EST5EDT)).get() - self.assertEqual(datetime(2003,4,6,1,59,tzinfo=tz).tzname(), "EST") - self.assertEqual(datetime(2003,4,6,2,00,tzinfo=tz).tzname(), "EDT") + self.assertEqual(datetime(2003, 4, 6, 1, 59, tzinfo=tz).tzname(), "EST") + self.assertEqual(datetime(2003, 4, 6, 2, 00, tzinfo=tz).tzname(), "EDT") def testICalEnd1(self): tz = tzical(StringIO(self.TZICAL_EST5EDT)).get() - self.assertEqual(datetime(2003,10,26,0,59,tzinfo=tz).tzname(), "EDT") - self.assertEqual(datetime(2003,10,26,1,00,tzinfo=tz).tzname(), "EST") + self.assertEqual(datetime(2003, 10, 26, 0, 59, tzinfo=tz).tzname(), "EDT") + self.assertEqual(datetime(2003, 10, 26, 1, 00, tzinfo=tz).tzname(), "EST") def testRoundNonFullMinutes(self): # This timezone has an offset of 5992 seconds in 1900-01-01. - tz = tzfile(StringIO(base64.decodestring(self.EUROPE_HELSINKI))) - self.assertEquals(str(datetime(1900,1,1,0,0, tzinfo=tz)), - "1900-01-01 00:00:00+01:40") + tz = tzfile(BytesIO(base64.decodebytes(self.EUROPE_HELSINKI))) + self.assertEqual(str(datetime(1900, 1, 1, 0, 0, tzinfo=tz)), + "1900-01-01 00:00:00+01:40") def testLeapCountDecodesProperly(self): # This timezone has leapcnt, and failed to decode until # Eugene Oden notified about the issue. - tz = tzfile(StringIO(base64.decodestring(self.NEW_YORK))) - self.assertEquals(datetime(2007,3,31,20,12).tzname(), None) + tz = tzfile(BytesIO(base64.decodebytes(self.NEW_YORK))) + self.assertEqual(datetime(2007, 3, 31, 20, 12).tzname(), None) def testBrokenIsDstHandling(self): # tzrange._isdst() was using a date() rather than a datetime(). # Issue reported by Lennart Regebro. - dt = datetime(2007,8,6,4,10, tzinfo=tzutc()) - self.assertEquals(dt.astimezone(tz=gettz("GMT+2")), - datetime(2007,8,6,6,10, tzinfo=tzstr("GMT+2"))) + dt = datetime(2007, 8, 6, 4, 10, tzinfo=tzutc()) + self.assertEqual(dt.astimezone(tz=gettz("GMT+2")), + datetime(2007, 8, 6, 6, 10, tzinfo=tzstr("GMT+2"))) def testGMTHasNoDaylight(self): # tzstr("GMT+2") improperly considered daylight saving time. # Issue reported by Lennart Regebro. - dt = datetime(2007,8,6,4,10) - self.assertEquals(gettz("GMT+2").dst(dt), timedelta(0)) + dt = datetime(2007, 8, 6, 4, 10) + self.assertEqual(gettz("GMT+2").dst(dt), timedelta(0)) def testGMTOffset(self): # GMT and UTC offsets have inverted signal when compared to the # usual TZ variable handling. - dt = datetime(2007,8,6,4,10, tzinfo=tzutc()) - self.assertEquals(dt.astimezone(tz=tzstr("GMT+2")), - datetime(2007,8,6,6,10, tzinfo=tzstr("GMT+2"))) - self.assertEquals(dt.astimezone(tz=gettz("UTC-2")), - datetime(2007,8,6,2,10, tzinfo=tzstr("UTC-2"))) + dt = datetime(2007, 8, 6, 4, 10, tzinfo=tzutc()) + self.assertEqual(dt.astimezone(tz=tzstr("GMT+2")), + datetime(2007, 8, 6, 6, 10, tzinfo=tzstr("GMT+2"))) + self.assertEqual(dt.astimezone(tz=gettz("UTC-2")), + datetime(2007, 8, 6, 2, 10, tzinfo=tzstr("UTC-2"))) if __name__ == "__main__": diff --git a/updatezinfo.py b/updatezinfo.py index d39182c..415b8c3 100755 --- a/updatezinfo.py +++ b/updatezinfo.py @@ -14,22 +14,22 @@ def main(): tzdata = sys.argv[1] else: from ftplib import FTP - print "Connecting to %s..." % SERVER + print("Connecting to %s..." % SERVER) ftp = FTP(SERVER) - print "Logging in..." + print("Logging in...") ftp.login() - print "Changing to %s..." % DIR + print("Changing to %s..." % DIR) ftp.cwd(DIR) - print "Listing files..." + print("Listing files...") for name in ftp.nlst(): if NAME.match(name): break else: sys.exit("error: file matching %s not found" % NAME.pattern) if os.path.isfile(name): - print "Found local %s..." % name + print("Found local %s..." % name) else: - print "Retrieving %s..." % name + print("Retrieving %s..." % name) file = open(name, "w") ftp.retrbinary("RETR "+name, file.write) file.close() @@ -37,9 +37,9 @@ def main(): tzdata = name if not tzdata or not NAME.match(tzdata): sys.exit("Usage: updatezinfo.py tzdataXXXXX.tar.gz") - print "Updating timezone information..." + print("Updating timezone information...") rebuild(tzdata, NAME.match(tzdata).group(1)) - print "Done." + print("Done.") if __name__ == "__main__": main() -- cgit v1.2.1