summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2014-01-29 13:23:58 +0100
committerMathieu Le Marec - Pasquet <kiorky@cryptelium.net>2014-01-29 13:23:58 +0100
commita36c9b0e78bd430bc1ea2d733d84fa84cb226705 (patch)
tree5628cb97f227d538ed54a3a3ed296df01f081df2
parent2dd3c1f9915d80442848a1383a0392a35a34775c (diff)
downloadcroniter-a36c9b0e78bd430bc1ea2d733d84fa84cb226705.tar.gz
style & pep8
-rw-r--r--buildout.cfg47
-rw-r--r--src/croniter/__init__.py1
-rw-r--r--src/croniter/croniter.py51
-rw-r--r--src/croniter/testing.py5
-rw-r--r--src/croniter/tests/base.py13
-rw-r--r--src/croniter/tests/globals.py8
-rw-r--r--src/croniter/tests/test_croniter.py76
-rw-r--r--src/croniter/tests/test_doctests.py14
-rw-r--r--src/croniter/tests/test_speed.py27
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