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}] [-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}
  -j, --json            Output JSON

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] [-sd START_DATE]
                              [-ed END_DATE] [-m MONTH] [-l] [-j] [-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
  -sd START_DATE, --start-date START_DATE
                        yyyy-mm-dd
  -ed END_DATE, --end-date END_DATE
                        yyyy-mm-dd
  -m MONTH, --month MONTH
                        Shortcut for -sd & -ed for a yyyy-mm
  -l, --last-month      Shortcut for -sd & -ed for last month
  -j, --json            Output JSON
  -d, --daily           Show daily downloads

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 API 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", output="table"))
pprint(pypistats.recent("pillow", "week", output="json"))
print(pypistats.recent("pillow", "month"))

print(pypistats.overall("pillow"))
print(pypistats.overall("pillow", mirrors=True, output="table"))
pprint(pypistats.overall("pillow", mirrors=False, output="json"))

print(pypistats.python_major("pillow"))
print(pypistats.python_major("pillow", version=2, output="table"))
pprint(pypistats.python_major("pillow", version="3", output="json"))

print(pypistats.python_minor("pillow"))
print(pypistats.python_minor("pillow", version=2.7, output="table"))
pprint(pypistats.python_minor("pillow", version="3.7", output="json"))

print(pypistats.system("pillow"))
print(pypistats.system("pillow", os="darwin", output="table"))
pprint(pypistats.system("pillow", os="linux", output="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.1.1.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

pypistats-0.1.1-py2.py3-none-any.whl (7.8 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

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

File hashes

Hashes for pypistats-0.1.1.tar.gz
Algorithm Hash digest
SHA256 325f11382e2deaa27657dd04f3f91cab727e2025e765da84f377fd6d849b2475
MD5 4fca784e5a62bdad93f61c9660f59f0e
BLAKE2b-256 5dc2c96cfe4df6e735fa01f6a547fd8c9329f4713a8861cf07654963dfefcac3

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pypistats-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.8 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.4.3 requests-toolbelt/0.8.0 tqdm/4.21.0 CPython/2.7.15

File hashes

Hashes for pypistats-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 fb27682cd4ede9517db809d476098038d3a4235f7615a759f0ea8ba24da54998
MD5 f018a58b3f4c2e1015af2e181911ffa8
BLAKE2b-256 3cc767ea6801ca4aaba8f622b3b915d94d0955a16ff04bdc080c8e119b89d12a

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