summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorholger krekel <holger@merlinux.eu>2013-11-18 21:31:32 +0100
committerholger krekel <holger@merlinux.eu>2013-11-18 21:31:32 +0100
commit4a1cc792c9b6db1622f97c18a69c5f90c1aadef0 (patch)
tree10fef2e94cfe930991ada02b5abbd8eaf975f885 /extra
parent581b3a110c9503f84fbeac9d2515e8d0d5818cb1 (diff)
downloadpytest-4a1cc792c9b6db1622f97c18a69c5f90c1aadef0.tar.gz
a script to read bitbucket pytest issues
Diffstat (limited to 'extra')
-rw-r--r--extra/get_issues.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/extra/get_issues.py b/extra/get_issues.py
new file mode 100644
index 000000000..596f09a12
--- /dev/null
+++ b/extra/get_issues.py
@@ -0,0 +1,73 @@
+import json
+import py
+import textwrap
+
+issues_url = "http://bitbucket.org/api/1.0/repositories/hpk42/pytest/issues"
+
+import requests
+
+def get_issues():
+ chunksize = 50
+ start = 0
+ issues = []
+ while 1:
+ post_data = {"accountname": "hpk42",
+ "repo_slug": "pytest",
+ "start": start,
+ "limit": chunksize}
+ print ("getting from", start)
+ r = requests.get(issues_url, params=post_data)
+ data = r.json()
+ issues.extend(data["issues"])
+ if start + chunksize >= data["count"]:
+ return issues
+ start += chunksize
+
+kind2num = "bug enhancement task proposal".split()
+
+status2num = "new open resolved duplicate invalid wontfix".split()
+
+def main(args):
+ cachefile = py.path.local(args.cache)
+ if not cachefile.exists() or args.refresh:
+ issues = get_issues()
+ cachefile.write(json.dumps(issues))
+ else:
+ issues = json.loads(cachefile.read())
+
+ open_issues = [x for x in issues
+ if x["status"] in ("new", "open")]
+
+ def kind_and_id(x):
+ kind = x["metadata"]["kind"]
+ return kind2num.index(kind), len(issues)-int(x["local_id"])
+ open_issues.sort(key=kind_and_id)
+ report(open_issues)
+
+def report(issues):
+ for issue in issues:
+ metadata = issue["metadata"]
+ priority = issue["priority"]
+ title = issue["title"]
+ content = issue["content"]
+ kind = metadata["kind"]
+ status = issue["status"]
+ id = issue["local_id"]
+ link = "https://bitbucket.org/hpk42/pytest/issues/%s/" % id
+ print("----")
+ print(status, kind, link)
+ print(title)
+ #print()
+ #lines = content.split("\n")
+ #print ("\n".join(lines[:3]))
+ #if len(lines) > 3 or len(content) > 240:
+ # print ("...")
+
+if __name__ == "__main__":
+ import argparse
+ parser = argparse.ArgumentParser("process bitbucket issues")
+ parser.add_argument("--refresh", help="invalidate cache, refresh issues")
+ parser.add_argument("--cache", action="store", default="issues.json",
+ help="cache file")
+ args = parser.parse_args()
+ main(args)