From 1754a895c1938d0c55184131d94c85ede925ae91 Mon Sep 17 00:00:00 2001
From: Scott Gigante
Date: Tue, 28 Jan 2020 16:13:49 -0500
Subject: [PATCH 1/3] Update package.html
---
pypistats/templates/package.html | 2 ++
1 file changed, 2 insertions(+)
diff --git a/pypistats/templates/package.html b/pypistats/templates/package.html
index 0bfc76b..3072d34 100644
--- a/pypistats/templates/package.html
+++ b/pypistats/templates/package.html
@@ -66,6 +66,8 @@ {{ package }}
Downloads last month:
{{ "{:,.0f}".format(recent['month']) }}
+
+ 7-day smoothing
{% endblock %}
diff --git a/pypistats/views/general.py b/pypistats/views/general.py
index 27243e0..3b3ed83 100644
--- a/pypistats/views/general.py
+++ b/pypistats/views/general.py
@@ -107,7 +107,7 @@ def package_page(package):
recent[r.category] = r.downloads
# PyPI metadata
- metadata = None
+ metadata = dict()
if package != "__all__":
try:
metadata = requests.get(f"https://pypi.python.org/pypi/{package}/json", timeout=5).json()
@@ -134,7 +134,7 @@ def package_page(package):
else:
metrics = ["downloads", "percentages"]
- use_smoothing = 'smoothing' in request.form.getlist('smoothing')
+ use_smoothing = metadata['use_smoothing'] = request.args.get('smooth', None) is not None
for metric in metrics:
model_data.append({
"metric": metric,
@@ -197,12 +197,11 @@ def smooth_data(data, window=7):
zip(data["x"], data["y"]), key=lambda pair: pair[0])])
# Smooth data on a rolling window
smoothed_data = deepcopy(data)
+ smoothed_data["y"] = list(smoothed_data["y"])
for i in range(len(data["y"])):
- window_data = []
window_start = max(0, i - window // 2)
- window_end = min(len(data) - 1, i + window // 2)
- for j in range(window_start, window_end + 1):
- window_data.append(data["y"][j])
+ window_end = min(len(data["y"]), i + window // 2 + 1)
+ window_data = data["y"][window_start:window_end]
smoothed_data["y"][i] = sum(window_data) / len(window_data)
return smoothed_data