Get package info from PyPI. Modify your requirements files.
I find myself checking the PyPI page very frequently mostly when upgrading dependencies to get the latest versions. I'm inherently lazy and did not want to get my ass off my terminal window.
No real magic here. It uses the requests
package to hit the public PyPI
REST API, parses the JSON and displays it. There's also some basic file
manipulation to modify requirements files. Embarrassingly simple.
pip install whatsonpypi
- Python 3.7+
-
Find information on a package on PyPI
Examples:
$ whatsonpypi django NAME Django LATEST VERSION 2.1.5 SUMMARY A high-level Python Web framework that encourages rapid development and clean, pragmatic design. PACKAGE URL https://pypi.org/project/Django/ AUTHOR Django Software Foundation LATEST RELEASES 2.2a1, 2.1rc1, 2.1b1, 2.1a1, 2.1.5
-
For more information..
Examples:
$ whatsonpypi django --more ...
-
Version specific information..
Examples:
$ whatsonpypi django==2.1.4 --more ...
-
Launch PyPI URL of project in a browser tab
Examples:
$ whatsonpypi django --open
-
Launch documentation URL of project in a browser tab
Examples:
$ whatsonpypi django --docs
-
Add packages to your requirements files.
Examples:
$ whatsonpypi django --add
By default, it searches for files with names matching
requirements*.txt
in the current working directory and adds the dependency to the end of the file.You can change the filename pattern to search for. The pattern may contain simple shell-style wildcards.
$ whatsonpypi django --add --req-pattern "*.txt"
If there's more than one file, you will see a prompt allowing you to select the files that should be modified.
If you want the dependency to be added to a specific line, mention a comment
#wopp
on its own line, which will be replaced with the dependency:Example:
Do this in your requirements.txt:
# Django django==2.1.5 # testing pytest==4.1.1 #wopp
Then running this:
$ whatsonpypi pytest-runner --add
will produce this:
# Django django==2.1.5 # testing pytest==4.1.1 pytest-runner==4.2
Use requirements specifications as needed.
==
,>=
,<=
or~=
using--ee
,--ge
,--le
or--te
. Default is--ee
:$ whatsonpypi pytest-runner --add --ge
will produce this:
# Django django==2.1.5 # testing pytest==4.1.1 pytest-runner>=4.2
Existing dependencies will be replaced with newer versions. Dependency version by default is the latest unless specified explicitly like:
$ whatsonpypi pytest-runner==4.1 --add
Note that you may have you to double quote it in order to prevent Bash from parsing it.
$ whatsonpypi "pytest-runner>=4.1" --add
Optionally, directory to search for requirement files can be specified with
--req-dir
. Both absolute and relative paths are allowed. Must be a directory.$ whatsonpypi pytest-runner==4.1 --add --req-dir /Users/Me/Documents/GitHub/project/requirements
Default value (if not provided) is the directory where the command is run (cwd).
Also, optionally, you can specify comments to add before a dependency. Note that the comment will not be added if the dependency already exists in the file.
For example, running this:
$ whatsonpypi pytest-runner --add --comment 'testing'
will add this:
# testing pytest-runner==4.2
$ whatsonpypi --help
Usage: whatsonpypi [OPTIONS] PACKAGE
CLI tool to get package info from PyPI and/or manipulate requirements.
Example usages:
$ whatsonpypi django
Options:
-v, --version Show the version and exit.
-m, --more Flag to enable expanded output [required]
-d, --docs Flag to open docs or homepage of project
-o, --open Flag to open PyPI page
-a, --add Flag to enable adding of dependencies to requirement
files. By default, it searches for files with names
matching requirements*.txt in the current working
directory and adds the dependency to the end of the
file. If you want the dependency to be added to a
specific line, mention the comment '#wopp' on its own
line which will be replaced with the dependency.
Existing dependencies will be replaced with newer
versions. Dependency version by default is the latest
unless specified explicitly with 'whatsonpypi
package==version'. Directory to search for
requirement files can be specified with --req-dir
-r, --req-dir DIRECTORY Directory to search for requirement files. Only used
when --add is used. [default: .]
-p, --req-pattern TEXT Filename pattern for searching requirements files.
[default: requirements*.txt; required]
-c, --comment TEXT Comment to be added for the dependency when using
--add.
--ee use == when adding to requirements.
--le use <= when adding to requirements.
--ge use >= when adding to requirements.
--te use ~= when adding to requirements.
-h, --help Show this message and exit.
- Click, for making writing CLI tools a complete pleasure.
- Simon Willison for some inspiration.