From 82b1237223f3954be008cc794b8c1753eb7c963e Mon Sep 17 00:00:00 2001 From: Abhishek Arya Date: Sun, 27 Dec 2020 23:40:49 -0800 Subject: [PATCH] Fix some missing params for gitlab repos. --- criticality_score/run.py | 48 +++++++++++++++++----------------------- setup.py | 2 +- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/criticality_score/run.py b/criticality_score/run.py index fc36ac5b9..333dbdb19 100644 --- a/criticality_score/run.py +++ b/criticality_score/run.py @@ -96,7 +96,23 @@ def comment_frequency(self): @property def dependents_count(self): - raise NotImplementedError + # TODO: Take package manager dependency trees into account. If we decide + # to replace this, then find a solution for C/C++ as well. + parsed_url = urllib.parse.urlparse(self.url) + repo_name = parsed_url.path.strip('/') + dependents_url = ( + f'https://github.com/search?q="{repo_name}"&type=commits') + content = b'' + for i in range(FAIL_RETRIES): + result = requests.get(dependents_url) + if result.status_code == 200: + content = result.content + break + time.sleep(2**i) + match = DEPENDENTS_REGEX.match(content) + if not match: + return 0 + return int(match.group(1).replace(b',', b'')) class GitHubRepository(Repository): @@ -250,23 +266,6 @@ def comment_frequency(self): since=issues_since_time).totalCount return round(comment_count / issue_count, 1) - @property - def dependents_count(self): - repo_name = self.url.replace('https://github.com/', '') - dependents_url = ( - f'https://github.com/search?q="{repo_name}"&type=commits') - content = b'' - for i in range(FAIL_RETRIES): - result = requests.get(dependents_url) - if result.status_code == 200: - content = result.content - break - time.sleep(2**i) - match = DEPENDENTS_REGEX.match(content) - if not match: - return 0 - return int(match.group(1).replace(b',', b'')) - class GitLabRepository(Repository): """Source repository hosted on GitLab.""" @@ -277,11 +276,11 @@ def _date_from_string(date_string): @property def name(self): - return self._repo.namespace['name'] + return self._repo.name @property def url(self): - return self._repo.namespace['web_url'] + return self._repo.web_url @property def language(self): @@ -317,7 +316,7 @@ def contributor_count(self): def org_count(self): # Not possible to calculate as this feature restricted to admins only. # https://docs.gitlab.com/ee/api/users.html#user-memberships-admin-only - return 0 + return 1 @property def commit_frequency(self): @@ -374,13 +373,6 @@ def comment_frequency(self): pass return round(comments_count / self.updated_issues_count, 1) - @property - def dependents_count(self): - # TODO: Implement this once this feature is stable and available to - # general users. - # https://docs.gitlab.com/ee/api/dependencies.html - return 0 - def get_param_score(param, max_value, weight=1): """Return paramater score given its current value, max value and diff --git a/setup.py b/setup.py index c70421385..c821be8db 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ setuptools.setup( name='criticality_score', - version='1.0.6', + version='1.0.7', author='Abhishek Arya', author_email='', description='Gives criticality score for an open source project',