Skip to content

Commit c605210

Browse files
authored
Merge pull request #367 from ma-garcia/dev
Work done related to issue 288
2 parents 36a38cc + 9200a2c commit c605210

File tree

2 files changed

+45
-21
lines changed

2 files changed

+45
-21
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
# Utility function to read the README file.
2727
def read(fname):
28-
return open(os.path.join(os.path.dirname(__file__), fname)).read()
28+
return open(os.path.join(os.path.dirname(__file__), fname), encoding='utf-8').read()
2929

3030

3131
def find_package_data(dirname):

src/somef/cli.py

Lines changed: 44 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import tempfile
1414
import time
1515
import urllib
16+
from datetime import datetime
1617

1718
import markdown
1819
import validators
@@ -111,6 +112,10 @@ def rate_limit_get(*args, backoff_rate=2, initial_backoff=1, **kwargs):
111112
response = requests.get(*args, **kwargs)
112113
data = response
113114
date = data.headers["date"]
115+
rate_limit_remaining = data.headers["x-ratelimit-remaining"]
116+
epochtime = int(data.headers["x-ratelimit-reset"])
117+
date_reset = datetime.fromtimestamp(epochtime)
118+
print("Rate limit ramaining: " + rate_limit_remaining + " ### Next rate limit reset at: " + str(date_reset))
114119
response = response.json()
115120
if 'message' in response and 'API rate limit exceeded' in response['message']:
116121
rate_limited = True
@@ -245,16 +250,20 @@ def get_path(obj, path):
245250
if len(license_info) > 0:
246251
filtered_resp['license'] = license_info
247252

248-
# get keywords / topics
249253
topics_headers = header
250-
topics_headers['accept'] = 'application/vnd.github.mercy-preview+json'
251-
topics_resp, date = rate_limit_get(repo_api_base_url + "/topics",
252-
headers=topics_headers)
253-
254-
if 'message' in topics_resp.keys():
255-
print("Topics Error: " + topics_resp['message'])
256-
elif topics_resp and 'names' in topics_resp.keys():
257-
filtered_resp['topics'] = topics_resp['names']
254+
# get keywords / topics
255+
if 'topics' in general_resp.keys():
256+
filtered_resp['topics'] = general_resp['topics']
257+
#else:
258+
# topics_headers = header
259+
# topics_headers['accept'] = 'application/vnd.github.mercy-preview+json'
260+
# topics_resp, date = rate_limit_get(repo_api_base_url + "/topics",
261+
# headers=topics_headers)
262+
263+
# if 'message' in topics_resp.keys():
264+
# print("Topics Error: " + topics_resp['message'])
265+
# elif topics_resp and 'names' in topics_resp.keys():
266+
# filtered_resp['topics'] = topics_resp['names']
258267

259268
# get social features: stargazers_count
260269
stargazers_info = {}
@@ -273,7 +282,7 @@ def get_path(obj, path):
273282
filtered_resp['forksCount'] = forks_info
274283

275284
## get languages
276-
languages, date = rate_limit_get(filtered_resp['languages_url'])
285+
languages, date = rate_limit_get(filtered_resp['languages_url'], headers=header)
277286
if "message" in languages:
278287
print("Languages Error: " + languages["message"])
279288
else:
@@ -282,20 +291,22 @@ def get_path(obj, path):
282291
del filtered_resp['languages_url']
283292

284293
# get default README
285-
readme_info, date = rate_limit_get(repo_api_base_url + "/readme",
286294
headers=topics_headers,
287-
params=ref_param)
288-
if 'message' in readme_info.keys():
289-
print("README Error: " + readme_info['message'])
290-
text = ""
291-
else:
292-
readme = base64.b64decode(readme_info['content']).decode("utf-8")
293-
text = readme
294-
filtered_resp['readmeUrl'] = readme_info['html_url']
295+
#readme_info, date = rate_limit_get(repo_api_base_url + "/readme",
296+
# headers=topics_headers,
297+
# params=ref_param)
298+
#if 'message' in readme_info.keys():
299+
# print("README Error: " + readme_info['message'])
300+
# text = ""
301+
#else:
302+
# readme = base64.b64decode(readme_info['content']).decode("utf-8")
303+
# text = readme
304+
# filtered_resp['readmeUrl'] = readme_info['html_url']
295305

296306
# get full git repository
297307
# todo: maybe it should be optional, as this could take some time?
298308

309+
text = ""
299310
# create a temporary directory
300311
with tempfile.TemporaryDirectory() as temp_dir:
301312

@@ -334,6 +345,19 @@ def get_path(obj, path):
334345
dockerfiles.append(repo_relative_path + "/" + filename)
335346
if filename.lower().endswith(".ipynb"):
336347
notebooks.append(os.path.join(repo_relative_path, filename))
348+
if "README" == filename.upper() or "README.MD" == filename.upper():
349+
if (repo_relative_path == "."):
350+
try:
351+
with open(os.path.join(dirpath, filename), "rb") as data_file:
352+
data_file_text = data_file.read()
353+
text = data_file_text.decode("utf-8")
354+
if repository_url.endswith("/"):
355+
filtered_resp['readmeUrl'] = repository_url + filename
356+
else:
357+
filtered_resp['readmeUrl'] = repository_url + "/" + filename
358+
except:
359+
print("README Error: error while reading file content")
360+
337361
if "LICENSE" == filename.upper() or "LICENSE.MD" == filename.upper():
338362
try:
339363
with open(os.path.join(dirpath, filename), "rb") as data_file:
@@ -1686,7 +1710,7 @@ def cli_get_data(threshold, ignore_classifiers, repo_url=None, doc_src=None, loc
16861710
except GithubUrlError:
16871711
return None
16881712
elif local_repo is not None:
1689-
# assert (local_repo is not None)
1713+
assert (local_repo is not None)
16901714
try:
16911715
text, github_data = load_local_repository_metadata(local_repo)
16921716
if text == "":

0 commit comments

Comments
 (0)