mirror of
https://github.com/LukeHagar/pypistats.org.git
synced 2025-12-06 04:21:09 +00:00
add FAQs
This commit is contained in:
37
pypistats/templates/faqs.html
Normal file
37
pypistats/templates/faqs.html
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{% extends "layout.html" %}
|
||||||
|
{% block title %}PyPI Download Stats{% endblock %}
|
||||||
|
{% block body %}
|
||||||
|
<h1>FAQs</h1>
|
||||||
|
<hr>
|
||||||
|
<h3>
|
||||||
|
What is the source of the download data?
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
PyPI provides download records as a publicly available dataset on Google's BigQuery. You can access the data with a Google Cloud account <a href="https://bigquery.cloud.google.com/table/the-psf:pypi.downloads">here</a>.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
When is the website data updated?
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
The data update begins at 01:00:00 UTC and should take less than 10 minutes.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Why are there so many more downloads after July 26, 2018?
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
PyPI download records are generated by a service known as <a href="https://github.com/pypa/linehaul">linehaul</a>. The previous iteration of the service had an issue which caused it to restart regularly due to running out of memory, resulting in a large quantity of dropped download records. On July 26, a newer version of the service was deployed, which is much more robust and reliable.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Why are the cumulative download counts different from the sum of the downloads from the <i>overall</i> chart?
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
The cumulative download counts consider only the download records which are not from a known set of PyPI mirror applications, namely <code>bandersnatch</code>, <code>z3c.pypimirror</code>, <code>Artifactory</code>, and <code>devpi</code>. In other words, the cumulative download counts take the sum of the downloads from the <i>Without_mirrors</i> dataset from the chart.
|
||||||
|
</p>
|
||||||
|
<h3>
|
||||||
|
Why disregard mirrors from aggregated data?
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
The intent of disregarding mirrors is to provide metrics that reflect end-user download aggregation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% endblock %}
|
||||||
@@ -65,6 +65,8 @@
|
|||||||
<br>
|
<br>
|
||||||
<a href="{{ url_for('general.about') }}">About</a>
|
<a href="{{ url_for('general.about') }}">About</a>
|
||||||
<br>
|
<br>
|
||||||
|
<a href="{{ url_for('general.faqs') }}">FAQs</a>
|
||||||
|
<br>
|
||||||
</p>
|
</p>
|
||||||
</p>
|
</p>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -80,6 +80,12 @@ def about():
|
|||||||
return render_template("about.html", user=g.user)
|
return render_template("about.html", user=g.user)
|
||||||
|
|
||||||
|
|
||||||
|
@blueprint.route("/faqs")
|
||||||
|
def faqs():
|
||||||
|
"""Render the FAQs page."""
|
||||||
|
return render_template("faqs.html", user=g.user)
|
||||||
|
|
||||||
|
|
||||||
@blueprint.route("/packages/<package>")
|
@blueprint.route("/packages/<package>")
|
||||||
def package(package):
|
def package(package):
|
||||||
"""Render the package page."""
|
"""Render the package page."""
|
||||||
|
|||||||
Reference in New Issue
Block a user