From 161411c6696b90b8f80d87e500b1be50daa71af3 Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Tue, 24 Oct 2023 09:34:26 -0500 Subject: [PATCH 1/4] We should be using v2 endpoints, apparently --- etc/downloads_badges.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/downloads_badges.py b/etc/downloads_badges.py index 229d55ab8..3774ccfbb 100644 --- a/etc/downloads_badges.py +++ b/etc/downloads_badges.py @@ -71,8 +71,8 @@ def get_default_value(downloads): session = requests.Session() # Get the data for both the legacy namespace and our current one -pyramid_arima = json.loads(session.get('https://api.pepy.tech/api/projects/pyramid-arima').text) -pmdarima = json.loads(session.get('https://api.pepy.tech/api/projects/pmdarima').text) +pyramid_arima = json.loads(session.get('https://api.pepy.tech/api/v2/projects/pyramid-arima').text) +pmdarima = json.loads(session.get('https://api.pepy.tech/api/v2/projects/pmdarima').text) # Sum up pmdarima and pyramid-arima downloads to the past week pmdarima_downloads = 0 From 7caca59c97dffe271329bc57a5bb90bd0494d3b9 Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Tue, 24 Oct 2023 09:53:56 -0500 Subject: [PATCH 2/4] Adjust for new resposne body --- etc/downloads_badges.py | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/etc/downloads_badges.py b/etc/downloads_badges.py index 3774ccfbb..6659a989b 100644 --- a/etc/downloads_badges.py +++ b/etc/downloads_badges.py @@ -1,3 +1,4 @@ +from collections import defaultdict from datetime import date, timedelta import json import math @@ -43,6 +44,26 @@ def millify(n): return f'{final_output}{millnames[millidx]}' +def downloads_per_day(downloads_per_version): + """Find the total number of downloads for a given day + + Parameters + ---------- + downloads_per_version: dict + A dict of versions and downloads for that version + + Returns + ------- + total : int + The total number of downloads on a given day across all versions. + """ + total = 0 + for download_stat in downloads_per_version.values(): + total += download_stat + + return total + + def get_default_value(downloads): """Find the default value (one day's worth of downloads) for a given input @@ -58,7 +79,7 @@ def get_default_value(downloads): that are contained in the input dictionary. """ last_7_keys = sorted(downloads.keys())[-7:] - default_value = int(mean([downloads[key] for key in last_7_keys])) + default_value = int(mean([downloads_per_day(downloads[key]) for key in last_7_keys])) return default_value @@ -78,18 +99,20 @@ def get_default_value(downloads): pmdarima_downloads = 0 default_pmdarima_value = get_default_value(pmdarima['downloads']) for i in range(7): - pmdarima_downloads += pmdarima['downloads'].get( - (last_week + timedelta(days=i)).strftime(DATE_FORMAT), - default_pmdarima_value - ) + new_downloads = pmdarima['downloads'].get((last_week + timedelta(days=i)).strftime(DATE_FORMAT)) + if new_downloads is not None: + pmdarima_downloads += downloads_per_day(new_downloads) + else: + pmdarima_downloads += default_pmdarima_value pyramid_arima_downloads = 0 default_pyramid_arima_value = get_default_value(pyramid_arima['downloads']) for i in range(7): - pyramid_arima_downloads += pyramid_arima['downloads'].get( - (last_week + timedelta(days=i)).strftime(DATE_FORMAT), - default_pyramid_arima_value - ) + new_downloads = pyramid_arima['downloads'].get((last_week + timedelta(days=i)).strftime(DATE_FORMAT)) + if new_downloads is not None: + pyramid_arima_downloads += downloads_per_day(new_downloads) + else: + pyramid_arima_downloads += default_pyramid_arima_value # Millify the totals total_downloads = millify(pyramid_arima['total_downloads'] + pmdarima['total_downloads']) From ae4ca54bf2c4297f23ea2ae7b82b4d79dd88e81b Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Tue, 24 Oct 2023 09:54:46 -0500 Subject: [PATCH 3/4] Remove unused import --- etc/downloads_badges.py | 1 - 1 file changed, 1 deletion(-) diff --git a/etc/downloads_badges.py b/etc/downloads_badges.py index 6659a989b..dec112c10 100644 --- a/etc/downloads_badges.py +++ b/etc/downloads_badges.py @@ -1,4 +1,3 @@ -from collections import defaultdict from datetime import date, timedelta import json import math From 9dbc5e4b5565cf9431e85d7629ee255822b19f7c Mon Sep 17 00:00:00 2001 From: Aaron Smith Date: Mon, 30 Oct 2023 12:18:41 -0500 Subject: [PATCH 4/4] Add API key --- etc/downloads_badges.py | 1 + 1 file changed, 1 insertion(+) diff --git a/etc/downloads_badges.py b/etc/downloads_badges.py index dec112c10..67b49da0d 100644 --- a/etc/downloads_badges.py +++ b/etc/downloads_badges.py @@ -89,6 +89,7 @@ def get_default_value(downloads): # Open a session to save time session = requests.Session() +session.headers.update({"X-Api-Key": os.getenv("PEPY_API_KEY")}) # Get the data for both the legacy namespace and our current one pyramid_arima = json.loads(session.get('https://api.pepy.tech/api/v2/projects/pyramid-arima').text)