diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2016-03-10 21:31:55 +0100 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2016-03-10 21:31:55 +0100 |
commit | 194d6f2e1593a2fbbc9b2abf0dcda91242e90ad5 (patch) | |
tree | c7ae2b5801befe7321f0e5677aa640a41db46743 | |
parent | 13bde87e718e02f1729fee5a1a637b8311c25e18 (diff) | |
parent | 6022c3adf26a191ca8eded61bc7617eea313e487 (diff) | |
download | croniter-194d6f2e1593a2fbbc9b2abf0dcda91242e90ad5.tar.gz |
Merge pull request #56 from kiorky/master
backport
-rw-r--r-- | docs/CHANGES.rst | 6 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | src/croniter/croniter.py | 26 |
3 files changed, 21 insertions, 13 deletions
diff --git a/docs/CHANGES.rst b/docs/CHANGES.rst index a4e5def..1b2d5b9 100644 --- a/docs/CHANGES.rst +++ b/docs/CHANGES.rst @@ -1,12 +1,16 @@ Changelog ============== -0.3.12 (unreleased) +0.3.13 (unreleased) ------------------- - Nothing changed yet. +0.3.12 (2016-03-10) +------------------- +- support setting ret_type in __init__ [Brent Tubbs <brent.tubbs@gmail.com>] + 0.3.11 (2016-01-13) ------------------- @@ -17,7 +17,7 @@ long_description = "\n\n".join( setup( name='croniter', - version='0.3.12.dev0', + version='0.3.13.dev0', py_modules=['croniter', ], description=( 'croniter provides iteration for datetime ' diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py index 0f9d468..327326f 100644 --- a/src/croniter/croniter.py +++ b/src/croniter/croniter.py @@ -52,7 +52,8 @@ class croniter(object): bad_length = 'Exactly 5 or 6 columns has to be specified for iterator' \ 'expression.' - def __init__(self, expr_format, start_time=None): + def __init__(self, expr_format, start_time=None, ret_type=float): + self._ret_type = ret_type if start_time is None: start_time = time() @@ -137,13 +138,14 @@ class croniter(object): else res) self.expanded = expanded - def get_next(self, ret_type=float): - return self._get_next(ret_type, is_prev=False) + def get_next(self, ret_type=None): + return self._get_next(ret_type or self._ret_type, is_prev=False) - def get_prev(self, ret_type=float): - return self._get_next(ret_type, is_prev=True) + def get_prev(self, ret_type=None): + return self._get_next(ret_type or self._ret_type, is_prev=True) - def get_current(self, ret_type=float): + def get_current(self, ret_type=None): + ret_type = ret_type or self._ret_type if ret_type == datetime.datetime: return self._timestamp_to_datetime(self.cur) return self.cur @@ -186,24 +188,26 @@ class croniter(object): return self __next__ = next = get_next - def all_next(self, ret_type=float): + def all_next(self, ret_type=None): '''Generator of all consecutive dates. Can be used instead of implicit call to __iter__, whenever non-default 'ret_type' has to be specified. ''' while True: - yield self._get_next(ret_type, is_prev=False) + yield self._get_next(ret_type or self._ret_type, is_prev=False) - def all_prev(self, ret_type=float): + def all_prev(self, ret_type=None): '''Generator of all previous dates.''' while True: - yield self._get_next(ret_type, is_prev=True) + yield self._get_next(ret_type or self._ret_type, is_prev=True) iter = all_next # alias, you can call .iter() instead of .all_next() - def _get_next(self, ret_type=float, is_prev=False): + def _get_next(self, ret_type=None, is_prev=False): expanded = self.expanded[:] + ret_type = ret_type or self._ret_type + if ret_type not in (float, datetime.datetime): raise TypeError("Invalid ret_type, only 'float' or 'datetime' " "is acceptable.") |