Skip to main content

Python interface to PyPI Stats API https://pypistats.org/api

Project description

pypistats

PyPI version Supported Python versions Build Status codecov GitHub Code style: black

Python 3.6+ interface to PyPI Stats API.

Installation

From PyPI

pip install -U pypistats

From source

git clone https://github.com/hugovk/pypistats
cd pypistats
pip install .

Example command-line use

Run pypistats with a subcommand (corresponding to PyPI Stats endpoints), then options for that subcommand.

Top-level help:

$ pypistats --help
usage: pypistats [-h] [-v]
                 {recent,overall,python_major,python_minor,system} ...

positional arguments:
  {recent,overall,python_major,python_minor,system}

optional arguments:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit

Help for a subcommand:

$ pypistats recent --help
usage: pypistats recent [-h] [-p {day,week,month}]
                        [-f {json,markdown,rst,html}] [-j]
                        package

Retrieve the aggregate download quantities for the last day/week/month

positional arguments:
  package

optional arguments:
  -h, --help            show this help message and exit
  -p {day,week,month}, --period {day,week,month}
  -f {json,markdown,rst,html}, --format {json,markdown,rst,html}
                        The format of output (default: markdown)
  -j, --json            Shortcut for "-f json" (default: False)

Get recent downloads:

$ pypistats recent pillow
| last_day | last_month | last_week |
|---------:|-----------:|----------:|
|    61877 |    3527341 |    865484 |

Help for another subcommand:

$ pypistats python_minor --help
usage: pypistats python_minor [-h] [-v VERSION] [-f {json,markdown,rst,html}]
                              [-j] [-sd yyyy-mm-dd] [-ed yyyy-mm-dd]
                              [-m yyyy-mm] [-l] [-d]
                              package

Retrieve the aggregate daily download time series by Python minor version
number

positional arguments:
  package

optional arguments:
  -h, --help            show this help message and exit
  -v VERSION, --version VERSION
                        eg. 2.7 or 3.6 (default: None)
  -f {json,markdown,rst,html}, --format {json,markdown,rst,html}
                        The format of output (default: markdown)
  -j, --json            Shortcut for "-f json" (default: False)
  -sd yyyy-mm-dd, --start-date yyyy-mm-dd
                        Start date (default: None)
  -ed yyyy-mm-dd, --end-date yyyy-mm-dd
                        End date (default: None)
  -m yyyy-mm, --month yyyy-mm
                        Shortcut for -sd & -ed for a single month (default:
                        None)
  -l, --last-month      Shortcut for -sd & -ed for last month (default: False)
  -d, --daily           Show daily downloads (default: False)

Get version downloads:

$ pypistats python_minor pillow --last-month
| category | percent | downloads |
|----------|--------:|----------:|
|      2.7 |  46.64% | 1,512,429 |
|      3.6 |  30.34% |   983,838 |
|      3.5 |  12.53% |   406,429 |
|      3.7 |   6.12% |   198,558 |
|      3.4 |   3.41% |   110,552 |
| null     |   0.84% |    27,380 |
|      3.3 |   0.05% |     1,599 |
|      2.6 |   0.05% |     1,581 |
|      3.2 |   0.01% |       246 |
|      3.8 |   0.00% |       133 |
|      2.4 |   0.00% |         7 |
| Total    |         | 3,242,752 |

The table is Markdown, ready for pasting in GitHub issues and PRs:

category percent downloads
2.7 46.64% 1,512,429
3.6 30.34% 983,838
3.5 12.53% 406,429
3.7 6.12% 198,558
3.4 3.41% 110,552
null 0.84% 27,380
3.3 0.05% 1,599
2.6 0.05% 1,581
3.2 0.01% 246
3.8 0.00% 133
2.4 0.00% 7
Total 3,242,752

Example programmatic use

Return values are from the JSON responses documented in the API: https://pypistats.org/api/

import pypistats
from pprint import pprint

# Call the API
print(pypistats.recent("pillow"))
print(pypistats.recent("pillow", "day", format="markdown"))
print(pypistats.recent("pillow", "week", format="rst"))
print(pypistats.recent("pillow", "month", format="html"))
pprint(pypistats.recent("pillow", "week", format="json"))
print(pypistats.recent("pillow", "day"))

print(pypistats.overall("pillow"))
print(pypistats.overall("pillow", mirrors=True, format="markdown"))
print(pypistats.overall("pillow", mirrors=False, format="rst"))
print(pypistats.overall("pillow", mirrors=True, format="html"))
pprint(pypistats.overall("pillow", mirrors=False, format="json"))

print(pypistats.python_major("pillow"))
print(pypistats.python_major("pillow", version=2, format="markdown"))
print(pypistats.python_major("pillow", version=3, format="rst"))
print(pypistats.python_major("pillow", version="2", format="html"))
pprint(pypistats.python_major("pillow", version="3", format="json"))

print(pypistats.python_minor("pillow"))
print(pypistats.python_minor("pillow", version=2.7, format="markdown"))
print(pypistats.python_minor("pillow", version="2.7", format="rst"))
print(pypistats.python_minor("pillow", version=3.7, format="html"))
pprint(pypistats.python_minor("pillow", version="3.7", format="json"))

print(pypistats.system("pillow"))
print(pypistats.system("pillow", os="darwin", format="markdown"))
print(pypistats.system("pillow", os="linux", format="rst"))
print(pypistats.system("pillow", os="darwin", format="html"))
pprint(pypistats.system("pillow", os="linux", format="json"))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypistats-0.2.1.tar.gz (19.9 kB view details)

Uploaded Source

Built Distribution

pypistats-0.2.1-py2.py3-none-any.whl (20.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pypistats-0.2.1.tar.gz.

File metadata

  • Download URL: pypistats-0.2.1.tar.gz
  • Upload date:
  • Size: 19.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.21.0 CPython/2.7.15

File hashes

Hashes for pypistats-0.2.1.tar.gz
Algorithm Hash digest
SHA256 0f819ab44c6fcfd7c0f433e9b2ff52a9d22a57db701bf49fa50712ea7dec15eb
MD5 27120db5d7c02a252ae1295aab7dd55a
BLAKE2b-256 3c518669cfd5d39c42c937c1a7691a722dc1e208f9c3aad59d93488bb03b4e57

See more details on using hashes here.

Provenance

File details

Details for the file pypistats-0.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: pypistats-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.21.0 CPython/2.7.15

File hashes

Hashes for pypistats-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 efbfcf5e40783654061656468b186c5371bd9d9e74ded44fb9c52e0a6acdcb9d
MD5 0d6a29ff09eec532a71e35ddda148380
BLAKE2b-256 58d4eb995ad33ed9cdff2b52901d9b54222308a6e690db19f33b6fb2c793579f

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page