summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2012-11-27 15:48:42 +0000
committerAsk Solem <ask@celeryproject.org>2012-11-27 15:48:42 +0000
commitf68f8ac8c0808c6c33f3c4cbab7c7932e1ccd48d (patch)
treea4ec01bc6f13bb11ece248c5384103c76f3bc22b /extra
parent325fcc0522571096b424080c232f0d87a1e5865e (diff)
parent6b77885cf0e26b0f08a38db08835e8e43cd3ae91 (diff)
downloadkombu-f68f8ac8c0808c6c33f3c4cbab7c7932e1ccd48d.tar.gz
Merge branch 'master' into 3.0
Conflicts: kombu/abstract.py kombu/clocks.py kombu/messaging.py kombu/pidbox.py kombu/pools.py kombu/tests/mocks.py kombu/tests/test_common.py kombu/tests/test_messaging.py kombu/tests/test_serialization.py kombu/tests/test_utils.py kombu/tests/transport/test_redis.py kombu/tests/utilities/test_encoding.py kombu/transport/pika.py kombu/transport/zmq.py kombu/transport/zookeeper.py kombu/utils/__init__.py kombu/utils/encoding.py kombu/utils/finalize.py pavement.py requirements/default.txt
Diffstat (limited to 'extra')
-rwxr-xr-xextra/release/bump_version.py3
-rwxr-xr-xextra/release/doc4allmods3
-rwxr-xr-xextra/release/flakeplus.py126
3 files changed, 129 insertions, 3 deletions
diff --git a/extra/release/bump_version.py b/extra/release/bump_version.py
index d7b9c6fd..abda578e 100755
--- a/extra/release/bump_version.py
+++ b/extra/release/bump_version.py
@@ -1,5 +1,4 @@
#!/usr/bin/env python
-
from __future__ import absolute_import
import errno
@@ -22,7 +21,7 @@ def cmd(*args):
def no_enoent():
try:
yield
- except OSError as exc:
+ except OSError, exc:
if exc.errno != errno.ENOENT:
raise
diff --git a/extra/release/doc4allmods b/extra/release/doc4allmods
index 4651dcd4..f95fee2f 100755
--- a/extra/release/doc4allmods
+++ b/extra/release/doc4allmods
@@ -2,7 +2,8 @@
PACKAGE="$1"
SKIP_PACKAGES="$PACKAGE tests management urls"
-SKIP_FILES="kombu.utils.eventio.rst
+SKIP_FILES="kombu.entity.rst
+ kombu.messaging.rst
kombu.transport.django.migrations.rst
kombu.transport.django.migrations.0001_initial.rst
kombu.transport.django.management.rst
diff --git a/extra/release/flakeplus.py b/extra/release/flakeplus.py
new file mode 100755
index 00000000..6fe1f1fc
--- /dev/null
+++ b/extra/release/flakeplus.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+from __future__ import absolute_import
+from __future__ import with_statement
+
+import os
+import re
+import sys
+
+from collections import defaultdict
+from unipath import Path
+
+RE_COMMENT = r'^\s*\#'
+RE_NOQA = r'.+?\#\s+noqa+'
+RE_MULTILINE_COMMENT_O = r'^\s*(?:\'\'\'|""").+?(?:\'\'\'|""")'
+RE_MULTILINE_COMMENT_S = r'^\s*(?:\'\'\'|""")'
+RE_MULTILINE_COMMENT_E = r'(?:^|.+?)(?:\'\'\'|""")'
+RE_WITH = r'(?:^|\s+)with\s+'
+RE_WITH_IMPORT = r'''from\s+ __future__\s+ import\s+ with_statement'''
+RE_PRINT = r'''(?:^|\s+)print\((?:"|')(?:\W+?)?[A-Z0-9:]{2,}'''
+RE_ABS_IMPORT = r'''from\s+ __future__\s+ import\s+ absolute_import'''
+
+acc = defaultdict(lambda: {"abs": False, "print": False})
+
+
+def compile(regex):
+ return re.compile(regex, re.VERBOSE)
+
+
+class FlakePP(object):
+ re_comment = compile(RE_COMMENT)
+ re_ml_comment_o = compile(RE_MULTILINE_COMMENT_O)
+ re_ml_comment_s = compile(RE_MULTILINE_COMMENT_S)
+ re_ml_comment_e = compile(RE_MULTILINE_COMMENT_E)
+ re_abs_import = compile(RE_ABS_IMPORT)
+ re_print = compile(RE_PRINT)
+ re_with_import = compile(RE_WITH_IMPORT)
+ re_with = compile(RE_WITH)
+ re_noqa = compile(RE_NOQA)
+ map = {"abs": True, "print": False,
+ "with": False, "with-used": False}
+
+ def __init__(self, verbose=False):
+ self.verbose = verbose
+ self.steps = (("abs", self.re_abs_import),
+ ("with", self.re_with_import),
+ ("with-used", self.re_with),
+ ("print", self.re_print))
+
+ def analyze_fh(self, fh):
+ steps = self.steps
+ filename = fh.name
+ acc = dict(self.map)
+ index = 0
+ errors = [0]
+
+ def error(fmt, **kwargs):
+ errors[0] += 1
+ self.announce(fmt, **dict(kwargs, filename=filename))
+
+ for index, line in enumerate(self.strip_comments(fh)):
+ for key, pattern in steps:
+ if pattern.match(line):
+ acc[key] = True
+ if index:
+ if not acc["abs"]:
+ error("%(filename)s: missing abs import")
+ if acc["with-used"] and not acc["with"]:
+ error("%(filename)s: missing with import")
+ if acc["print"]:
+ error("%(filename)s: left over print statement")
+
+ return filename, errors[0], acc
+
+ def analyze_file(self, filename):
+ with open(filename) as fh:
+ return self.analyze_fh(fh)
+
+ def analyze_tree(self, dir):
+ for dirpath, _, filenames in os.walk(dir):
+ for path in (Path(dirpath, f) for f in filenames):
+ if path.endswith(".py"):
+ yield self.analyze_file(path)
+
+ def analyze(self, *paths):
+ for path in map(Path, paths):
+ if path.isdir():
+ for res in self.analyze_tree(path):
+ yield res
+ else:
+ yield self.analyze_file(path)
+
+ def strip_comments(self, fh):
+ re_comment = self.re_comment
+ re_ml_comment_o = self.re_ml_comment_o
+ re_ml_comment_s = self.re_ml_comment_s
+ re_ml_comment_e = self.re_ml_comment_e
+ re_noqa = self.re_noqa
+ in_ml = False
+
+ for line in fh.readlines():
+ if in_ml:
+ if re_ml_comment_e.match(line):
+ in_ml = False
+ else:
+ if re_noqa.match(line) or re_ml_comment_o.match(line):
+ pass
+ elif re_ml_comment_s.match(line):
+ in_ml = True
+ elif re_comment.match(line):
+ pass
+ else:
+ yield line
+
+ def announce(self, fmt, **kwargs):
+ sys.stderr.write((fmt + "\n") % kwargs)
+
+
+def main(argv=sys.argv, exitcode=0):
+ for _, errors, _ in FlakePP(verbose=True).analyze(*argv[1:]):
+ if errors:
+ exitcode = 1
+ return exitcode
+
+
+if __name__ == "__main__":
+ sys.exit(main())