From eb44bc03f13f180ead656f662cdc3a0ab9fba2d0 Mon Sep 17 00:00:00 2001 From: Ed Morley <501702+edmorley@users.noreply.github.com> Date: Thu, 12 Nov 2020 13:45:27 +0000 Subject: [PATCH] Remove vendored `pip-grep` script (#1116) Since the last usage was removed in #1113, and pip-grep is actually broken on newer pip anyway (though helpfully silently ignores exceptions, so one wouldn't know). This is the first of the pip-pop removals, the rest will follow as the last usages are switched over. Whilst this tool was intended for internal buildpack usage only, the vendor directory is on `PATH`, so I've documented the removal in CHANGELOG just in case. Refs @W-8208817@. --- CHANGELOG.md | 1 + vendor/pip-pop/pip-grep | 94 ----------------------------------------- 2 files changed, 1 insertion(+), 94 deletions(-) delete mode 100755 vendor/pip-pop/pip-grep diff --git a/CHANGELOG.md b/CHANGELOG.md index 0456bd5..f3c2894 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## Unreleased +- Remove vendored `pip-grep` script (#1116). ## v185 (2020-11-12) diff --git a/vendor/pip-pop/pip-grep b/vendor/pip-pop/pip-grep deleted file mode 100755 index 8e3cf61..0000000 --- a/vendor/pip-pop/pip-grep +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""Usage: - pip-grep [-s] ... - -Options: - -h --help Show this screen. -""" -import os -import sys -from docopt import docopt - -try: # pip >= 10 - from pip._internal.req import parse_requirements - from pip._internal.download import PipSession as session - - def PackageFinder(find_links, index_urls, session=None): - from pip._internal.index import PackageFinder - from pip._internal.models.search_scope import SearchScope - from pip._internal.models.selection_prefs import SelectionPreferences - - search_scope = SearchScope.create(find_links, index_urls) - selection_prefs = SelectionPreferences(allow_yanked=False) - return PackageFinder.create(search_scope, selection_prefs, session=session) - -except ImportError: # pip <= 9.0.3 - from pip.req import parse_requirements - from pip.index import PackageFinder - from pip._vendor.requests import session - - -requests = session() - - -class Requirements(object): - def __init__(self, reqfile=None): - super(Requirements, self).__init__() - self.path = reqfile - self.requirements = [] - - if reqfile: - self.load(reqfile) - - def __repr__(self): - return ''.format(self.path) - - def load(self, reqfile): - if not os.path.exists(reqfile): - raise ValueError('The given requirements file does not exist.') - - finder = PackageFinder([], [], session=requests) - for requirement in parse_requirements(reqfile, finder=finder, session=requests): - if requirement.req: - if not getattr(requirement.req, 'name', None): - # Prior to pip 8.1.2 the attribute `name` did not exist. - requirement.req.name = requirement.req.project_name - self.requirements.append(requirement.req) - - -def grep(reqfile, packages, silent=False): - try: - r = Requirements(reqfile) - except ValueError: - if not silent: - print('There was a problem loading the given requirement file.') - exit(os.EX_NOINPUT) - - for req in r.requirements: - if req.name in packages: - if not silent: - print('Package {} found!'.format(req.name)) - exit(0) - - if not silent: - print('Not found.') - - exit(1) - - -def main(): - args = docopt(__doc__, version='pip-grep') - - kwargs = {'reqfile': args[''], 'packages': args[''], 'silent': args['-s']} - - grep(**kwargs) - - -if __name__ == '__main__': - try: - main() - except Exception: - sys.exit(1) -