a script to read bitbucket pytest issues
This commit is contained in:
		
							parent
							
								
									581b3a110c
								
							
						
					
					
						commit
						4a1cc792c9
					
				|  | @ -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) | ||||
		Loading…
	
		Reference in New Issue