diff options
Diffstat (limited to 'jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py')
-rw-r--r-- | jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py b/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py deleted file mode 100644 index 6b17762..0000000 --- a/jython-tosca-parser/src/main/resources/Lib/site-packages/pip/commands/zip.py +++ /dev/null @@ -1,404 +0,0 @@ -import sys -import re -import fnmatch -import os -import shutil -import zipfile -from pip.util import display_path, backup_dir, rmtree -from pip.log import logger -from pip.exceptions import InstallationError -from pip.basecommand import Command - - -class ZipCommand(Command): - """Zip individual packages.""" - name = 'zip' - usage = """ - %prog [options] <package> ...""" - summary = 'DEPRECATED. Zip individual packages.' - - def __init__(self, *args, **kw): - super(ZipCommand, self).__init__(*args, **kw) - if self.name == 'zip': - self.cmd_opts.add_option( - '--unzip', - action='store_true', - dest='unzip', - help='Unzip (rather than zip) a package.') - else: - self.cmd_opts.add_option( - '--zip', - action='store_false', - dest='unzip', - default=True, - help='Zip (rather than unzip) a package.') - self.cmd_opts.add_option( - '--no-pyc', - action='store_true', - dest='no_pyc', - help=( - 'Do not include .pyc files in zip files (useful on Google App ' - 'Engine).'), - ) - self.cmd_opts.add_option( - '-l', '--list', - action='store_true', - dest='list', - help='List the packages available, and their zip status.') - self.cmd_opts.add_option( - '--sort-files', - action='store_true', - dest='sort_files', - help=('With --list, sort packages according to how many files they' - ' contain.'), - ) - self.cmd_opts.add_option( - '--path', - action='append', - dest='paths', - help=('Restrict operations to the given paths (may include ' - 'wildcards).'), - ) - self.cmd_opts.add_option( - '-n', '--simulate', - action='store_true', - help='Do not actually perform the zip/unzip operation.') - - self.parser.insert_option_group(0, self.cmd_opts) - - def paths(self): - """All the entries of sys.path, possibly restricted by --path""" - if not self.select_paths: - return sys.path - result = [] - match_any = set() - for path in sys.path: - path = os.path.normcase(os.path.abspath(path)) - for match in self.select_paths: - match = os.path.normcase(os.path.abspath(match)) - if '*' in match: - if re.search(fnmatch.translate(match + '*'), path): - result.append(path) - match_any.add(match) - break - else: - if path.startswith(match): - result.append(path) - match_any.add(match) - break - else: - logger.debug("Skipping path %s because it doesn't match %s" - % (path, ', '.join(self.select_paths))) - for match in self.select_paths: - if match not in match_any and '*' not in match: - result.append(match) - logger.debug("Adding path %s because it doesn't match " - "anything already on sys.path" % match) - return result - - def run(self, options, args): - - logger.deprecated( - '1.7', - "DEPRECATION: 'pip zip' and 'pip unzip` are deprecated, and will " - "be removed in a future release." - ) - - self.select_paths = options.paths - self.simulate = options.simulate - if options.list: - return self.list(options, args) - if not args: - raise InstallationError( - 'You must give at least one package to zip or unzip') - packages = [] - for arg in args: - module_name, filename = self.find_package(arg) - if options.unzip and os.path.isdir(filename): - raise InstallationError( - 'The module %s (in %s) is not a zip file; cannot be ' - 'unzipped' % (module_name, filename) - ) - elif not options.unzip and not os.path.isdir(filename): - raise InstallationError( - 'The module %s (in %s) is not a directory; cannot be ' - 'zipped' % (module_name, filename) - ) - packages.append((module_name, filename)) - last_status = None - for module_name, filename in packages: - if options.unzip: - last_status = self.unzip_package(module_name, filename) - else: - last_status = self.zip_package( - module_name, filename, options.no_pyc - ) - return last_status - - def unzip_package(self, module_name, filename): - zip_filename = os.path.dirname(filename) - if (not os.path.isfile(zip_filename) - and zipfile.is_zipfile(zip_filename)): - raise InstallationError( - 'Module %s (in %s) isn\'t located in a zip file in %s' - % (module_name, filename, zip_filename)) - package_path = os.path.dirname(zip_filename) - if package_path not in self.paths(): - logger.warn( - 'Unpacking %s into %s, but %s is not on sys.path' - % (display_path(zip_filename), display_path(package_path), - display_path(package_path))) - logger.notify( - 'Unzipping %s (in %s)' % (module_name, display_path(zip_filename)) - ) - if self.simulate: - logger.notify( - 'Skipping remaining operations because of --simulate' - ) - return - logger.indent += 2 - try: - # FIXME: this should be undoable: - zip = zipfile.ZipFile(zip_filename) - to_save = [] - for info in zip.infolist(): - name = info.filename - if name.startswith(module_name + os.path.sep): - content = zip.read(name) - dest = os.path.join(package_path, name) - if not os.path.exists(os.path.dirname(dest)): - os.makedirs(os.path.dirname(dest)) - if not content and dest.endswith(os.path.sep): - if not os.path.exists(dest): - os.makedirs(dest) - else: - f = open(dest, 'wb') - f.write(content) - f.close() - else: - to_save.append((name, zip.read(name))) - zip.close() - if not to_save: - logger.info( - 'Removing now-empty zip file %s' % - display_path(zip_filename) - ) - os.unlink(zip_filename) - self.remove_filename_from_pth(zip_filename) - else: - logger.info( - 'Removing entries in %s/ from zip file %s' % - (module_name, display_path(zip_filename)) - ) - zip = zipfile.ZipFile(zip_filename, 'w') - for name, content in to_save: - zip.writestr(name, content) - zip.close() - finally: - logger.indent -= 2 - - def zip_package(self, module_name, filename, no_pyc): - orig_filename = filename - logger.notify('Zip %s (in %s)' % (module_name, display_path(filename))) - logger.indent += 2 - if filename.endswith('.egg'): - dest_filename = filename - else: - dest_filename = filename + '.zip' - try: - # FIXME: I think this needs to be undoable: - if filename == dest_filename: - filename = backup_dir(orig_filename) - logger.notify( - 'Moving %s aside to %s' % (orig_filename, filename) - ) - if not self.simulate: - shutil.move(orig_filename, filename) - try: - logger.info( - 'Creating zip file in %s' % display_path(dest_filename) - ) - if not self.simulate: - zip = zipfile.ZipFile(dest_filename, 'w') - zip.writestr(module_name + '/', '') - for dirpath, dirnames, filenames in os.walk(filename): - if no_pyc: - filenames = [f for f in filenames - if not f.lower().endswith('.pyc')] - for fns, is_dir in [ - (dirnames, True), (filenames, False)]: - for fn in fns: - full = os.path.join(dirpath, fn) - dest = os.path.join( - module_name, - dirpath[len(filename):].lstrip( - os.path.sep - ), - fn, - ) - if is_dir: - zip.writestr(dest + '/', '') - else: - zip.write(full, dest) - zip.close() - logger.info( - 'Removing old directory %s' % display_path(filename) - ) - if not self.simulate: - rmtree(filename) - except: - # FIXME: need to do an undo here - raise - # FIXME: should also be undone: - self.add_filename_to_pth(dest_filename) - finally: - logger.indent -= 2 - - def remove_filename_from_pth(self, filename): - for pth in self.pth_files(): - f = open(pth, 'r') - lines = f.readlines() - f.close() - new_lines = [ - l for l in lines if l.strip() != filename] - if lines != new_lines: - logger.info('Removing reference to %s from .pth file %s' - % (display_path(filename), display_path(pth))) - if not [line for line in new_lines if line]: - logger.info( - '%s file would be empty: deleting' % display_path(pth) - ) - if not self.simulate: - os.unlink(pth) - else: - if not self.simulate: - f = open(pth, 'wb') - f.writelines(new_lines) - f.close() - return - logger.warn( - 'Cannot find a reference to %s in any .pth file' % - display_path(filename) - ) - - def add_filename_to_pth(self, filename): - path = os.path.dirname(filename) - dest = filename + '.pth' - if path not in self.paths(): - logger.warn( - 'Adding .pth file %s, but it is not on sys.path' % - display_path(dest) - ) - if not self.simulate: - if os.path.exists(dest): - f = open(dest) - lines = f.readlines() - f.close() - if lines and not lines[-1].endswith('\n'): - lines[-1] += '\n' - lines.append(filename + '\n') - else: - lines = [filename + '\n'] - f = open(dest, 'wb') - f.writelines(lines) - f.close() - - def pth_files(self): - for path in self.paths(): - if not os.path.exists(path) or not os.path.isdir(path): - continue - for filename in os.listdir(path): - if filename.endswith('.pth'): - yield os.path.join(path, filename) - - def find_package(self, package): - for path in self.paths(): - full = os.path.join(path, package) - if os.path.exists(full): - return package, full - if not os.path.isdir(path) and zipfile.is_zipfile(path): - zip = zipfile.ZipFile(path, 'r') - try: - zip.read(os.path.join(package, '__init__.py')) - except KeyError: - pass - else: - zip.close() - return package, full - zip.close() - # FIXME: need special error for package.py case: - raise InstallationError( - 'No package with the name %s found' % package) - - def list(self, options, args): - if args: - raise InstallationError( - 'You cannot give an argument with --list') - for path in sorted(self.paths()): - if not os.path.exists(path): - continue - basename = os.path.basename(path.rstrip(os.path.sep)) - if os.path.isfile(path) and zipfile.is_zipfile(path): - if os.path.dirname(path) not in self.paths(): - logger.notify('Zipped egg: %s' % display_path(path)) - continue - if (basename != 'site-packages' - and basename != 'dist-packages' - and not path.replace('\\', '/').endswith('lib/python')): - continue - logger.notify('In %s:' % display_path(path)) - logger.indent += 2 - zipped = [] - unzipped = [] - try: - for filename in sorted(os.listdir(path)): - ext = os.path.splitext(filename)[1].lower() - if ext in ('.pth', '.egg-info', '.egg-link'): - continue - if ext == '.py': - logger.info( - 'Not displaying %s: not a package' % - display_path(filename) - ) - continue - full = os.path.join(path, filename) - if os.path.isdir(full): - unzipped.append((filename, self.count_package(full))) - elif zipfile.is_zipfile(full): - zipped.append(filename) - else: - logger.info( - 'Unknown file: %s' % display_path(filename) - ) - if zipped: - logger.notify('Zipped packages:') - logger.indent += 2 - try: - for filename in zipped: - logger.notify(filename) - finally: - logger.indent -= 2 - else: - logger.notify('No zipped packages.') - if unzipped: - if options.sort_files: - unzipped.sort(key=lambda x: -x[1]) - logger.notify('Unzipped packages:') - logger.indent += 2 - try: - for filename, count in unzipped: - logger.notify('%s (%i files)' % (filename, count)) - finally: - logger.indent -= 2 - else: - logger.notify('No unzipped packages.') - finally: - logger.indent -= 2 - - def count_package(self, path): - total = 0 - for dirpath, dirnames, filenames in os.walk(path): - filenames = [f for f in filenames - if not f.lower().endswith('.pyc')] - total += len(filenames) - return total |