def check_backup(store, usermap): _, comments = bitbucket.stores(store) _, comments_backup = bitbucket.stores(store, backup=True) comments = dict(comments) comments_backup = dict(comments_backup) for d in comments, comments_backup: for k, v in list(d.items()): items = [bitbucket.simplify_comment(i, usermap) for i in (v or [])] items = [c for c in items if TRANSFER_COMMENT not in c['body']] if items: d[k] = items for item in items: item.pop('body', None) else: d.pop(k, None) all_keys = {*comments, *comments_backup} print(sorted(map(int, all_keys))) print(len(all_keys)) differences = {} for key in all_keys: old_len = len(comments_backup.get(key, ())) new_len = len(comments.get(key, ())) print(key, old_len, new_len) if old_len != new_len: differences[int(key)] = old_len, new_len import pprint pprint.pprint(differences) print('cul', sum(abs(a - b) for a, b in differences.values()))
def check_backup(store, usermap): _, comments = bitbucket.stores(store) _, comments_backup = bitbucket.stores(store, backup=True) comments = dict(comments) comments_backup = dict(comments_backup) for d in comments, comments_backup: for k, v in list(d.items()): items = [ bitbucket.simplify_comment(i, usermap) for i in (v or []) ] items = [ c for c in items if TRANSFER_COMMENT not in c['body'] ] if items: d[k] = items for item in items: item.pop('body', None) else: d.pop(k, None) all_keys = {*comments, *comments_backup} print(sorted(map(int, all_keys))) print(len(all_keys)) differences = {} for key in all_keys: old_len = len(comments_backup.get(key, ())) new_len = len(comments.get(key, ())) print(key, old_len, new_len) if old_len != new_len: differences[int(key)] = old_len, new_len import pprint pprint.pprint(differences) print('cul', sum(abs(a-b) for a, b in differences.values()))
def fetch(store): issues, comments = bitbucket.stores(store) get = bitbucket.get_getter(store) current_issues = bitbucket.iter_issues(get) for elem in utils.gprocess(current_issues, label="Fetching Issues"): eid = elem['local_id'] issues[eid] = elem existing = comments.get(eid) comments[eid] = bitbucket.get_comments(get, elem, existing)
def convert(store, usermap=None): issues, comments = bitbucket.stores(store) simple_store = FileStore.ensure(store.path / 'github_uploads') repo = store['repos']['bitbucket'] items = issues.items() usermap = usermap or store.get('users', {}) for key, issue in gprocess(items, label='Preparing Import Requests'): issue['comments'] = comments[key] simplified = bitbucket.simplify_issue(bb_issue=issue, repo=repo, usermap=usermap) simple_store[key] = simplified
def convert(store): issues, comments = bitbucket.stores(store) simple_store = FileStore.ensure(store.path / 'github_uploads') repo = store['repos']['bitbucket'] items = issues.items() for key, issue in gprocess(items, label='Preparing Import Requests'): issue['comments'] = comments[key] simplified = bitbucket.simplify_issue( bb_issue=issue, repo=repo, usermap=store.get('users', {})) simple_store[key] = simplified
def extract_users(store, usermap=None): """extract username list from authormap""" issues, comments = bitbucket.stores(store) usermap = usermap or store.get('users', {}) for item in gprocess(issues, label='Extracting usermap'): issue = issues[item] comment_list = comments[item] or [] # accounts for None authors = utils.contributors(issue, comment_list) for author in authors: if author not in usermap: usermap[author] = None store['users'] = usermap
def extract_users(store): """extract username list from authormap""" issues, comments = bitbucket.stores(store) usermap = store.get('users', {}) for item in gprocess(issues, label='Extracting usermap'): issue = issues[item] comment_list = comments[item] or [] # accounts for None authors = utils.contributors(issue, comment_list) for author in authors: if author not in usermap: usermap[author] = None store['users'] = usermap
def user_stats(store, usermap=None, only_unmapped=False): """extract username list from authormap""" issues, comments = bitbucket.stores(store) users = store.get('users', {}) usermap = usermap or {} for item in gprocess(issues, label='Extracting usermap'): issue = issues[item] comment_list = comments[item] or [] # accounts for None authors = utils.contributors(issue, comment_list, include_date=True) for (author, last_updated) in authors: if only_unmapped and users.get(author) is not None: continue infos = usermap.setdefault(author, {}) infos['count'] = infos.get('count', 0) + 1 infos['last_updated'] = max(last_updated, infos.get('last_updated', '')) infos.setdefault('status', set()).add(issue['status']) max_author_len = max(len(x) for x in usermap) max_count_len = len("%d" % max(x['count'] for x in usermap.values())) usermap_items = list(dict(author=k, **v) for k, v in usermap.items()) usermap_items = sorted(usermap_items, key=operator.itemgetter('count', 'last_updated')) for info in usermap_items: print("{author:{max_author_len}} " "{count:>{max_count_len}} " "{last_updated} {status}".format( author=info['author'], count=info['count'], last_updated=info['last_updated'], status=info['status'], max_author_len=max_author_len, max_count_len=max_count_len))