Skip to content

Instantly share code, notes, and snippets.

@vsajip
Created October 13, 2012 22:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save vsajip/3886402 to your computer and use it in GitHub Desktop.
Save vsajip/3886402 to your computer and use it in GitHub Desktop.
Example use of locators module
import optparse # >= 2.6
import logging
from pprint import pprint
import sys
from distlib.locators import (SimpleScrapingLocator, PyPIRPCLocator,
DirectoryLocator)
def main():
# Note that project names are case-sensitive for the XML-RPC locator.
parser = optparse.OptionParser(description='Locate distributions')
parser.add_option('-d', '--dir', dest='dir', default=None,
help='Use the directory locator')
parser.add_option('-r', '--rpc', dest='rpc', default=False,
help='Use the XML-RPC locator', action='store_true')
parser.add_option('-s', '--simple', dest='simple', default=None,
help='Use the "simple" scraping locator',
action='store_true')
parser.add_option('-u', '--url', dest='url', default=None,
help='Specify a URL to use for --rpc or --simple')
options, args = parser.parse_args()
if options.rpc:
locator = PyPIRPCLocator(options.url or 'http://python.org/pypi')
elif options.dir:
locator = DirectoryLocator(options.dir)
elif options.simple:
locator = SimpleScrapingLocator(options.url or
'http://pypi.python.org/simple/')
else:
raise ValueError("Don't know which locator to use.")
d = locator.get_project(args[0])
pprint(d)
if __name__ == '__main__':
logging.basicConfig(format='%(name)s %(message)s',
#level=logging.DEBUG
)
logging.getLogger().addHandler(logging.FileHandler('locate.log', 'w'))
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment