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

Daniel Holth dholth at gmail.com
Thu Oct 18 15:01:34 CEST 2012


On Thu, Oct 18, 2012 at 5:36 AM, Vinay Sajip <vinay_sajip at yahoo.co.uk> wrote:
>>>> 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]>]
>>>>

Rather handy.


More information about the Distutils-SIG mailing list