Bladeren bron

Use flake8 instead of pep8+pyflakes and the silly flake ignore list

Ask Solem 14 jaren geleden
bovenliggende
commit
5d1a050445
41 gewijzigde bestanden met toevoegingen van 91 en 172 verwijderingen
  1. 1 1
      celery/app/defaults.py
  2. 1 1
      celery/apps/worker.py
  3. 1 1
      celery/backends/cache.py
  4. 1 2
      celery/backends/cassandra.py
  5. 1 1
      celery/backends/mongodb.py
  6. 3 3
      celery/backends/pyredis.py
  7. 1 1
      celery/backends/tyrant.py
  8. 2 1
      celery/beat.py
  9. 1 1
      celery/bin/base.py
  10. 1 1
      celery/bin/celeryd.py
  11. 3 1
      celery/concurrency/processes/pool.py
  12. 4 2
      celery/db/a805d4bd.py
  13. 1 1
      celery/db/models.py
  14. 1 1
      celery/events/cursesmon.py
  15. 0 1
      celery/loaders/default.py
  16. 1 1
      celery/log.py
  17. 3 3
      celery/platforms.py
  18. 2 1
      celery/task/__init__.py
  19. 2 0
      celery/task/schedules.py
  20. 2 1
      celery/tests/__init__.py
  21. 1 1
      celery/tests/test_backends/test_database.py
  22. 2 1
      celery/tests/test_backends/test_redis.py
  23. 2 1
      celery/tests/test_bin/test_celeryd.py
  24. 1 1
      celery/tests/test_bin/test_celeryev.py
  25. 2 5
      celery/tests/test_compat/test_log.py
  26. 3 2
      celery/tests/test_concurrency/test_concurrency_processes.py
  27. 1 1
      celery/tests/test_events/test_events_cursesmon.py
  28. 2 7
      celery/tests/test_task/test_task_http.py
  29. 1 0
      celery/tests/test_utils/test_serialization.py
  30. 0 1
      celery/tests/test_worker/test_worker.py
  31. 1 0
      celery/tests/test_worker/test_worker_job.py
  32. 5 11
      celery/tests/utils.py
  33. 2 1
      celery/utils/__init__.py
  34. 18 16
      celery/utils/compat.py
  35. 3 3
      celery/utils/functional.py
  36. 1 1
      celery/utils/mail.py
  37. 1 1
      celery/utils/patch.py
  38. 3 2
      celery/utils/serialization.py
  39. 2 2
      celery/worker/state.py
  40. 0 78
      contrib/release/flakesignore.txt
  41. 8 12
      pavement.py

+ 1 - 1
celery/app/defaults.py

@@ -53,7 +53,7 @@ NAMESPACES = {
         "POOL_LIMIT": Option(None, type="int"),
         "INSIST": Option(False, type="bool"),
         "USE_SSL": Option(False, type="bool"),
-        "TRANSPORT_OPTIONS": Option({}, type="dict")
+        "TRANSPORT_OPTIONS": Option({}, type="dict"),
     },
     "CELERY": {
         "ACKS_LATE": Option(False, type="bool"),

+ 1 - 1
celery/apps/worker.py

@@ -3,7 +3,7 @@ import logging
 try:
     import multiprocessing
 except ImportError:
-    multiprocessing = None
+    multiprocessing = None  # noqa
 import os
 import socket
 import sys

+ 1 - 1
celery/backends/cache.py

@@ -18,7 +18,7 @@ def import_best_memcache():
             is_pylibmc = True
         except ImportError:
             try:
-                import memcache
+                import memcache  # noqa
             except ImportError:
                 raise ImproperlyConfigured(
                         "Memcached backend requires either the 'pylibmc' "

+ 1 - 2
celery/backends/cassandra.py

@@ -88,8 +88,7 @@ class CassandraBackend(BaseDictBackend):
 
         self._column_family = None
 
-    def _retry_on_error(self, fun):
-        self = args[0]
+    def _retry_on_error(self, fun, *args, **kwargs):
         ts = time.time() + self._retry_timeout
         while 1:
             try:

+ 1 - 1
celery/backends/mongodb.py

@@ -4,7 +4,7 @@ from datetime import datetime
 try:
     import pymongo
 except ImportError:
-    pymongo = None
+    pymongo = None  # noqa
 
 from celery import states
 from celery.backends.base import BaseDictBackend

+ 3 - 3
celery/backends/pyredis.py

@@ -12,8 +12,8 @@ try:
     import redis
     from redis.exceptions import ConnectionError
 except ImportError:
-    redis = None
-    ConnectionError = None
+    redis = None            # noqa
+    ConnectionError = None  # noqa
 
 
 class RedisBackend(KeyValueStoreBackend):
@@ -100,6 +100,6 @@ class RedisBackend(KeyValueStoreBackend):
                                 db=self.redis_db,
                                 password=self.redis_password)
 
-    @client.deleter
+    @client.deleter  # noqa
     def client(self, client):
         client.connection.disconnect()

+ 1 - 1
celery/backends/tyrant.py

@@ -2,7 +2,7 @@
 try:
     import pytyrant
 except ImportError:
-    pytyrant = None
+    pytyrant = None  # noqa
 
 from celery.backends.base import KeyValueStoreBackend
 from celery.exceptions import ImproperlyConfigured

+ 2 - 1
celery/beat.py

@@ -8,7 +8,7 @@ import traceback
 try:
     import multiprocessing
 except ImportError:
-    multiprocessing = None
+    multiprocessing = None  # noqa
 
 from datetime import datetime
 
@@ -424,6 +424,7 @@ class _Threaded(threading.Thread):
 
 
 if multiprocessing is not None:
+
     class _Process(multiprocessing.Process):
         """Embedded task scheduler using multiprocessing."""
 

+ 1 - 1
celery/bin/base.py

@@ -39,7 +39,7 @@ class Command(object):
             Option("--config",
                     default="celeryconfig", action="store",
                     dest="config_module",
-                    help="Name of the module to read configuration from.")
+                    help="Name of the module to read configuration from."),
     )
 
     #: Enable if the application should support config from the cmdline.

+ 1 - 1
celery/bin/celeryd.py

@@ -76,7 +76,7 @@ import sys
 try:
     from multiprocessing import freeze_support
 except ImportError:
-    freeze_support = lambda: True
+    freeze_support = lambda: True  # noqa
 
 from celery.bin.base import Command, Option
 

+ 3 - 1
celery/concurrency/processes/pool.py

@@ -125,12 +125,14 @@ def worker(inqueue, outqueue, initializer=None, initargs=(), maxtasks=None):
     get = inqueue.get
 
     if hasattr(inqueue, '_reader'):
+
         def poll(timeout):
             if inqueue._reader.poll(timeout):
                 return True, get()
             return False, None
     else:
-        def poll(timeout):
+
+        def poll(timeout):  # noqa
             try:
                 return True, get(timeout=timeout)
             except Queue.Empty:

+ 4 - 2
celery/db/a805d4bd.py

@@ -29,13 +29,15 @@ class PickleType(_PickleType):
         dumps = self.pickler.dumps
         protocol = self.protocol
         if impl_processor:
+
             def process(value):
                 if value is not None:
                     value = dumps(value, protocol)
                 return impl_processor(value)
 
         else:
-            def process(value):
+
+            def process(value):  # noqa
                 if value is not None:
                     value = dumps(value, protocol)
                 return value
@@ -53,7 +55,7 @@ class PickleType(_PickleType):
                 return loads(value)
         else:
 
-            def process(value):
+            def process(value):  # noqa
                 if value is None:
                     return None
                 return loads(value)

+ 1 - 1
celery/db/models.py

@@ -8,7 +8,7 @@ from celery.db.session import ResultModelBase
 if sa.__version__.startswith('0.5'):
     from celery.db.dfd042c7 import PickleType
 else:
-    from celery.db.a805d4bd import PickleType
+    from celery.db.a805d4bd import PickleType  # noqa
 
 
 class Task(ResultModelBase):

+ 1 - 1
celery/events/cursesmon.py

@@ -464,7 +464,7 @@ def evtop(app=None):
     conn = app.broker_connection()
     recv = app.events.Receiver(conn, handlers={"*": state.event})
     capture = recv.itercapture()
-    consumer = capture.next()
+    capture.next()
     display = CursesMonitor(state, app=app)
     display.init_screen()
     refresher = DisplayThread(display)

+ 0 - 1
celery/loaders/default.py

@@ -4,7 +4,6 @@ from importlib import import_module
 
 from celery.datastructures import AttributeDict
 from celery.loaders.base import BaseLoader
-from celery.datastructures import AttributeDict
 from celery.exceptions import NotConfigured
 
 DEFAULT_CONFIG_MODULE = "celeryconfig"

+ 1 - 1
celery/log.py

@@ -8,7 +8,7 @@ try:
     from multiprocessing import current_process
     from multiprocessing import util as mputil
 except ImportError:
-    current_process = mputil = None
+    current_process = mputil = None  # noqa
 
 from celery import signals
 from celery import current_app

+ 3 - 3
celery/platforms.py

@@ -5,7 +5,7 @@ import signal
 try:
     from setproctitle import setproctitle as _setproctitle
 except ImportError:
-    _setproctitle = None
+    _setproctitle = None  # noqa
 
 CAN_DETACH = True
 try:
@@ -16,12 +16,12 @@ except ImportError:
 try:
     import pwd
 except ImportError:
-    pwd = None
+    pwd = None  # noqa
 
 try:
     import grp
 except ImportError:
-    grp = None
+    grp = None  # noqa
 
 DAEMON_UMASK = 0
 DAEMON_WORKDIR = "/"

+ 2 - 1
celery/task/__init__.py

@@ -7,7 +7,8 @@ from celery.task.sets import TaskSet, subtask
 from celery.task.chord import chord
 from celery.task.control import discard_all
 
-__all__ = ["Task", "TaskSet", "PeriodicTask", "subtask", "discard_all"]
+__all__ = ["Task", "TaskSet", "PeriodicTask", "subtask",
+           "discard_all", "chord"]
 
 
 def task(*args, **kwargs):

+ 2 - 0
celery/task/schedules.py

@@ -1,5 +1,7 @@
 import warnings
 from celery.schedules import schedule, crontab_parser, crontab
 
+__all__ = ["schedule", "crontab_parser", "crontab"]
+
 warnings.warn(DeprecationWarning(
     "celery.task.schedules is deprecated and renamed to celery.schedules"))

+ 2 - 1
celery/tests/__init__.py

@@ -13,8 +13,9 @@ os.environ["EVENTLET_NOPATCH"] = "yes"
 os.environ["GEVENT_NOPATCH"] = "yes"
 
 try:
-    WindowsError = WindowsError
+    WindowsError = WindowsError  # noqa
 except NameError:
+
     class WindowsError(Exception):
         pass
 

+ 1 - 1
celery/tests/test_backends/test_database.py

@@ -14,7 +14,7 @@ from celery.tests.utils import execute_context, mask_modules
 from celery.tests.utils import unittest
 
 try:
-    import sqlalchemy
+    import sqlalchemy  # noqa
 except ImportError:
     DatabaseBackend = Task = TaskSet = None
 else:

+ 2 - 1
celery/tests/test_backends/test_redis.py

@@ -19,7 +19,7 @@ _no_redis_msg_emitted = False
 try:
     from redis.exceptions import ConnectionError
 except ImportError:
-    class ConnectionError(socket.error):
+    class ConnectionError(socket.error):  # noqa
         pass
 
 
@@ -108,6 +108,7 @@ class TestRedisBackendNoRedis(unittest.TestCase):
     def test_redis_None_if_redis_not_installed(self):
         prev = sys.modules.pop("celery.backends.pyredis")
         try:
+
             def with_redis_masked(_val):
                 from celery.backends.pyredis import redis
                 self.assertIsNone(redis)

+ 2 - 1
celery/tests/test_bin/test_celeryd.py

@@ -6,7 +6,7 @@ import warnings
 try:
     from multiprocessing import current_process
 except ImportError:
-    current_process = None
+    current_process = None  # noqa
 
 
 from nose import SkipTest
@@ -189,6 +189,7 @@ class test_Worker(AppCase):
 
         prev, os.geteuid = os.geteuid, geteuid
         try:
+
             def with_catch_warnings(log):
                 worker = self.Worker()
                 worker.run()

+ 1 - 1
celery/tests/test_bin/test_celeryev.py

@@ -33,7 +33,7 @@ class test_EvCommand(unittest.TestCase):
 
     def test_run_top(self):
         try:
-            import curses
+            import curses  # noqa
         except ImportError:
             raise SkipTest("curses monitor requires curses")
 

+ 2 - 5
celery/tests/test_compat/test_log.py

@@ -6,15 +6,11 @@ from celery.tests.utils import unittest
 from tempfile import mktemp
 from celery.tests.utils import StringIO
 
-try:
-    from contextlib import contextmanager
-except ImportError:
-    from celery.tests.utils import fallback_contextmanager as contextmanager
-
 from celery import log
 from celery.log import (setup_logger, setup_task_logger,
                         get_default_logger, get_task_logger,
                         redirect_stdouts_to_logger, LoggingProxy)
+from celery.tests.utils import contextmanager
 from celery.tests.utils import override_stdouts, execute_context
 from celery.utils import gen_unique_id
 from celery.utils.compat import LoggerAdapter
@@ -107,6 +103,7 @@ class test_default_logger(unittest.TestCase):
         logger = self.setup_logger(loglevel=logging.ERROR, logfile=None,
                                    root=False)
         try:
+
             def with_wrap_logger(sio):
                 redirect_stdouts_to_logger(logger, loglevel=logging.ERROR)
                 logger.error("foo")

+ 3 - 2
celery/tests/test_concurrency/test_concurrency_processes.py

@@ -7,12 +7,13 @@ from nose import SkipTest
 try:
     from celery.concurrency import processes as mp
 except ImportError:
+
     class _mp(object):
         RUN = 0x1
 
         class TaskPool(object):
             pass
-    mp = _mp()
+    mp = _mp()  # noqa
 
 from celery.datastructures import ExceptionInfo
 from celery.utils import noop
@@ -100,7 +101,7 @@ class test_TaskPool(unittest.TestCase):
 
     def setUp(self):
         try:
-            import multiprocessing
+            import multiprocessing  # noqa
         except ImportError:
             raise SkipTest("multiprocessing not supported")
 

+ 1 - 1
celery/tests/test_events/test_events_cursesmon.py

@@ -13,7 +13,7 @@ class TestCursesDisplay(unittest.TestCase):
 
     def setUp(self):
         try:
-            import curses
+            import curses  # noqa
         except ImportError:
             raise SkipTest("curses monitor requires curses")
 

+ 2 - 7
celery/tests/test_task/test_task_http.py

@@ -6,19 +6,14 @@ from celery.tests.utils import unittest
 try:
     from urllib import addinfourl
 except ImportError:  # py3k
-    from urllib.request import addinfourl
-try:
-    from contextlib import contextmanager
-except ImportError:
-    from celery.tests.utils import fallback_contextmanager as contextmanager
-from celery.tests.utils import StringIO
+    from urllib.request import addinfourl  # noqa
 
 from anyjson import serialize
 
 from celery.task import http
 from celery.utils.functional import wraps
 
-from celery.tests.utils import execute_context
+from celery.tests.utils import execute_context, contextmanager, StringIO
 
 
 @contextmanager

+ 1 - 0
celery/tests/test_utils/test_serialization.py

@@ -9,6 +9,7 @@ class TestAAPickle(unittest.TestCase):
     def test_no_cpickle(self):
         prev = sys.modules.pop("celery.utils.serialization", None)
         try:
+
             def with_cPickle_masked(_val):
                 from celery.utils.serialization import pickle
                 import pickle as orig_pickle

+ 0 - 1
celery/tests/test_worker/test_worker.py

@@ -14,7 +14,6 @@ from celery.concurrency.base import BasePool
 from celery.exceptions import SystemTerminate
 from celery.task import task as task_dec
 from celery.task import periodic_task as periodic_task_dec
-from celery.utils import timer2
 from celery.utils import gen_unique_id
 from celery.worker import WorkController
 from celery.worker.buckets import FastQueue

+ 1 - 0
celery/tests/test_worker/test_worker_job.py

@@ -418,6 +418,7 @@ class test_TaskRequest(unittest.TestCase):
 
         WorkerTaskTrace.execute = _error_exec
         try:
+
             def with_catch_warnings(log):
                 res = execute_and_trace(mytask.name, gen_unique_id(),
                                         [4], {})

+ 5 - 11
celery/tests/utils.py

@@ -13,19 +13,21 @@ import sys
 import time
 try:
     import __builtin__ as builtins
-except ImportError:    # py3k
-    import builtins
+except ImportError:  # py3k
+    import builtins  # noqa
 
 from celery.utils.compat import StringIO, LoggerAdapter
 try:
     from contextlib import contextmanager
 except ImportError:
-    from celery.tests.utils import fallback_contextmanager as contextmanager
+    from celery.tests.utils import fallback_contextmanager
+    contextmanager = fallback_contextmanager  # noqa
 
 
 from nose import SkipTest
 
 from celery.app import app_or_default
+from celery.utils import noop
 from celery.utils.functional import wraps
 
 
@@ -121,14 +123,6 @@ def execute_context(context, fun):
         context.__exit__(*exc_info)
 
 
-try:
-    from contextlib import contextmanager
-except ImportError:
-    contextmanager = fallback_contextmanager
-
-from celery.utils import noop
-
-
 @contextmanager
 def eager_tasks():
     app = app_or_default()

+ 2 - 1
celery/utils/__init__.py

@@ -13,7 +13,8 @@ from inspect import getargspec
 from itertools import islice
 from pprint import pprint
 
-from kombu.utils import gen_unique_id, rpartition, cached_property
+from kombu.utils import cached_property, gen_unique_id  # noqa
+from kombu.utils import rpartition
 
 from celery.utils.compat import StringIO
 from celery.utils.functional import partial, wraps

+ 18 - 16
celery/utils/compat.py

@@ -2,30 +2,29 @@ from __future__ import generators
 
 ############## py3k #########################################################
 try:
-    from UserList import UserList
+    from UserList import UserList       # noqa
 except ImportError:
-    from collections import UserList
+    from collections import UserList    # noqa
 
 try:
-    from UserDict import UserDict
+    from UserDict import UserDict       # noqa
 except ImportError:
-    from collections import UserDict
+    from collections import UserDict    # noqa
 
 try:
-    from cStringIO import StringIO
+    from cStringIO import StringIO      # noqa
 except ImportError:
     try:
-        from StringIO import StringIO
+        from StringIO import StringIO   # noqa
     except ImportError:
-        from io import StringIO
+        from io import StringIO         # noqa
 
 ############## urlparse.parse_qsl ###########################################
 
 try:
     from urlparse import parse_qsl
 except ImportError:
-    from cgi import parse_qsl
-parse_sql = parse_qsl
+    from cgi import parse_qsl  # noqa
 
 ############## __builtin__.all ##############################################
 
@@ -33,6 +32,7 @@ try:
     all([True])
     all = all
 except NameError:
+
     def all(iterable):
         for item in iterable:
             if not item:
@@ -45,6 +45,7 @@ try:
     any([True])
     any = any
 except NameError:
+
     def any(iterable):
         for item in iterable:
             if item:
@@ -57,7 +58,7 @@ import weakref
 try:
     from collections import MutableMapping
 except ImportError:
-    from UserDict import DictMixin as MutableMapping
+    from UserDict import DictMixin as MutableMapping  # noqa
 from itertools import imap as _imap
 from operator import eq as _eq
 
@@ -267,7 +268,7 @@ class CompatOrderedDict(dict, MutableMapping):
 try:
     from collections import OrderedDict
 except ImportError:
-    OrderedDict = CompatOrderedDict
+    OrderedDict = CompatOrderedDict  # noqa
 
 ############## collections.defaultdict ######################################
 
@@ -276,7 +277,7 @@ try:
 except ImportError:
     # Written by Jason Kirtland, taken from Python Cookbook:
     # <http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/523034>
-    class defaultdict(dict):
+    class defaultdict(dict):  # noqa
 
         def __init__(self, default_factory=None, *args, **kwargs):
             dict.__init__(self, *args, **kwargs)
@@ -322,7 +323,7 @@ import logging
 try:
     import multiprocessing
 except ImportError:
-    multiprocessing = None
+    multiprocessing = None  # noqa
 import sys
 
 from logging import LogRecord
@@ -331,6 +332,7 @@ log_takes_extra = "extra" in inspect.getargspec(logging.Logger._log)[0]
 
 # The func argument to LogRecord was added in 2.5
 if "func" not in inspect.getargspec(LogRecord.__init__)[0]:
+
     def LogRecord(name, level, fn, lno, msg, args, exc_info, func):
         return logging.LogRecord(name, level, fn, lno, msg, args, exc_info)
 
@@ -437,7 +439,7 @@ class _CompatLoggerAdapter(object):
 try:
     from logging import LoggerAdapter
 except ImportError:
-    LoggerAdapter = _CompatLoggerAdapter
+    LoggerAdapter = _CompatLoggerAdapter  # noqa
 
 
 def log_with_extra(logger, level, msg, *args, **kwargs):
@@ -452,7 +454,7 @@ try:
 except ImportError:
     import itertools
 
-    def izip_longest(*args, **kwds):
+    def izip_longest(*args, **kwds):  # noqa
         fillvalue = kwds.get("fillvalue")
 
         def sentinel(counter=([fillvalue] * (len(args) - 1)).pop):
@@ -495,7 +497,7 @@ else:
     try:
         from logging.handlers import WatchedFileHandler
     except ImportError:
-        class WatchedFileHandler(logging.FileHandler):
+        class WatchedFileHandler(logging.FileHandler):  # noqa
             """
             A handler for logging to a file, which watches the file
             to see if it has changed while in use. This can happen because of

+ 3 - 3
celery/utils/functional.py

@@ -78,7 +78,7 @@ def _compat_partial(fun, *args, **kwargs):
 try:
     from functools import partial
 except ImportError:
-    partial = _compat_partial
+    partial = _compat_partial  # noqa
 
 WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
 WRAPPER_UPDATES = ('__dict__',)
@@ -111,7 +111,7 @@ def _compat_update_wrapper(wrapper, wrapped, assigned=WRAPPER_ASSIGNMENTS,
 try:
     from functools import update_wrapper
 except ImportError:
-    update_wrapper = _compat_update_wrapper
+    update_wrapper = _compat_update_wrapper  # noqa
 
 
 def _compat_wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS,
@@ -131,6 +131,6 @@ def _compat_wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS,
 try:
     from functools import wraps
 except ImportError:
-    wraps = _compat_wraps
+    wraps = _compat_wraps  # noqa
 
 ### End from Python 2.5 functools.py ##########################################

+ 1 - 1
celery/utils/mail.py

@@ -4,7 +4,7 @@ import smtplib
 try:
     from email.mime.text import MIMEText
 except ImportError:
-    from email.MIMEText import MIMEText
+    from email.MIMEText import MIMEText  # noqa
 
 supports_timeout = sys.version_info >= (2, 6)
 

+ 1 - 1
celery/utils/patch.py

@@ -9,7 +9,7 @@ def _patch_logger_class():
     try:
         from multiprocessing.process import current_process
     except ImportError:
-        current_process = None
+        current_process = None  # noqa
 
     logging._acquireLock()
     try:

+ 3 - 2
celery/utils/serialization.py

@@ -8,7 +8,7 @@ import pickle as pypickle
 try:
     import cPickle as cpickle
 except ImportError:
-    cpickle = None
+    cpickle = None  # noqa
 
 if sys.version_info < (2, 6):  # pragma: no cover
     # cPickle is broken in Python <= 2.5.
@@ -42,7 +42,8 @@ if sys.version_info < (2, 5):  # pragma: no cover
     def subclass_exception(name, parent, unused):
         return types.ClassType(name, (parent,), {})
 else:
-    def subclass_exception(name, parent, module):
+
+    def subclass_exception(name, parent, module):  # noqa
         return type(name, (parent,), {'__module__': module})
 
 

+ 2 - 2
celery/worker/state.py

@@ -59,13 +59,13 @@ if os.environ.get("CELERY_BENCH"):
     __reserved = task_reserved
     __ready = task_ready
 
-    def task_reserved(request):
+    def task_reserved(request):  # noqa
         global bench_start
         if bench_start is None:
             bench_start = time()
         return __reserved(request)
 
-    def task_ready(request):
+    def task_ready(request):  # noqa
         global all_count, bench_start
         all_count += 1
         if not all_count % bench_every:

+ 0 - 78
contrib/release/flakesignore.txt

@@ -1,78 +0,0 @@
-celery/app/__init__.py:(.+?) redefinition of function 'app_or_default'
-celery/backends/cache.py:(.+?) redefinition of unused 'memcache'
-celery/backends/cassandra.py:(.+?) redefinition of unused 'pycassa'
-celery/backends/mongodb.py:(.+?) redefinition of unused 'pymongo'
-celery/backends/pyredis.py:(.+?) redefinition of unused 'redis'
-celery/backends/pyredis.py:(.+?) redefinition of unused 'ConnectionError'
-celery/backends/tyrant.py:(.+?) redefinition of unused 'pytyrant'
-celery/concurrency/processes/pool.py:(.+?) redefinition of function 'poll'
-celery/db/a805d4bd.py:(.+?) redefinition of function 'process'
-celery/db/a805d4bd.py:(.+?) redefinition of function 'process'
-celery/db/models.py:(.+?) redefinition of unused 'PickleType'
-celery/loaders/default.py:(.+?) redefinition of unused 'AttributeDict'
-celery/platforms.py:(.+?) redefinition of unused '_setproctitle'
-celery/platforms.py:(.+?) redefinition of unused 'pwd'
-celery/platforms.py:(.+?) redefinition of unused 'grp'
-celery/utils/serialization.py:(.+?) redefinition of unused 'cpickle'
-celery/utils/serialization.py:(.+?) redefinition of function 'subclass_exception'
-celery/tests/test_backends/test_redis.py:(.+?) redefinition of unused 'ConnectionError'
-celery/tests/utils.py:(.+?) redefinition of unused 'contextmanager'
-celery/utils/__init__.py:(.+?) redefinition of unused 'ctypes'
-celery/utils/compat.py:(.+?) redefinition of unused 'parse_qsl'
-celery/utils/compat.py:(.+?) redefinition of unused 'MutableMapping'
-celery/utils/compat.py:(.+?) redefinition of unused 'defaultdict'
-celery/utils/compat.py:(.+?) redefinition of unused 'LoggerAdapter'
-celery/utils/compat.py:(.+?) redefinition of unused 'izip_longest'
-celery/utils/functional.py:(.+?) redefinition of unused 'partial'
-celery/utils/functional.py:(.+?) redefinition of unused 'update_wrapper'
-celery/utils/functional.py:(.+?) redefinition of unused 'wraps'
-celery/utils/mail.py:(.+?) redefinition of unused 'MIMEText'
-celery/utils/__init__.py:(.+?) 'gen_unique_id' imported but unused
-celery/events/cursesmon.py:(.+?): local variable 'consumer' is assigned to but never used
-celery/tests/utils.py:(.+?): 'unittest' imported but unused
-celery/tests/utils.py:(.+?): redefinition of unused 'builtins' from line \d+
-celery/tests/utils.py:(.+?): redefinition of unused 'StringIO' from line 16
-celery/utils/compat.py:(.+?): redefinition of unused 'UserList' from line 5
-celery/utils/compat.py:(.+?): 'UserList' imported but unused
-celery/utils/compat.py:(.+?): redefinition of unused 'UserDict' from line 10
-celery/utils/compat.py:(.+?): 'UserDict' imported but unused
-celery/utils/compat.py:(.+?): redefinition of unused 'OrderedDict' from line 260
-celery/app/amqp.py:(.+?): redefinition of function 'queues' from line
-celery/tests/utils.py:(.+?): redefinition of unused 'builtins' from line 14
-celery/utils/compat.py:(.+?): redefinition of unused 'StringIO' from line 15
-celery/utils/compat.py:(.+?): redefinition of unused 'StringIO' from line 18
-celery/utils/compat.py:(.+?): 'StringIO' imported but unused
-celery/utils/compat.py:(.+?): redefinition of unused 'OrderedDict' from line 268
-celery/task/schedules.py:2: 'schedule' imported but unused
-celery/task/schedules.py:2: 'crontab_parser' imported but unused
-celery/task/schedules.py:2: 'crontab' imported but unused
-celery/tests/__init__.py:17: undefined name 'WindowsError'
-celery/utils/patch.py:12: redefinition of unused 'current_process' from line 10
-celery/utils/compat.py:325: redefinition of unused 'multiprocessing' from line 323
-celery/tests/test_cursesmon.py:18: 'curses' imported but unused
-celery/log.py:11: redefinition of unused 'mputil' from line 9
-celery/log.py:11: redefinition of unused 'current_process' from line 8
-celery/tests/test_bin/test_celeryd.py:9: redefinition of unused 'current_process' from line 7
-celery/tests/test_bin/test_celeryd.py:324: 'setproctitle' imported but unused
-celery/tests/test_bin/test_celeryev.py:36: 'curses' imported but unused
-celery/apps/worker.py:6: redefinition of unused 'multiprocessing' from line 4
-celery/beat.py:14: redefinition of unused 'multiprocessing' from line 12
-celery/bin/celeryd.py:79: redefinition of unused 'freeze_support' from line 77
-celery/tests/test_cursesmon.py:16: 'curses' imported but unused
-celery/tests/__init__.py:16: undefined name 'WindowsError'
-celery/tests/test_backends/test_database.py:17: 'sqlalchemy' imported but unused
-celery/tests/test_compat/test_log.py:12: redefinition of unused 'contextmanager' from line 10
-celery/tests/test_concurrency/test_concurrency_processes.py:15: redefinition of unused 'mp' from line 8
-celery/tests/test_concurrency/test_concurrency_processes.py:103: 'multiprocessing' imported but unused
-celery/tests/test_events/test_events_cursesmon.py:16: 'curses' imported but unused
-celery/tests/test_task/test_task_http.py:9: redefinition of unused 'addinfourl' from line 7
-celery/tests/test_task/test_task_http.py:13: redefinition of unused 'contextmanager' from line 11
-celery/utils/__init__.py:16: 'cached_property' imported but unused
-celery/beat.py:16: redefinition of unused 'multiprocessing' from line 14
-celery/worker/state.py:62: redefinition of function 'task_reserved' from line 36
-celery/worker/state.py:68: redefinition of function 'task_ready' from line 47
-celery/beat.py:11: redefinition of unused 'multiprocessing' from line 9
-celery/utils/compat.py:498: redefinition of unused 'WatchedFileHandler' from line 496
-celery/backends/pyredis.py:(.+?): redefinition of function 'client' from line .+?$
-celery/task/__init__.py:7: 'chord' imported but unused
-

+ 8 - 12
pavement.py

@@ -77,18 +77,14 @@ def verifyconfigref(options):
 
 
 @task
-def flakes(options):
+def flake8(options):
     noerror = getattr(options, "noerror", False)
-    sh("""find celery -name '*.py' | xargs pyflakes | perl -mstrict -nle'
-           my $flake = $_;open(my $f, "contrib/release/flakesignore.txt");
-           my $ignored = 0;
-           PATTERN: foreach my $p (<$f>) { chomp($p);
-               if ($p && $flake =~ /$p/m) {
-                   $ignored = 1; last PATTERN; } } close($f);
-           if (! $ignored) { print $flake; our $FOUND_FLAKE = 1; }
-       }{exit $FOUND_FLAKE;
-            '""", ignore_error=noerror)
-
+    complexity = getattr(options, "complexity", 22)
+    sh("""flake8 celery | perl -mstrict -mwarnings -nle'
+        my $ignore = m/too complex \((\d+)\)/ && $1 le %s;
+        if (! $ignore) { print STDERR; our $FOUND_FLAKE = 1 }
+    }{exit $FOUND_FLAKE;
+        '""" % (complexity, ), ignore_error=noerror)
 
 @task
 def clean_readme(options):
@@ -154,7 +150,7 @@ def gitcleanforce(options):
 
 
 @task
-@needs("pep8", "flakes", "autodoc", "verifyindex",
+@needs("flake8", "autodoc", "verifyindex",
        "verifyconfigref", "test", "gitclean")
 def releaseok(options):
     pass