]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
tools: ceph-release-notes: pep8 compliance 14156/head
authorNathan Cutler <ncutler@suse.com>
Sun, 26 Mar 2017 17:25:40 +0000 (19:25 +0200)
committerNathan Cutler <ncutler@suse.com>
Sun, 26 Mar 2017 17:38:49 +0000 (19:38 +0200)
This commit makes the script pass flake8

Signed-off-by: Nathan Cutler <ncutler@suse.com>
src/script/ceph-release-notes

index 12e76ecc50cc2c7702eee70aa11cea832ddb0fd0..3687d4b9ca917e1d9b9243edd7a0b0377691ef97 100755 (executable)
@@ -19,7 +19,8 @@ Next either set the github token as an env variable
 
 Example:
 
-  ceph-release-notes -r tags/v0.87..origin/giant $(git rev-parse --show-toplevel)
+  ceph-release-notes -r tags/v0.87..origin/giant \
+      $(git rev-parse --show-toplevel)
 
 """
 
@@ -36,50 +37,64 @@ from git import Repo
 
 fixes_re = re.compile(r"Fixes\:? #(\d+)")
 # labels is the list of relevant labels defined for github.com/ceph/ceph
-labels = [ 'bluestore', 'build/ops', 'cephfs', 'common', 'core', 'mgr',
-           'mon', 'performance', 'pybind', 'rdma', 'rgw', 'rbd', 'tests',
-           'tools' ]
+labels = ['bluestore', 'build/ops', 'cephfs', 'common', 'core', 'mgr',
+          'mon', 'performance', 'pybind', 'rdma', 'rgw', 'rbd', 'tests',
+          'tools']
 merge_re = re.compile("Merge pull request #(\d+).*")
 # prefixes is the list of commit description prefixes we recognize
-prefixes = [ 'bluestore', 'build/ops', 'cephfs', 'cephx', 'cli', 'cmake',
-             'common', 'core', 'crush', 'doc', 'fs', 'librados', 'librbd',
-             'log', 'mds', 'mgr', 'mon', 'msg', 'objecter', 'osd', 'pybind',
-             'rbd', 'rbd-mirror', 'rbd-nbd', 'rgw', 'tests', 'tools' ]
+prefixes = ['bluestore', 'build/ops', 'cephfs', 'cephx', 'cli', 'cmake',
+            'common', 'core', 'crush', 'doc', 'fs', 'librados', 'librbd',
+            'log', 'mds', 'mgr', 'mon', 'msg', 'objecter', 'osd', 'pybind',
+            'rbd', 'rbd-mirror', 'rbd-nbd', 'rgw', 'tests', 'tools']
 signed_off_re = re.compile("Signed-off-by: (.+) <")
 tracker_re = re.compile("http://tracker.ceph.com/issues/(\d+)")
 tracker_uri = "http://tracker.ceph.com/issues/{0}.json"
 
+
 def get_original_issue(issue, verbose):
-    r = requests.get(tracker_uri.format(issue),params={"include":"relations"}).json()
+    r = requests.get(tracker_uri.format(issue),
+                     params={"include": "relations"}).json()
 
     # looking up for the original issue only makes sense
     # when dealing with an issue in the Backport tracker
     if r["issue"]["tracker"]["name"] != "Backport":
         if verbose:
-            print ("http://tracker.ceph.com/issues/" + issue + " is from the tracker " + r["issue"]["tracker"]["name"] + ", do not look for the original issue")
+            print ("http://tracker.ceph.com/issues/" + issue +
+                   " is from the tracker " + r["issue"]["tracker"]["name"] +
+                   ", do not look for the original issue")
         return issue
 
     # if a Backport issue does not have a relation, keep it
     if "relations" not in r["issue"]:
         if verbose:
-            print ("http://tracker.ceph.com/issues/" + issue + " has no relations, do not look for the original issue")
+            print ("http://tracker.ceph.com/issues/" + issue +
+                   " has no relations, do not look for the original issue")
         return issue
-    
-    copied_to = [str(i['issue_id']) for i in r["issue"]["relations"] if i["relation_type"] == "copied_to"]
+
+    copied_to = [
+                    str(i['issue_id']) for i in r["issue"]["relations"]
+                    if i["relation_type"] == "copied_to"
+                ]
     if copied_to:
         if len(copied_to) > 1:
             if verbose:
-                print ("ERROR: http://tracker.ceph.com/issues/" + issue + " has more than one Copied To relation")
+                print ("ERROR: http://tracker.ceph.com/issues/" + issue +
+                       " has more than one Copied To relation")
             return issue
         if verbose:
-            print ("http://tracker.ceph.com/issues/" + issue + " is the backport of http://tracker.ceph.com/issues/" + copied_to[0])
+            print ("http://tracker.ceph.com/issues/" + issue +
+                   " is the backport of http://tracker.ceph.com/issues/" +
+                   copied_to[0])
         return copied_to[0]
     else:
         if verbose:
-            print ("http://tracker.ceph.com/issues/" + issue + " has no copied_to relations, do not look for the original issue")
+            print ("http://tracker.ceph.com/issues/" + issue +
+                   " has no copied_to relations; do not look for the" +
+                   " original issue")
         return issue
 
-def split_component(title,gh,number):
+
+def split_component(title, gh, number):
     title_re = '(' + '|'.join(prefixes) + ')(:.*)'
     match = re.match(title_re, title)
     if match:
@@ -88,12 +103,12 @@ def split_component(title,gh,number):
         issue = gh.repos("ceph")("ceph").issues(number).get()
         issue_labels = {it['name'] for it in issue['labels']}
         if 'documentation' in issue_labels:
-            return 'doc: '+ title
+            return 'doc: ' + title
         item = labels.intersection(issue_labels)
         if item:
-            return ",".join(item)+': '+title
+            return ",".join(item) + ': ' + title
         else:
-            return 'UNKNOWN: '+ title
+            return 'UNKNOWN: ' + title
 
 
 def make_release_notes(gh, repo, ref, plaintext, verbose, strict, use_tags):
@@ -109,7 +124,8 @@ def make_release_notes(gh, repo, ref, plaintext, verbose, strict, use_tags):
             print ("Considering PR#" + number)
             # do not pick up ceph/ceph-qa-suite.git PRs
             if int(number) < 1311:
-                print ("Ignoring low-numbered PR, probably picked up from ceph/ceph-qa-suite.git")
+                print ("Ignoring low-numbered PR, probably picked up from"
+                       " ceph/ceph-qa-suite.git")
                 continue
             pr = gh.repos("ceph")("ceph").pulls(number).get()
             title = pr['title']
@@ -139,31 +155,45 @@ def make_release_notes(gh, repo, ref, plaintext, verbose, strict, use_tags):
                 message = None
             issues = []
             if pr['body']:
-                issues = fixes_re.findall(pr['body']) + tracker_re.findall(pr['body'])
+                issues = fixes_re.findall(pr['body']) + tracker_re.findall(
+                    pr['body']
+                )
 
             authors = {}
-            for c in repo.iter_commits("{sha1}^1..{sha1}^2".format(sha1=commit.hexsha)):
-                for author in re.findall("Signed-off-by:\s*(.*?)\s*<", c.message):
+            for c in repo.iter_commits(
+                         "{sha1}^1..{sha1}^2".format(sha1=commit.hexsha)
+                     ):
+                for author in re.findall(
+                                  "Signed-off-by:\s*(.*?)\s*<", c.message
+                              ):
                     authors[author] = 1
-                issues.extend(fixes_re.findall(c.message) + tracker_re.findall(c.message))
+                issues.extend(fixes_re.findall(c.message) +
+                              tracker_re.findall(c.message))
             if authors:
                 author = ", ".join(authors.keys())
             else:
                 author = commit.parents[-1].author.name
 
             if strict and not issues:
-                print ("ERROR: https://github.com/ceph/ceph/pull/" + str(number) + " has no associated issue")
-                continue    
-            
+                print ("ERROR: https://github.com/ceph/ceph/pull/" +
+                       str(number) + " has no associated issue")
+                continue
+
             if strict:
-                title_re = '^(?:hammer|infernalis|jewel|kraken):\s+(' + '|'.join(prefixes) + ')(:.*)'
+                title_re = (
+                    '^(?:hammer|infernalis|jewel|kraken):\s+(' +
+                    '|'.join(prefixes) +
+                    ')(:.*)'
+                )
                 match = re.match(title_re, title)
                 if not match:
-                    print ("ERROR: https://github.com/ceph/ceph/pull/" + str(number) + " title " + title.encode("utf-8") + " does not match " + title_re)
+                    print ("ERROR: https://github.com/ceph/ceph/pull/" +
+                           str(number) + " title " + title.encode("utf-8") +
+                           " does not match " + title_re)
                 else:
                     title = match.group(1) + match.group(2)
             if use_tags:
-                title = split_component(title,gh,number)
+                title = split_component(title, gh, number)
 
             pr2info[number] = (author, title, message)
 
@@ -179,21 +209,42 @@ def make_release_notes(gh, repo, ref, plaintext, verbose, strict, use_tags):
     if strict:
         for (issue, prs) in issue2prs.iteritems():
             if len(prs) > 1:
-                print (">>>>>>> " + str(len(prs)) + " pr for issue " + issue + " " + str(prs))
+                print (">>>>>>> " + str(len(prs)) + " pr for issue " +
+                       issue + " " + str(prs))
 
-    for (pr, (author, title, message)) in sorted(pr2info.iteritems(), key=lambda (k,v): (v[2], v[1])):
+    for (pr, (author, title, message)) in sorted(
+        pr2info.iteritems(), key=lambda (k, v): (v[2], v[1])
+    ):
         if pr in pr2issues:
             if plaintext:
                 issues = map(lambda issue: '#' + str(issue), pr2issues[pr])
             else:
-                issues = map(lambda issue: '`issue#{issue} <http://tracker.ceph.com/issues/{issue}>`_'.format(issue=issue), pr2issues[pr])
+                issues = map(lambda issue: (
+                    '`issue#{issue} <http://tracker.ceph.com/issues/{issue}>`_'
+                    ).format(issue=issue), pr2issues[pr]
+                )
             issues = ", ".join(issues) + ", "
         else:
             issues = ''
         if plaintext:
-            print ("* {title} ({issues}{author})".format(title=title.encode("utf-8"), issues=issues, author=author.encode("utf-8")))
+            print ("* {title} ({issues}{author})".format(
+                    title=title.encode("utf-8"),
+                    issues=issues,
+                    author=author.encode("utf-8")
+                )
+            )
         else:
-            print ("* {title} ({issues}`pr#{pr} <https://github.com/ceph/ceph/pull/{pr}>`_, {author})".format(title=title.encode("utf-8"), issues=issues, author=author.encode("utf-8"), pr=pr))
+            print (
+                (
+                    "* {title} ({issues}`pr#{pr} <"
+                    "https://github.com/ceph/ceph/pull/{pr}"
+                    ">`_, {author})"
+                ).format(
+                    title=title.encode("utf-8"),
+                    issues=issues,
+                    author=author.encode("utf-8"), pr=pr
+                )
+            )
         if message:
             print (message)
 
@@ -202,14 +253,17 @@ if __name__ == "__main__":
     desc = '''
     Make ceph release notes for a given revision. Eg usage:
 
-    $ ceph-release-notes -r tags/v0.87..origin/giant $(git rev-parse --show-toplevel)
+    $ ceph-release-notes -r tags/v0.87..origin/giant \
+        $(git rev-parse --show-toplevel)
 
     It is recommended to set the github env. token in order to avoid
     hitting the api rate limits.
     '''
 
-    parser = argparse.ArgumentParser(description=desc,
-                                     formatter_class=argparse.RawTextHelpFormatter)
+    parser = argparse.ArgumentParser(
+        description=desc,
+        formatter_class=argparse.RawTextHelpFormatter
+    )
 
     parser.add_argument("--rev", "-r",
                         help="git revision range for creating release notes")
@@ -224,8 +278,11 @@ if __name__ == "__main__":
                         help="strict, recommended only for backport releases")
     parser.add_argument("repo", metavar="repo",
                         help="path to ceph git repo")
-    parser.add_argument("--token", default=os.getenv("GITHUB_ACCESS_TOKEN"),
-                        help="Github Access Token ($GITHUB_ACCESS_TOKEN otherwise)")
+    parser.add_argument(
+        "--token",
+        default=os.getenv("GITHUB_ACCESS_TOKEN"),
+        help="Github Access Token ($GITHUB_ACCESS_TOKEN otherwise)",
+    )
     parser.add_argument("--use-tags", default=False,
                         help="Use github tags to guess the component")
 
@@ -233,4 +290,12 @@ if __name__ == "__main__":
     gh = github.GitHub(
         access_token=args.token)
 
-    make_release_notes(gh, Repo(args.repo), args.rev, args.text, args.verbose, args.strict, args.use_tags)
+    make_release_notes(
+        gh,
+        Repo(args.repo),
+        args.rev,
+        args.text,
+        args.verbose,
+        args.strict,
+        args.use_tags
+    )