Skip to content

Instantly share code, notes, and snippets.

@sbz
Created June 13, 2024 06:05
Show Gist options
  • Save sbz/e740f0aba62b9eab3fba968751ab9951 to your computer and use it in GitHub Desktop.
Save sbz/e740f0aba62b9eab3fba968751ab9951 to your computer and use it in GitHub Desktop.
pypi-requires.py: List packages dependencies using pypi API
import sys
import json
import requests
from pprint import pprint
def main() -> int:
if sys.argv[0] == 1:
print(f"Usage: {sys.argv[0]} <package==version>|<package>|<package> <version>")
return 1
if "==" in sys.argv[1]:
name, version = sys.argv[1].split("==")
else:
name = sys.argv[1]
version = sys.argv[2] or None
# name = 'prefect'
# version = '2.5.0'
if version is None:
url = f'https://pypi.python.org/pypi/{name}/json'
else:
url = f'https://pypi.python.org/pypi/{name}/{version}/json'
response = requests.get(url)
response.raise_for_status()
data = response.json()
for req in data['info']['requires_dist']:
if "extra == 'dev'" in req:
continue
print(req)
return 0
if __name__ == '__main__':
sys.exit(main())
@sbz
Copy link
Author

sbz commented Jul 10, 2024

Check dependencies of paramiko

  • version 2.0.0
$ python3 pypi-requires.py paramiko==2.0.0
cryptography (>=1.1)
pyasn1 (>=0.1.7)
  • version 3.4.0
$ python3 pypi-requires.py paramiko==3.4.0
bcrypt (>=3.2)
cryptography (>=3.3)
pynacl (>=1.5)
pyasn1 (>=0.1.7) ; extra == 'all'
invoke (>=2.0) ; extra == 'all'
gssapi (>=1.4.1) ; (platform_system != "Windows") and extra == 'all'
pywin32 (>=2.1.8) ; (platform_system == "Windows") and extra == 'all'
pyasn1 (>=0.1.7) ; extra == 'gssapi'
gssapi (>=1.4.1) ; (platform_system != "Windows") and extra == 'gssapi'
pywin32 (>=2.1.8) ; (platform_system == "Windows") and extra == 'gssapi'
invoke (>=2.0) ; extra == 'invoke'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment