3
3
import math
4
4
import os
5
5
import requests
6
+ from statistics import mean
6
7
7
8
8
9
def millify (n ):
@@ -42,6 +43,25 @@ def millify(n):
42
43
return f'{ final_output } { millnames [millidx ]} '
43
44
44
45
46
+ def get_default_value (downloads ):
47
+ """Find the default value (one day's worth of downloads) for a given input
48
+
49
+ Parameters
50
+ ----------
51
+ downloads : dict
52
+ A dict of dates and downloads on that day
53
+
54
+ Returns
55
+ -------
56
+ default_value : int
57
+ The default value, which is the average of the last 7 days of downloads
58
+ that are contained in the input dictionary.
59
+ """
60
+ last_7_keys = sorted (downloads .keys ())[- 7 :]
61
+ default_value = int (mean ([downloads [key ] for key in last_7_keys ]))
62
+ return default_value
63
+
64
+
45
65
# Used to calculate downloads for the last week
46
66
today = date .today ()
47
67
last_week = today - timedelta (days = 7 )
@@ -56,12 +76,20 @@ def millify(n):
56
76
57
77
# Sum up pmdarima and pyramid-arima downloads to the past week
58
78
pmdarima_downloads = 0
79
+ default_pmdarima_value = get_default_value (pmdarima ['downloads' ])
59
80
for i in range (7 ):
60
- pmdarima_downloads += pmdarima ['downloads' ][(last_week + timedelta (days = i )).strftime (DATE_FORMAT )]
81
+ pmdarima_downloads += pmdarima ['downloads' ].get (
82
+ (last_week + timedelta (days = i )).strftime (DATE_FORMAT ),
83
+ default_pmdarima_value
84
+ )
61
85
62
86
pyramid_arima_downloads = 0
87
+ default_pyramid_arima_value = get_default_value (pyramid_arima ['downloads' ])
63
88
for i in range (7 ):
64
- pyramid_arima_downloads += pyramid_arima ['downloads' ][(last_week + timedelta (days = i )).strftime (DATE_FORMAT )]
89
+ pyramid_arima_downloads += pyramid_arima ['downloads' ].get (
90
+ (last_week + timedelta (days = i )).strftime (DATE_FORMAT ),
91
+ default_pyramid_arima_value
92
+ )
65
93
66
94
# Millify the totals
67
95
total_downloads = millify (pyramid_arima ['total_downloads' ] + pmdarima ['total_downloads' ])
0 commit comments