def has_pull_request_merged(self, repo_name): index: int = random.randint(0, len(self.__github) - 1) remaining = self.get_remaining(index) g: Github = self.__github[index] org, remaining = self.get_organization(g, self.__organization, index, remaining) repo, remaining = self._get_repository(repo_name, org, index, remaining) num_tot = None pulls = None while num_tot is None: try: remaining = self.__question_min(index, remaining, 1) pulls: PaginatedList.PaginatedList = repo.get_pulls(state='all') remaining = self.__question_min(index, remaining, 1) num_tot = pulls.totalCount except GithubException: num_tot = None except exceptions.RequestException: num_tot = None name_file_log = 'log/pull request is merged ' + repo.name + ' ' + self.__organization + '.log' num, value = Log.search_file_log(name_file_log) if value: return True else: try: while True: request_exception = False try: remaining = self.__question_min(index, remaining, 1) pull_request: PullRequest.PullRequest = pulls[num] if pull_request.is_merged(): return True except GithubException: request_exception = True except exceptions.RequestException: request_exception = True finally: if request_exception is False: num = num + 1 Log.control_write_log(name_file_log, num, False) except IndexError: return False
def get_issues_and_commits(self, index, repo, name_organization, name_file, name_file_comment): g: Github = self.__tokens[index][0] remaining = self.get_remaining(index) org, remaining = self.get_organization(g, name_organization, index, remaining) repository, remaining = self._get_repository(repo, org, index, remaining) num_tot = None issues = None while num_tot is None: try: remaining = self.__question_min(index, remaining, 1) issues = repository.get_issues(state='all') num_tot = issues.totalCount except GithubException: num_tot = None except exceptions.RequestException: num_tot = None remaining = self.__question_min(index, remaining, 1) name_file_log = 'log/issue ' + repository.name + ' ' + name_organization + '.log' num, state = Log.search_file_log(name_file_log) try: while True: request_exception = False issue_user = None issues: PaginatedList.PaginatedList repository: Repository try: remaining = self.__question_min(index, remaining, 1) issue = issues[num_tot - num] remaining = self.__question_min(index, remaining, 1) if issue.pull_request is not None: remaining = self.__question_min(index, remaining, 2) if type(issue.created_at) is not None: issue_user: Issues = Issues( repository.name, issue.user.login, issue.html_url, issue.url, issue.title, issue.body, issue.state, issue.as_pull_request(), issue.created_at, issue.updated_at) else: issue_user: Issues = Issues( repository.name, issue.user.login, issue.html_url, issue.url, issue.title, issue.body, issue.state, issue.as_pull_request(), None, None) else: remaining = self.__question_min(index, remaining, 2) if type(issue.created_at) is not None: issue_user: Issues = Issues( repository.name, issue.user.login, issue.html_url, issue.url, issue.title, issue.body, issue.state, None, issue.created_at, issue.updated_at) else: issue_user: Issues = Issues( repository.name, issue.user.login, issue.html_url, issue.url, issue.title, issue.body, issue.state, None, None, None) remaining = self.__question_min(index, remaining, 1) issue_user, remaining = self.comments_issue( issue, issue_user, index, remaining) except GithubException: request_exception = True except ConnectionError: request_exception = True except exceptions.RequestException: request_exception = True except IndexError: num = num + 1 request_exception = True finally: if issue_user is not None and request_exception is False: issue_user.write_issue(name_file, name_file_comment) num = num + 1 if (num - num_tot) == -1: raise ExitException Log.control_write_log(name_file_log, num) except ExitException: pass
def get_pull_request(self, index, repo_name, name_organization, name_file_pull_request, name_file_comment_pull_request): remaining = self.get_remaining(index) g: Github = self.__tokens[index][0] org, remaining = self.get_organization(g, name_organization, index, remaining) repo, remaining = self._get_repository(repo_name, org, index, remaining) num_tot = None pulls = None while num_tot is None: try: remaining = self.__question_min(index, remaining, 1) pulls: PaginatedList.PaginatedList = repo.get_pulls( state='all') remaining = self.__question_min(index, remaining, 1) num_tot = pulls.totalCount except GithubException: num_tot = None except exceptions.RequestException: num_tot = None name_file_log = 'log/pull ' + repo.name + ' ' + name_organization + '.log' num, state = Log.search_file_log(name_file_log) try: while True: request_exception = False pull_request_user = None try: remaining = self.__question_min(index, remaining, 1) pull_request = pulls[num_tot - num] assignees: list = list() for assignee in pull_request.assignees: assignees.append(assignee.login) labels: list = list() for label in pull_request.labels: labels.append(label.name) if assignees is None: remaining = self.__question_min(index, remaining, 1) if pull_request.is_merged(): remaining = self.__question_min( index, remaining, 1) if pull_request.merged_by is not None: remaining = self.__question_min( index, remaining, 4) pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, list(pull_request.assignee.login), pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, pull_request.is_merged(), pull_request.merged_at, pull_request.merged_by.login, pull_request.mergeable_state, pull_request.mergeable, pull_request.state) else: remaining = self.__question_min( index, remaining, 4) pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, list(pull_request.assignee.login), pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, '', pull_request.merged_at, pull_request.merged_by.login, pull_request.mergeable_state, pull_request.mergeable, pull_request.state) else: remaining = self.__question_min( index, remaining, 3) pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, list(pull_request.assignee.login), pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, pull_request.is_merged(), '', '', pull_request.mergeable_state, pull_request.mergeable, pull_request.state) else: remaining = self.__question_min(index, remaining, 1) if pull_request.is_merged(): remaining = self.__question_min( index, remaining, 1) if pull_request.merged_by is not None: remaining = self.__question_min( index, remaining, 3) pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, assignees, pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, pull_request.is_merged(), pull_request.merged_at, pull_request.merged_by.login, pull_request.mergeable_state, pull_request.mergeable, pull_request.state) else: pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, assignees, pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, pull_request.is_merged(), pull_request.merged_at, '', pull_request.mergeable_state, pull_request.mergeable, pull_request.state) else: remaining = self.__question_min( index, remaining, 2) pull_request_user = PullRequest( repo_name, pull_request.url, pull_request.html_url, pull_request.user.login, pull_request.title, pull_request.body, assignees, pull_request.commits, pull_request.created_at, pull_request.updated_at, pull_request.closed_at, pull_request.is_merged(), '', '', pull_request.mergeable_state, pull_request.mergeable, pull_request.state) pull_request_user, remaining = self._comments_pull( pull_request, pull_request_user, index, remaining) except GithubException: request_exception = True except exceptions.RequestException: request_exception = True except ConnectionError: request_exception = True except IndexError: num = num + 1 request_exception = True finally: if pull_request_user is not None and request_exception is False: num = num + 1 pull_request_user.write_pull_request( name_file_pull_request, name_file_comment_pull_request) if (num - num_tot) == -1: raise ExitException Log.control_write_log(name_file_log, num) except ExitException: pass