diff options
author | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2014-01-29 13:23:58 +0100 |
---|---|---|
committer | Mathieu Le Marec - Pasquet <kiorky@cryptelium.net> | 2014-01-29 13:23:58 +0100 |
commit | a36c9b0e78bd430bc1ea2d733d84fa84cb226705 (patch) | |
tree | 5628cb97f227d538ed54a3a3ed296df01f081df2 | |
parent | 2dd3c1f9915d80442848a1383a0392a35a34775c (diff) | |
download | croniter-a36c9b0e78bd430bc1ea2d733d84fa84cb226705.tar.gz |
style & pep8
-rw-r--r-- | buildout.cfg | 47 | ||||
-rw-r--r-- | src/croniter/__init__.py | 1 | ||||
-rw-r--r-- | src/croniter/croniter.py | 51 | ||||
-rw-r--r-- | src/croniter/testing.py | 5 | ||||
-rw-r--r-- | src/croniter/tests/base.py | 13 | ||||
-rw-r--r-- | src/croniter/tests/globals.py | 8 | ||||
-rw-r--r-- | src/croniter/tests/test_croniter.py | 76 | ||||
-rw-r--r-- | src/croniter/tests/test_doctests.py | 14 | ||||
-rw-r--r-- | src/croniter/tests/test_speed.py | 27 |
9 files changed, 138 insertions, 104 deletions
diff --git a/buildout.cfg b/buildout.cfg index ed57ee1..1303079 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -9,16 +9,21 @@ parts = coverage report report-xml + code-analysis extensions = mr.developer buildout_versions auto-checkout = -sources-dir=${buildout:directory}/src.mrdeveloper test-eggs= ${buildout:package-name} [test] eggs = ${buildout:package-name} [sources] +[code-analysis] +recipe = plone.recipe.codeanalysis +directory = ${buildout:directory}/src +flake8-ignore=C901 + [scripts] recipe=zc.recipe.egg eggs = ${buildout:eggs} @@ -81,18 +86,20 @@ recipe = collective.recipe.omelette eggs = ${scripts:eggs} [versions] +pytz = 2013.9 +python-dateutil = 2.2 +setuptools = 2.1 + +# buildout & test infra buildout-versions = 1.7 collective.recipe.omelette = 0.16 coverage = 3.7.1 ipython = 1.1.0 mr.developer = 1.28 plone.testing = 4.0.9 -pytz = 2013.9 zc.recipe.egg = 2.0.1 zc.recipe.testrunner = 2.0.0 zest.releaser = 3.50 -python-dateutil = 2.2 -setuptools = 2.1 six = 1.5.2 unittest2 = 0.5.1 zc.buildout = 1.7.1 @@ -100,3 +107,35 @@ zope.exceptions = 4.0.6 zope.interface = 4.0.5 zope.testing = 4.1.2 zope.testrunner = 4.4.1 +zope.contentprovider = 4.0.0a1 +zope.event = 4.0.2 +zope.i18n = 4.0.0a4 +zope.pagetemplate = 4.0.4 +zope.proxy = 4.1.3 +zope.publisher = 4.0.0a4 +zope.schema = 4.4.0 +zope.security = 4.0.0 +zope.tales = 4.0.2 +zope.traversing = 4.0.0a3 +zptlint = 0.2.4 +mccabe = 0.2.1 +pep8 = 1.4.6 +plone.recipe.codeanalysis = 1.0b6 +pyflakes = 0.7.3 +zope.contenttype = 4.0.1 +zope.i18nmessageid = 4.0.2 +zope.location = 4.0.2 +zope.tal = 4.0.0 +Unidecode = 0.04.14 +flake8 = 2.1.0 +i18ndude = 3.3.3 +ordereddict = 1.1 +plone.i18n = 2.0.9 +transaction = 1.4.1 +zope.browser = 2.0.2 +zope.component = 4.1.0 +zope.configuration = 4.0.2 + + + + diff --git a/src/croniter/__init__.py b/src/croniter/__init__.py index 5497e86..02be3ab 100644 --- a/src/croniter/__init__.py +++ b/src/croniter/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import from .croniter import croniter +croniter.__name__ # make flake8 happy diff --git a/src/croniter/croniter.py b/src/croniter/croniter.py index bd7c4ef..5dc170e 100644 --- a/src/croniter/croniter.py +++ b/src/croniter/croniter.py @@ -93,17 +93,17 @@ class croniter(object): raise ValueError( "[{0}] is not acceptable".format(expr_format)) - low, high, step = map(int, [low, high, step]) - e_list += range(low, high + 1, step) + #low, high, step = map(int, [low, high, step]) + #e_list += range(low, high + 1, step) # other solution - #try: - # for j in xrange(int(low), int(high)+1): - # if j % int(step) == 0: - # e_list.append(j) - #except NameError: - # for j in range(int(low), int(high)+1): - # if j % int(step) == 0: - # e_list.append(j) + try: + for j in xrange(int(low), int(high) + 1): + if j % int(step) == 0: + e_list.append(j) + except NameError: + for j in range(int(low), int(high) + 1): + if j % int(step) == 0: + e_list.append(j) else: if not star_or_int_re.search(t): t = self.ALPHACONV[i][t.lower()] @@ -141,22 +141,29 @@ class croniter(object): return datetime.datetime.fromtimestamp(self.cur) return self.cur - # iterator protocol, to enable direct use of croniter objects in a loop, like "for dt in croniter('5 0 * * *'): ..." - # or for combining multiple croniters into single dates feed using 'itertools' module - def __iter__(self): return self - __next__ = next = get_next + # iterator protocol, to enable direct use of croniter + # objects in a loop, like "for dt in croniter('5 0 * * *'): ..." + # or for combining multiple croniters into single + # dates feed using 'itertools' module + def __iter__(self): + return self + __next__ = next = get_next def all_next(self, ret_type=float): - "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) + '''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) def all_prev(self, ret_type=float): - "Generator of all previous dates." - while True: yield self._get_next(ret_type, is_prev=True) - - iter = all_next # alias, you can call .iter() instead of .all_next() - - + '''Generator of all previous dates.''' + while True: + yield self._get_next(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): expanded = self.expanded[:] diff --git a/src/croniter/testing.py b/src/croniter/testing.py index fd6a44f..3eeaf84 100644 --- a/src/croniter/testing.py +++ b/src/croniter/testing.py @@ -1,15 +1,18 @@ from plone.testing.layer import Layer as Base + class Layer(Base): defaultBases = tuple() + class IntegrationLayer(Layer): """.""" + class FunctionnalLayer(IntegrationLayer): """.""" - + CRONITER_FIXTURE = Layer() CRONITER_INTEGRATION_TESTING = IntegrationLayer() diff --git a/src/croniter/tests/base.py b/src/croniter/tests/base.py index ec192b9..583f92a 100644 --- a/src/croniter/tests/base.py +++ b/src/croniter/tests/base.py @@ -5,19 +5,6 @@ from croniter.testing import ( CRONITER_INTEGRATION_TESTING as INTEGRATION_TESTING, CRONITER_FUNCTIONAL_TESTING as FUNCTIONAL_TESTING, ) -from croniter.tests.globals import * - -""" - - -Lot of files generated by the collective.generic packages will try to load user defined objects in user specific files. -The final goal is to regenerate easyly the test infrastructure on templates updates without impacting -user-specific test boilerplate. -We do not use paster local commands (insert/update) as it cannot determine witch is specific or not and we prefer to totally -separe generated stuff and what is user specific - - -""" class TestCase(unittest.TestCase): diff --git a/src/croniter/tests/globals.py b/src/croniter/tests/globals.py deleted file mode 100644 index 5592c2e..0000000 --- a/src/croniter/tests/globals.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -__docformat__ = 'restructuredtext en' - -from pprint import pprint -from copy import deepcopy as dc - -# vim:set et sts=4 ts=4 tw=80: diff --git a/src/croniter/tests/test_croniter.py b/src/croniter/tests/test_croniter.py index 932ee8e..155fa07 100644 --- a/src/croniter/tests/test_croniter.py +++ b/src/croniter/tests/test_croniter.py @@ -3,6 +3,7 @@ import unittest from datetime import datetime +import pytz from croniter import croniter from croniter.tests import base @@ -13,10 +14,10 @@ class CroniterTest(base.TestCase): base = datetime(2012, 4, 6, 13, 26, 10) itr = croniter('*/1 * * * * *', base) n1 = itr.get_next(datetime) - self.assertEqual(base.year, n1.year) - self.assertEqual(base.month, n1.month) - self.assertEqual(base.day, n1.day) - self.assertEqual(base.hour, n1.hour) + self.assertEqual(base.year, n1.year) + self.assertEqual(base.month, n1.month) + self.assertEqual(base.day, n1.day) + self.assertEqual(base.hour, n1.hour) self.assertEqual(base.minute, n1.minute) self.assertEqual(base.second + 1, n1.second) @@ -26,23 +27,23 @@ class CroniterTest(base.TestCase): n1 = itr.get_next(datetime) n2 = itr.get_next(datetime) n3 = itr.get_next(datetime) - self.assertEqual(base.year, n1.year) - self.assertEqual(base.month, n1.month) - self.assertEqual(base.day, n1.day) - self.assertEqual(base.hour, n1.hour) + self.assertEqual(base.year, n1.year) + self.assertEqual(base.month, n1.month) + self.assertEqual(base.day, n1.day) + self.assertEqual(base.hour, n1.hour) self.assertEqual(base.minute, n1.minute) self.assertEqual(45, n1.second) - self.assertEqual(base.year, n2.year) - self.assertEqual(base.month, n2.month) - self.assertEqual(base.day, n2.day) - self.assertEqual(base.hour, n2.hour) - self.assertEqual(base.minute+1, n2.minute) + self.assertEqual(base.year, n2.year) + self.assertEqual(base.month, n2.month) + self.assertEqual(base.day, n2.day) + self.assertEqual(base.hour, n2.hour) + self.assertEqual(base.minute + 1, n2.minute) self.assertEqual(0, n2.second) - self.assertEqual(base.year, n3.year) - self.assertEqual(base.month, n3.month) - self.assertEqual(base.day, n3.day) - self.assertEqual(base.hour, n3.hour) - self.assertEqual(base.minute+1, n3.minute) + self.assertEqual(base.year, n3.year) + self.assertEqual(base.month, n3.month) + self.assertEqual(base.day, n3.day) + self.assertEqual(base.hour, n3.hour) + self.assertEqual(base.minute + 1, n3.minute) self.assertEqual(15, n3.second) def testMinute(self): @@ -50,12 +51,12 @@ class CroniterTest(base.TestCase): base = datetime(2010, 1, 23, 12, 18) itr = croniter('*/1 * * * *', base) n1 = itr.get_next(datetime) # 19 - self.assertEqual(base.year, n1.year) - self.assertEqual(base.month, n1.month) - self.assertEqual(base.day, n1.day) - self.assertEqual(base.hour, n1.hour) + self.assertEqual(base.year, n1.year) + self.assertEqual(base.month, n1.month) + self.assertEqual(base.day, n1.day) + self.assertEqual(base.hour, n1.hour) self.assertEqual(base.minute, n1.minute - 1) - for i in range(39): # ~ 58 + for i in range(39): # ~ 58 itr.get_next() n2 = itr.get_next(datetime) self.assertEqual(n2.minute, 59) @@ -168,32 +169,34 @@ class CroniterTest(base.TestCase): base = datetime(2010, 8, 25, 15, 56) itr = croniter('*/1 * * * *', base) prev = itr.get_prev(datetime) - self.assertEqual(base.year, prev.year) - self.assertEqual(base.month, prev.month) - self.assertEqual(base.day, prev.day) - self.assertEqual(base.hour, prev.hour) - self.assertEqual(base.minute, prev.minute+1) + self.assertEqual(base.year, prev.year) + self.assertEqual(base.month, prev.month) + self.assertEqual(base.day, prev.day) + self.assertEqual(base.hour, prev.hour) + self.assertEqual(base.minute, prev.minute + 1) base = datetime(2010, 8, 25, 15, 0) itr = croniter('*/1 * * * *', base) prev = itr.get_prev(datetime) - self.assertEqual(base.year, prev.year) - self.assertEqual(base.month, prev.month) - self.assertEqual(base.day, prev.day) - self.assertEqual(base.hour, prev.hour+1) + self.assertEqual(base.year, prev.year) + self.assertEqual(base.month, prev.month) + self.assertEqual(base.day, prev.day) + self.assertEqual(base.hour, prev.hour + 1) self.assertEqual(59, prev.minute) base = datetime(2010, 8, 25, 0, 0) itr = croniter('*/1 * * * *', base) prev = itr.get_prev(datetime) - self.assertEqual(base.year, prev.year) - self.assertEqual(base.month, prev.month) - self.assertEqual(base.day, prev.day+1) + self.assertEqual(base.year, prev.year) + self.assertEqual(base.month, prev.month) + self.assertEqual(base.day, prev.day + 1) self.assertEqual(23, prev.hour) self.assertEqual(59, prev.minute) def testPrevDayOfMonthWithCrossing(self): - """Test getting previous occurrence that crosses into previous month.""" + """ + Test getting previous occurrence that crosses into previous month. + """ base = datetime(2012, 3, 15, 0, 0) itr = croniter('0 0 22 * *', base) prev = itr.get_prev(datetime) @@ -382,6 +385,5 @@ class CroniterTest(base.TestCase): self.assertEqual(n2.tzinfo.zone, 'Asia/Tokyo') - if __name__ == '__main__': unittest.main() diff --git a/src/croniter/tests/test_doctests.py b/src/croniter/tests/test_doctests.py index 3fe63fe..0693bb6 100644 --- a/src/croniter/tests/test_doctests.py +++ b/src/croniter/tests/test_doctests.py @@ -5,8 +5,6 @@ Launching all doctests in the tests directory using: """ -from croniter.tests.base import FunctionalTestCase - # GLOBALS avalaible in doctests # IMPORT/DEFINE objects there or inside ./user_globals.py (better) # globals from the testing product are also available. @@ -14,7 +12,6 @@ from croniter.tests.base import FunctionalTestCase # from for import bar # and in your doctests, you can do: # >>> bar.something -from croniter.tests.globals import * from croniter.testing import CRONITER_FUNCTIONAL_TESTING as FUNCTIONAL_TESTING @@ -25,7 +22,10 @@ import logging import doctest from plone.testing import layered -optionflags = (doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE| doctest.REPORT_ONLY_FIRST_FAILURE) +optionflags = (doctest.ELLIPSIS + | doctest.NORMALIZE_WHITESPACE + | doctest.REPORT_ONLY_FIRST_FAILURE) + def test_suite(): """.""" @@ -35,7 +35,7 @@ def test_suite(): try: files = glob.glob(os.path.join(cwd, '*txt')) files += glob.glob(os.path.join(cwd, '*rst')) - except Exception,e: + except Exception: logger.warn('No doctests for croniter') suite = unittest.TestSuite() globs = globals() @@ -44,7 +44,7 @@ def test_suite(): layered( doctest.DocFileSuite( s, - globs = globs, + globs=globs, module_relative=False, optionflags=optionflags, ), @@ -53,4 +53,4 @@ def test_suite(): ]) return suite - +# diff --git a/src/croniter/tests/test_speed.py b/src/croniter/tests/test_speed.py index 405af59..6aafe6f 100644 --- a/src/croniter/tests/test_speed.py +++ b/src/croniter/tests/test_speed.py @@ -2,21 +2,23 @@ # -*- coding: utf-8 -*- from __future__ import absolute_import, print_function -import unittest -import time -from datetime import datetime, date -from .croniter import croniter +from datetime import datetime +from croniter import croniter from croniter.tests import base + class timerTest(object): def __init__(self): - self.tests = tuple(getattr(self, m) for m in dir(self) if m.lower().startswith('test')) + self.tests = tuple(getattr(self, m) + for m in dir(self) + if m.lower().startswith('test')) def run(self): for test in self.tests: test() + class CroniterTest(timerTest): def testMinute(self): # minute asterisk @@ -28,7 +30,7 @@ class CroniterTest(timerTest): base.day == n1.day base.hour == n1.hour base.minute == n1.minute - 1 - for i in range(39): # ~ 58 + for i in range(39): # ~ 58 itr.get_next() n2 = itr.get_next(datetime) @@ -145,7 +147,6 @@ class CroniterTest(timerTest): n4.month == 1 n4.year == 2011 - def testPrevMinute(self): base = datetime(2010, 8, 25, 15, 56) itr = croniter('*/1 * * * *', base) @@ -154,7 +155,7 @@ class CroniterTest(timerTest): base.month == prev.month base.day == prev.day base.hour == prev.hour - base.minute, prev.minute+1 + base.minute, prev.minute + 1 base = datetime(2010, 8, 25, 15, 0) itr = croniter('*/1 * * * *', base) @@ -162,7 +163,7 @@ class CroniterTest(timerTest): base.year == prev.year base.month == prev.month base.day == prev.day - base.hour == prev.hour+1 + base.hour == prev.hour + 1 59 == prev.minute base = datetime(2010, 8, 25, 0, 0) @@ -170,7 +171,7 @@ class CroniterTest(timerTest): prev = itr.get_prev(datetime) base.year == prev.year base.month == prev.month - base.day == prev.day+1 + base.day == prev.day + 1 23 == prev.hour 59 == prev.minute @@ -202,7 +203,7 @@ class CroniterTest(timerTest): base = datetime(2010, 2, 25) itr = croniter('0 0 * * 7', base) n1 = itr.get_next(datetime) - n1.isoweekday() == 7 + n1.isoweekday() == 7 n1.day == 28 n2 = itr.get_next(datetime) @@ -213,8 +214,10 @@ class CroniterTest(timerTest): class TestCase(base.TestCase): """make zope.testrunner happy""" + def test_Noop(self): - self.assertEqual(1,1) + self.assertEqual(1, 1) + if __name__ == '__main__': from timeit import Timer |