[Distutils] Simple API for location of distributions and requirements on PyPI

Vinay Sajip vinay_sajip at yahoo.co.uk
Thu Oct 18 11:36:53 CEST 2012


>>> This bit of text prevents Gmane from thinking that I'm top-posting :-(

I've added a convenience function to distlib.locators called locate(), to which
you pass a requirement. The returned Distribution object allows you to query
its requirements. Example of usage:

>>> from distlib.locators import locate
>>> from pprint import pprint
>>> flask = locate('flask')
>>> flask
<Distribution Flask (0.9)
[http://pypi.python.org/packages/source/F/Flask/Flask-0.9.tar.gz]>
>>> flask.get_requirements('install')
['Werkzeug (>= 0.7)', 'Jinja2 (>= 2.4)']
>>> reqs = flask.get_requirements('install')
>>> werkzeug, jinja2 = [locate(r) for r in reqs]
>>> werkzeug
<Distribution Werkzeug (0.8.3)
[http://pypi.python.org/packages/source/W/Werkzeug/Werkzeug-0.8.3.tar.gz]>
>>> jinja2
<Distribution Jinja2 (2.6)
[http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz]>
>>> authy = locate('authy')
>>> authy.get_requirements('install')
['httplib2 (>= 0.7, < 0.8)', 'simplejson']
>>> reqs = authy.get_requirements('install')
>>> rds = [locate(r) for r in reqs]
>>> pprint(rds)
[<Distribution httplib2 (0.7.6)
[http://httplib2.googlecode.com/files/httplib2-0.7.6.tar.gz]>,
 <Distribution simplejson (2.6.2)
[http://pypi.python.org/packages/source/s/simplejson/simplejson-2.6.2.tar.gz]>]
>>>

Feedback welcome.

Regards,

Vinay Sajip



More information about the Distutils-SIG mailing list