def test_invalid_pypi_transformation(): """ Test transformation of pypi when ordering None """ pypi_hits = [ { '_pypi_ordering': None, 'name': 'bar', 'summary': 'bar summary', 'version': '1.0', }, { '_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0', }, ] expected = [ { 'score': 100, 'versions': ['1.0'], 'name': 'foo', 'summary': 'foo summary', }, { 'score': 0, 'versions': ['1.0'], 'name': 'bar', 'summary': 'bar summary', }, ] assert transform_hits(pypi_hits) == expected
def test_pypi_xml_transformation(): """ Test transformation of data structures (pypi xmlrpc to custom list). """ pypi_hits = [{ '_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0' }, { '_pypi_ordering': 200, 'name': 'foo', 'summary': 'foo summary v2', 'version': '2.0' }, { '_pypi_ordering': 50, 'name': 'bar', 'summary': 'bar summary', 'version': '1.0' }] expected = [{ 'score': 200, 'versions': ['1.0', '2.0'], 'name': 'foo', 'summary': 'foo summary v2' }, { 'score': 50, 'versions': ['1.0'], 'name': 'bar', 'summary': 'bar summary' }] assert expected == transform_hits(pypi_hits)
def test_invalid_pypi_transformation(): """ Test transformation of pypi when ordering None """ pypi_hits = [{ '_pypi_ordering': None, 'name': 'bar', 'summary': 'bar summary', 'version': '1.0' }, { '_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0' }] expected = [{ 'score': 100, 'versions': ['1.0'], 'name': 'foo', 'summary': 'foo summary' }, { 'score': 0, 'versions': ['1.0'], 'name': 'bar', 'summary': 'bar summary' }] assert transform_hits(pypi_hits) == expected
def run(self, options, args): self.installed_packages = [p.project_name for p in pkg_resources.working_set] self.pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport) packages = set([]) for dist in get_installed_distributions(local_only=True): pypi_hits = self.search(dist.key) hits = transform_hits(pypi_hits) data = [(i['name'], highest_version(i['versions'])) for i in hits] packages = packages.union(set(data)) self.print_results(packages)
def test_pypi_xml_transformation(): """ Test transformation of data structures (pypi xmlrpc to custom list). """ pypi_hits = [{'_pypi_ordering': 100, 'name': 'foo', 'summary': 'foo summary', 'version': '1.0'}, {'_pypi_ordering': 200, 'name': 'foo', 'summary': 'foo summary v2', 'version': '2.0'}, {'_pypi_ordering': 50, 'name': 'bar', 'summary': 'bar summary', 'version': '1.0'}] expected = [{'score': 200, 'versions': ['1.0', '2.0'], 'name': 'foo', 'summary': 'foo summary v2'}, {'score': 50, 'versions': ['1.0'], 'name': 'bar', 'summary': 'bar summary'}] assert transform_hits(pypi_hits) == expected
def run(self, options, args): if not args: raise CommandError('Missing required argument (search query).') query = args try: # The developer version of pip uses options as argument pypi_hits = self.search(query,options) self.hits = transform_hits(pypi_hits) if pypi_hits: return SUCCESS else: return NO_MATCHES_FOUND except TypeError: # But, the stable version of pip uses options.index as argument pypi_hits = self.search(query,options.index) self.hits = transform_hits(pypi_hits) if pypi_hits: return SUCCESS else: return NO_MATCHES_FOUND
def run(self, options, args): if not args: raise CommandError('Missing required argument (search query).') query = args try: # The developer version of pip uses options as argument pypi_hits = self.search(query, options) self.hits = transform_hits(pypi_hits) if pypi_hits: return SUCCESS else: return NO_MATCHES_FOUND except TypeError: # But, the stable version of pip uses options.index as argument pypi_hits = self.search(query, options.index) self.hits = transform_hits(pypi_hits) if pypi_hits: return SUCCESS else: return NO_MATCHES_FOUND
def search_packages(package_name): """ query pip package repository """ versions = [] search = SearchCommand() pypi = search.search(package_name, search.parse_args([package_name])[0]) for hit in transform_hits(pypi): if hit['name'] == package_name: versions = hit['versions'] break return versions
def browse(request): import pkg_resources from pip.commands.search import highest_version, transform_hits from pip.util import get_installed_distributions import xmlrpclib pypi = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') installed_packages = [p.project_name for p in pkg_resources.working_set] results = [] for p in get_installed_distributions(): result = {} hits = pypi.search({ 'name': p.project_name, 'summary': p.project_name }, 'or') hits = transform_hits(hits) for hit in hits: try: if hit['name'] in installed_packages: dist = pkg_resources.get_distribution(hit['name']) result['name'] = hit['name'] result['version'] = dist.version result['summary'] = hit['summary'] or '' try: result['latest'] = highest_version(hit['versions']) finally: results.append(result) except UnicodeEncodeError: pass query = request.GET.copy() return render_to_response( 'djip/index.html', { 'results': results, #'dir': path, #'p': p, #'q': q, #'page': page, #'results_var': results_var, #'counter': counter, 'query': query, 'title': _(u'PIP browser'), #'settings_var': get_settings_var(), #'breadcrumbs': get_breadcrumbs(query, path), 'breadcrumbs_title': "" }, context_instance=RequestContext(request))
def test_invalid_pypi_transformation(): """ Test transformation of pypi when ordering None """ pypi_hits = [ {"_pypi_ordering": None, "name": "bar", "summary": "bar summary", "version": "1.0"}, {"_pypi_ordering": 100, "name": "foo", "summary": "foo summary", "version": "1.0"}, ] expected = [ {"score": 100, "versions": ["1.0"], "name": "foo", "summary": "foo summary"}, {"score": 0, "versions": ["1.0"], "name": "bar", "summary": "bar summary"}, ] assert transform_hits(pypi_hits) == expected
def test_pypi_xml_transformation(): """ Test transformation of data structures (pypi xmlrpc to custom list). """ pypi_hits = [ {"_pypi_ordering": 100, "name": "foo", "summary": "foo summary", "version": "1.0"}, {"_pypi_ordering": 200, "name": "foo", "summary": "foo summary v2", "version": "2.0"}, {"_pypi_ordering": 50, "name": "bar", "summary": "bar summary", "version": "1.0"}, ] expected = [ {"score": 200, "versions": ["1.0", "2.0"], "name": "foo", "summary": "foo summary v2"}, {"score": 50, "versions": ["1.0"], "name": "bar", "summary": "bar summary"}, ] assert transform_hits(pypi_hits) == expected
def run(self, options, args): if not args: raise CommandError('Missing required argument (search query).') query = args pypi_hits = self.search(query, options) hits = transform_hits(pypi_hits) terminal_width = None if sys.stdout.isatty(): terminal_width = get_terminal_size()[0] print_results(hits, terminal_width=terminal_width) if pypi_hits: return SUCCESS return NO_MATCHES_FOUND
def info(self, **options): from djip import get_version from pip.commands.search import transform_hits from pip.util import get_installed_distributions import xmlrpclib pypi = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') print "DjIP version %s\n" % get_version() for p in get_installed_distributions(): hits = pypi.search({'name': p.project_name, 'summary': p.project_name}, 'or') hits = transform_hits(hits) self.print_results(hits)
def browse(request): import pkg_resources from pip.commands.search import highest_version, transform_hits from pip.util import get_installed_distributions import xmlrpclib pypi = xmlrpclib.ServerProxy('http://pypi.python.org/pypi') installed_packages = [p.project_name for p in pkg_resources.working_set] results = [] for p in get_installed_distributions(): result = {} hits = pypi.search({'name': p.project_name, 'summary': p.project_name}, 'or') hits = transform_hits(hits) for hit in hits: try: if hit['name'] in installed_packages: dist = pkg_resources.get_distribution(hit['name']) result['name'] = hit['name'] result['version'] = dist.version result['summary'] = hit['summary'] or '' try: result['latest'] = highest_version(hit['versions']) finally: results.append(result) except UnicodeEncodeError: pass query = request.GET.copy() return render_to_response('djip/index.html', { 'results': results, #'dir': path, #'p': p, #'q': q, #'page': page, #'results_var': results_var, #'counter': counter, 'query': query, 'title': _(u'PIP browser'), #'settings_var': get_settings_var(), #'breadcrumbs': get_breadcrumbs(query, path), 'breadcrumbs_title': "" }, context_instance=RequestContext(request))
def run(self): pkg_name = self.distribution.get_name() pkg_version = self.distribution.get_version() search = SearchCommand() options, _ = search.parse_args([pkg_name]) pypi_hits = search.search(pkg_name, options) hits = transform_hits(pypi_hits) remote_version = None for hit in hits: if hit['name'] == pkg_name: remote_version = highest_version(hit['versions']) self.announce("Found %s version %s on PyPi" % (pkg_name, remote_version), log.INFO) if remote_version is None: raise RuntimeError("Could not found %s on PyPi" % pkg_name) if StrictVersion(VERSION) <= StrictVersion(remote_version): raise VersionError("Local version %s not greater than PyPi version %s" % (pkg_version, remote_version)) self.announce("Local version %s higher than PyPi version" % pkg_version)
def simple_search(self, spec, operator='or', getter = None, omit = ('django')): """Can search by name, version, author, author_email, maintainer, maintainer_email, home_page, license, summary, description, keywords, platform,download_url""" from pip.commands.search import transform_hits, highest_version from results = set() packages = {} from operator import itemgetter filter = itemgetter('name', 'version') info_getter = itemgetter('name', 'summary') name_getter = itemgetter('name') hits = self.proxy.search({'name': spec},{'summary':spec}, operator) results = transform_hits(hits) for result in results: result['version'] = highest_version(result['versions']) del result['score'] return results
def run(self, options, args): local_only = options.local index_url = options.index installations = {} dependency_links = [] find_tags = False f = sys.stdout for dist in pkg_resources.working_set: if dist.has_metadata('dependency_links.txt'): dependency_links.extend( dist.get_metadata_lines('dependency_links.txt'), ) for dist in get_installed_distributions(local_only=local_only): req = pip.FrozenRequirement.from_dist( dist, dependency_links, find_tags=find_tags, ) installations[req.name] = req pypi_hits = self.search( [i.name for i in installations.values()], index_url, ) hits = transform_hits(pypi_hits) for hit in hits: name = hit['name'] try: if name in installations: req = installations[name].req latest = highest_version(hit['versions']) if req.specs[0][1] != latest: f.write('%s (LATEST: %s)\n' % (str(req), latest)) except UnicodeEncodeError: pass