import pexpect import os import json import sys import subprocess import csv import ast #sys.path.append('../octohatrack') #import octohatrack.__main__ as oh csv_path = "011523_uni_contrib.csv" def main(): wd = os.getcwd() with open(csv_path, 'w', newline='') as output_file: keys = ["project_name", "project_owner", "api_contrib_count", "issue_contrib_count", "file_contrib_count", "wiki_contrib_count"] dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() with open("expanded_data_final.csv", "r") as file: reader = csv.reader(file) for i, line in enumerate(reader): project_dict ={} if "github" not in line[5]: continue repo_name = line[5].strip()[19:] project_dict["project_name"] = repo_name.split("/")[1] project_dict["project_owner"]= repo_name.split("/")[0] os.chdir("../octohatrack") os.environ["GITHUB_TOKEN"] = try: octohatrack_results = subprocess.run(['python3', '-m', 'octohatrack', repo_name, '--wait-for-reset'], capture_output = True, text=True).stdout except: print("issue with the repository, string indices must be integers") continue os.chdir(wd) split_results = octohatrack_results.split("\n") for entry in split_results: print("-------------") if "{'api_contributors'" in entry: formatted = ast.literal_eval(entry) project_dict["api_contrib_count"] = len(formatted['api_contributors']) #project_dict["api_contrib_list"] = formatted['api_contributors'] project_dict["issue_contrib_count"] = len(formatted['issue_pr_contributors']) #project_dict["issue_contrib_list"] = formatted['issue_pr_contributors'] project_dict["file_contrib_count"] = len(formatted['file_contributors']) #project_dict["file_contrib_list"] = formatted['file_contributors'] project_dict["wiki_contrib_count"] = len(formatted['file_contributors']) #project_dict["wiki_contrib_list"] = formatted['file_contributors'] dict_writer.writerow(project_dict) with open('/data/users/mgaughan/kkex_contrib_uni_011523/' + 'contrib_roster_' + project_dict["project_name"] + '.json', 'w') as data_path: json.dump(formatted, data_path) #os.chdir("../octohatrack") #subprocess.run(['python3', '-m', 'octohatrack', 'bluesky-social/atproto']) #os.chdir(wd) #def parse_results(string_results): # for letter in string_results: if __name__ == "__main__": main()