diff --git a/install.py b/install.py index fe8d5e91c..92bea551a 100644 --- a/install.py +++ b/install.py @@ -8,7 +8,7 @@ import os.path import textwrap import subprocess -from optparse import OptionParser +from argparse import ArgumentParser source_path = os.path.dirname(os.path.realpath(__file__)) bin_path = os.path.join(source_path, "bin") @@ -16,9 +16,9 @@ sys.path.insert(0, src_path) from rez.utils._version import _rez_version -from rez.backport.shutilwhich import which -from build_utils.virtualenv.virtualenv import Logger, create_environment, \ - path_locations +from rez._vendor.shutilwhich import which +from build_utils.virtualenv.virtualenv import (Logger, + create_environment, path_locations) from build_utils.distlib.scripts import ScriptMaker @@ -104,15 +104,23 @@ def copy_completion_scripts(dest_dir): if __name__ == "__main__": usage = ("usage: %prog [options] DEST_DIR ('{version}' in DEST_DIR will " "expand to Rez version)") - parser = OptionParser(usage=usage) - parser.add_option( - '-v', '--verbose', action='count', dest='verbose', default=0, - help="Increase verbosity.") - parser.add_option( - '-s', '--keep-symlinks', action="store_true", default=False, + parser = ArgumentParser(usage=usage) + parser.add_argument('dest_dir') + parser.add_argument( + '-v', '--verbose', + action='count', + dest='verbose', + default=0, + help="Increase verbosity.", + ) + parser.add_argument( + '-s', '--keep-symlinks', + action="store_true", + default=False, help="Don't run realpath on the passed DEST_DIR to resolve symlinks; " - "ie, the baked script locations may still contain symlinks") - opts, args = parser.parse_args() + "ie, the baked script locations may still contain symlinks", + ) + args = parser.parse_args() if " " in os.path.realpath(__file__): err_str = "\nThe absolute path of install.py cannot contain spaces due to setuptools limitation.\n" \ @@ -120,18 +128,15 @@ def copy_completion_scripts(dest_dir): parser.error(err_str) # determine install path - if len(args) != 1: - parser.error("expected DEST_DIR") - - dest_dir = args[0].format(version=_rez_version) + dest_dir = args.dest_dir.format(version=_rez_version) dest_dir = os.path.expanduser(dest_dir) - if not opts.keep_symlinks: + if not args.keep_symlinks: dest_dir = os.path.realpath(dest_dir) - print "installing rez to %s..." % dest_dir + print("installing rez to {}...".format(dest_dir)) # make virtualenv verbose - log_level = Logger.level_for_integer(2 - opts.verbose) + log_level = Logger.level_for_integer(2 - args.verbose) logger = Logger([(log_level, sys.stdout)]) # create the virtualenv @@ -139,9 +144,10 @@ def copy_completion_scripts(dest_dir): # install rez from source _, _, _, venv_bin_dir = path_locations(dest_dir) - py_executable = which("python", env={"PATH":venv_bin_dir, - "PATHEXT":os.environ.get("PATHEXT", - "")}) + py_executable = which( + "python", + env={"PATH":venv_bin_dir, "PATHEXT":os.environ.get("PATHEXT", "")}, + ) args = [py_executable, "setup.py", "install"] if opts.verbose: print "running in %s: %s" % (source_path, " ".join(args)) diff --git a/src/build_utils/add_license.py b/src/build_utils/add_license.py deleted file mode 100644 index e48eae70c..000000000 --- a/src/build_utils/add_license.py +++ /dev/null @@ -1,115 +0,0 @@ -""" -Adds LGPL and Copyright notice to the end of each .py file. You need to run -this script from the src/ subdirectory of the rez source. -""" -import os -import os.path -from datetime import datetime - - -notice = \ -""" -Copyright 2013-{year} {authors}. - -This library is free software: you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation, either -version 3 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library. If not, see . -""" - -year = datetime.now().year - - -skip_dirs = [ - "vendor", - "build_utils", - "backport" -] - - -def extract_copyright_authors(txt): - lines = txt.split('\n') - for line in lines: - if line.startswith("# Copyright"): - if str(year) in line: - part = line.split(str(year))[-1] - elif str(year - 1) in line: - part = line.split(str(year - 1))[-1] - else: - return [] - - parts = part.strip().rstrip('.').split(',') - authors = [] - - for part in parts: - auth = part.strip() - if auth != "Allan Johns": - authors.append(auth) - - return authors - - return [] - - -if __name__ == "__main__": - filepaths = [] - - notice_lines = notice.strip().split('\n') - notice_lines = [("# %s" % x).rstrip() for x in notice_lines] - copyright_line = notice_lines[0] - notice_lines = notice_lines[1:] - - # find py files - for root, dirs, names in os.walk('.'): - for name in names: - if name.endswith(".py"): - filepath = os.path.join(root, name) - print "found: %s" % filepath - filepaths.append(filepath) - - for dirname in skip_dirs: - if dirname in dirs: - dirs.remove(dirname) - - # append notice to each py file - for filepath in filepaths: - with open(filepath) as f: - txt = f.read() - - lines = txt.split('\n') - - while lines and not lines[-1].strip(): - lines.pop() - - while lines and lines[-1].startswith('#'): - lines.pop() - - while lines and not lines[-1].strip(): - lines.pop() - - lines.append('') - lines.append('') - - authors = extract_copyright_authors(txt) - authors = ["Allan Johns"] + authors - - copyright_line_ = copyright_line.format( - year=year, authors=", ".join(authors)) - - lines.append(copyright_line_) - lines.extend(notice_lines) - lines.append('') - - new_txt = '\n'.join(lines) - - print "Writing updated %s..." % filepath - with open(filepath, 'w') as f: - f.write(new_txt) diff --git a/src/rez/__init__.py b/src/rez/__init__.py index d7d12c138..1d5824332 100644 --- a/src/rez/__init__.py +++ b/src/rez/__init__.py @@ -35,17 +35,3 @@ def callback(sig, frame): signal.signal(signal.SIGUSR1, callback) # Register handler -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/_vendor/__init__.py b/src/rez/_vendor/__init__.py new file mode 100644 index 000000000..d21e9023c --- /dev/null +++ b/src/rez/_vendor/__init__.py @@ -0,0 +1,3 @@ +""" +Vendored dependencies. +""" \ No newline at end of file diff --git a/src/rez/backport/lru_cache.py b/src/rez/_vendor/lru_cache.py similarity index 100% rename from src/rez/backport/lru_cache.py rename to src/rez/_vendor/lru_cache.py diff --git a/src/rez/backport/shutilwhich.py b/src/rez/_vendor/shutilwhich.py similarity index 100% rename from src/rez/backport/shutilwhich.py rename to src/rez/_vendor/shutilwhich.py diff --git a/src/rez/backport/__init__.py b/src/rez/backport/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/rez/backport/importlib.py b/src/rez/backport/importlib.py deleted file mode 100644 index df4abfe54..000000000 --- a/src/rez/backport/importlib.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Backport of importlib.import_module from 3.x.""" -import sys - - -def _resolve_name(name, package, level): - """Return the absolute name of the module to be imported.""" - if not hasattr(package, 'rindex'): - raise ValueError("'package' not set to a string") - dot = len(package) - for x in xrange(level, 1, -1): - try: - dot = package.rindex('.', 0, dot) - except ValueError: - raise ValueError("attempted relative import beyond top-level " - "package") - return "%s.%s" % (package[:dot], name) - - -def import_module(name, package=None): - """Import a module. - - The 'package' argument is required when performing a relative import. It - specifies the package to use as the anchor point from which to resolve the - relative import to an absolute import. - - """ - if name.startswith('.'): - if not package: - raise TypeError("relative imports require the 'package' argument") - level = 0 - for character in name: - if character != '.': - break - level += 1 - name = _resolve_name(name[level:], package, level) - __import__(name) - return sys.modules[name] diff --git a/src/rez/backport/ordereddict.py b/src/rez/backport/ordereddict.py deleted file mode 100644 index 7242b5060..000000000 --- a/src/rez/backport/ordereddict.py +++ /dev/null @@ -1,127 +0,0 @@ -# Copyright (c) 2009 Raymond Hettinger -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -from UserDict import DictMixin - -class OrderedDict(dict, DictMixin): - - def __init__(self, *args, **kwds): - if len(args) > 1: - raise TypeError('expected at most 1 arguments, got %d' % len(args)) - try: - self.__end - except AttributeError: - self.clear() - self.update(*args, **kwds) - - def clear(self): - self.__end = end = [] - end += [None, end, end] # sentinel node for doubly linked list - self.__map = {} # key --> [key, prev, next] - dict.clear(self) - - def __setitem__(self, key, value): - if key not in self: - end = self.__end - curr = end[1] - curr[2] = end[1] = self.__map[key] = [key, curr, end] - dict.__setitem__(self, key, value) - - def __delitem__(self, key): - dict.__delitem__(self, key) - key, prev, next = self.__map.pop(key) - prev[2] = next - next[1] = prev - - def __iter__(self): - end = self.__end - curr = end[2] - while curr is not end: - yield curr[0] - curr = curr[2] - - def __reversed__(self): - end = self.__end - curr = end[1] - while curr is not end: - yield curr[0] - curr = curr[1] - - def popitem(self, last=True): - if not self: - raise KeyError('dictionary is empty') - if last: - key = reversed(self).next() - else: - key = iter(self).next() - value = self.pop(key) - return key, value - - def __reduce__(self): - items = [[k, self[k]] for k in self] - tmp = self.__map, self.__end - del self.__map, self.__end - inst_dict = vars(self).copy() - self.__map, self.__end = tmp - if inst_dict: - return (self.__class__, (items,), inst_dict) - return self.__class__, (items,) - - def keys(self): - return list(self) - - setdefault = DictMixin.setdefault - update = DictMixin.update - pop = DictMixin.pop - values = DictMixin.values - items = DictMixin.items - iterkeys = DictMixin.iterkeys - itervalues = DictMixin.itervalues - iteritems = DictMixin.iteritems - - def __repr__(self): - if not self: - return '%s()' % (self.__class__.__name__,) - return '%s(%r)' % (self.__class__.__name__, self.items()) - - def copy(self): - return self.__class__(self) - - @classmethod - def fromkeys(cls, iterable, value=None): - d = cls() - for key in iterable: - d[key] = value - return d - - def __eq__(self, other): - if isinstance(other, OrderedDict): - if len(self) != len(other): - return False - for p, q in zip(self.items(), other.items()): - if p != q: - return False - return True - return dict.__eq__(self, other) - - def __ne__(self, other): - return not self == other diff --git a/src/rez/backport/zipfile.py b/src/rez/backport/zipfile.py deleted file mode 100644 index 2f4beb37f..000000000 --- a/src/rez/backport/zipfile.py +++ /dev/null @@ -1,1411 +0,0 @@ -# Backport of Python-2.6 zipfile class - -""" -Read and write ZIP files. -""" -import struct, os, time, sys, shutil -import binascii, cStringIO, stat - -try: - import zlib # We may need its compression method - crc32 = zlib.crc32 -except ImportError: - zlib = None - crc32 = binascii.crc32 - -__all__ = ["BadZipfile", "error", "ZIP_STORED", "ZIP_DEFLATED", "is_zipfile", - "ZipInfo", "ZipFile", "PyZipFile", "LargeZipFile" ] - -class BadZipfile(Exception): - pass - - -class LargeZipFile(Exception): - """ - Raised when writing a zipfile, the zipfile requires ZIP64 extensions - and those extensions are disabled. - """ - -error = BadZipfile # The exception raised by this module - -ZIP64_LIMIT = (1 << 31) - 1 -ZIP_FILECOUNT_LIMIT = 1 << 16 -ZIP_MAX_COMMENT = (1 << 16) - 1 - -# constants for Zip file compression methods -ZIP_STORED = 0 -ZIP_DEFLATED = 8 -# Other ZIP compression methods not supported - -# Below are some formats and associated data for reading/writing headers using -# the struct module. The names and structures of headers/records are those used -# in the PKWARE description of the ZIP file format: -# http://www.pkware.com/documents/casestudies/APPNOTE.TXT -# (URL valid as of January 2008) - -# The "end of central directory" structure, magic number, size, and indices -# (section V.I in the format document) -structEndArchive = "<4s4H2LH" -stringEndArchive = "PK\005\006" -sizeEndCentDir = struct.calcsize(structEndArchive) - -_ECD_SIGNATURE = 0 -_ECD_DISK_NUMBER = 1 -_ECD_DISK_START = 2 -_ECD_ENTRIES_THIS_DISK = 3 -_ECD_ENTRIES_TOTAL = 4 -_ECD_SIZE = 5 -_ECD_OFFSET = 6 -_ECD_COMMENT_SIZE = 7 -# These last two indices are not part of the structure as defined in the -# spec, but they are used internally by this module as a convenience -_ECD_COMMENT = 8 -_ECD_LOCATION = 9 - -# The "central directory" structure, magic number, size, and indices -# of entries in the structure (section V.F in the format document) -structCentralDir = "<4s4B4HL2L5H2L" -stringCentralDir = "PK\001\002" -sizeCentralDir = struct.calcsize(structCentralDir) - -# indexes of entries in the central directory structure -_CD_SIGNATURE = 0 -_CD_CREATE_VERSION = 1 -_CD_CREATE_SYSTEM = 2 -_CD_EXTRACT_VERSION = 3 -_CD_EXTRACT_SYSTEM = 4 -_CD_FLAG_BITS = 5 -_CD_COMPRESS_TYPE = 6 -_CD_TIME = 7 -_CD_DATE = 8 -_CD_CRC = 9 -_CD_COMPRESSED_SIZE = 10 -_CD_UNCOMPRESSED_SIZE = 11 -_CD_FILENAME_LENGTH = 12 -_CD_EXTRA_FIELD_LENGTH = 13 -_CD_COMMENT_LENGTH = 14 -_CD_DISK_NUMBER_START = 15 -_CD_INTERNAL_FILE_ATTRIBUTES = 16 -_CD_EXTERNAL_FILE_ATTRIBUTES = 17 -_CD_LOCAL_HEADER_OFFSET = 18 - -# The "local file header" structure, magic number, size, and indices -# (section V.A in the format document) -structFileHeader = "<4s2B4HL2L2H" -stringFileHeader = "PK\003\004" -sizeFileHeader = struct.calcsize(structFileHeader) - -_FH_SIGNATURE = 0 -_FH_EXTRACT_VERSION = 1 -_FH_EXTRACT_SYSTEM = 2 -_FH_GENERAL_PURPOSE_FLAG_BITS = 3 -_FH_COMPRESSION_METHOD = 4 -_FH_LAST_MOD_TIME = 5 -_FH_LAST_MOD_DATE = 6 -_FH_CRC = 7 -_FH_COMPRESSED_SIZE = 8 -_FH_UNCOMPRESSED_SIZE = 9 -_FH_FILENAME_LENGTH = 10 -_FH_EXTRA_FIELD_LENGTH = 11 - -# The "Zip64 end of central directory locator" structure, magic number, and size -structEndArchive64Locator = "<4sLQL" -stringEndArchive64Locator = "PK\x06\x07" -sizeEndCentDir64Locator = struct.calcsize(structEndArchive64Locator) - -# The "Zip64 end of central directory" record, magic number, size, and indices -# (section V.G in the format document) -structEndArchive64 = "<4sQ2H2L4Q" -stringEndArchive64 = "PK\x06\x06" -sizeEndCentDir64 = struct.calcsize(structEndArchive64) - -_CD64_SIGNATURE = 0 -_CD64_DIRECTORY_RECSIZE = 1 -_CD64_CREATE_VERSION = 2 -_CD64_EXTRACT_VERSION = 3 -_CD64_DISK_NUMBER = 4 -_CD64_DISK_NUMBER_START = 5 -_CD64_NUMBER_ENTRIES_THIS_DISK = 6 -_CD64_NUMBER_ENTRIES_TOTAL = 7 -_CD64_DIRECTORY_SIZE = 8 -_CD64_OFFSET_START_CENTDIR = 9 - -def is_zipfile(filename): - """Quickly see if file is a ZIP file by checking the magic number.""" - try: - fpin = open(filename, "rb") - endrec = _EndRecData(fpin) - fpin.close() - if endrec: - return True # file has correct magic number - except IOError: - pass - return False - -def _EndRecData64(fpin, offset, endrec): - """ - Read the ZIP64 end-of-archive records and use that to update endrec - """ - fpin.seek(offset - sizeEndCentDir64Locator, 2) - data = fpin.read(sizeEndCentDir64Locator) - sig, diskno, reloff, disks = struct.unpack(structEndArchive64Locator, data) - if sig != stringEndArchive64Locator: - return endrec - - if diskno != 0 or disks != 1: - raise BadZipfile("zipfiles that span multiple disks are not supported") - - # Assume no 'zip64 extensible data' - fpin.seek(offset - sizeEndCentDir64Locator - sizeEndCentDir64, 2) - data = fpin.read(sizeEndCentDir64) - sig, sz, create_version, read_version, disk_num, disk_dir, \ - dircount, dircount2, dirsize, diroffset = \ - struct.unpack(structEndArchive64, data) - if sig != stringEndArchive64: - return endrec - - # Update the original endrec using data from the ZIP64 record - endrec[_ECD_SIGNATURE] = sig - endrec[_ECD_DISK_NUMBER] = disk_num - endrec[_ECD_DISK_START] = disk_dir - endrec[_ECD_ENTRIES_THIS_DISK] = dircount - endrec[_ECD_ENTRIES_TOTAL] = dircount2 - endrec[_ECD_SIZE] = dirsize - endrec[_ECD_OFFSET] = diroffset - return endrec - - -def _EndRecData(fpin): - """Return data from the "End of Central Directory" record, or None. - - The data is a list of the nine items in the ZIP "End of central dir" - record followed by a tenth item, the file seek offset of this record.""" - - # Determine file size - fpin.seek(0, 2) - filesize = fpin.tell() - - # Check to see if this is ZIP file with no archive comment (the - # "end of central directory" structure should be the last item in the - # file if this is the case). - try: - fpin.seek(-sizeEndCentDir, 2) - except IOError: - return None - data = fpin.read() - if data[0:4] == stringEndArchive and data[-2:] == "\000\000": - # the signature is correct and there's no comment, unpack structure - endrec = struct.unpack(structEndArchive, data) - endrec=list(endrec) - - # Append a blank comment and record start offset - endrec.append("") - endrec.append(filesize - sizeEndCentDir) - - # Try to read the "Zip64 end of central directory" structure - return _EndRecData64(fpin, -sizeEndCentDir, endrec) - - # Either this is not a ZIP file, or it is a ZIP file with an archive - # comment. Search the end of the file for the "end of central directory" - # record signature. The comment is the last item in the ZIP file and may be - # up to 64K long. It is assumed that the "end of central directory" magic - # number does not appear in the comment. - maxCommentStart = max(filesize - (1 << 16) - sizeEndCentDir, 0) - fpin.seek(maxCommentStart, 0) - data = fpin.read() - start = data.rfind(stringEndArchive) - if start >= 0: - # found the magic number; attempt to unpack and interpret - recData = data[start:start+sizeEndCentDir] - endrec = list(struct.unpack(structEndArchive, recData)) - comment = data[start+sizeEndCentDir:] - # check that comment length is correct - if endrec[_ECD_COMMENT_SIZE] == len(comment): - # Append the archive comment and start offset - endrec.append(comment) - endrec.append(maxCommentStart + start) - - # Try to read the "Zip64 end of central directory" structure - return _EndRecData64(fpin, maxCommentStart + start - filesize, - endrec) - - # Unable to find a valid end of central directory structure - return - - -class ZipInfo (object): - """Class with attributes describing each file in the ZIP archive.""" - - __slots__ = ( - 'orig_filename', - 'filename', - 'date_time', - 'compress_type', - 'comment', - 'extra', - 'create_system', - 'create_version', - 'extract_version', - 'reserved', - 'flag_bits', - 'volume', - 'internal_attr', - 'external_attr', - 'header_offset', - 'CRC', - 'compress_size', - 'file_size', - '_raw_time', - ) - - def __init__(self, filename="NoName", date_time=(1980,1,1,0,0,0)): - self.orig_filename = filename # Original file name in archive - - # Terminate the file name at the first null byte. Null bytes in file - # names are used as tricks by viruses in archives. - null_byte = filename.find(chr(0)) - if null_byte >= 0: - filename = filename[0:null_byte] - # This is used to ensure paths in generated ZIP files always use - # forward slashes as the directory separator, as required by the - # ZIP format specification. - if os.sep != "/" and os.sep in filename: - filename = filename.replace(os.sep, "/") - - self.filename = filename # Normalized file name - self.date_time = date_time # year, month, day, hour, min, sec - # Standard values: - self.compress_type = ZIP_STORED # Type of compression for the file - self.comment = "" # Comment for each file - self.extra = "" # ZIP extra data - if sys.platform == 'win32': - self.create_system = 0 # System which created ZIP archive - else: - # Assume everything else is unix-y - self.create_system = 3 # System which created ZIP archive - self.create_version = 20 # Version which created ZIP archive - self.extract_version = 20 # Version needed to extract archive - self.reserved = 0 # Must be zero - self.flag_bits = 0 # ZIP flag bits - self.volume = 0 # Volume number of file header - self.internal_attr = 0 # Internal attributes - self.external_attr = 0 # External file attributes - # Other attributes are set by class ZipFile: - # header_offset Byte offset to the file header - # CRC CRC-32 of the uncompressed file - # compress_size Size of the compressed file - # file_size Size of the uncompressed file - - def FileHeader(self): - """Return the per-file header as a string.""" - dt = self.date_time - dosdate = (dt[0] - 1980) << 9 | dt[1] << 5 | dt[2] - dostime = dt[3] << 11 | dt[4] << 5 | (dt[5] // 2) - if self.flag_bits & 0x08: - # Set these to zero because we write them after the file data - CRC = compress_size = file_size = 0 - else: - CRC = self.CRC - compress_size = self.compress_size - file_size = self.file_size - - extra = self.extra - - if file_size > ZIP64_LIMIT or compress_size > ZIP64_LIMIT: - # File is larger than what fits into a 4 byte integer, - # fall back to the ZIP64 extension - fmt = '= 24: - counts = unpack('> 1) & 0x7FFFFFFF) ^ poly - else: - crc = ((crc >> 1) & 0x7FFFFFFF) - table[i] = crc - return table - crctable = _GenerateCRCTable() - - def _crc32(self, ch, crc): - """Compute the CRC32 primitive on one byte.""" - return ((crc >> 8) & 0xffffff) ^ self.crctable[(crc ^ ord(ch)) & 0xff] - - def __init__(self, pwd): - self.key0 = 305419896 - self.key1 = 591751049 - self.key2 = 878082192 - for p in pwd: - self._UpdateKeys(p) - - def _UpdateKeys(self, c): - self.key0 = self._crc32(c, self.key0) - self.key1 = (self.key1 + (self.key0 & 255)) & 4294967295 - self.key1 = (self.key1 * 134775813 + 1) & 4294967295 - self.key2 = self._crc32(chr((self.key1 >> 24) & 255), self.key2) - - def __call__(self, c): - """Decrypt a single character.""" - c = ord(c) - k = self.key2 | 2 - c = c ^ (((k * (k^1)) >> 8) & 255) - c = chr(c) - self._UpdateKeys(c) - return c - -class ZipExtFile: - """File-like object for reading an archive member. - Is returned by ZipFile.open(). - """ - - def __init__(self, fileobj, zipinfo, decrypt=None): - self.fileobj = fileobj - self.decrypter = decrypt - self.bytes_read = 0L - self.rawbuffer = '' - self.readbuffer = '' - self.linebuffer = '' - self.eof = False - self.univ_newlines = False - self.nlSeps = ("\n", ) - self.lastdiscard = '' - - self.compress_type = zipinfo.compress_type - self.compress_size = zipinfo.compress_size - - self.closed = False - self.mode = "r" - self.name = zipinfo.filename - - # read from compressed files in 64k blocks - self.compreadsize = 64*1024 - if self.compress_type == ZIP_DEFLATED: - self.dc = zlib.decompressobj(-15) - - def set_univ_newlines(self, univ_newlines): - self.univ_newlines = univ_newlines - - # pick line separator char(s) based on universal newlines flag - self.nlSeps = ("\n", ) - if self.univ_newlines: - self.nlSeps = ("\r\n", "\r", "\n") - - def __iter__(self): - return self - - def next(self): - nextline = self.readline() - if not nextline: - raise StopIteration() - - return nextline - - def close(self): - self.closed = True - - def _checkfornewline(self): - nl, nllen = -1, -1 - if self.linebuffer: - # ugly check for cases where half of an \r\n pair was - # read on the last pass, and the \r was discarded. In this - # case we just throw away the \n at the start of the buffer. - if (self.lastdiscard, self.linebuffer[0]) == ('\r','\n'): - self.linebuffer = self.linebuffer[1:] - - for sep in self.nlSeps: - nl = self.linebuffer.find(sep) - if nl >= 0: - nllen = len(sep) - return nl, nllen - - return nl, nllen - - def readline(self, size = -1): - """Read a line with approx. size. If size is negative, - read a whole line. - """ - if size < 0: - size = sys.maxint - elif size == 0: - return '' - - # check for a newline already in buffer - nl, nllen = self._checkfornewline() - - if nl >= 0: - # the next line was already in the buffer - nl = min(nl, size) - else: - # no line break in buffer - try to read more - size -= len(self.linebuffer) - while nl < 0 and size > 0: - buf = self.read(min(size, 100)) - if not buf: - break - self.linebuffer += buf - size -= len(buf) - - # check for a newline in buffer - nl, nllen = self._checkfornewline() - - # we either ran out of bytes in the file, or - # met the specified size limit without finding a newline, - # so return current buffer - if nl < 0: - s = self.linebuffer - self.linebuffer = '' - return s - - buf = self.linebuffer[:nl] - self.lastdiscard = self.linebuffer[nl:nl + nllen] - self.linebuffer = self.linebuffer[nl + nllen:] - - # line is always returned with \n as newline char (except possibly - # for a final incomplete line in the file, which is handled above). - return buf + "\n" - - def readlines(self, sizehint = -1): - """Return a list with all (following) lines. The sizehint parameter - is ignored in this implementation. - """ - result = [] - while True: - line = self.readline() - if not line: break - result.append(line) - return result - - def read(self, size = None): - # act like file() obj and return empty string if size is 0 - if size == 0: - return '' - - # determine read size - bytesToRead = self.compress_size - self.bytes_read - - # adjust read size for encrypted files since the first 12 bytes - # are for the encryption/password information - if self.decrypter is not None: - bytesToRead -= 12 - - if size is not None and size >= 0: - if self.compress_type == ZIP_STORED: - lr = len(self.readbuffer) - bytesToRead = min(bytesToRead, size - lr) - elif self.compress_type == ZIP_DEFLATED: - if len(self.readbuffer) > size: - # the user has requested fewer bytes than we've already - # pulled through the decompressor; don't read any more - bytesToRead = 0 - else: - # user will use up the buffer, so read some more - lr = len(self.rawbuffer) - bytesToRead = min(bytesToRead, self.compreadsize - lr) - - # avoid reading past end of file contents - if bytesToRead + self.bytes_read > self.compress_size: - bytesToRead = self.compress_size - self.bytes_read - - # try to read from file (if necessary) - if bytesToRead > 0: - bytes = self.fileobj.read(bytesToRead) - self.bytes_read += len(bytes) - self.rawbuffer += bytes - - # handle contents of raw buffer - if self.rawbuffer: - newdata = self.rawbuffer - self.rawbuffer = '' - - # decrypt new data if we were given an object to handle that - if newdata and self.decrypter is not None: - newdata = ''.join(map(self.decrypter, newdata)) - - # decompress newly read data if necessary - if newdata and self.compress_type == ZIP_DEFLATED: - newdata = self.dc.decompress(newdata) - self.rawbuffer = self.dc.unconsumed_tail - if self.eof and len(self.rawbuffer) == 0: - # we're out of raw bytes (both from the file and - # the local buffer); flush just to make sure the - # decompressor is done - newdata += self.dc.flush() - # prevent decompressor from being used again - self.dc = None - - self.readbuffer += newdata - - - # return what the user asked for - if size is None or len(self.readbuffer) <= size: - bytes = self.readbuffer - self.readbuffer = '' - else: - bytes = self.readbuffer[:size] - self.readbuffer = self.readbuffer[size:] - - return bytes - - -class ZipFile: - """ Class with methods to open, read, write, close, list zip files. - - z = ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) - - file: Either the path to the file, or a file-like object. - If it is a path, the file will be opened and closed by ZipFile. - mode: The mode can be either read "r", write "w" or append "a". - compression: ZIP_STORED (no compression) or ZIP_DEFLATED (requires zlib). - allowZip64: if True ZipFile will create files with ZIP64 extensions when - needed, otherwise it will raise an exception when this would - be necessary. - - """ - - fp = None # Set here since __del__ checks it - - def __init__(self, file, mode="r", compression=ZIP_STORED, allowZip64=False): - """Open the ZIP file with mode read "r", write "w" or append "a".""" - if mode not in ("r", "w", "a"): - raise RuntimeError('ZipFile() requires mode "r", "w", or "a"') - - if compression == ZIP_STORED: - pass - elif compression == ZIP_DEFLATED: - if not zlib: - raise RuntimeError,\ - "Compression requires the (missing) zlib module" - else: - raise RuntimeError, "That compression method is not supported" - - self._allowZip64 = allowZip64 - self._didModify = False - self.debug = 0 # Level of printing: 0 through 3 - self.NameToInfo = {} # Find file info given name - self.filelist = [] # List of ZipInfo instances for archive - self.compression = compression # Method of compression - self.mode = key = mode.replace('b', '')[0] - self.pwd = None - self.comment = '' - - # Check if we were passed a file-like object - if isinstance(file, basestring): - self._filePassed = 0 - self.filename = file - modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'} - try: - self.fp = open(file, modeDict[mode]) - except IOError: - if mode == 'a': - mode = key = 'w' - self.fp = open(file, modeDict[mode]) - else: - raise - else: - self._filePassed = 1 - self.fp = file - self.filename = getattr(file, 'name', None) - - if key == 'r': - self._GetContents() - elif key == 'w': - pass - elif key == 'a': - try: # See if file is a zip file - self._RealGetContents() - # seek to start of directory and overwrite - self.fp.seek(self.start_dir, 0) - except BadZipfile: # file is not a zip file, just append - self.fp.seek(0, 2) - else: - if not self._filePassed: - self.fp.close() - self.fp = None - raise RuntimeError, 'Mode must be "r", "w" or "a"' - - def _GetContents(self): - """Read the directory, making sure we close the file if the format - is bad.""" - try: - self._RealGetContents() - except BadZipfile: - if not self._filePassed: - self.fp.close() - self.fp = None - raise - - def _RealGetContents(self): - """Read in the table of contents for the ZIP file.""" - fp = self.fp - endrec = _EndRecData(fp) - if not endrec: - raise BadZipfile, "File is not a zip file" - if self.debug > 1: - print endrec - size_cd = endrec[_ECD_SIZE] # bytes in central directory - offset_cd = endrec[_ECD_OFFSET] # offset of central directory - self.comment = endrec[_ECD_COMMENT] # archive comment - - # "concat" is zero, unless zip was concatenated to another file - concat = endrec[_ECD_LOCATION] - size_cd - offset_cd - if endrec[_ECD_SIGNATURE] == stringEndArchive64: - # If Zip64 extension structures are present, account for them - concat -= (sizeEndCentDir64 + sizeEndCentDir64Locator) - - if self.debug > 2: - inferred = concat + offset_cd - print "given, inferred, offset", offset_cd, inferred, concat - # self.start_dir: Position of start of central directory - self.start_dir = offset_cd + concat - fp.seek(self.start_dir, 0) - data = fp.read(size_cd) - fp = cStringIO.StringIO(data) - total = 0 - while total < size_cd: - centdir = fp.read(sizeCentralDir) - if centdir[0:4] != stringCentralDir: - raise BadZipfile, "Bad magic number for central directory" - centdir = struct.unpack(structCentralDir, centdir) - if self.debug > 2: - print centdir - filename = fp.read(centdir[_CD_FILENAME_LENGTH]) - # Create ZipInfo instance to store file information - x = ZipInfo(filename) - x.extra = fp.read(centdir[_CD_EXTRA_FIELD_LENGTH]) - x.comment = fp.read(centdir[_CD_COMMENT_LENGTH]) - x.header_offset = centdir[_CD_LOCAL_HEADER_OFFSET] - (x.create_version, x.create_system, x.extract_version, x.reserved, - x.flag_bits, x.compress_type, t, d, - x.CRC, x.compress_size, x.file_size) = centdir[1:12] - x.volume, x.internal_attr, x.external_attr = centdir[15:18] - # Convert date/time code to (year, month, day, hour, min, sec) - x._raw_time = t - x.date_time = ( (d>>9)+1980, (d>>5)&0xF, d&0x1F, - t>>11, (t>>5)&0x3F, (t&0x1F) * 2 ) - - x._decodeExtra() - x.header_offset = x.header_offset + concat - x.filename = x._decodeFilename() - self.filelist.append(x) - self.NameToInfo[x.filename] = x - - # update total bytes read from central directory - total = (total + sizeCentralDir + centdir[_CD_FILENAME_LENGTH] - + centdir[_CD_EXTRA_FIELD_LENGTH] - + centdir[_CD_COMMENT_LENGTH]) - - if self.debug > 2: - print "total", total - - - def namelist(self): - """Return a list of file names in the archive.""" - l = [] - for data in self.filelist: - l.append(data.filename) - return l - - def infolist(self): - """Return a list of class ZipInfo instances for files in the - archive.""" - return self.filelist - - def printdir(self): - """Print a table of contents for the zip file.""" - print "%-46s %19s %12s" % ("File Name", "Modified ", "Size") - for zinfo in self.filelist: - date = "%d-%02d-%02d %02d:%02d:%02d" % zinfo.date_time[:6] - print "%-46s %s %12d" % (zinfo.filename, date, zinfo.file_size) - - def testzip(self): - """Read all the files and check the CRC.""" - chunk_size = 2 ** 20 - for zinfo in self.filelist: - try: - # Read by chunks, to avoid an OverflowError or a - # MemoryError with very large embedded files. - f = self.open(zinfo.filename, "r") - while f.read(chunk_size): # Check CRC-32 - pass - except BadZipfile: - return zinfo.filename - - def getinfo(self, name): - """Return the instance of ZipInfo given 'name'.""" - info = self.NameToInfo.get(name) - if info is None: - raise KeyError( - 'There is no item named %r in the archive' % name) - - return info - - def setpassword(self, pwd): - """Set default password for encrypted files.""" - self.pwd = pwd - - def read(self, name, pwd=None): - """Return file bytes (as a string) for name.""" - return self.open(name, "r", pwd).read() - - def open(self, name, mode="r", pwd=None): - """Return file-like object for 'name'.""" - if mode not in ("r", "U", "rU"): - raise RuntimeError, 'open() requires mode "r", "U", or "rU"' - if not self.fp: - raise RuntimeError, \ - "Attempt to read ZIP archive that was already closed" - - # Only open a new file for instances where we were not - # given a file object in the constructor - if self._filePassed: - zef_file = self.fp - else: - zef_file = open(self.filename, 'rb') - - # Make sure we have an info object - if isinstance(name, ZipInfo): - # 'name' is already an info object - zinfo = name - else: - # Get info object for name - zinfo = self.getinfo(name) - - zef_file.seek(zinfo.header_offset, 0) - - # Skip the file header: - fheader = zef_file.read(sizeFileHeader) - if fheader[0:4] != stringFileHeader: - raise BadZipfile, "Bad magic number for file header" - - fheader = struct.unpack(structFileHeader, fheader) - fname = zef_file.read(fheader[_FH_FILENAME_LENGTH]) - if fheader[_FH_EXTRA_FIELD_LENGTH]: - zef_file.read(fheader[_FH_EXTRA_FIELD_LENGTH]) - - if fname != zinfo.orig_filename: - raise BadZipfile, \ - 'File name in directory "%s" and header "%s" differ.' % ( - zinfo.orig_filename, fname) - - # check for encrypted flag & handle password - is_encrypted = zinfo.flag_bits & 0x1 - zd = None - if is_encrypted: - if not pwd: - pwd = self.pwd - if not pwd: - raise RuntimeError, "File %s is encrypted, " \ - "password required for extraction" % name - - zd = _ZipDecrypter(pwd) - # The first 12 bytes in the cypher stream is an encryption header - # used to strengthen the algorithm. The first 11 bytes are - # completely random, while the 12th contains the MSB of the CRC, - # or the MSB of the file time depending on the header type - # and is used to check the correctness of the password. - bytes = zef_file.read(12) - h = map(zd, bytes[0:12]) - if zinfo.flag_bits & 0x8: - # compare against the file type from extended local headers - check_byte = (zinfo._raw_time >> 8) & 0xff - else: - # compare against the CRC otherwise - check_byte = (zinfo.CRC >> 24) & 0xff - if ord(h[11]) != check_byte: - raise RuntimeError("Bad password for file", name) - - # build and return a ZipExtFile - if zd is None: - zef = ZipExtFile(zef_file, zinfo) - else: - zef = ZipExtFile(zef_file, zinfo, zd) - - # set universal newlines on ZipExtFile if necessary - if "U" in mode: - zef.set_univ_newlines(True) - return zef - - def extract(self, member, path=None, pwd=None): - """Extract a member from the archive to the current working directory, - using its full name. Its file information is extracted as accurately - as possible. `member' may be a filename or a ZipInfo object. You can - specify a different directory using `path'. - """ - if not isinstance(member, ZipInfo): - member = self.getinfo(member) - - if path is None: - path = os.getcwd() - - return self._extract_member(member, path, pwd) - - def extractall(self, path=None, members=None, pwd=None): - """Extract all members from the archive to the current working - directory. `path' specifies a different directory to extract to. - `members' is optional and must be a subset of the list returned - by namelist(). - """ - if members is None: - members = self.namelist() - - for zipinfo in members: - self.extract(zipinfo, path, pwd) - - def _extract_member(self, member, targetpath, pwd): - """Extract the ZipInfo object 'member' to a physical - file on the path targetpath. - """ - # build the destination pathname, replacing - # forward slashes to platform specific separators. - # Strip trailing path separator, unless it represents the root. - if (targetpath[-1:] in (os.path.sep, os.path.altsep) - and len(os.path.splitdrive(targetpath)[1]) > 1): - targetpath = targetpath[:-1] - - # don't include leading "/" from file name if present - if member.filename[0] == '/': - targetpath = os.path.join(targetpath, member.filename[1:]) - else: - targetpath = os.path.join(targetpath, member.filename) - - targetpath = os.path.normpath(targetpath) - - # Create all upper directories if necessary. - upperdirs = os.path.dirname(targetpath) - if upperdirs and not os.path.exists(upperdirs): - os.makedirs(upperdirs) - - if member.filename[-1] == '/': - if not os.path.isdir(targetpath): - os.mkdir(targetpath) - return targetpath - - source = self.open(member, pwd=pwd) - target = file(targetpath, "wb") - shutil.copyfileobj(source, target) - source.close() - target.close() - - return targetpath - - def _writecheck(self, zinfo): - """Check for errors before writing a file to the archive.""" - if zinfo.filename in self.NameToInfo: - if self.debug: # Warning for duplicate names - print "Duplicate name:", zinfo.filename - if self.mode not in ("w", "a"): - raise RuntimeError, 'write() requires mode "w" or "a"' - if not self.fp: - raise RuntimeError, \ - "Attempt to write ZIP archive that was already closed" - if zinfo.compress_type == ZIP_DEFLATED and not zlib: - raise RuntimeError, \ - "Compression requires the (missing) zlib module" - if zinfo.compress_type not in (ZIP_STORED, ZIP_DEFLATED): - raise RuntimeError, \ - "That compression method is not supported" - if zinfo.file_size > ZIP64_LIMIT: - if not self._allowZip64: - raise LargeZipFile("Filesize would require ZIP64 extensions") - if zinfo.header_offset > ZIP64_LIMIT: - if not self._allowZip64: - raise LargeZipFile("Zipfile size would require ZIP64 extensions") - - def write(self, filename, arcname=None, compress_type=None): - """Put the bytes from filename into the archive under the name - arcname.""" - if not self.fp: - raise RuntimeError( - "Attempt to write to ZIP archive that was already closed") - - st = os.stat(filename) - isdir = stat.S_ISDIR(st.st_mode) - mtime = time.localtime(st.st_mtime) - date_time = mtime[0:6] - # Create ZipInfo instance to store file information - if arcname is None: - arcname = filename - arcname = os.path.normpath(os.path.splitdrive(arcname)[1]) - while arcname[0] in (os.sep, os.altsep): - arcname = arcname[1:] - if isdir: - arcname += '/' - zinfo = ZipInfo(arcname, date_time) - zinfo.external_attr = (st[0] & 0xFFFF) << 16L # Unix attributes - if compress_type is None: - zinfo.compress_type = self.compression - else: - zinfo.compress_type = compress_type - - zinfo.file_size = st.st_size - zinfo.flag_bits = 0x00 - zinfo.header_offset = self.fp.tell() # Start of header bytes - - self._writecheck(zinfo) - self._didModify = True - - if isdir: - zinfo.file_size = 0 - zinfo.compress_size = 0 - zinfo.CRC = 0 - self.filelist.append(zinfo) - self.NameToInfo[zinfo.filename] = zinfo - self.fp.write(zinfo.FileHeader()) - return - - fp = open(filename, "rb") - # Must overwrite CRC and sizes with correct data later - zinfo.CRC = CRC = 0 - zinfo.compress_size = compress_size = 0 - zinfo.file_size = file_size = 0 - self.fp.write(zinfo.FileHeader()) - if zinfo.compress_type == ZIP_DEFLATED: - cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, - zlib.DEFLATED, -15) - else: - cmpr = None - while 1: - buf = fp.read(1024 * 8) - if not buf: - break - file_size = file_size + len(buf) - CRC = crc32(buf, CRC) & 0xffffffff - if cmpr: - buf = cmpr.compress(buf) - compress_size = compress_size + len(buf) - self.fp.write(buf) - fp.close() - if cmpr: - buf = cmpr.flush() - compress_size = compress_size + len(buf) - self.fp.write(buf) - zinfo.compress_size = compress_size - else: - zinfo.compress_size = file_size - zinfo.CRC = CRC - zinfo.file_size = file_size - # Seek backwards and write CRC and file sizes - position = self.fp.tell() # Preserve current position in file - self.fp.seek(zinfo.header_offset + 14, 0) - self.fp.write(struct.pack(" ZIP64_LIMIT \ - or zinfo.compress_size > ZIP64_LIMIT: - extra.append(zinfo.file_size) - extra.append(zinfo.compress_size) - file_size = 0xffffffff - compress_size = 0xffffffff - else: - file_size = zinfo.file_size - compress_size = zinfo.compress_size - - if zinfo.header_offset > ZIP64_LIMIT: - extra.append(zinfo.header_offset) - header_offset = 0xffffffffL - else: - header_offset = zinfo.header_offset - - extra_data = zinfo.extra - if extra: - # Append a ZIP64 field to the extra's - extra_data = struct.pack( - '>sys.stderr, (structCentralDir, - stringCentralDir, create_version, - zinfo.create_system, extract_version, zinfo.reserved, - zinfo.flag_bits, zinfo.compress_type, dostime, dosdate, - zinfo.CRC, compress_size, file_size, - len(zinfo.filename), len(extra_data), len(zinfo.comment), - 0, zinfo.internal_attr, zinfo.external_attr, - header_offset) - raise - self.fp.write(centdir) - self.fp.write(filename) - self.fp.write(extra_data) - self.fp.write(zinfo.comment) - - pos2 = self.fp.tell() - # Write end-of-zip-archive record - centDirCount = count - centDirSize = pos2 - pos1 - centDirOffset = pos1 - if (centDirCount >= ZIP_FILECOUNT_LIMIT or - centDirOffset > ZIP64_LIMIT or - centDirSize > ZIP64_LIMIT): - # Need to write the ZIP64 end-of-archive records - zip64endrec = struct.pack( - structEndArchive64, stringEndArchive64, - 44, 45, 45, 0, 0, centDirCount, centDirCount, - centDirSize, centDirOffset) - self.fp.write(zip64endrec) - - zip64locrec = struct.pack( - structEndArchive64Locator, - stringEndArchive64Locator, 0, pos2, 1) - self.fp.write(zip64locrec) - centDirCount = min(centDirCount, 0xFFFF) - centDirSize = min(centDirSize, 0xFFFFFFFF) - centDirOffset = min(centDirOffset, 0xFFFFFFFF) - - # check for valid comment length - if len(self.comment) >= ZIP_MAX_COMMENT: - if self.debug > 0: - msg = 'Archive comment is too long; truncating to %d bytes' \ - % ZIP_MAX_COMMENT - self.comment = self.comment[:ZIP_MAX_COMMENT] - - endrec = struct.pack(structEndArchive, stringEndArchive, - 0, 0, centDirCount, centDirCount, - centDirSize, centDirOffset, len(self.comment)) - self.fp.write(endrec) - self.fp.write(self.comment) - self.fp.flush() - - if not self._filePassed: - self.fp.close() - self.fp = None - - -class PyZipFile(ZipFile): - """Class to create ZIP archives with Python library files and packages.""" - - def writepy(self, pathname, basename = ""): - """Add all files from "pathname" to the ZIP archive. - - If pathname is a package directory, search the directory and - all package subdirectories recursively for all *.py and enter - the modules into the archive. If pathname is a plain - directory, listdir *.py and enter all modules. Else, pathname - must be a Python *.py file and the module will be put into the - archive. Added modules are always module.pyo or module.pyc. - This method will compile the module.py into module.pyc if - necessary. - """ - dir, name = os.path.split(pathname) - if os.path.isdir(pathname): - initname = os.path.join(pathname, "__init__.py") - if os.path.isfile(initname): - # This is a package directory, add it - if basename: - basename = "%s/%s" % (basename, name) - else: - basename = name - if self.debug: - print "Adding package in", pathname, "as", basename - fname, arcname = self._get_codename(initname[0:-3], basename) - if self.debug: - print "Adding", arcname - self.write(fname, arcname) - dirlist = os.listdir(pathname) - dirlist.remove("__init__.py") - # Add all *.py files and package subdirectories - for filename in dirlist: - path = os.path.join(pathname, filename) - root, ext = os.path.splitext(filename) - if os.path.isdir(path): - if os.path.isfile(os.path.join(path, "__init__.py")): - # This is a package directory, add it - self.writepy(path, basename) # Recursive call - elif ext == ".py": - fname, arcname = self._get_codename(path[0:-3], - basename) - if self.debug: - print "Adding", arcname - self.write(fname, arcname) - else: - # This is NOT a package directory, add its files at top level - if self.debug: - print "Adding files from directory", pathname - for filename in os.listdir(pathname): - path = os.path.join(pathname, filename) - root, ext = os.path.splitext(filename) - if ext == ".py": - fname, arcname = self._get_codename(path[0:-3], - basename) - if self.debug: - print "Adding", arcname - self.write(fname, arcname) - else: - if pathname[-3:] != ".py": - raise RuntimeError, \ - 'Files added with writepy() must end with ".py"' - fname, arcname = self._get_codename(pathname[0:-3], basename) - if self.debug: - print "Adding file", arcname - self.write(fname, arcname) - - def _get_codename(self, pathname, basename): - """Return (filename, archivename) for the path. - - Given a module name path, return the correct file path and - archive name, compiling if necessary. For example, given - /python/lib/string, return (/python/lib/string.pyc, string). - """ - file_py = pathname + ".py" - file_pyc = pathname + ".pyc" - file_pyo = pathname + ".pyo" - if os.path.isfile(file_pyo) and \ - os.stat(file_pyo).st_mtime >= os.stat(file_py).st_mtime: - fname = file_pyo # Use .pyo file - elif not os.path.isfile(file_pyc) or \ - os.stat(file_pyc).st_mtime < os.stat(file_py).st_mtime: - import py_compile - if self.debug: - print "Compiling", file_py - try: - py_compile.compile(file_py, file_pyc, None, True) - except py_compile.PyCompileError,err: - print err.msg - fname = file_pyc - else: - fname = file_pyc - archivename = os.path.split(fname)[1] - if basename: - archivename = "%s/%s" % (basename, archivename) - return (fname, archivename) - - -def main(args = None): - import textwrap - USAGE=textwrap.dedent("""\ - Usage: - zipfile.py -l zipfile.zip # Show listing of a zipfile - zipfile.py -t zipfile.zip # Test if a zipfile is valid - zipfile.py -e zipfile.zip target # Extract zipfile into target dir - zipfile.py -c zipfile.zip src ... # Create zipfile from sources - """) - if args is None: - args = sys.argv[1:] - - if not args or args[0] not in ('-l', '-c', '-e', '-t'): - print USAGE - sys.exit(1) - - if args[0] == '-l': - if len(args) != 2: - print USAGE - sys.exit(1) - zf = ZipFile(args[1], 'r') - zf.printdir() - zf.close() - - elif args[0] == '-t': - if len(args) != 2: - print USAGE - sys.exit(1) - zf = ZipFile(args[1], 'r') - zf.testzip() - print "Done testing" - - elif args[0] == '-e': - if len(args) != 3: - print USAGE - sys.exit(1) - - zf = ZipFile(args[1], 'r') - out = args[2] - for path in zf.namelist(): - if path.startswith('./'): - tgt = os.path.join(out, path[2:]) - else: - tgt = os.path.join(out, path) - - tgtdir = os.path.dirname(tgt) - if not os.path.exists(tgtdir): - os.makedirs(tgtdir) - fp = open(tgt, 'wb') - fp.write(zf.read(path)) - fp.close() - zf.close() - - elif args[0] == '-c': - if len(args) < 3: - print USAGE - sys.exit(1) - - def addToZip(zf, path, zippath): - if os.path.isfile(path): - zf.write(path, zippath, ZIP_DEFLATED) - elif os.path.isdir(path): - for nm in os.listdir(path): - addToZip(zf, - os.path.join(path, nm), os.path.join(zippath, nm)) - # else: ignore - - zf = ZipFile(args[1], 'w', allowZip64=True) - for src in args[2:]: - addToZip(zf, src, os.path.basename(src)) - - zf.close() - -if __name__ == "__main__": - main() diff --git a/src/rez/bind/__init__.py b/src/rez/bind/__init__.py index f49e68d05..e69de29bb 100644 --- a/src/rez/bind/__init__.py +++ b/src/rez/bind/__init__.py @@ -1,16 +0,0 @@ - - -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/_utils.py b/src/rez/bind/_utils.py index fb75c1bb0..111b9c91c 100644 --- a/src/rez/bind/_utils.py +++ b/src/rez/bind/_utils.py @@ -123,17 +123,3 @@ def _run_command(args): return stdout, stderr, p.returncode -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/arch.py b/src/rez/bind/arch.py index 6c83f4d7b..bc51d60fc 100644 --- a/src/rez/bind/arch.py +++ b/src/rez/bind/arch.py @@ -18,17 +18,3 @@ def bind(path, version_range=None, opts=None, parser=None): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/cmake.py b/src/rez/bind/cmake.py index 781fecc1d..8eb634b92 100644 --- a/src/rez/bind/cmake.py +++ b/src/rez/bind/cmake.py @@ -39,17 +39,3 @@ def make_root(variant, root): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/hello_world.py b/src/rez/bind/hello_world.py index f080a37db..8e481ffd2 100644 --- a/src/rez/bind/hello_world.py +++ b/src/rez/bind/hello_world.py @@ -52,17 +52,3 @@ def make_root(variant, root): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/os.py b/src/rez/bind/os.py index 2d5151116..c4215ec5c 100644 --- a/src/rez/bind/os.py +++ b/src/rez/bind/os.py @@ -20,17 +20,3 @@ def bind(path, version_range=None, opts=None, parser=None): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/platform.py b/src/rez/bind/platform.py index 2ad6239d6..54eda561f 100644 --- a/src/rez/bind/platform.py +++ b/src/rez/bind/platform.py @@ -18,17 +18,3 @@ def bind(path, version_range=None, opts=None, parser=None): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/python.py b/src/rez/bind/python.py index f54805765..5df0b9e98 100644 --- a/src/rez/bind/python.py +++ b/src/rez/bind/python.py @@ -88,17 +88,3 @@ def make_root(variant, root): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/rez.py b/src/rez/bind/rez.py index a06a4210e..dda0529d3 100644 --- a/src/rez/bind/rez.py +++ b/src/rez/bind/rez.py @@ -37,17 +37,3 @@ def make_root(variant, root): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/bind/rezgui.py b/src/rez/bind/rezgui.py index b791376ba..ad087de1b 100644 --- a/src/rez/bind/rezgui.py +++ b/src/rez/bind/rezgui.py @@ -66,17 +66,3 @@ def make_root(variant, root): return pkg.installed_variants -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/build_process_.py b/src/rez/build_process_.py index fa6b68ca3..22331751a 100644 --- a/src/rez/build_process_.py +++ b/src/rez/build_process_.py @@ -426,17 +426,3 @@ def _n_of_m(self, variant): return "%d/%d" % (index, num_variants) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/build_system.py b/src/rez/build_system.py index 42ed1e056..30cf9422a 100644 --- a/src/rez/build_system.py +++ b/src/rez/build_system.py @@ -253,17 +253,3 @@ def set_standard_vars(cls, executor, context, variant, build_type, executor.env[var] = value -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/__init__.py b/src/rez/cli/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rez/cli/__init__.py +++ b/src/rez/cli/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/_bez.py b/src/rez/cli/_bez.py index a062ef48b..82648ec0e 100644 --- a/src/rez/cli/_bez.py +++ b/src/rez/cli/_bez.py @@ -3,7 +3,8 @@ import os.path import textwrap import subprocess -from rez.vendor import yaml, argparse +import argparse +from rez.vendor import yaml from rez.utils.filesystem import TempDirs from rez.config import config @@ -80,17 +81,3 @@ def run(): sys.exit(p.returncode) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/_complete_util.py b/src/rez/cli/_complete_util.py index f8570686c..e19f8f906 100644 --- a/src/rez/cli/_complete_util.py +++ b/src/rez/cli/_complete_util.py @@ -140,17 +140,3 @@ def __call__(self, prefix, **kwargs): return [] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/_main.py b/src/rez/cli/_main.py index ed05b33cf..d15a287c1 100644 --- a/src/rez/cli/_main.py +++ b/src/rez/cli/_main.py @@ -1,6 +1,6 @@ """The main command-line entry point.""" import sys -from rez.vendor.argparse import _StoreTrueAction, SUPPRESS +from argparse import _StoreTrueAction, SUPPRESS from rez.cli._util import subcommands, LazyArgumentParser, _env_var_true from rez.utils.logging_ import print_error from rez.exceptions import RezError, RezSystemError @@ -155,17 +155,3 @@ def run_cmd(): run() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/_util.py b/src/rez/cli/_util.py index 592706faa..6b11fd16c 100644 --- a/src/rez/cli/_util.py +++ b/src/rez/cli/_util.py @@ -1,7 +1,7 @@ import os import sys import signal -from rez.vendor.argparse import _SubParsersAction, ArgumentParser, SUPPRESS, \ +from argparse import _SubParsersAction, ArgumentParser, SUPPRESS, \ ArgumentError @@ -162,17 +162,3 @@ def sigterm_handler(signum, frame): signal.signal(signal.SIGTERM, sigterm_handler) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/bind.py b/src/rez/cli/bind.py index c76febf50..62c74f11d 100644 --- a/src/rez/cli/bind.py +++ b/src/rez/cli/bind.py @@ -1,7 +1,7 @@ ''' Create a Rez package for existing software. ''' -from rez.vendor import argparse +import argparse def setup_parser(parser, completions=False): @@ -103,17 +103,3 @@ def command(opts, parser, extra_arg_groups=None): bind_args=opts.BIND_ARGS) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/build.py b/src/rez/cli/build.py index a74833211..b5df9bfda 100644 --- a/src/rez/cli/build.py +++ b/src/rez/cli/build.py @@ -167,17 +167,3 @@ def command(opts, parser, extra_arg_groups=None): sys.exit(1) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/complete.py b/src/rez/cli/complete.py index 2c9fd1c02..3bc900541 100644 --- a/src/rez/cli/complete.py +++ b/src/rez/cli/complete.py @@ -1,7 +1,7 @@ """ Prints package completion strings. """ -from rez.vendor import argparse +import argparse __doc__ = argparse.SUPPRESS @@ -77,7 +77,7 @@ def _pop_arg(l, p): comp_point += len(s) # create parser for subcommand - from rez.backport.importlib import import_module + from rez._vendor.importlib import import_module module_name = "rez.cli.%s" % subcommand mod = import_module(module_name) parser = argparse.ArgumentParser() @@ -97,17 +97,3 @@ def _pop_arg(l, p): print ' '.join(words) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/config.py b/src/rez/cli/config.py index 401015322..be27e2efc 100644 --- a/src/rez/cli/config.py +++ b/src/rez/cli/config.py @@ -51,17 +51,3 @@ def command(opts, parser, extra_arg_groups=None): print data -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/context.py b/src/rez/cli/context.py index e29131ebe..5d4f5dfda 100644 --- a/src/rez/cli/context.py +++ b/src/rez/cli/context.py @@ -175,17 +175,3 @@ def _graph(): print code -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/cp.py b/src/rez/cli/cp.py index ee0aad3a3..0eebb43fe 100644 --- a/src/rez/cli/cp.py +++ b/src/rez/cli/cp.py @@ -196,17 +196,3 @@ def command(opts, parser, extra_arg_groups=None): print(" %s !-> %s" % (src_variant.uri, dest_variant.uri)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/depends.py b/src/rez/cli/depends.py index 2458a33ab..28024e716 100644 --- a/src/rez/cli/depends.py +++ b/src/rez/cli/depends.py @@ -79,17 +79,3 @@ def command(opts, parser, extra_arg_groups=None): print ' '.join(toks) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/diff.py b/src/rez/cli/diff.py index 2a014547c..05753fe06 100644 --- a/src/rez/cli/diff.py +++ b/src/rez/cli/diff.py @@ -31,17 +31,3 @@ def command(opts, parser, extra_arg_groups=None): diff_packages(pkg1, pkg2) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/env.py b/src/rez/cli/env.py index 735e5d4b2..0cdd8eb0c 100644 --- a/src/rez/cli/env.py +++ b/src/rez/cli/env.py @@ -4,7 +4,7 @@ def setup_parser(parser, completions=False): - from rez.vendor.argparse import SUPPRESS + from argparse import SUPPRESS from rez.config import config from rez.system import system from rez.shells import get_shell_types @@ -251,17 +251,3 @@ def command(opts, parser, extra_arg_groups=None): sys.exit(returncode) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/forward.py b/src/rez/cli/forward.py index f8592bc09..2c68ce7ac 100644 --- a/src/rez/cli/forward.py +++ b/src/rez/cli/forward.py @@ -1,5 +1,5 @@ """See util.create_forwarding_script().""" -from rez.vendor import argparse +import argparse __doc__ = argparse.SUPPRESS @@ -43,7 +43,7 @@ def command(opts, parser, extra_arg_groups=None): if isinstance(doc["module"], basestring): # refers to a rez module - from rez.backport.importlib import import_module + from rez._vendor.importlib import import_module namespace = "rez.%s" % doc["module"] module = import_module(namespace) else: @@ -62,17 +62,3 @@ def command(opts, parser, extra_arg_groups=None): target_func(*nargs, **kwargs) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/gui.py b/src/rez/cli/gui.py index 5076e1ca1..bf204cd58 100644 --- a/src/rez/cli/gui.py +++ b/src/rez/cli/gui.py @@ -21,17 +21,3 @@ def command(opts, parser=None, extra_arg_groups=None): run(opts, parser) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/help.py b/src/rez/cli/help.py index 4dc0f85e5..6e0e30910 100644 --- a/src/rez/cli/help.py +++ b/src/rez/cli/help.py @@ -59,17 +59,3 @@ def command(opts, parser=None, extra_arg_groups=None): sys.exit(2) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/interpret.py b/src/rez/cli/interpret.py index ce10850e6..d655ecc42 100644 --- a/src/rez/cli/interpret.py +++ b/src/rez/cli/interpret.py @@ -75,17 +75,3 @@ def command(opts, parser, extra_arg_groups=None): print o -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/memcache.py b/src/rez/cli/memcache.py index ef49380a0..2789e745d 100644 --- a/src/rez/cli/memcache.py +++ b/src/rez/cli/memcache.py @@ -165,17 +165,3 @@ def _fail(): print '\n'.join(columnise(rows)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/pip.py b/src/rez/cli/pip.py index 2d391dec3..93516d50c 100644 --- a/src/rez/cli/pip.py +++ b/src/rez/cli/pip.py @@ -72,17 +72,3 @@ def print_variant(v): print -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/plugins.py b/src/rez/cli/plugins.py index d7dd1fe24..f9300e111 100644 --- a/src/rez/cli/plugins.py +++ b/src/rez/cli/plugins.py @@ -38,17 +38,3 @@ def command(opts, parser, extra_arg_groups=None): print >> sys.stderr, "package '%s' has no plugins." % opts.PKG -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/python.py b/src/rez/cli/python.py index 2b8169dab..afe2017ff 100644 --- a/src/rez/cli/python.py +++ b/src/rez/cli/python.py @@ -32,17 +32,3 @@ def command(opts, parser, extra_arg_groups=None): sys.exit(p.wait()) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/release.py b/src/rez/cli/release.py index bb5283e33..df2df79d3 100644 --- a/src/rez/cli/release.py +++ b/src/rez/cli/release.py @@ -145,17 +145,3 @@ def command(opts, parser, extra_arg_groups=None): pass -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/search.py b/src/rez/cli/search.py index f54dfcdd2..f658472c4 100644 --- a/src/rez/cli/search.py +++ b/src/rez/cli/search.py @@ -119,17 +119,3 @@ def command(opts, parser, extra_arg_groups=None): formatter.print_search_results(search_results) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/selftest.py b/src/rez/cli/selftest.py index dcb105f15..778befac3 100644 --- a/src/rez/cli/selftest.py +++ b/src/rez/cli/selftest.py @@ -4,7 +4,7 @@ import inspect import os -import rez.vendor.argparse as argparse +import argparse from pkgutil import iter_modules cli_dir = os.path.dirname(inspect.getfile(inspect.currentframe())) @@ -69,17 +69,3 @@ def command(opts, parser, extra_arg_groups=None): main(module=None, argv=argv, verbosity=opts.verbose) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/status.py b/src/rez/cli/status.py index a7f96bdb2..0de13d47b 100644 --- a/src/rez/cli/status.py +++ b/src/rez/cli/status.py @@ -30,17 +30,3 @@ def command(opts, parser, extra_arg_groups=None): sys.exit(0 if b else 1) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/suite.py b/src/rez/cli/suite.py index 3e8c42917..08854bad5 100644 --- a/src/rez/cli/suite.py +++ b/src/rez/cli/suite.py @@ -195,17 +195,3 @@ def _option(name): suite.save(opts.DIR) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/view.py b/src/rez/cli/view.py index cb71c198a..ebc26e70e 100644 --- a/src/rez/cli/view.py +++ b/src/rez/cli/view.py @@ -71,17 +71,3 @@ def command(opts, parser, extra_arg_groups=None): package.print_info(format_=format_, include_release=opts.all) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/cli/yaml2py.py b/src/rez/cli/yaml2py.py index 583e0d32d..6c644d0a4 100644 --- a/src/rez/cli/yaml2py.py +++ b/src/rez/cli/yaml2py.py @@ -35,17 +35,3 @@ def command(opts, parser, extra_arg_groups=None): package.print_info(format_=FileFormat.py) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/config.py b/src/rez/config.py index f0f096175..bc0d482b6 100644 --- a/src/rez/config.py +++ b/src/rez/config.py @@ -11,7 +11,7 @@ from rez.vendor.schema.schema import Schema, SchemaError, And, Or, Use from rez.vendor import yaml from rez.vendor.yaml.error import YAMLError -from rez.backport.lru_cache import lru_cache +from rez._vendor.lru_cache import lru_cache from contextlib import contextmanager from inspect import ismodule import os @@ -862,17 +862,3 @@ def get_module_root_config(): config = Config._create_main_config() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/exceptions.py b/src/rez/exceptions.py index 1ff914a8c..561cc1eb5 100644 --- a/src/rez/exceptions.py +++ b/src/rez/exceptions.py @@ -201,17 +201,3 @@ def convert_errors(from_, to, msg=None): raise to(info) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_bind.py b/src/rez/package_bind.py index 27b7e6e29..70fd1a650 100644 --- a/src/rez/package_bind.py +++ b/src/rez/package_bind.py @@ -1,13 +1,13 @@ +import os +import sys +import argparse + from rez.exceptions import RezBindError from rez import module_root_path from rez.util import get_close_pkgs from rez.utils.formatting import columnise from rez.utils.logging_ import print_error from rez.config import config -from rez.vendor import argparse -import os.path -import os -import sys def get_bind_modules(verbose=False): diff --git a/src/rez/package_copy.py b/src/rez/package_copy.py index de4cb5172..57155541a 100644 --- a/src/rez/package_copy.py +++ b/src/rez/package_copy.py @@ -383,17 +383,3 @@ def _copy_package_include_modules(src_package, dest_pkg_repo, overrides=None): additive_copytree(src_include_modules_path, dest_include_modules_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_filter.py b/src/rez/package_filter.py index b2a790079..fc8bfcfea 100644 --- a/src/rez/package_filter.py +++ b/src/rez/package_filter.py @@ -533,17 +533,3 @@ def __str__(self): return "%s(%s)" % (label, ':'.join(parts)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_help.py b/src/rez/package_help.py index b89dced2c..27bd785bb 100644 --- a/src/rez/package_help.py +++ b/src/rez/package_help.py @@ -122,17 +122,3 @@ def _open_url(cls, url): webbrowser.open_new(url) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_maker__.py b/src/rez/package_maker__.py index e1652c4b5..88f269140 100644 --- a/src/rez/package_maker__.py +++ b/src/rez/package_maker__.py @@ -216,17 +216,3 @@ def make_package(name, path, make_base=None, make_root=None, skip_existing=True, maker.installed_variants.append(variant_) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_order.py b/src/rez/package_order.py index 44414bc66..387cfd681 100644 --- a/src/rez/package_order.py +++ b/src/rez/package_order.py @@ -425,17 +425,3 @@ def register_orderer(cls): register_orderer(o) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_repository.py b/src/rez/package_repository.py index b18fea958..51d53dcfc 100644 --- a/src/rez/package_repository.py +++ b/src/rez/package_repository.py @@ -2,7 +2,7 @@ from rez.utils.data_utils import cached_property from rez.plugin_managers import plugin_manager from rez.config import config -from rez.backport.lru_cache import lru_cache +from rez._vendor.lru_cache import lru_cache from rez.exceptions import ResourceError from contextlib import contextmanager import threading @@ -470,17 +470,3 @@ def _get_repository(self, path): package_repository_manager = PackageRepositoryManager() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_resources_.py b/src/rez/package_resources_.py index 761d0cc23..3ff338536 100644 --- a/src/rez/package_resources_.py +++ b/src/rez/package_resources_.py @@ -466,17 +466,3 @@ def _load(self): return None -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_search.py b/src/rez/package_search.py index dd03602ed..ce796ae91 100644 --- a/src/rez/package_search.py +++ b/src/rez/package_search.py @@ -412,17 +412,3 @@ def _format_search_result(self, resource_search_result): return formatted_lines -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/package_serialise.py b/src/rez/package_serialise.py index fff332bbd..b1bfce98e 100644 --- a/src/rez/package_serialise.py +++ b/src/rez/package_serialise.py @@ -203,17 +203,3 @@ def _dump_package_data_py(items, buf): FileFormat.yaml: _dump_package_data_yaml} -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/packages_.py b/src/rez/packages_.py index f25012428..6af508e65 100644 --- a/src/rez/packages_.py +++ b/src/rez/packages_.py @@ -760,17 +760,3 @@ def _check_class(resource, cls): % (cls.__name__, resource.__class__.__name__)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/pip.py b/src/rez/pip.py index 014e586e9..c20853046 100644 --- a/src/rez/pip.py +++ b/src/rez/pip.py @@ -118,7 +118,7 @@ def find_pip(pip_version=None, python_version=None): context = create_context(pip_version, python_version) except BuildError as e: # fall back on system pip. Not ideal but at least it's something - from rez.backport.shutilwhich import which + from rez._vendor.shutilwhich import which pip_exe = which("pip") @@ -368,17 +368,3 @@ def _log(msg): print_debug(msg) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/plugin_managers.py b/src/rez/plugin_managers.py index a0e409718..eba70ec11 100644 --- a/src/rez/plugin_managers.py +++ b/src/rez/plugin_managers.py @@ -95,7 +95,7 @@ def register_plugin(self, plugin_name, plugin_class, plugin_module): def load_plugins(self): import pkgutil - from rez.backport.importlib import import_module + from rez._vendor.importlib import import_module type_module_name = 'rezplugins.' + self.type_name package = import_module(type_module_name) @@ -377,17 +377,3 @@ class BuildProcessPluginType(RezPluginType): plugin_manager.register_plugin_type(BuildProcessPluginType) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/release_hook.py b/src/rez/release_hook.py index b5dbfee41..02806ebb1 100644 --- a/src/rez/release_hook.py +++ b/src/rez/release_hook.py @@ -137,17 +137,3 @@ def __init__(self, label, noun, func_name): self.func_name = func_name -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/release_vcs.py b/src/rez/release_vcs.py index 994c161b7..81086f770 100644 --- a/src/rez/release_vcs.py +++ b/src/rez/release_vcs.py @@ -224,17 +224,3 @@ def _cmd(self, *nargs): return [] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/resolved_context.py b/src/rez/resolved_context.py index c65e5a6b1..3719fd2c4 100644 --- a/src/rez/resolved_context.py +++ b/src/rez/resolved_context.py @@ -4,14 +4,14 @@ from rez.resolver import Resolver, ResolverStatus from rez.system import system from rez.config import config -from rez.util import shlex_join, dedup +from rez.util import dedup from rez.utils.sourcecode import SourceCodeError from rez.utils.colorize import critical, heading, local, implicit, Printer from rez.utils.formatting import columnise, PackageRequest, ENV_VAR_REGEX from rez.utils.data_utils import deep_del from rez.utils.filesystem import TempDirs from rez.utils.memcached import pool_memcached_connections -from rez.backport.shutilwhich import which +from rez._vendor.shutilwhich import which from rez.rex import RexExecutor, Python, OutputStyle from rez.rex_bindings import VersionBinding, VariantBinding, \ VariantsBinding, RequirementsBinding @@ -27,13 +27,10 @@ from rez.utils import json from rez.utils.yaml import dump_yaml -from tempfile import mkdtemp from functools import wraps import getpass import socket import threading -import traceback -import inspect import time import sys import os @@ -1729,17 +1726,3 @@ def _append_suite_paths(self, executor): executor.env.PATH.append(tools_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/resolver.py b/src/rez/resolver.py index f17342054..a284ee732 100644 --- a/src/rez/resolver.py +++ b/src/rez/resolver.py @@ -441,17 +441,3 @@ def _solver_to_dict(cls, solver): variant_handles=variant_handles) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/rex.py b/src/rez/rex.py index 78b215e8d..816344bbc 100644 --- a/src/rez/rex.py +++ b/src/rez/rex.py @@ -1252,17 +1252,3 @@ def expand(self, value): return self.formatter.format(str(value)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/rex_bindings.py b/src/rez/rex_bindings.py index 339cbf943..46d5158ab 100644 --- a/src/rez/rex_bindings.py +++ b/src/rez/rex_bindings.py @@ -160,17 +160,3 @@ def __contains__(self, name): return (name in self.__requirements) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/rezconfig.py b/src/rez/rezconfig.py index 425d9108a..1cec79add 100644 --- a/src/rez/rezconfig.py +++ b/src/rez/rezconfig.py @@ -859,17 +859,3 @@ gui_threads = True -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/serialise.py b/src/rez/serialise.py index 1e218eee7..fcac825b8 100644 --- a/src/rez/serialise.py +++ b/src/rez/serialise.py @@ -418,17 +418,3 @@ def clear_file_caches(): FileFormat.txt: load_txt} -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/shells.py b/src/rez/shells.py index 83db28bba..f7220298e 100644 --- a/src/rez/shells.py +++ b/src/rez/shells.py @@ -3,14 +3,13 @@ """ from rez.rex import RexExecutor, ActionInterpreter, OutputStyle from rez.util import shlex_join -from rez.backport.shutilwhich import which +from rez._vendor.shutilwhich import which from rez.utils.logging_ import print_warning from rez.utils.system import popen from rez.system import system from rez.exceptions import RezSystemError from rez.rex import EscapedString from rez.config import config -import subprocess import os import os.path import pipes @@ -403,17 +402,3 @@ def join(self, command): return shlex_join(command) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/solver.py b/src/rez/solver.py index 5a71f22ef..badf20190 100644 --- a/src/rez/solver.py +++ b/src/rez/solver.py @@ -2284,17 +2284,3 @@ def _short_req_str(package_request): return str(package_request) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/status.py b/src/rez/status.py index 1c10cc038..614e5fd18 100644 --- a/src/rez/status.py +++ b/src/rez/status.py @@ -8,9 +8,9 @@ from rez.packages_ import iter_packages, Package from rez.suite import Suite from rez.wrapper import Wrapper -from rez.utils.colorize import local, warning, critical, Printer +from rez.utils.colorize import warning, critical, Printer from rez.utils.formatting import print_colored_columns, PackageRequest -from rez.backport.shutilwhich import which +from rez._vendor.shutilwhich import which class Status(object): @@ -372,17 +372,3 @@ def _print_info(self, buf=sys.stdout): status = Status() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/suite.py b/src/rez/suite.py index 3a930d86d..c9692b3c0 100644 --- a/src/rez/suite.py +++ b/src/rez/suite.py @@ -754,17 +754,3 @@ def _FWD__invoke_suite_tool_alias(context_name, tool_name, prefix_char=None, sys.exit(retcode) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/system.py b/src/rez/system.py index 42c68af20..a2ebfbad2 100644 --- a/src/rez/system.py +++ b/src/rez/system.py @@ -290,17 +290,3 @@ def _make_safe_version_string(cls, s): system = System() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/__init__.py b/src/rez/tests/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rez/tests/__init__.py +++ b/src/rez/tests/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/anti/1.0.0/package.py b/src/rez/tests/data/builds/packages/anti/1.0.0/package.py index 961f5c20d..317c5c63b 100644 --- a/src/rez/tests/data/builds/packages/anti/1.0.0/package.py +++ b/src/rez/tests/data/builds/packages/anti/1.0.0/package.py @@ -12,17 +12,3 @@ def commands(): env.PYTHONPATH.append('{root}/python') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/anti/1.0.0/rezbuild.py b/src/rez/tests/data/builds/packages/anti/1.0.0/rezbuild.py index f72952454..613246a61 100644 --- a/src/rez/tests/data/builds/packages/anti/1.0.0/rezbuild.py +++ b/src/rez/tests/data/builds/packages/anti/1.0.0/rezbuild.py @@ -17,17 +17,3 @@ def build(source_path, build_path, install_path, targets): pass -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/bah/2.1/package.py b/src/rez/tests/data/builds/packages/bah/2.1/package.py index e566ab0db..7d21a9310 100644 --- a/src/rez/tests/data/builds/packages/bah/2.1/package.py +++ b/src/rez/tests/data/builds/packages/bah/2.1/package.py @@ -11,17 +11,3 @@ ["foo-1.1"]] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/bah/2.1/rezbuild.py b/src/rez/tests/data/builds/packages/bah/2.1/rezbuild.py index d68301389..3a8e9aa98 100644 --- a/src/rez/tests/data/builds/packages/bah/2.1/rezbuild.py +++ b/src/rez/tests/data/builds/packages/bah/2.1/rezbuild.py @@ -26,17 +26,3 @@ def build(source_path, build_path, install_path, targets): install_path=install_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/build_util/1/build_util/__init__.py b/src/rez/tests/data/builds/packages/build_util/1/build_util/__init__.py index c9c0a2334..c3db075a4 100644 --- a/src/rez/tests/data/builds/packages/build_util/1/build_util/__init__.py +++ b/src/rez/tests/data/builds/packages/build_util/1/build_util/__init__.py @@ -34,17 +34,3 @@ def check_visible(module, try_module): "%s! Error: %s") % (module, try_module, str(e))) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/build_util/1/package.py b/src/rez/tests/data/builds/packages/build_util/1/package.py index 2be53924c..393b19f52 100644 --- a/src/rez/tests/data/builds/packages/build_util/1/package.py +++ b/src/rez/tests/data/builds/packages/build_util/1/package.py @@ -8,17 +8,3 @@ def commands(): env.PYTHONPATH.append('{root}/python') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/build_util/1/rezbuild.py b/src/rez/tests/data/builds/packages/build_util/1/rezbuild.py index 8f1ae714e..c690b59c7 100644 --- a/src/rez/tests/data/builds/packages/build_util/1/rezbuild.py +++ b/src/rez/tests/data/builds/packages/build_util/1/rezbuild.py @@ -24,17 +24,3 @@ def _copy(src, dest): _copy(src, dest) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/floob/floob/__init__.py b/src/rez/tests/data/builds/packages/floob/floob/__init__.py index 43b32ef9f..6f887c7d3 100644 --- a/src/rez/tests/data/builds/packages/floob/floob/__init__.py +++ b/src/rez/tests/data/builds/packages/floob/floob/__init__.py @@ -3,17 +3,3 @@ def hello(): return "yes this is floob" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/floob/package.py b/src/rez/tests/data/builds/packages/floob/package.py index d45edca91..091213b9d 100644 --- a/src/rez/tests/data/builds/packages/floob/package.py +++ b/src/rez/tests/data/builds/packages/floob/package.py @@ -14,17 +14,3 @@ def commands(): env.PYTHONPATH.append('{root}/python') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/floob/rezbuild.py b/src/rez/tests/data/builds/packages/floob/rezbuild.py index 2c179aa3d..dd3c25a25 100644 --- a/src/rez/tests/data/builds/packages/floob/rezbuild.py +++ b/src/rez/tests/data/builds/packages/floob/rezbuild.py @@ -14,17 +14,3 @@ def build(source_path, build_path, install_path, targets): install_path=install_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.0.0/foo/__init__.py b/src/rez/tests/data/builds/packages/foo/1.0.0/foo/__init__.py index 8b771451b..f2d5eba1b 100644 --- a/src/rez/tests/data/builds/packages/foo/1.0.0/foo/__init__.py +++ b/src/rez/tests/data/builds/packages/foo/1.0.0/foo/__init__.py @@ -6,17 +6,3 @@ def report(): return "hello from foo-%s" % __version__ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.0.0/package.py b/src/rez/tests/data/builds/packages/foo/1.0.0/package.py index 39854c41e..3fd95d6b3 100644 --- a/src/rez/tests/data/builds/packages/foo/1.0.0/package.py +++ b/src/rez/tests/data/builds/packages/foo/1.0.0/package.py @@ -12,17 +12,3 @@ def commands(): env.PYTHONPATH.append('{root}/python') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.0.0/rezbuild.py b/src/rez/tests/data/builds/packages/foo/1.0.0/rezbuild.py index 1b5f1e060..184e4c8dd 100644 --- a/src/rez/tests/data/builds/packages/foo/1.0.0/rezbuild.py +++ b/src/rez/tests/data/builds/packages/foo/1.0.0/rezbuild.py @@ -20,17 +20,3 @@ def build(source_path, build_path, install_path, targets): install_path=install_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.1.0/foo/__init__.py b/src/rez/tests/data/builds/packages/foo/1.1.0/foo/__init__.py index 8b771451b..f2d5eba1b 100644 --- a/src/rez/tests/data/builds/packages/foo/1.1.0/foo/__init__.py +++ b/src/rez/tests/data/builds/packages/foo/1.1.0/foo/__init__.py @@ -6,17 +6,3 @@ def report(): return "hello from foo-%s" % __version__ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.1.0/package.py b/src/rez/tests/data/builds/packages/foo/1.1.0/package.py index 7d4f347e7..48a6eb2b7 100644 --- a/src/rez/tests/data/builds/packages/foo/1.1.0/package.py +++ b/src/rez/tests/data/builds/packages/foo/1.1.0/package.py @@ -16,17 +16,3 @@ def commands(): late_utils.add_eek_var(env) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/foo/1.1.0/rezbuild.py b/src/rez/tests/data/builds/packages/foo/1.1.0/rezbuild.py index 1b5f1e060..184e4c8dd 100644 --- a/src/rez/tests/data/builds/packages/foo/1.1.0/rezbuild.py +++ b/src/rez/tests/data/builds/packages/foo/1.1.0/rezbuild.py @@ -20,17 +20,3 @@ def build(source_path, build_path, install_path, targets): install_path=install_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/loco/3/package.py b/src/rez/tests/data/builds/packages/loco/3/package.py index 2456fad25..149459afa 100644 --- a/src/rez/tests/data/builds/packages/loco/3/package.py +++ b/src/rez/tests/data/builds/packages/loco/3/package.py @@ -8,17 +8,3 @@ requires = ["foo-1.0", "foo-1.1"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/loco/3/rezbuild.py b/src/rez/tests/data/builds/packages/loco/3/rezbuild.py index c73bee545..77b527d67 100644 --- a/src/rez/tests/data/builds/packages/loco/3/rezbuild.py +++ b/src/rez/tests/data/builds/packages/loco/3/rezbuild.py @@ -4,17 +4,3 @@ def build(source_path, build_path, install_path, targets): pass -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/sup_world/3.8/package.py b/src/rez/tests/data/builds/packages/sup_world/3.8/package.py index fb069c105..93b086555 100644 --- a/src/rez/tests/data/builds/packages/sup_world/3.8/package.py +++ b/src/rez/tests/data/builds/packages/sup_world/3.8/package.py @@ -13,17 +13,3 @@ def commands(): env.PATH.append('{root}/bin') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/translate_lib/2.2.0/package.py b/src/rez/tests/data/builds/packages/translate_lib/2.2.0/package.py index 384794944..f5137c410 100644 --- a/src/rez/tests/data/builds/packages/translate_lib/2.2.0/package.py +++ b/src/rez/tests/data/builds/packages/translate_lib/2.2.0/package.py @@ -19,17 +19,3 @@ def commands(): uuid = "38eda6e8-f162-11e0-9de0-0023ae79d988" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/whack/package.py b/src/rez/tests/data/builds/packages/whack/package.py index ed16783ee..d6b6921b5 100644 --- a/src/rez/tests/data/builds/packages/whack/package.py +++ b/src/rez/tests/data/builds/packages/whack/package.py @@ -5,17 +5,3 @@ description = "a deliberately broken package" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/builds/packages/whack/rezbuild.py b/src/rez/tests/data/builds/packages/whack/rezbuild.py index 693359669..1ad7b5753 100644 --- a/src/rez/tests/data/builds/packages/whack/rezbuild.py +++ b/src/rez/tests/data/builds/packages/whack/rezbuild.py @@ -3,17 +3,3 @@ def build(source_path, build_path, install_path, targets): raise Exception("This build is deliberately broken") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/commands/packages/rextest/1.3/package.py b/src/rez/tests/data/commands/packages/rextest/1.3/package.py index beff55eba..3829e67d3 100644 --- a/src/rez/tests/data/commands/packages/rextest/1.3/package.py +++ b/src/rez/tests/data/commands/packages/rextest/1.3/package.py @@ -10,17 +10,3 @@ def commands(): alias('rextest', 'foobar') -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/commands/packages/rextest2/2/package.py b/src/rez/tests/data/commands/packages/rextest2/2/package.py index 154b1e335..e6586d592 100644 --- a/src/rez/tests/data/commands/packages/rextest2/2/package.py +++ b/src/rez/tests/data/commands/packages/rextest2/2/package.py @@ -10,17 +10,3 @@ def commands(): env.REXTEST2_REXTEST_BASE = resolve.rextest.base -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/late_binding/1.0/package.py b/src/rez/tests/data/packages/py_packages/late_binding/1.0/package.py index a74b55511..847189936 100644 --- a/src/rez/tests/data/packages/py_packages/late_binding/1.0/package.py +++ b/src/rez/tests/data/packages/py_packages/late_binding/1.0/package.py @@ -10,17 +10,3 @@ def commands(): env.PATH.append("{root}/bin") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/multi.py b/src/rez/tests/data/packages/py_packages/multi.py index e6d584f50..a07d307e6 100644 --- a/src/rez/tests/data/packages/py_packages/multi.py +++ b/src/rez/tests/data/packages/py_packages/multi.py @@ -11,17 +11,3 @@ tools = ["twerk"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/single_unversioned.py b/src/rez/tests/data/packages/py_packages/single_unversioned.py index 2578831fe..615711f82 100644 --- a/src/rez/tests/data/packages/py_packages/single_unversioned.py +++ b/src/rez/tests/data/packages/py_packages/single_unversioned.py @@ -1,17 +1,3 @@ name = 'single_unversioned' -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/single_versioned.py b/src/rez/tests/data/packages/py_packages/single_versioned.py index c4cce362c..02692c490 100644 --- a/src/rez/tests/data/packages/py_packages/single_versioned.py +++ b/src/rez/tests/data/packages/py_packages/single_versioned.py @@ -2,17 +2,3 @@ versions = ["3.5"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/unversioned_py/package.py b/src/rez/tests/data/packages/py_packages/unversioned_py/package.py index 13d84f457..039fb5807 100644 --- a/src/rez/tests/data/packages/py_packages/unversioned_py/package.py +++ b/src/rez/tests/data/packages/py_packages/unversioned_py/package.py @@ -1,17 +1,3 @@ name = 'unversioned_py' -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/variants_py/2.0/package.py b/src/rez/tests/data/packages/py_packages/variants_py/2.0/package.py index b5b914c8a..5fcd24f81 100644 --- a/src/rez/tests/data/packages/py_packages/variants_py/2.0/package.py +++ b/src/rez/tests/data/packages/py_packages/variants_py/2.0/package.py @@ -15,17 +15,3 @@ def commands(): env.PATH.append("{root}/bin") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/versioned/2.0/package.py b/src/rez/tests/data/packages/py_packages/versioned/2.0/package.py index fbdeab1bc..5125d737f 100644 --- a/src/rez/tests/data/packages/py_packages/versioned/2.0/package.py +++ b/src/rez/tests/data/packages/py_packages/versioned/2.0/package.py @@ -3,17 +3,3 @@ raise Exception("This package.py should never be loaded") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/packages/py_packages/versioned/3.0/package.py b/src/rez/tests/data/packages/py_packages/versioned/3.0/package.py index a1420c72a..44067be0f 100644 --- a/src/rez/tests/data/packages/py_packages/versioned/3.0/package.py +++ b/src/rez/tests/data/packages/py_packages/versioned/3.0/package.py @@ -5,17 +5,3 @@ def commands(): env.PATH.append("{root}/bin") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/release/rezbuild.py b/src/rez/tests/data/release/rezbuild.py index cdf485f88..c2d662dfd 100644 --- a/src/rez/tests/data/release/rezbuild.py +++ b/src/rez/tests/data/release/rezbuild.py @@ -24,17 +24,3 @@ def _copy(src, dest): _copy(src, dest) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/bahish/1/package.py b/src/rez/tests/data/solver/packages/bahish/1/package.py index dac9885e8..e3998d2c9 100644 --- a/src/rez/tests/data/solver/packages/bahish/1/package.py +++ b/src/rez/tests/data/solver/packages/bahish/1/package.py @@ -4,17 +4,3 @@ requires = ["!pybah-4"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/bahish/2/package.py b/src/rez/tests/data/solver/packages/bahish/2/package.py index efc95ff66..fa69d91e7 100644 --- a/src/rez/tests/data/solver/packages/bahish/2/package.py +++ b/src/rez/tests/data/solver/packages/bahish/2/package.py @@ -4,17 +4,3 @@ requires = ["pybah-5"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/nada/package.py b/src/rez/tests/data/solver/packages/nada/package.py index e8ba1144b..f0b5becb8 100644 --- a/src/rez/tests/data/solver/packages/nada/package.py +++ b/src/rez/tests/data/solver/packages/nada/package.py @@ -1,17 +1,3 @@ name = "nada" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/nopy/2.1/package.py b/src/rez/tests/data/solver/packages/nopy/2.1/package.py index bb1279889..5efcf42e8 100644 --- a/src/rez/tests/data/solver/packages/nopy/2.1/package.py +++ b/src/rez/tests/data/solver/packages/nopy/2.1/package.py @@ -4,17 +4,3 @@ requires = ["!python-2.5"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pybah/4/package.py b/src/rez/tests/data/solver/packages/pybah/4/package.py index 5312902bb..cb5cb42a8 100644 --- a/src/rez/tests/data/solver/packages/pybah/4/package.py +++ b/src/rez/tests/data/solver/packages/pybah/4/package.py @@ -4,17 +4,3 @@ requires = ["python-2.6"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pybah/5/package.py b/src/rez/tests/data/solver/packages/pybah/5/package.py index 61a16d6d3..92ac80ca4 100644 --- a/src/rez/tests/data/solver/packages/pybah/5/package.py +++ b/src/rez/tests/data/solver/packages/pybah/5/package.py @@ -4,17 +4,3 @@ requires = ["python-2.5"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pydad/1/package.py b/src/rez/tests/data/solver/packages/pydad/1/package.py index bdbb21e5c..9fa72d9a0 100644 --- a/src/rez/tests/data/solver/packages/pydad/1/package.py +++ b/src/rez/tests/data/solver/packages/pydad/1/package.py @@ -4,17 +4,3 @@ requires = ["pyson-1"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pydad/2/package.py b/src/rez/tests/data/solver/packages/pydad/2/package.py index f67ed0fa0..093ed26eb 100644 --- a/src/rez/tests/data/solver/packages/pydad/2/package.py +++ b/src/rez/tests/data/solver/packages/pydad/2/package.py @@ -4,17 +4,3 @@ requires = ["pyson-2"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pydad/3/package.py b/src/rez/tests/data/solver/packages/pydad/3/package.py index 70e7bebb9..0150117bd 100644 --- a/src/rez/tests/data/solver/packages/pydad/3/package.py +++ b/src/rez/tests/data/solver/packages/pydad/3/package.py @@ -4,17 +4,3 @@ requires = ["pymum-3"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyfoo/3.0.0/package.py b/src/rez/tests/data/solver/packages/pyfoo/3.0.0/package.py index 644f7c6b1..9b9c4fd15 100644 --- a/src/rez/tests/data/solver/packages/pyfoo/3.0.0/package.py +++ b/src/rez/tests/data/solver/packages/pyfoo/3.0.0/package.py @@ -4,17 +4,3 @@ requires = ["python-2.5"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyfoo/3.1.0/package.py b/src/rez/tests/data/solver/packages/pyfoo/3.1.0/package.py index 4c519cd4c..ea756333e 100644 --- a/src/rez/tests/data/solver/packages/pyfoo/3.1.0/package.py +++ b/src/rez/tests/data/solver/packages/pyfoo/3.1.0/package.py @@ -4,17 +4,3 @@ requires = ["python-2.6"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pymum/1/package.py b/src/rez/tests/data/solver/packages/pymum/1/package.py index 6a1d2ace3..c62211bf6 100644 --- a/src/rez/tests/data/solver/packages/pymum/1/package.py +++ b/src/rez/tests/data/solver/packages/pymum/1/package.py @@ -4,17 +4,3 @@ requires = ["pydad-1"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pymum/2/package.py b/src/rez/tests/data/solver/packages/pymum/2/package.py index bfad565f8..09421ee2b 100644 --- a/src/rez/tests/data/solver/packages/pymum/2/package.py +++ b/src/rez/tests/data/solver/packages/pymum/2/package.py @@ -4,17 +4,3 @@ requires = ["pydad-2"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pymum/3/package.py b/src/rez/tests/data/solver/packages/pymum/3/package.py index 5f81e73c8..00b4d8e5b 100644 --- a/src/rez/tests/data/solver/packages/pymum/3/package.py +++ b/src/rez/tests/data/solver/packages/pymum/3/package.py @@ -4,17 +4,3 @@ requires = ["pydad-3"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyodd/1/package.py b/src/rez/tests/data/solver/packages/pyodd/1/package.py index f9cdbe905..a8dded320 100644 --- a/src/rez/tests/data/solver/packages/pyodd/1/package.py +++ b/src/rez/tests/data/solver/packages/pyodd/1/package.py @@ -4,17 +4,3 @@ requires = ["pyfoo"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyodd/2/package.py b/src/rez/tests/data/solver/packages/pyodd/2/package.py index 158e7cc14..b3c52405e 100644 --- a/src/rez/tests/data/solver/packages/pyodd/2/package.py +++ b/src/rez/tests/data/solver/packages/pyodd/2/package.py @@ -4,17 +4,3 @@ requires = ["pybah"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyson/1/package.py b/src/rez/tests/data/solver/packages/pyson/1/package.py index fa001ec9c..902f9196f 100644 --- a/src/rez/tests/data/solver/packages/pyson/1/package.py +++ b/src/rez/tests/data/solver/packages/pyson/1/package.py @@ -4,17 +4,3 @@ requires = ["pymum-1"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pyson/2/package.py b/src/rez/tests/data/solver/packages/pyson/2/package.py index 4a4718854..ee79eada8 100644 --- a/src/rez/tests/data/solver/packages/pyson/2/package.py +++ b/src/rez/tests/data/solver/packages/pyson/2/package.py @@ -4,17 +4,3 @@ requires = ["pymum-3"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pysplit/5/package.py b/src/rez/tests/data/solver/packages/pysplit/5/package.py index 6aadb751d..a8e9afe31 100644 --- a/src/rez/tests/data/solver/packages/pysplit/5/package.py +++ b/src/rez/tests/data/solver/packages/pysplit/5/package.py @@ -2,17 +2,3 @@ version = "5" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pysplit/6/package.py b/src/rez/tests/data/solver/packages/pysplit/6/package.py index 58fcd1213..a4f35b230 100644 --- a/src/rez/tests/data/solver/packages/pysplit/6/package.py +++ b/src/rez/tests/data/solver/packages/pysplit/6/package.py @@ -4,17 +4,3 @@ requires = ["python-2.6"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/pysplit/7/package.py b/src/rez/tests/data/solver/packages/pysplit/7/package.py index a98c30930..da461f236 100644 --- a/src/rez/tests/data/solver/packages/pysplit/7/package.py +++ b/src/rez/tests/data/solver/packages/pysplit/7/package.py @@ -4,17 +4,3 @@ requires = ["python-2.7"] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/python/2.5.2/package.py b/src/rez/tests/data/solver/packages/python/2.5.2/package.py index 2d4663ae2..96fe5be6f 100644 --- a/src/rez/tests/data/solver/packages/python/2.5.2/package.py +++ b/src/rez/tests/data/solver/packages/python/2.5.2/package.py @@ -2,17 +2,3 @@ version = "2.5.2" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/python/2.6.0/package.py b/src/rez/tests/data/solver/packages/python/2.6.0/package.py index 7202d985a..68a1ad4f8 100644 --- a/src/rez/tests/data/solver/packages/python/2.6.0/package.py +++ b/src/rez/tests/data/solver/packages/python/2.6.0/package.py @@ -2,17 +2,3 @@ version = "2.6.0" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/python/2.6.8/package.py b/src/rez/tests/data/solver/packages/python/2.6.8/package.py index 03b48c0b1..75fa7097e 100644 --- a/src/rez/tests/data/solver/packages/python/2.6.8/package.py +++ b/src/rez/tests/data/solver/packages/python/2.6.8/package.py @@ -2,17 +2,3 @@ version = "2.6.8" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/data/solver/packages/python/2.7.0/package.py b/src/rez/tests/data/solver/packages/python/2.7.0/package.py index 6779233ea..388b6020d 100644 --- a/src/rez/tests/data/solver/packages/python/2.7.0/package.py +++ b/src/rez/tests/data/solver/packages/python/2.7.0/package.py @@ -2,17 +2,3 @@ version = "2.7.0" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_build.py b/src/rez/tests/test_build.py index a2d0dd41b..c80ec6f2f 100644 --- a/src/rez/tests/test_build.py +++ b/src/rez/tests/test_build.py @@ -177,17 +177,3 @@ def test_build_custom(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_commands.py b/src/rez/tests/test_commands.py index d07a64241..8245214d7 100644 --- a/src/rez/tests/test_commands.py +++ b/src/rez/tests/test_commands.py @@ -152,17 +152,3 @@ def test_2(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_completion.py b/src/rez/tests/test_completion.py index 00f74bc9f..e8eb8036e 100644 --- a/src/rez/tests/test_completion.py +++ b/src/rez/tests/test_completion.py @@ -63,17 +63,3 @@ def _eq(prefix, expected_completions): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_config.py b/src/rez/tests/test_config.py index 37f0e8ff6..902add5e0 100644 --- a/src/rez/tests/test_config.py +++ b/src/rez/tests/test_config.py @@ -231,17 +231,3 @@ def _data(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_context.py b/src/rez/tests/test_context.py index feb44bfb5..f193485f4 100644 --- a/src/rez/tests/test_context.py +++ b/src/rez/tests/test_context.py @@ -96,17 +96,3 @@ def test_serialize(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_formatter.py b/src/rez/tests/test_formatter.py index f2d496b1e..41a115327 100644 --- a/src/rez/tests/test_formatter.py +++ b/src/rez/tests/test_formatter.py @@ -278,17 +278,3 @@ def test_formatter_recurse(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_imports.py b/src/rez/tests/test_imports.py index 4290f76de..21cc57ab0 100644 --- a/src/rez/tests/test_imports.py +++ b/src/rez/tests/test_imports.py @@ -55,17 +55,3 @@ def test_1(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_packages.py b/src/rez/tests/test_packages.py index 56ad342fb..2e1a1b861 100644 --- a/src/rez/tests/test_packages.py +++ b/src/rez/tests/test_packages.py @@ -389,17 +389,3 @@ def test_1_memory_variant_parent(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_release.py b/src/rez/tests/test_release.py index 3fcf44c16..721fd975f 100644 --- a/src/rez/tests/test_release.py +++ b/src/rez/tests/test_release.py @@ -236,17 +236,3 @@ def test_2_variant_add(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_resources_.py b/src/rez/tests/test_resources_.py index 0f7bb2aae..ea00b3319 100644 --- a/src/rez/tests/test_resources_.py +++ b/src/rez/tests/test_resources_.py @@ -301,17 +301,3 @@ def _validate(resource, expected_data): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_rex.py b/src/rez/tests/test_rex.py index 780c708d2..cad0e16a2 100644 --- a/src/rez/tests/test_rex.py +++ b/src/rez/tests/test_rex.py @@ -412,17 +412,3 @@ def test_old_style_commands(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_schema.py b/src/rez/tests/test_schema.py index d84b2dc5c..22b9d0b7e 100644 --- a/src/rez/tests/test_schema.py +++ b/src/rez/tests/test_schema.py @@ -9,17 +9,3 @@ unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_shells.py b/src/rez/tests/test_shells.py index 236c8242b..bfa2d23b9 100644 --- a/src/rez/tests/test_shells.py +++ b/src/rez/tests/test_shells.py @@ -331,17 +331,3 @@ def _alias_after_path_manipulation(): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_solver.py b/src/rez/tests/test_solver.py index 7a06c13be..71e26e3a5 100644 --- a/src/rez/tests/test_solver.py +++ b/src/rez/tests/test_solver.py @@ -223,17 +223,3 @@ def test_11_variant_splitting(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_suites.py b/src/rez/tests/test_suites.py index 7900f9757..ded2215bc 100644 --- a/src/rez/tests/test_suites.py +++ b/src/rez/tests/test_suites.py @@ -140,17 +140,3 @@ def test_3(self): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/test_version.py b/src/rez/tests/test_version.py index bdd90047f..929d48909 100644 --- a/src/rez/tests/test_version.py +++ b/src/rez/tests/test_version.py @@ -13,17 +13,3 @@ class TestVersions(TestVersionSchema): unittest.main() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/tests/util.py b/src/rez/tests/util.py index 254222939..95d50fcb6 100644 --- a/src/rez/tests/util.py +++ b/src/rez/tests/util.py @@ -313,17 +313,3 @@ def restore_os_environ(): os.environ = original -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/util.py b/src/rez/util.py index 9057259c2..44657dcf3 100644 --- a/src/rez/util.py +++ b/src/rez/util.py @@ -2,11 +2,9 @@ Misc useful stuff. """ import stat -import sys import atexit import os import os.path -import copy from rez.exceptions import RezError from rez.utils.yaml import dump_yaml from rez.vendor.progress.bar import Bar @@ -103,7 +101,7 @@ def quote(s): # returns path to first program in the list to be successfully found def which(*programs, **shutilwhich_kwargs): - from rez.backport.shutilwhich import which as which_ + from rez._vendor.shutilwhich import which as which_ for prog in programs: path = which_(prog, **shutilwhich_kwargs) if path: @@ -175,17 +173,3 @@ def _atexit(): pass -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/__init__.py b/src/rez/utils/__init__.py index c34f3b9a7..3e8901420 100644 --- a/src/rez/utils/__init__.py +++ b/src/rez/utils/__init__.py @@ -17,17 +17,3 @@ def reraise(exc, new_exc_cls=None, format_str=None): raise new_exc_cls, format_str % exc, sys.exc_info()[2] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/_version.py b/src/rez/utils/_version.py index 45688bcc9..be039c327 100644 --- a/src/rez/utils/_version.py +++ b/src/rez/utils/_version.py @@ -11,17 +11,3 @@ pass -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/backcompat.py b/src/rez/utils/backcompat.py index c0f800f9b..7d63f7f80 100644 --- a/src/rez/utils/backcompat.py +++ b/src/rez/utils/backcompat.py @@ -166,17 +166,3 @@ def _encode(s): return rex_code -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/colorize.py b/src/rez/utils/colorize.py index 5a1d4b0a1..9fa50fd3f 100644 --- a/src/rez/utils/colorize.py +++ b/src/rez/utils/colorize.py @@ -305,17 +305,3 @@ def get(self, msg, style=None): return msg -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/data_utils.py b/src/rez/utils/data_utils.py index 4328cc65f..5c315741a 100644 --- a/src/rez/utils/data_utils.py +++ b/src/rez/utils/data_utils.py @@ -582,17 +582,3 @@ def getter(self): return cached_property(getter, name=attribute) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/diff_packages.py b/src/rez/utils/diff_packages.py index b36d7657f..dbfc22bdb 100644 --- a/src/rez/utils/diff_packages.py +++ b/src/rez/utils/diff_packages.py @@ -49,17 +49,3 @@ def _check_pkg(pkg): proc.wait() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/filesystem.py b/src/rez/utils/filesystem.py index 53e8585e7..b5eadc4de 100644 --- a/src/rez/utils/filesystem.py +++ b/src/rez/utils/filesystem.py @@ -557,17 +557,3 @@ def walk_up_dirs(path): current_path = os.path.dirname(prev_path) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/formatting.py b/src/rez/utils/formatting.py index 3243ac708..c17d56089 100644 --- a/src/rez/utils/formatting.py +++ b/src/rez/utils/formatting.py @@ -488,17 +488,3 @@ def as_block_string(txt): return '"""\n%s\n"""' % '\n'.join(lines) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/graph_utils.py b/src/rez/utils/graph_utils.py index 35d6d6efa..acfcbeb9d 100644 --- a/src/rez/utils/graph_utils.py +++ b/src/rez/utils/graph_utils.py @@ -269,17 +269,3 @@ def _request_from_label(label): return label.strip('"').strip("'").rsplit('[', 1)[0] -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/lint_helper.py b/src/rez/utils/lint_helper.py index b91a4484d..4c019ea86 100644 --- a/src/rez/utils/lint_helper.py +++ b/src/rez/utils/lint_helper.py @@ -22,17 +22,3 @@ def used(self, object_): sys.modules[__name__] = noner -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/logging_.py b/src/rez/utils/logging_.py index 80a073f27..6e5eb3c93 100644 --- a/src/rez/utils/logging_.py +++ b/src/rez/utils/logging_.py @@ -70,17 +70,3 @@ def log_duration(printer, msg): printer(msg, str(secs)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/memcached.py b/src/rez/utils/memcached.py index a8772df5e..d340f5426 100644 --- a/src/rez/utils/memcached.py +++ b/src/rez/utils/memcached.py @@ -380,17 +380,3 @@ def __init__(self, result): self.result = result -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/patching.py b/src/rez/utils/patching.py index 25ba160de..87a7e0be4 100644 --- a/src/rez/utils/patching.py +++ b/src/rez/utils/patching.py @@ -78,17 +78,3 @@ def get_patched_request(requires, patchlist): return result -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/platform_.py b/src/rez/utils/platform_.py index a820927ea..044718b49 100644 --- a/src/rez/utils/platform_.py +++ b/src/rez/utils/platform_.py @@ -556,17 +556,3 @@ def _difftool(self): platform_ = WindowsPlatform() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/py_dist.py b/src/rez/utils/py_dist.py index e625afae0..409d6326e 100644 --- a/src/rez/utils/py_dist.py +++ b/src/rez/utils/py_dist.py @@ -245,17 +245,3 @@ def commands(): return pkg_path -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/resources.py b/src/rez/utils/resources.py index 8e644f95d..48dac8732 100644 --- a/src/rez/utils/resources.py +++ b/src/rez/utils/resources.py @@ -33,7 +33,7 @@ LazyAttributeMeta from rez.config import config from rez.exceptions import ResourceError -from rez.backport.lru_cache import lru_cache +from rez._vendor.lru_cache import lru_cache from rez.utils.logging_ import print_debug @@ -279,17 +279,3 @@ def __hash__(self): return hash((self.__class__, self.resource)) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/schema.py b/src/rez/utils/schema.py index be694203a..c293fad6d 100644 --- a/src/rez/utils/schema.py +++ b/src/rez/utils/schema.py @@ -72,17 +72,3 @@ def _to(value): return _to(schema_dict) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/scope.py b/src/rez/utils/scope.py index cc02c5764..ba1aca827 100644 --- a/src/rez/utils/scope.py +++ b/src/rez/utils/scope.py @@ -260,17 +260,3 @@ def scoped_format(txt, **objects): return formatter.format(txt, pretty=pretty, expand=expand) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/utils/yaml.py b/src/rez/utils/yaml.py index b34277cf2..ef80cb2c3 100644 --- a/src/rez/utils/yaml.py +++ b/src/rez/utils/yaml.py @@ -76,17 +76,3 @@ def load_yaml(filepath): return yaml.load(txt) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rez/vendor/argcomplete/__init__.py b/src/rez/vendor/argcomplete/__init__.py index 0804cc681..4b5e1b2ea 100644 --- a/src/rez/vendor/argcomplete/__init__.py +++ b/src/rez/vendor/argcomplete/__init__.py @@ -3,8 +3,12 @@ from __future__ import print_function, unicode_literals -import os, sys, contextlib, locale, re -from rez.vendor import argparse +import os +import sys +import contextlib +import locale +import re +import argparse from . import my_shlex as shlex diff --git a/src/rez/vendor/argcomplete/my_argparse.py b/src/rez/vendor/argcomplete/my_argparse.py index fec393636..6c3150f68 100644 --- a/src/rez/vendor/argcomplete/my_argparse.py +++ b/src/rez/vendor/argcomplete/my_argparse.py @@ -1,7 +1,7 @@ # Copyright 2012-2013, Andrey Kislyuk and argcomplete contributors. # Licensed under the Apache License. See https://github.com/kislyuk/argcomplete for more info. -from rez.vendor.argparse import ArgumentParser, ArgumentError, SUPPRESS, \ +from argparse import ArgumentParser, ArgumentError, SUPPRESS, \ OPTIONAL, ZERO_OR_MORE, ONE_OR_MORE, REMAINDER, PARSER, _get_action_name, _ def action_is_satisfied(action): diff --git a/src/rez/vendor/argparse.py b/src/rez/vendor/argparse.py deleted file mode 100644 index 32d948c03..000000000 --- a/src/rez/vendor/argparse.py +++ /dev/null @@ -1,2362 +0,0 @@ -# Author: Steven J. Bethard . - -"""Command-line parsing library - -This module is an optparse-inspired command-line parsing library that: - - - handles both optional and positional arguments - - produces highly informative usage messages - - supports parsers that dispatch to sub-parsers - -The following is a simple usage example that sums integers from the -command-line and writes the result to a file:: - - parser = argparse.ArgumentParser( - description='sum the integers at the command line') - parser.add_argument( - 'integers', metavar='int', nargs='+', type=int, - help='an integer to be summed') - parser.add_argument( - '--log', default=sys.stdout, type=argparse.FileType('w'), - help='the file where the sum should be written') - args = parser.parse_args() - args.log.write('%s' % sum(args.integers)) - args.log.close() - -The module contains the following public classes: - - - ArgumentParser -- The main entry point for command-line parsing. As the - example above shows, the add_argument() method is used to populate - the parser with actions for optional and positional arguments. Then - the parse_args() method is invoked to convert the args at the - command-line into an object with attributes. - - - ArgumentError -- The exception raised by ArgumentParser objects when - there are errors with the parser's actions. Errors raised while - parsing the command-line are caught by ArgumentParser and emitted - as command-line messages. - - - FileType -- A factory for defining types of files to be created. As the - example above shows, instances of FileType are typically passed as - the type= argument of add_argument() calls. - - - Action -- The base class for parser actions. Typically actions are - selected by passing strings like 'store_true' or 'append_const' to - the action= argument of add_argument(). However, for greater - customization of ArgumentParser actions, subclasses of Action may - be defined and passed as the action= argument. - - - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter, - ArgumentDefaultsHelpFormatter -- Formatter classes which - may be passed as the formatter_class= argument to the - ArgumentParser constructor. HelpFormatter is the default, - RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser - not to change the formatting for help text, and - ArgumentDefaultsHelpFormatter adds information about argument defaults - to the help. - -All other classes in this module are considered implementation details. -(Also note that HelpFormatter and RawDescriptionHelpFormatter are only -considered public as object names -- the API of the formatter objects is -still considered an implementation detail.) -""" - -__version__ = '1.2.1' -__all__ = [ - 'ArgumentParser', - 'ArgumentError', - 'ArgumentTypeError', - 'FileType', - 'HelpFormatter', - 'ArgumentDefaultsHelpFormatter', - 'RawDescriptionHelpFormatter', - 'RawTextHelpFormatter', - 'Namespace', - 'Action', - 'ONE_OR_MORE', - 'OPTIONAL', - 'PARSER', - 'REMAINDER', - 'SUPPRESS', - 'ZERO_OR_MORE', -] - - -import copy as _copy -import os as _os -import re as _re -import sys as _sys -import textwrap as _textwrap - -from gettext import gettext as _ - -try: - set -except NameError: - # for python < 2.4 compatibility (sets module is there since 2.3): - from sets import Set as set - -try: - basestring -except NameError: - basestring = str - -try: - sorted -except NameError: - # for python < 2.4 compatibility: - def sorted(iterable, reverse=False): - result = list(iterable) - result.sort() - if reverse: - result.reverse() - return result - - -def _callable(obj): - return hasattr(obj, '__call__') or hasattr(obj, '__bases__') - - -SUPPRESS = '==SUPPRESS==' - -OPTIONAL = '?' -ZERO_OR_MORE = '*' -ONE_OR_MORE = '+' -PARSER = 'A...' -REMAINDER = '...' -_UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args' - -# ============================= -# Utility functions and classes -# ============================= - -class _AttributeHolder(object): - """Abstract base class that provides __repr__. - - The __repr__ method returns a string in the format:: - ClassName(attr=name, attr=name, ...) - The attributes are determined either by a class-level attribute, - '_kwarg_names', or by inspecting the instance __dict__. - """ - - def __repr__(self): - type_name = type(self).__name__ - arg_strings = [] - for arg in self._get_args(): - arg_strings.append(repr(arg)) - for name, value in self._get_kwargs(): - arg_strings.append('%s=%r' % (name, value)) - return '%s(%s)' % (type_name, ', '.join(arg_strings)) - - def _get_kwargs(self): - return sorted(self.__dict__.items()) - - def _get_args(self): - return [] - - -def _ensure_value(namespace, name, value): - if getattr(namespace, name, None) is None: - setattr(namespace, name, value) - return getattr(namespace, name) - - -# =============== -# Formatting Help -# =============== - -class HelpFormatter(object): - """Formatter for generating usage messages and argument help strings. - - Only the name of this class is considered a public API. All the methods - provided by the class are considered an implementation detail. - """ - - def __init__(self, - prog, - indent_increment=2, - max_help_position=24, - width=None): - - # default setting for width - if width is None: - try: - width = int(_os.environ['COLUMNS']) - except (KeyError, ValueError): - width = 80 - width -= 2 - - self._prog = prog - self._indent_increment = indent_increment - self._max_help_position = max_help_position - self._width = width - - self._current_indent = 0 - self._level = 0 - self._action_max_length = 0 - - self._root_section = self._Section(self, None) - self._current_section = self._root_section - - self._whitespace_matcher = _re.compile(r'\s+') - self._long_break_matcher = _re.compile(r'\n\n\n+') - - # =============================== - # Section and indentation methods - # =============================== - def _indent(self): - self._current_indent += self._indent_increment - self._level += 1 - - def _dedent(self): - self._current_indent -= self._indent_increment - assert self._current_indent >= 0, 'Indent decreased below 0.' - self._level -= 1 - - class _Section(object): - - def __init__(self, formatter, parent, heading=None): - self.formatter = formatter - self.parent = parent - self.heading = heading - self.items = [] - - def format_help(self): - # format the indented section - if self.parent is not None: - self.formatter._indent() - join = self.formatter._join_parts - for func, args in self.items: - func(*args) - item_help = join([func(*args) for func, args in self.items]) - if self.parent is not None: - self.formatter._dedent() - - # return nothing if the section was empty - if not item_help: - return '' - - # add the heading if the section was non-empty - if self.heading is not SUPPRESS and self.heading is not None: - current_indent = self.formatter._current_indent - heading = '%*s%s:\n' % (current_indent, '', self.heading) - else: - heading = '' - - # join the section-initial newline, the heading and the help - return join(['\n', heading, item_help, '\n']) - - def _add_item(self, func, args): - self._current_section.items.append((func, args)) - - # ======================== - # Message building methods - # ======================== - def start_section(self, heading): - self._indent() - section = self._Section(self, self._current_section, heading) - self._add_item(section.format_help, []) - self._current_section = section - - def end_section(self): - self._current_section = self._current_section.parent - self._dedent() - - def add_text(self, text): - if text is not SUPPRESS and text is not None: - self._add_item(self._format_text, [text]) - - def add_usage(self, usage, actions, groups, prefix=None): - if usage is not SUPPRESS: - args = usage, actions, groups, prefix - self._add_item(self._format_usage, args) - - def add_argument(self, action): - if action.help is not SUPPRESS: - - # find all invocations - get_invocation = self._format_action_invocation - invocations = [get_invocation(action)] - for subaction in self._iter_indented_subactions(action): - invocations.append(get_invocation(subaction)) - - # update the maximum item length - invocation_length = max([len(s) for s in invocations]) - action_length = invocation_length + self._current_indent - self._action_max_length = max(self._action_max_length, - action_length) - - # add the item to the list - self._add_item(self._format_action, [action]) - - def add_arguments(self, actions): - for action in actions: - self.add_argument(action) - - # ======================= - # Help-formatting methods - # ======================= - def format_help(self): - help = self._root_section.format_help() - if help: - help = self._long_break_matcher.sub('\n\n', help) - help = help.strip('\n') + '\n' - return help - - def _join_parts(self, part_strings): - return ''.join([part - for part in part_strings - if part and part is not SUPPRESS]) - - def _format_usage(self, usage, actions, groups, prefix): - if prefix is None: - prefix = _('usage: ') - - # if usage is specified, use that - if usage is not None: - usage = usage % dict(prog=self._prog) - - # if no optionals or positionals are available, usage is just prog - elif usage is None and not actions: - usage = '%(prog)s' % dict(prog=self._prog) - - # if optionals and positionals are available, calculate usage - elif usage is None: - prog = '%(prog)s' % dict(prog=self._prog) - - # split optionals from positionals - optionals = [] - positionals = [] - for action in actions: - if action.option_strings: - optionals.append(action) - else: - positionals.append(action) - - # build full usage string - format = self._format_actions_usage - action_usage = format(optionals + positionals, groups) - usage = ' '.join([s for s in [prog, action_usage] if s]) - - # wrap the usage parts if it's too long - text_width = self._width - self._current_indent - if len(prefix) + len(usage) > text_width: - - # break usage into wrappable parts - part_regexp = r'\(.*?\)+|\[.*?\]+|\S+' - opt_usage = format(optionals, groups) - pos_usage = format(positionals, groups) - opt_parts = _re.findall(part_regexp, opt_usage) - pos_parts = _re.findall(part_regexp, pos_usage) - assert ' '.join(opt_parts) == opt_usage - assert ' '.join(pos_parts) == pos_usage - - # helper for wrapping lines - def get_lines(parts, indent, prefix=None): - lines = [] - line = [] - if prefix is not None: - line_len = len(prefix) - 1 - else: - line_len = len(indent) - 1 - for part in parts: - if line_len + 1 + len(part) > text_width: - lines.append(indent + ' '.join(line)) - line = [] - line_len = len(indent) - 1 - line.append(part) - line_len += len(part) + 1 - if line: - lines.append(indent + ' '.join(line)) - if prefix is not None: - lines[0] = lines[0][len(indent):] - return lines - - # if prog is short, follow it with optionals or positionals - if len(prefix) + len(prog) <= 0.75 * text_width: - indent = ' ' * (len(prefix) + len(prog) + 1) - if opt_parts: - lines = get_lines([prog] + opt_parts, indent, prefix) - lines.extend(get_lines(pos_parts, indent)) - elif pos_parts: - lines = get_lines([prog] + pos_parts, indent, prefix) - else: - lines = [prog] - - # if prog is long, put it on its own line - else: - indent = ' ' * len(prefix) - parts = opt_parts + pos_parts - lines = get_lines(parts, indent) - if len(lines) > 1: - lines = [] - lines.extend(get_lines(opt_parts, indent)) - lines.extend(get_lines(pos_parts, indent)) - lines = [prog] + lines - - # join lines into usage - usage = '\n'.join(lines) - - # prefix with 'usage:' - return '%s%s\n\n' % (prefix, usage) - - def _format_actions_usage(self, actions, groups): - # find group indices and identify actions in groups - group_actions = set() - inserts = {} - for group in groups: - try: - start = actions.index(group._group_actions[0]) - except ValueError: - continue - else: - end = start + len(group._group_actions) - if actions[start:end] == group._group_actions: - for action in group._group_actions: - group_actions.add(action) - if not group.required: - if start in inserts: - inserts[start] += ' [' - else: - inserts[start] = '[' - inserts[end] = ']' - else: - if start in inserts: - inserts[start] += ' (' - else: - inserts[start] = '(' - inserts[end] = ')' - for i in range(start + 1, end): - inserts[i] = '|' - - # collect all actions format strings - parts = [] - for i, action in enumerate(actions): - - # suppressed arguments are marked with None - # remove | separators for suppressed arguments - if action.help is SUPPRESS: - parts.append(None) - if inserts.get(i) == '|': - inserts.pop(i) - elif inserts.get(i + 1) == '|': - inserts.pop(i + 1) - - # produce all arg strings - elif not action.option_strings: - part = self._format_args(action, action.dest) - - # if it's in a group, strip the outer [] - if action in group_actions: - if part[0] == '[' and part[-1] == ']': - part = part[1:-1] - - # add the action string to the list - parts.append(part) - - # produce the first way to invoke the option in brackets - else: - option_string = action.option_strings[0] - - # if the Optional doesn't take a value, format is: - # -s or --long - if action.nargs == 0: - part = '%s' % option_string - - # if the Optional takes a value, format is: - # -s ARGS or --long ARGS - else: - default = action.dest.upper() - args_string = self._format_args(action, default) - part = '%s %s' % (option_string, args_string) - - # make it look optional if it's not required or in a group - if not action.required and action not in group_actions: - part = '[%s]' % part - - # add the action string to the list - parts.append(part) - - # insert things at the necessary indices - for i in sorted(inserts, reverse=True): - parts[i:i] = [inserts[i]] - - # join all the action items with spaces - text = ' '.join([item for item in parts if item is not None]) - - # clean up separators for mutually exclusive groups - open = r'[\[(]' - close = r'[\])]' - text = _re.sub(r'(%s) ' % open, r'\1', text) - text = _re.sub(r' (%s)' % close, r'\1', text) - text = _re.sub(r'%s *%s' % (open, close), r'', text) - text = _re.sub(r'\(([^|]*)\)', r'\1', text) - text = text.strip() - - # return the text - return text - - def _format_text(self, text): - if '%(prog)' in text: - text = text % dict(prog=self._prog) - text_width = self._width - self._current_indent - indent = ' ' * self._current_indent - return self._fill_text(text, text_width, indent) + '\n\n' - - def _format_action(self, action): - # determine the required width and the entry label - help_position = min(self._action_max_length + 2, - self._max_help_position) - help_width = self._width - help_position - action_width = help_position - self._current_indent - 2 - action_header = self._format_action_invocation(action) - - # ho nelp; start on same line and add a final newline - if not action.help: - tup = self._current_indent, '', action_header - action_header = '%*s%s\n' % tup - - # short action name; start on the same line and pad two spaces - elif len(action_header) <= action_width: - tup = self._current_indent, '', action_width, action_header - action_header = '%*s%-*s ' % tup - indent_first = 0 - - # long action name; start on the next line - else: - tup = self._current_indent, '', action_header - action_header = '%*s%s\n' % tup - indent_first = help_position - - # collect the pieces of the action help - parts = [action_header] - - # if there was help for the action, add lines of help text - if action.help: - help_text = self._expand_help(action) - help_lines = self._split_lines(help_text, help_width) - parts.append('%*s%s\n' % (indent_first, '', help_lines[0])) - for line in help_lines[1:]: - parts.append('%*s%s\n' % (help_position, '', line)) - - # or add a newline if the description doesn't end with one - elif not action_header.endswith('\n'): - parts.append('\n') - - # if there are any sub-actions, add their help as well - for subaction in self._iter_indented_subactions(action): - parts.append(self._format_action(subaction)) - - # return a single string - return self._join_parts(parts) - - def _format_action_invocation(self, action): - if not action.option_strings: - metavar, = self._metavar_formatter(action, action.dest)(1) - return metavar - - else: - parts = [] - - # if the Optional doesn't take a value, format is: - # -s, --long - if action.nargs == 0: - parts.extend(action.option_strings) - - # if the Optional takes a value, format is: - # -s ARGS, --long ARGS - else: - default = action.dest.upper() - args_string = self._format_args(action, default) - for option_string in action.option_strings: - parts.append('%s %s' % (option_string, args_string)) - - return ', '.join(parts) - - def _metavar_formatter(self, action, default_metavar): - if action.metavar is not None: - result = action.metavar - elif action.choices is not None: - choice_strs = [str(choice) for choice in action.choices] - result = '{%s}' % ','.join(choice_strs) - else: - result = default_metavar - - def format(tuple_size): - if isinstance(result, tuple): - return result - else: - return (result, ) * tuple_size - return format - - def _format_args(self, action, default_metavar): - get_metavar = self._metavar_formatter(action, default_metavar) - if action.nargs is None: - result = '%s' % get_metavar(1) - elif action.nargs == OPTIONAL: - result = '[%s]' % get_metavar(1) - elif action.nargs == ZERO_OR_MORE: - result = '[%s [%s ...]]' % get_metavar(2) - elif action.nargs == ONE_OR_MORE: - result = '%s [%s ...]' % get_metavar(2) - elif action.nargs == REMAINDER: - result = '...' - elif action.nargs == PARSER: - result = '%s ...' % get_metavar(1) - else: - formats = ['%s' for _ in range(action.nargs)] - result = ' '.join(formats) % get_metavar(action.nargs) - return result - - def _expand_help(self, action): - params = dict(vars(action), prog=self._prog) - for name in list(params): - if params[name] is SUPPRESS: - del params[name] - for name in list(params): - if hasattr(params[name], '__name__'): - params[name] = params[name].__name__ - if params.get('choices') is not None: - choices_str = ', '.join([str(c) for c in params['choices']]) - params['choices'] = choices_str - return self._get_help_string(action) % params - - def _iter_indented_subactions(self, action): - try: - get_subactions = action._get_subactions - except AttributeError: - pass - else: - self._indent() - for subaction in get_subactions(): - yield subaction - self._dedent() - - def _split_lines(self, text, width): - text = self._whitespace_matcher.sub(' ', text).strip() - return _textwrap.wrap(text, width) - - def _fill_text(self, text, width, indent): - text = self._whitespace_matcher.sub(' ', text).strip() - return _textwrap.fill(text, width, initial_indent=indent, - subsequent_indent=indent) - - def _get_help_string(self, action): - return action.help - - -class RawDescriptionHelpFormatter(HelpFormatter): - """Help message formatter which retains any formatting in descriptions. - - Only the name of this class is considered a public API. All the methods - provided by the class are considered an implementation detail. - """ - - def _fill_text(self, text, width, indent): - return ''.join([indent + line for line in text.splitlines(True)]) - - -class RawTextHelpFormatter(RawDescriptionHelpFormatter): - """Help message formatter which retains formatting of all help text. - - Only the name of this class is considered a public API. All the methods - provided by the class are considered an implementation detail. - """ - - def _split_lines(self, text, width): - return text.splitlines() - - -class ArgumentDefaultsHelpFormatter(HelpFormatter): - """Help message formatter which adds default values to argument help. - - Only the name of this class is considered a public API. All the methods - provided by the class are considered an implementation detail. - """ - - def _get_help_string(self, action): - help = action.help - if '%(default)' not in action.help: - if action.default is not SUPPRESS: - defaulting_nargs = [OPTIONAL, ZERO_OR_MORE] - if action.option_strings or action.nargs in defaulting_nargs: - help += ' (default: %(default)s)' - return help - - -# ===================== -# Options and Arguments -# ===================== - -def _get_action_name(argument): - if argument is None: - return None - elif argument.option_strings: - return '/'.join(argument.option_strings) - elif argument.metavar not in (None, SUPPRESS): - return argument.metavar - elif argument.dest not in (None, SUPPRESS): - return argument.dest - else: - return None - - -class ArgumentError(Exception): - """An error from creating or using an argument (optional or positional). - - The string value of this exception is the message, augmented with - information about the argument that caused it. - """ - - def __init__(self, argument, message): - self.argument_name = _get_action_name(argument) - self.message = message - - def __str__(self): - if self.argument_name is None: - format = '%(message)s' - else: - format = 'argument %(argument_name)s: %(message)s' - return format % dict(message=self.message, - argument_name=self.argument_name) - - -class ArgumentTypeError(Exception): - """An error from trying to convert a command line string to a type.""" - pass - - -# ============== -# Action classes -# ============== - -class Action(_AttributeHolder): - """Information about how to convert command line strings to Python objects. - - Action objects are used by an ArgumentParser to represent the information - needed to parse a single argument from one or more strings from the - command line. The keyword arguments to the Action constructor are also - all attributes of Action instances. - - Keyword Arguments: - - - option_strings -- A list of command-line option strings which - should be associated with this action. - - - dest -- The name of the attribute to hold the created object(s) - - - nargs -- The number of command-line arguments that should be - consumed. By default, one argument will be consumed and a single - value will be produced. Other values include: - - N (an integer) consumes N arguments (and produces a list) - - '?' consumes zero or one arguments - - '*' consumes zero or more arguments (and produces a list) - - '+' consumes one or more arguments (and produces a list) - Note that the difference between the default and nargs=1 is that - with the default, a single value will be produced, while with - nargs=1, a list containing a single value will be produced. - - - const -- The value to be produced if the option is specified and the - option uses an action that takes no values. - - - default -- The value to be produced if the option is not specified. - - - type -- The type which the command-line arguments should be converted - to, should be one of 'string', 'int', 'float', 'complex' or a - callable object that accepts a single string argument. If None, - 'string' is assumed. - - - choices -- A container of values that should be allowed. If not None, - after a command-line argument has been converted to the appropriate - type, an exception will be raised if it is not a member of this - collection. - - - required -- True if the action must always be specified at the - command line. This is only meaningful for optional command-line - arguments. - - - help -- The help string describing the argument. - - - metavar -- The name to be used for the option's argument with the - help string. If None, the 'dest' value will be used as the name. - """ - - def __init__(self, - option_strings, - dest, - nargs=None, - const=None, - default=None, - type=None, - choices=None, - required=False, - help=None, - metavar=None): - self.option_strings = option_strings - self.dest = dest - self.nargs = nargs - self.const = const - self.default = default - self.type = type - self.choices = choices - self.required = required - self.help = help - self.metavar = metavar - - def _get_kwargs(self): - names = [ - 'option_strings', - 'dest', - 'nargs', - 'const', - 'default', - 'type', - 'choices', - 'help', - 'metavar', - ] - return [(name, getattr(self, name)) for name in names] - - def __call__(self, parser, namespace, values, option_string=None): - raise NotImplementedError(_('.__call__() not defined')) - - -class _StoreAction(Action): - - def __init__(self, - option_strings, - dest, - nargs=None, - const=None, - default=None, - type=None, - choices=None, - required=False, - help=None, - metavar=None): - if nargs == 0: - raise ValueError('nargs for store actions must be > 0; if you ' - 'have nothing to store, actions such as store ' - 'true or store const may be more appropriate') - if const is not None and nargs != OPTIONAL: - raise ValueError('nargs must be %r to supply const' % OPTIONAL) - super(_StoreAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=nargs, - const=const, - default=default, - type=type, - choices=choices, - required=required, - help=help, - metavar=metavar) - - def __call__(self, parser, namespace, values, option_string=None): - setattr(namespace, self.dest, values) - - -class _StoreConstAction(Action): - - def __init__(self, - option_strings, - dest, - const, - default=None, - required=False, - help=None, - metavar=None): - super(_StoreConstAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=0, - const=const, - default=default, - required=required, - help=help) - - def __call__(self, parser, namespace, values, option_string=None): - setattr(namespace, self.dest, self.const) - - -class _StoreTrueAction(_StoreConstAction): - - def __init__(self, - option_strings, - dest, - default=False, - required=False, - help=None): - super(_StoreTrueAction, self).__init__( - option_strings=option_strings, - dest=dest, - const=True, - default=default, - required=required, - help=help) - - -class _StoreFalseAction(_StoreConstAction): - - def __init__(self, - option_strings, - dest, - default=True, - required=False, - help=None): - super(_StoreFalseAction, self).__init__( - option_strings=option_strings, - dest=dest, - const=False, - default=default, - required=required, - help=help) - - -class _AppendAction(Action): - - def __init__(self, - option_strings, - dest, - nargs=None, - const=None, - default=None, - type=None, - choices=None, - required=False, - help=None, - metavar=None): - if nargs == 0: - raise ValueError('nargs for append actions must be > 0; if arg ' - 'strings are not supplying the value to append, ' - 'the append const action may be more appropriate') - if const is not None and nargs != OPTIONAL: - raise ValueError('nargs must be %r to supply const' % OPTIONAL) - super(_AppendAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=nargs, - const=const, - default=default, - type=type, - choices=choices, - required=required, - help=help, - metavar=metavar) - - def __call__(self, parser, namespace, values, option_string=None): - items = _copy.copy(_ensure_value(namespace, self.dest, [])) - items.append(values) - setattr(namespace, self.dest, items) - - -class _AppendConstAction(Action): - - def __init__(self, - option_strings, - dest, - const, - default=None, - required=False, - help=None, - metavar=None): - super(_AppendConstAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=0, - const=const, - default=default, - required=required, - help=help, - metavar=metavar) - - def __call__(self, parser, namespace, values, option_string=None): - items = _copy.copy(_ensure_value(namespace, self.dest, [])) - items.append(self.const) - setattr(namespace, self.dest, items) - - -class _CountAction(Action): - - def __init__(self, - option_strings, - dest, - default=None, - required=False, - help=None): - super(_CountAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=0, - default=default, - required=required, - help=help) - - def __call__(self, parser, namespace, values, option_string=None): - new_count = _ensure_value(namespace, self.dest, 0) + 1 - setattr(namespace, self.dest, new_count) - - -class _HelpAction(Action): - - def __init__(self, - option_strings, - dest=SUPPRESS, - default=SUPPRESS, - help=None): - super(_HelpAction, self).__init__( - option_strings=option_strings, - dest=dest, - default=default, - nargs=0, - help=help) - - def __call__(self, parser, namespace, values, option_string=None): - parser.print_help() - parser.exit() - - -class _VersionAction(Action): - - def __init__(self, - option_strings, - version=None, - dest=SUPPRESS, - default=SUPPRESS, - help="show program's version number and exit"): - super(_VersionAction, self).__init__( - option_strings=option_strings, - dest=dest, - default=default, - nargs=0, - help=help) - self.version = version - - def __call__(self, parser, namespace, values, option_string=None): - version = self.version - if version is None: - version = parser.version - formatter = parser._get_formatter() - formatter.add_text(version) - parser.exit(message=formatter.format_help()) - - -class _SubParsersAction(Action): - - class _ChoicesPseudoAction(Action): - - def __init__(self, name, help): - sup = super(_SubParsersAction._ChoicesPseudoAction, self) - sup.__init__(option_strings=[], dest=name, help=help) - - def __init__(self, - option_strings, - prog, - parser_class, - dest=SUPPRESS, - help=None, - metavar=None): - - self._prog_prefix = prog - self._parser_class = parser_class - self._name_parser_map = {} - self._choices_actions = [] - - super(_SubParsersAction, self).__init__( - option_strings=option_strings, - dest=dest, - nargs=PARSER, - choices=self._name_parser_map, - help=help, - metavar=metavar) - - def add_parser(self, name, **kwargs): - # set prog from the existing prefix - if kwargs.get('prog') is None: - kwargs['prog'] = '%s %s' % (self._prog_prefix, name) - - # create a pseudo-action to hold the choice help - if 'help' in kwargs: - help = kwargs.pop('help') - choice_action = self._ChoicesPseudoAction(name, help) - self._choices_actions.append(choice_action) - - # create the parser and add it to the map - parser = self._parser_class(**kwargs) - self._name_parser_map[name] = parser - return parser - - def _get_subactions(self): - return self._choices_actions - - def __call__(self, parser, namespace, values, option_string=None): - parser_name = values[0] - arg_strings = values[1:] - - # set the parser name if requested - if self.dest is not SUPPRESS: - setattr(namespace, self.dest, parser_name) - - # select the parser - try: - parser = self._name_parser_map[parser_name] - except KeyError: - tup = parser_name, ', '.join(self._name_parser_map) - msg = _('unknown parser %r (choices: %s)' % tup) - raise ArgumentError(self, msg) - - # parse all the remaining options into the namespace - # store any unrecognized options on the object, so that the top - # level parser can decide what to do with them - namespace, arg_strings = parser.parse_known_args(arg_strings, namespace) - if arg_strings: - vars(namespace).setdefault(_UNRECOGNIZED_ARGS_ATTR, []) - getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).extend(arg_strings) - - -# ============== -# Type classes -# ============== - -class FileType(object): - """Factory for creating file object types - - Instances of FileType are typically passed as type= arguments to the - ArgumentParser add_argument() method. - - Keyword Arguments: - - mode -- A string indicating how the file is to be opened. Accepts the - same values as the builtin open() function. - - bufsize -- The file's desired buffer size. Accepts the same values as - the builtin open() function. - """ - - def __init__(self, mode='r', bufsize=None): - self._mode = mode - self._bufsize = bufsize - - def __call__(self, string): - # the special argument "-" means sys.std{in,out} - if string == '-': - if 'r' in self._mode: - return _sys.stdin - elif 'w' in self._mode: - return _sys.stdout - else: - msg = _('argument "-" with mode %r' % self._mode) - raise ValueError(msg) - - # all other arguments are used as file names - if self._bufsize: - return open(string, self._mode, self._bufsize) - else: - return open(string, self._mode) - - def __repr__(self): - args = [self._mode, self._bufsize] - args_str = ', '.join([repr(arg) for arg in args if arg is not None]) - return '%s(%s)' % (type(self).__name__, args_str) - -# =========================== -# Optional and Positional Parsing -# =========================== - -class Namespace(_AttributeHolder): - """Simple object for storing attributes. - - Implements equality by attribute names and values, and provides a simple - string representation. - """ - - def __init__(self, **kwargs): - for name in kwargs: - setattr(self, name, kwargs[name]) - - __hash__ = None - - def __eq__(self, other): - return vars(self) == vars(other) - - def __ne__(self, other): - return not (self == other) - - def __contains__(self, key): - return key in self.__dict__ - - -class _ActionsContainer(object): - - def __init__(self, - description, - prefix_chars, - argument_default, - conflict_handler): - super(_ActionsContainer, self).__init__() - - self.description = description - self.argument_default = argument_default - self.prefix_chars = prefix_chars - self.conflict_handler = conflict_handler - - # set up registries - self._registries = {} - - # register actions - self.register('action', None, _StoreAction) - self.register('action', 'store', _StoreAction) - self.register('action', 'store_const', _StoreConstAction) - self.register('action', 'store_true', _StoreTrueAction) - self.register('action', 'store_false', _StoreFalseAction) - self.register('action', 'append', _AppendAction) - self.register('action', 'append_const', _AppendConstAction) - self.register('action', 'count', _CountAction) - self.register('action', 'help', _HelpAction) - self.register('action', 'version', _VersionAction) - self.register('action', 'parsers', _SubParsersAction) - - # raise an exception if the conflict handler is invalid - self._get_handler() - - # action storage - self._actions = [] - self._option_string_actions = {} - - # groups - self._action_groups = [] - self._mutually_exclusive_groups = [] - - # defaults storage - self._defaults = {} - - # determines whether an "option" looks like a negative number - self._negative_number_matcher = _re.compile(r'^-\d+$|^-\d*\.\d+$') - - # whether or not there are any optionals that look like negative - # numbers -- uses a list so it can be shared and edited - self._has_negative_number_optionals = [] - - # ==================== - # Registration methods - # ==================== - def register(self, registry_name, value, object): - registry = self._registries.setdefault(registry_name, {}) - registry[value] = object - - def _registry_get(self, registry_name, value, default=None): - return self._registries[registry_name].get(value, default) - - # ================================== - # Namespace default accessor methods - # ================================== - def set_defaults(self, **kwargs): - self._defaults.update(kwargs) - - # if these defaults match any existing arguments, replace - # the previous default on the object with the new one - for action in self._actions: - if action.dest in kwargs: - action.default = kwargs[action.dest] - - def get_default(self, dest): - for action in self._actions: - if action.dest == dest and action.default is not None: - return action.default - return self._defaults.get(dest, None) - - - # ======================= - # Adding argument actions - # ======================= - def add_argument(self, *args, **kwargs): - """ - add_argument(dest, ..., name=value, ...) - add_argument(option_string, option_string, ..., name=value, ...) - """ - - # if no positional args are supplied or only one is supplied and - # it doesn't look like an option string, parse a positional - # argument - chars = self.prefix_chars - if not args or len(args) == 1 and args[0][0] not in chars: - if args and 'dest' in kwargs: - raise ValueError('dest supplied twice for positional argument') - kwargs = self._get_positional_kwargs(*args, **kwargs) - - # otherwise, we're adding an optional argument - else: - kwargs = self._get_optional_kwargs(*args, **kwargs) - - # if no default was supplied, use the parser-level default - if 'default' not in kwargs: - dest = kwargs['dest'] - if dest in self._defaults: - kwargs['default'] = self._defaults[dest] - elif self.argument_default is not None: - kwargs['default'] = self.argument_default - - # create the action object, and add it to the parser - action_class = self._pop_action_class(kwargs) - if not _callable(action_class): - raise ValueError('unknown action "%s"' % action_class) - action = action_class(**kwargs) - - # raise an error if the action type is not callable - type_func = self._registry_get('type', action.type, action.type) - if not _callable(type_func): - raise ValueError('%r is not callable' % type_func) - - return self._add_action(action) - - def add_argument_group(self, *args, **kwargs): - group = _ArgumentGroup(self, *args, **kwargs) - self._action_groups.append(group) - return group - - def add_mutually_exclusive_group(self, **kwargs): - group = _MutuallyExclusiveGroup(self, **kwargs) - self._mutually_exclusive_groups.append(group) - return group - - def _add_action(self, action): - # resolve any conflicts - self._check_conflict(action) - - # add to actions list - self._actions.append(action) - action.container = self - - # index the action by any option strings it has - for option_string in action.option_strings: - self._option_string_actions[option_string] = action - - # set the flag if any option strings look like negative numbers - for option_string in action.option_strings: - if self._negative_number_matcher.match(option_string): - if not self._has_negative_number_optionals: - self._has_negative_number_optionals.append(True) - - # return the created action - return action - - def _remove_action(self, action): - self._actions.remove(action) - - def _add_container_actions(self, container): - # collect groups by titles - title_group_map = {} - for group in self._action_groups: - if group.title in title_group_map: - msg = _('cannot merge actions - two groups are named %r') - raise ValueError(msg % (group.title)) - title_group_map[group.title] = group - - # map each action to its group - group_map = {} - for group in container._action_groups: - - # if a group with the title exists, use that, otherwise - # create a new group matching the container's group - if group.title not in title_group_map: - title_group_map[group.title] = self.add_argument_group( - title=group.title, - description=group.description, - conflict_handler=group.conflict_handler) - - # map the actions to their new group - for action in group._group_actions: - group_map[action] = title_group_map[group.title] - - # add container's mutually exclusive groups - # NOTE: if add_mutually_exclusive_group ever gains title= and - # description= then this code will need to be expanded as above - for group in container._mutually_exclusive_groups: - mutex_group = self.add_mutually_exclusive_group( - required=group.required) - - # map the actions to their new mutex group - for action in group._group_actions: - group_map[action] = mutex_group - - # add all actions to this container or their group - for action in container._actions: - group_map.get(action, self)._add_action(action) - - def _get_positional_kwargs(self, dest, **kwargs): - # make sure required is not specified - if 'required' in kwargs: - msg = _("'required' is an invalid argument for positionals") - raise TypeError(msg) - - # mark positional arguments as required if at least one is - # always required - if kwargs.get('nargs') not in [OPTIONAL, ZERO_OR_MORE]: - kwargs['required'] = True - if kwargs.get('nargs') == ZERO_OR_MORE and 'default' not in kwargs: - kwargs['required'] = True - - # return the keyword arguments with no option strings - return dict(kwargs, dest=dest, option_strings=[]) - - def _get_optional_kwargs(self, *args, **kwargs): - # determine short and long option strings - option_strings = [] - long_option_strings = [] - for option_string in args: - # error on strings that don't start with an appropriate prefix - if not option_string[0] in self.prefix_chars: - msg = _('invalid option string %r: ' - 'must start with a character %r') - tup = option_string, self.prefix_chars - raise ValueError(msg % tup) - - # strings starting with two prefix characters are long options - option_strings.append(option_string) - if option_string[0] in self.prefix_chars: - if len(option_string) > 1: - if option_string[1] in self.prefix_chars: - long_option_strings.append(option_string) - - # infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x' - dest = kwargs.pop('dest', None) - if dest is None: - if long_option_strings: - dest_option_string = long_option_strings[0] - else: - dest_option_string = option_strings[0] - dest = dest_option_string.lstrip(self.prefix_chars) - if not dest: - msg = _('dest= is required for options like %r') - raise ValueError(msg % option_string) - dest = dest.replace('-', '_') - - # return the updated keyword arguments - return dict(kwargs, dest=dest, option_strings=option_strings) - - def _pop_action_class(self, kwargs, default=None): - action = kwargs.pop('action', default) - return self._registry_get('action', action, action) - - def _get_handler(self): - # determine function from conflict handler string - handler_func_name = '_handle_conflict_%s' % self.conflict_handler - try: - return getattr(self, handler_func_name) - except AttributeError: - msg = _('invalid conflict_resolution value: %r') - raise ValueError(msg % self.conflict_handler) - - def _check_conflict(self, action): - - # find all options that conflict with this option - confl_optionals = [] - for option_string in action.option_strings: - if option_string in self._option_string_actions: - confl_optional = self._option_string_actions[option_string] - confl_optionals.append((option_string, confl_optional)) - - # resolve any conflicts - if confl_optionals: - conflict_handler = self._get_handler() - conflict_handler(action, confl_optionals) - - def _handle_conflict_error(self, action, conflicting_actions): - message = _('conflicting option string(s): %s') - conflict_string = ', '.join([option_string - for option_string, action - in conflicting_actions]) - raise ArgumentError(action, message % conflict_string) - - def _handle_conflict_resolve(self, action, conflicting_actions): - - # remove all conflicting options - for option_string, action in conflicting_actions: - - # remove the conflicting option - action.option_strings.remove(option_string) - self._option_string_actions.pop(option_string, None) - - # if the option now has no option string, remove it from the - # container holding it - if not action.option_strings: - action.container._remove_action(action) - - -class _ArgumentGroup(_ActionsContainer): - - def __init__(self, container, title=None, description=None, **kwargs): - # add any missing keyword arguments by checking the container - update = kwargs.setdefault - update('conflict_handler', container.conflict_handler) - update('prefix_chars', container.prefix_chars) - update('argument_default', container.argument_default) - super_init = super(_ArgumentGroup, self).__init__ - super_init(description=description, **kwargs) - - # group attributes - self.title = title - self._group_actions = [] - - # share most attributes with the container - self._registries = container._registries - self._actions = container._actions - self._option_string_actions = container._option_string_actions - self._defaults = container._defaults - self._has_negative_number_optionals = \ - container._has_negative_number_optionals - - def _add_action(self, action): - action = super(_ArgumentGroup, self)._add_action(action) - self._group_actions.append(action) - return action - - def _remove_action(self, action): - super(_ArgumentGroup, self)._remove_action(action) - self._group_actions.remove(action) - - -class _MutuallyExclusiveGroup(_ArgumentGroup): - - def __init__(self, container, required=False): - super(_MutuallyExclusiveGroup, self).__init__(container) - self.required = required - self._container = container - - def _add_action(self, action): - if action.required: - msg = _('mutually exclusive arguments must be optional') - raise ValueError(msg) - action = self._container._add_action(action) - self._group_actions.append(action) - return action - - def _remove_action(self, action): - self._container._remove_action(action) - self._group_actions.remove(action) - - -class ArgumentParser(_AttributeHolder, _ActionsContainer): - """Object for parsing command line strings into Python objects. - - Keyword Arguments: - - prog -- The name of the program (default: sys.argv[0]) - - usage -- A usage message (default: auto-generated from arguments) - - description -- A description of what the program does - - epilog -- Text following the argument descriptions - - parents -- Parsers whose arguments should be copied into this one - - formatter_class -- HelpFormatter class for printing help messages - - prefix_chars -- Characters that prefix optional arguments - - fromfile_prefix_chars -- Characters that prefix files containing - additional arguments - - argument_default -- The default value for all arguments - - conflict_handler -- String indicating how to handle conflicts - - add_help -- Add a -h/-help option - """ - - def __init__(self, - prog=None, - usage=None, - description=None, - epilog=None, - version=None, - parents=[], - formatter_class=HelpFormatter, - prefix_chars='-', - fromfile_prefix_chars=None, - argument_default=None, - conflict_handler='error', - add_help=True): - - if version is not None: - import warnings - warnings.warn( - """The "version" argument to ArgumentParser is deprecated. """ - """Please use """ - """"add_argument(..., action='version', version="N", ...)" """ - """instead""", DeprecationWarning) - - superinit = super(ArgumentParser, self).__init__ - superinit(description=description, - prefix_chars=prefix_chars, - argument_default=argument_default, - conflict_handler=conflict_handler) - - # default setting for prog - if prog is None: - prog = _os.path.basename(_sys.argv[0]) - - self.prog = prog - self.usage = usage - self.epilog = epilog - self.version = version - self.formatter_class = formatter_class - self.fromfile_prefix_chars = fromfile_prefix_chars - self.add_help = add_help - - add_group = self.add_argument_group - self._positionals = add_group(_('positional arguments')) - self._optionals = add_group(_('optional arguments')) - self._subparsers = None - - # register types - def identity(string): - return string - self.register('type', None, identity) - - # add help and version arguments if necessary - # (using explicit default to override global argument_default) - if '-' in prefix_chars: - default_prefix = '-' - else: - default_prefix = prefix_chars[0] - if self.add_help: - self.add_argument( - default_prefix+'h', default_prefix*2+'help', - action='help', default=SUPPRESS, - help=_('show this help message and exit')) - if self.version: - self.add_argument( - default_prefix+'v', default_prefix*2+'version', - action='version', default=SUPPRESS, - version=self.version, - help=_("show program's version number and exit")) - - # add parent arguments and defaults - for parent in parents: - self._add_container_actions(parent) - try: - defaults = parent._defaults - except AttributeError: - pass - else: - self._defaults.update(defaults) - - # ======================= - # Pretty __repr__ methods - # ======================= - def _get_kwargs(self): - names = [ - 'prog', - 'usage', - 'description', - 'version', - 'formatter_class', - 'conflict_handler', - 'add_help', - ] - return [(name, getattr(self, name)) for name in names] - - # ================================== - # Optional/Positional adding methods - # ================================== - def add_subparsers(self, **kwargs): - if self._subparsers is not None: - self.error(_('cannot have multiple subparser arguments')) - - # add the parser class to the arguments if it's not present - kwargs.setdefault('parser_class', type(self)) - - if 'title' in kwargs or 'description' in kwargs: - title = _(kwargs.pop('title', 'subcommands')) - description = _(kwargs.pop('description', None)) - self._subparsers = self.add_argument_group(title, description) - else: - self._subparsers = self._positionals - - # prog defaults to the usage message of this parser, skipping - # optional arguments and with no "usage:" prefix - if kwargs.get('prog') is None: - formatter = self._get_formatter() - positionals = self._get_positional_actions() - groups = self._mutually_exclusive_groups - formatter.add_usage(self.usage, positionals, groups, '') - kwargs['prog'] = formatter.format_help().strip() - - # create the parsers action and add it to the positionals list - parsers_class = self._pop_action_class(kwargs, 'parsers') - action = parsers_class(option_strings=[], **kwargs) - self._subparsers._add_action(action) - - # return the created parsers action - return action - - def _add_action(self, action): - if action.option_strings: - self._optionals._add_action(action) - else: - self._positionals._add_action(action) - return action - - def _get_optional_actions(self): - return [action - for action in self._actions - if action.option_strings] - - def _get_positional_actions(self): - return [action - for action in self._actions - if not action.option_strings] - - # ===================================== - # Command line argument parsing methods - # ===================================== - def parse_args(self, args=None, namespace=None): - args, argv = self.parse_known_args(args, namespace) - if argv: - msg = _('unrecognized arguments: %s') - self.error(msg % ' '.join(argv)) - return args - - def parse_known_args(self, args=None, namespace=None): - # args default to the system args - if args is None: - args = _sys.argv[1:] - - # default Namespace built from parser defaults - if namespace is None: - namespace = Namespace() - - # add any action defaults that aren't present - for action in self._actions: - if action.dest is not SUPPRESS: - if not hasattr(namespace, action.dest): - if action.default is not SUPPRESS: - default = action.default - if isinstance(action.default, basestring): - default = self._get_value(action, default) - setattr(namespace, action.dest, default) - - # add any parser defaults that aren't present - for dest in self._defaults: - if not hasattr(namespace, dest): - setattr(namespace, dest, self._defaults[dest]) - - # parse the arguments and exit if there are any errors - try: - namespace, args = self._parse_known_args(args, namespace) - if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR): - args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) - delattr(namespace, _UNRECOGNIZED_ARGS_ATTR) - return namespace, args - except ArgumentError: - err = _sys.exc_info()[1] - self.error(str(err)) - - def _parse_known_args(self, arg_strings, namespace): - # replace arg strings that are file references - if self.fromfile_prefix_chars is not None: - arg_strings = self._read_args_from_files(arg_strings) - - # map all mutually exclusive arguments to the other arguments - # they can't occur with - action_conflicts = {} - for mutex_group in self._mutually_exclusive_groups: - group_actions = mutex_group._group_actions - for i, mutex_action in enumerate(mutex_group._group_actions): - conflicts = action_conflicts.setdefault(mutex_action, []) - conflicts.extend(group_actions[:i]) - conflicts.extend(group_actions[i + 1:]) - - # find all option indices, and determine the arg_string_pattern - # which has an 'O' if there is an option at an index, - # an 'A' if there is an argument, or a '-' if there is a '--' - option_string_indices = {} - arg_string_pattern_parts = [] - arg_strings_iter = iter(arg_strings) - for i, arg_string in enumerate(arg_strings_iter): - - # all args after -- are non-options - if arg_string == '--': - arg_string_pattern_parts.append('-') - for arg_string in arg_strings_iter: - arg_string_pattern_parts.append('A') - - # otherwise, add the arg to the arg strings - # and note the index if it was an option - else: - option_tuple = self._parse_optional(arg_string) - if option_tuple is None: - pattern = 'A' - else: - option_string_indices[i] = option_tuple - pattern = 'O' - arg_string_pattern_parts.append(pattern) - - # join the pieces together to form the pattern - arg_strings_pattern = ''.join(arg_string_pattern_parts) - - # converts arg strings to the appropriate and then takes the action - seen_actions = set() - seen_non_default_actions = set() - - def take_action(action, argument_strings, option_string=None): - seen_actions.add(action) - argument_values = self._get_values(action, argument_strings) - - # error if this argument is not allowed with other previously - # seen arguments, assuming that actions that use the default - # value don't really count as "present" - if argument_values is not action.default: - seen_non_default_actions.add(action) - for conflict_action in action_conflicts.get(action, []): - if conflict_action in seen_non_default_actions: - msg = _('not allowed with argument %s') - action_name = _get_action_name(conflict_action) - raise ArgumentError(action, msg % action_name) - - # take the action if we didn't receive a SUPPRESS value - # (e.g. from a default) - if argument_values is not SUPPRESS: - action(self, namespace, argument_values, option_string) - - # function to convert arg_strings into an optional action - def consume_optional(start_index): - - # get the optional identified at this index - option_tuple = option_string_indices[start_index] - action, option_string, explicit_arg = option_tuple - - # identify additional optionals in the same arg string - # (e.g. -xyz is the same as -x -y -z if no args are required) - match_argument = self._match_argument - action_tuples = [] - while True: - - # if we found no optional action, skip it - if action is None: - extras.append(arg_strings[start_index]) - return start_index + 1 - - # if there is an explicit argument, try to match the - # optional's string arguments to only this - if explicit_arg is not None: - arg_count = match_argument(action, 'A') - - # if the action is a single-dash option and takes no - # arguments, try to parse more single-dash options out - # of the tail of the option string - chars = self.prefix_chars - if arg_count == 0 and option_string[1] not in chars: - action_tuples.append((action, [], option_string)) - char = option_string[0] - option_string = char + explicit_arg[0] - new_explicit_arg = explicit_arg[1:] or None - optionals_map = self._option_string_actions - if option_string in optionals_map: - action = optionals_map[option_string] - explicit_arg = new_explicit_arg - else: - msg = _('ignored explicit argument %r') - raise ArgumentError(action, msg % explicit_arg) - - # if the action expect exactly one argument, we've - # successfully matched the option; exit the loop - elif arg_count == 1: - stop = start_index + 1 - args = [explicit_arg] - action_tuples.append((action, args, option_string)) - break - - # error if a double-dash option did not use the - # explicit argument - else: - msg = _('ignored explicit argument %r') - raise ArgumentError(action, msg % explicit_arg) - - # if there is no explicit argument, try to match the - # optional's string arguments with the following strings - # if successful, exit the loop - else: - start = start_index + 1 - selected_patterns = arg_strings_pattern[start:] - arg_count = match_argument(action, selected_patterns) - stop = start + arg_count - args = arg_strings[start:stop] - action_tuples.append((action, args, option_string)) - break - - # add the Optional to the list and return the index at which - # the Optional's string args stopped - assert action_tuples - for action, args, option_string in action_tuples: - take_action(action, args, option_string) - return stop - - # the list of Positionals left to be parsed; this is modified - # by consume_positionals() - positionals = self._get_positional_actions() - - # function to convert arg_strings into positional actions - def consume_positionals(start_index): - # match as many Positionals as possible - match_partial = self._match_arguments_partial - selected_pattern = arg_strings_pattern[start_index:] - arg_counts = match_partial(positionals, selected_pattern) - - # slice off the appropriate arg strings for each Positional - # and add the Positional and its args to the list - for action, arg_count in zip(positionals, arg_counts): - args = arg_strings[start_index: start_index + arg_count] - start_index += arg_count - take_action(action, args) - - # slice off the Positionals that we just parsed and return the - # index at which the Positionals' string args stopped - positionals[:] = positionals[len(arg_counts):] - return start_index - - # consume Positionals and Optionals alternately, until we have - # passed the last option string - extras = [] - start_index = 0 - if option_string_indices: - max_option_string_index = max(option_string_indices) - else: - max_option_string_index = -1 - while start_index <= max_option_string_index: - - # consume any Positionals preceding the next option - next_option_string_index = min([ - index - for index in option_string_indices - if index >= start_index]) - if start_index != next_option_string_index: - positionals_end_index = consume_positionals(start_index) - - # only try to parse the next optional if we didn't consume - # the option string during the positionals parsing - if positionals_end_index > start_index: - start_index = positionals_end_index - continue - else: - start_index = positionals_end_index - - # if we consumed all the positionals we could and we're not - # at the index of an option string, there were extra arguments - if start_index not in option_string_indices: - strings = arg_strings[start_index:next_option_string_index] - extras.extend(strings) - start_index = next_option_string_index - - # consume the next optional and any arguments for it - start_index = consume_optional(start_index) - - # consume any positionals following the last Optional - stop_index = consume_positionals(start_index) - - # if we didn't consume all the argument strings, there were extras - extras.extend(arg_strings[stop_index:]) - - # if we didn't use all the Positional objects, there were too few - # arg strings supplied. - if positionals: - self.error(_('too few arguments')) - - # make sure all required actions were present - for action in self._actions: - if action.required: - if action not in seen_actions: - name = _get_action_name(action) - self.error(_('argument %s is required') % name) - - # make sure all required groups had one option present - for group in self._mutually_exclusive_groups: - if group.required: - for action in group._group_actions: - if action in seen_non_default_actions: - break - - # if no actions were used, report the error - else: - names = [_get_action_name(action) - for action in group._group_actions - if action.help is not SUPPRESS] - msg = _('one of the arguments %s is required') - self.error(msg % ' '.join(names)) - - # return the updated namespace and the extra arguments - return namespace, extras - - def _read_args_from_files(self, arg_strings): - # expand arguments referencing files - new_arg_strings = [] - for arg_string in arg_strings: - - # for regular arguments, just add them back into the list - if arg_string[0] not in self.fromfile_prefix_chars: - new_arg_strings.append(arg_string) - - # replace arguments referencing files with the file content - else: - try: - args_file = open(arg_string[1:]) - try: - arg_strings = [] - for arg_line in args_file.read().splitlines(): - for arg in self.convert_arg_line_to_args(arg_line): - arg_strings.append(arg) - arg_strings = self._read_args_from_files(arg_strings) - new_arg_strings.extend(arg_strings) - finally: - args_file.close() - except IOError: - err = _sys.exc_info()[1] - self.error(str(err)) - - # return the modified argument list - return new_arg_strings - - def convert_arg_line_to_args(self, arg_line): - return [arg_line] - - def _match_argument(self, action, arg_strings_pattern): - # match the pattern for this action to the arg strings - nargs_pattern = self._get_nargs_pattern(action) - match = _re.match(nargs_pattern, arg_strings_pattern) - - # raise an exception if we weren't able to find a match - if match is None: - nargs_errors = { - None: _('expected one argument'), - OPTIONAL: _('expected at most one argument'), - ONE_OR_MORE: _('expected at least one argument'), - } - default = _('expected %s argument(s)') % action.nargs - msg = nargs_errors.get(action.nargs, default) - raise ArgumentError(action, msg) - - # return the number of arguments matched - return len(match.group(1)) - - def _match_arguments_partial(self, actions, arg_strings_pattern): - # progressively shorten the actions list by slicing off the - # final actions until we find a match - result = [] - for i in range(len(actions), 0, -1): - actions_slice = actions[:i] - pattern = ''.join([self._get_nargs_pattern(action) - for action in actions_slice]) - match = _re.match(pattern, arg_strings_pattern) - if match is not None: - result.extend([len(string) for string in match.groups()]) - break - - # return the list of arg string counts - return result - - def _parse_optional(self, arg_string): - # if it's an empty string, it was meant to be a positional - if not arg_string: - return None - - # if it doesn't start with a prefix, it was meant to be positional - if not arg_string[0] in self.prefix_chars: - return None - - # if the option string is present in the parser, return the action - if arg_string in self._option_string_actions: - action = self._option_string_actions[arg_string] - return action, arg_string, None - - # if it's just a single character, it was meant to be positional - if len(arg_string) == 1: - return None - - # if the option string before the "=" is present, return the action - if '=' in arg_string: - option_string, explicit_arg = arg_string.split('=', 1) - if option_string in self._option_string_actions: - action = self._option_string_actions[option_string] - return action, option_string, explicit_arg - - # search through all possible prefixes of the option string - # and all actions in the parser for possible interpretations - option_tuples = self._get_option_tuples(arg_string) - - # if multiple actions match, the option string was ambiguous - if len(option_tuples) > 1: - options = ', '.join([option_string - for action, option_string, explicit_arg in option_tuples]) - tup = arg_string, options - self.error(_('ambiguous option: %s could match %s') % tup) - - # if exactly one action matched, this segmentation is good, - # so return the parsed action - elif len(option_tuples) == 1: - option_tuple, = option_tuples - return option_tuple - - # if it was not found as an option, but it looks like a negative - # number, it was meant to be positional - # unless there are negative-number-like options - if self._negative_number_matcher.match(arg_string): - if not self._has_negative_number_optionals: - return None - - # if it contains a space, it was meant to be a positional - if ' ' in arg_string: - return None - - # it was meant to be an optional but there is no such option - # in this parser (though it might be a valid option in a subparser) - return None, arg_string, None - - def _get_option_tuples(self, option_string): - result = [] - - # option strings starting with two prefix characters are only - # split at the '=' - chars = self.prefix_chars - if option_string[0] in chars and option_string[1] in chars: - if '=' in option_string: - option_prefix, explicit_arg = option_string.split('=', 1) - else: - option_prefix = option_string - explicit_arg = None - for option_string in self._option_string_actions: - if option_string.startswith(option_prefix): - action = self._option_string_actions[option_string] - tup = action, option_string, explicit_arg - result.append(tup) - - # single character options can be concatenated with their arguments - # but multiple character options always have to have their argument - # separate - elif option_string[0] in chars and option_string[1] not in chars: - option_prefix = option_string - explicit_arg = None - short_option_prefix = option_string[:2] - short_explicit_arg = option_string[2:] - - for option_string in self._option_string_actions: - if option_string == short_option_prefix: - action = self._option_string_actions[option_string] - tup = action, option_string, short_explicit_arg - result.append(tup) - elif option_string.startswith(option_prefix): - action = self._option_string_actions[option_string] - tup = action, option_string, explicit_arg - result.append(tup) - - # shouldn't ever get here - else: - self.error(_('unexpected option string: %s') % option_string) - - # return the collected option tuples - return result - - def _get_nargs_pattern(self, action): - # in all examples below, we have to allow for '--' args - # which are represented as '-' in the pattern - nargs = action.nargs - - # the default (None) is assumed to be a single argument - if nargs is None: - nargs_pattern = '(-*A-*)' - - # allow zero or one arguments - elif nargs == OPTIONAL: - nargs_pattern = '(-*A?-*)' - - # allow zero or more arguments - elif nargs == ZERO_OR_MORE: - nargs_pattern = '(-*[A-]*)' - - # allow one or more arguments - elif nargs == ONE_OR_MORE: - nargs_pattern = '(-*A[A-]*)' - - # allow any number of options or arguments - elif nargs == REMAINDER: - nargs_pattern = '([-AO]*)' - - # allow one argument followed by any number of options or arguments - elif nargs == PARSER: - nargs_pattern = '(-*A[-AO]*)' - - # all others should be integers - else: - nargs_pattern = '(-*%s-*)' % '-*'.join('A' * nargs) - - # if this is an optional action, -- is not allowed - if action.option_strings: - nargs_pattern = nargs_pattern.replace('-*', '') - nargs_pattern = nargs_pattern.replace('-', '') - - # return the pattern - return nargs_pattern - - # ======================== - # Value conversion methods - # ======================== - def _get_values(self, action, arg_strings): - # for everything but PARSER args, strip out '--' - if action.nargs not in [PARSER, REMAINDER]: - arg_strings = [s for s in arg_strings if s != '--'] - - # optional argument produces a default when not present - if not arg_strings and action.nargs == OPTIONAL: - if action.option_strings: - value = action.const - else: - value = action.default - if isinstance(value, basestring): - value = self._get_value(action, value) - self._check_value(action, value) - - # when nargs='*' on a positional, if there were no command-line - # args, use the default if it is anything other than None - elif (not arg_strings and action.nargs == ZERO_OR_MORE and - not action.option_strings): - if action.default is not None: - value = action.default - else: - value = arg_strings - self._check_value(action, value) - - # single argument or optional argument produces a single value - elif len(arg_strings) == 1 and action.nargs in [None, OPTIONAL]: - arg_string, = arg_strings - value = self._get_value(action, arg_string) - self._check_value(action, value) - - # REMAINDER arguments convert all values, checking none - elif action.nargs == REMAINDER: - value = [self._get_value(action, v) for v in arg_strings] - - # PARSER arguments convert all values, but check only the first - elif action.nargs == PARSER: - value = [self._get_value(action, v) for v in arg_strings] - self._check_value(action, value[0]) - - # all other types of nargs produce a list - else: - value = [self._get_value(action, v) for v in arg_strings] - for v in value: - self._check_value(action, v) - - # return the converted value - return value - - def _get_value(self, action, arg_string): - type_func = self._registry_get('type', action.type, action.type) - if not _callable(type_func): - msg = _('%r is not callable') - raise ArgumentError(action, msg % type_func) - - # convert the value to the appropriate type - try: - result = type_func(arg_string) - - # ArgumentTypeErrors indicate errors - except ArgumentTypeError: - name = getattr(action.type, '__name__', repr(action.type)) - msg = str(_sys.exc_info()[1]) - raise ArgumentError(action, msg) - - # TypeErrors or ValueErrors also indicate errors - except (TypeError, ValueError): - name = getattr(action.type, '__name__', repr(action.type)) - msg = _('invalid %s value: %r') - raise ArgumentError(action, msg % (name, arg_string)) - - # return the converted value - return result - - def _check_value(self, action, value): - # converted value must be one of the choices (if specified) - if action.choices is not None and value not in action.choices: - tup = value, ', '.join(map(repr, action.choices)) - msg = _('invalid choice: %r (choose from %s)') % tup - raise ArgumentError(action, msg) - - # ======================= - # Help-formatting methods - # ======================= - def format_usage(self): - formatter = self._get_formatter() - formatter.add_usage(self.usage, self._actions, - self._mutually_exclusive_groups) - return formatter.format_help() - - def format_help(self): - formatter = self._get_formatter() - - # usage - formatter.add_usage(self.usage, self._actions, - self._mutually_exclusive_groups) - - # description - formatter.add_text(self.description) - - # positionals, optionals and user-defined groups - for action_group in self._action_groups: - formatter.start_section(action_group.title) - formatter.add_text(action_group.description) - formatter.add_arguments(action_group._group_actions) - formatter.end_section() - - # epilog - formatter.add_text(self.epilog) - - # determine help from format above - return formatter.format_help() - - def format_version(self): - import warnings - warnings.warn( - 'The format_version method is deprecated -- the "version" ' - 'argument to ArgumentParser is no longer supported.', - DeprecationWarning) - formatter = self._get_formatter() - formatter.add_text(self.version) - return formatter.format_help() - - def _get_formatter(self): - return self.formatter_class(prog=self.prog) - - # ===================== - # Help-printing methods - # ===================== - def print_usage(self, file=None): - if file is None: - file = _sys.stdout - self._print_message(self.format_usage(), file) - - def print_help(self, file=None): - if file is None: - file = _sys.stdout - self._print_message(self.format_help(), file) - - def print_version(self, file=None): - import warnings - warnings.warn( - 'The print_version method is deprecated -- the "version" ' - 'argument to ArgumentParser is no longer supported.', - DeprecationWarning) - self._print_message(self.format_version(), file) - - def _print_message(self, message, file=None): - if message: - if file is None: - file = _sys.stderr - file.write(message) - - # =============== - # Exiting methods - # =============== - def exit(self, status=0, message=None): - if message: - self._print_message(message, _sys.stderr) - _sys.exit(status) - - def error(self, message): - """error(message: string) - - Prints a usage message incorporating the message to stderr and - exits. - - If you override this in a subclass, it should not return -- it - should either exit or raise an exception. - """ - self.print_usage(_sys.stderr) - self.exit(2, _('%s: error: %s\n') % (self.prog, message)) diff --git a/src/rez/wrapper.py b/src/rez/wrapper.py index 55df4bb0b..b7b9380e3 100644 --- a/src/rez/wrapper.py +++ b/src/rez/wrapper.py @@ -1,3 +1,7 @@ +import os +import sys +import argparse + from rez.resolved_context import ResolvedContext from rez.utils.colorize import heading, local, critical, Printer from rez.utils.data_utils import cached_property @@ -6,8 +10,6 @@ from rez.vendor.yaml.error import YAMLError from rez.exceptions import RezSystemError, SuiteError from rez.config import config -import os.path -import sys class Wrapper(object): @@ -86,8 +88,6 @@ def _run_no_args(self, args): return retcode def _run(self, prefix_char, args): - from rez.vendor import argparse - parser = argparse.ArgumentParser(prog=self.tool_name, prefix_chars=prefix_char) @@ -269,17 +269,3 @@ def _print_conflicting(cls, variants): Printer()(msg, critical) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/__init__.py b/src/rezgui/__init__.py index 069287af2..9ec46985b 100644 --- a/src/rezgui/__init__.py +++ b/src/rezgui/__init__.py @@ -2,17 +2,3 @@ application_name = "rez-gui" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/app.py b/src/rezgui/app.py index 5f7142690..3e276c4c9 100644 --- a/src/rezgui/app.py +++ b/src/rezgui/app.py @@ -45,17 +45,3 @@ def run(opts=None, parser=None): sys.exit(app.exec_()) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/AboutDialog.py b/src/rezgui/dialogs/AboutDialog.py index 9b7f48831..9ec073209 100644 --- a/src/rezgui/dialogs/AboutDialog.py +++ b/src/rezgui/dialogs/AboutDialog.py @@ -37,17 +37,3 @@ def _goto_github(self): webbrowser.open_new("https://github.com/nerdvegas/rez") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/BrowsePackageDialog.py b/src/rezgui/dialogs/BrowsePackageDialog.py index 923961725..536ca6ae8 100644 --- a/src/rezgui/dialogs/BrowsePackageDialog.py +++ b/src/rezgui/dialogs/BrowsePackageDialog.py @@ -59,17 +59,3 @@ def _ok(self): self.close() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/ImageViewerDialog.py b/src/rezgui/dialogs/ImageViewerDialog.py index d1ef6c4e5..b816f8253 100644 --- a/src/rezgui/dialogs/ImageViewerDialog.py +++ b/src/rezgui/dialogs/ImageViewerDialog.py @@ -24,17 +24,3 @@ def __init__(self, image_file, parent=None): app.config.attach(fit_checkbox, "resolve/fit_graph") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/ProcessDialog.py b/src/rezgui/dialogs/ProcessDialog.py index cb05df338..1fa2476cf 100644 --- a/src/rezgui/dialogs/ProcessDialog.py +++ b/src/rezgui/dialogs/ProcessDialog.py @@ -87,17 +87,3 @@ def _update(self): self.timer.stop() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/ResolveDialog.py b/src/rezgui/dialogs/ResolveDialog.py index 230ccc16f..2cebcc9fa 100644 --- a/src/rezgui/dialogs/ResolveDialog.py +++ b/src/rezgui/dialogs/ResolveDialog.py @@ -328,17 +328,3 @@ def _set_progress(self, done=True): self.bar.setRange(0, 0) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/VariantVersionsDialog.py b/src/rezgui/dialogs/VariantVersionsDialog.py index d4df5d0ec..bdbb32ed1 100644 --- a/src/rezgui/dialogs/VariantVersionsDialog.py +++ b/src/rezgui/dialogs/VariantVersionsDialog.py @@ -22,17 +22,3 @@ def __init__(self, context_model, variant, reference_variant=None, parent=None): self.versions_widget.closeWindow.connect(self.close) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/WriteGraphDialog.py b/src/rezgui/dialogs/WriteGraphDialog.py index a67abcaae..0e2387843 100644 --- a/src/rezgui/dialogs/WriteGraphDialog.py +++ b/src/rezgui/dialogs/WriteGraphDialog.py @@ -133,17 +133,3 @@ def view_graph(graph_str, parent=None, prune_to=None): dlg.exec_() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/dialogs/__init__.py b/src/rezgui/dialogs/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/dialogs/__init__.py +++ b/src/rezgui/dialogs/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/mixins/ContextViewMixin.py b/src/rezgui/mixins/ContextViewMixin.py index 24a9e734e..d082687ae 100644 --- a/src/rezgui/mixins/ContextViewMixin.py +++ b/src/rezgui/mixins/ContextViewMixin.py @@ -35,17 +35,3 @@ def _connect(self, b): fn(self._contextChanged) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/mixins/StoreSizeMixin.py b/src/rezgui/mixins/StoreSizeMixin.py index 467354a7f..7372677d5 100644 --- a/src/rezgui/mixins/StoreSizeMixin.py +++ b/src/rezgui/mixins/StoreSizeMixin.py @@ -21,17 +21,3 @@ def closeEvent(self, event): self.config.sync() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/mixins/__init__.py b/src/rezgui/mixins/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/mixins/__init__.py +++ b/src/rezgui/mixins/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/models/ContextModel.py b/src/rezgui/models/ContextModel.py index f562e782e..39870e758 100644 --- a/src/rezgui/models/ContextModel.py +++ b/src/rezgui/models/ContextModel.py @@ -253,17 +253,3 @@ def _attr_changed(self, attr, value, flags): self._changed(flags) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/models/__init__.py b/src/rezgui/models/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/models/__init__.py +++ b/src/rezgui/models/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/App.py b/src/rezgui/objects/App.py index a19820987..665922914 100644 --- a/src/rezgui/objects/App.py +++ b/src/rezgui/objects/App.py @@ -90,17 +90,3 @@ def execute_shell(self, context, command=None, terminal=False, **Popen_args): app = App() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/Config.py b/src/rezgui/objects/Config.py index 2c10c04d4..a399c58b0 100644 --- a/src/rezgui/objects/Config.py +++ b/src/rezgui/objects/Config.py @@ -129,17 +129,3 @@ def _default_value(self, key): return value -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/LoadPackagesThread.py b/src/rezgui/objects/LoadPackagesThread.py index 3df48f47a..379b8d29f 100644 --- a/src/rezgui/objects/LoadPackagesThread.py +++ b/src/rezgui/objects/LoadPackagesThread.py @@ -43,17 +43,3 @@ def run(self): self.finished.emit(packages) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/ProcessTrackerThread.py b/src/rezgui/objects/ProcessTrackerThread.py index a6b9f2509..c85402fed 100644 --- a/src/rezgui/objects/ProcessTrackerThread.py +++ b/src/rezgui/objects/ProcessTrackerThread.py @@ -97,17 +97,3 @@ def _remove_proc(self, context_id, process_name, pid): return nprocs -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/ResolveThread.py b/src/rezgui/objects/ResolveThread.py index e1871ffff..3fdb3d19e 100644 --- a/src/rezgui/objects/ResolveThread.py +++ b/src/rezgui/objects/ResolveThread.py @@ -55,17 +55,3 @@ def _package_load_callback(self, package): print >> self.buf, "loading %s..." % str(package) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/objects/__init__.py b/src/rezgui/objects/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/objects/__init__.py +++ b/src/rezgui/objects/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/qt.py b/src/rezgui/qt.py index ecc4fa593..331a89c9e 100644 --- a/src/rezgui/qt.py +++ b/src/rezgui/qt.py @@ -47,17 +47,3 @@ used(QtGui) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/util.py b/src/rezgui/util.py index 447545703..6c9693a22 100644 --- a/src/rezgui/util.py +++ b/src/rezgui/util.py @@ -150,17 +150,3 @@ def update_font(widget, italic=None, bold=None, underline=None): widget.setFont(font) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/BrowsePackagePane.py b/src/rezgui/widgets/BrowsePackagePane.py index d91101b23..e923323eb 100644 --- a/src/rezgui/widgets/BrowsePackagePane.py +++ b/src/rezgui/widgets/BrowsePackagePane.py @@ -27,17 +27,3 @@ def __init__(self, context_model=None, parent=None): self.addTab(self.settings, icon, "settings") -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/BrowsePackageWidget.py b/src/rezgui/widgets/BrowsePackageWidget.py index a24d27676..fa67948a8 100644 --- a/src/rezgui/widgets/BrowsePackageWidget.py +++ b/src/rezgui/widgets/BrowsePackageWidget.py @@ -70,17 +70,3 @@ def _set_package(self): self.packageSelected.emit() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ChangelogEdit.py b/src/rezgui/widgets/ChangelogEdit.py index 570d8cf54..d52f55143 100644 --- a/src/rezgui/widgets/ChangelogEdit.py +++ b/src/rezgui/widgets/ChangelogEdit.py @@ -54,17 +54,3 @@ def set_variant(self, variant): self.variant = variant -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ConfiguredSplitter.py b/src/rezgui/widgets/ConfiguredSplitter.py index a6efa1634..f1c8e74c2 100644 --- a/src/rezgui/widgets/ConfiguredSplitter.py +++ b/src/rezgui/widgets/ConfiguredSplitter.py @@ -32,17 +32,3 @@ def _splitterMoved(self, pos, index): self.config.setValue(key, size) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextDetailsWidget.py b/src/rezgui/widgets/ContextDetailsWidget.py index fbc5745f1..bb4d4cfc0 100644 --- a/src/rezgui/widgets/ContextDetailsWidget.py +++ b/src/rezgui/widgets/ContextDetailsWidget.py @@ -98,17 +98,3 @@ def _update_code(self): self.code_pending = False -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextEnvironTable.py b/src/rezgui/widgets/ContextEnvironTable.py index 7ba3af319..fc163da93 100644 --- a/src/rezgui/widgets/ContextEnvironTable.py +++ b/src/rezgui/widgets/ContextEnvironTable.py @@ -72,17 +72,3 @@ def set_context(self, context): self.setEnabled(True) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextEnvironWidget.py b/src/rezgui/widgets/ContextEnvironWidget.py index 3fbab7def..c74768dff 100644 --- a/src/rezgui/widgets/ContextEnvironWidget.py +++ b/src/rezgui/widgets/ContextEnvironWidget.py @@ -40,17 +40,3 @@ def _set_split_char(self): self.table.set_split_character(ch) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextManagerWidget.py b/src/rezgui/widgets/ContextManagerWidget.py index 8f420c14d..9bdea5687 100644 --- a/src/rezgui/widgets/ContextManagerWidget.py +++ b/src/rezgui/widgets/ContextManagerWidget.py @@ -359,17 +359,3 @@ def _search_variant(self): self.popup.show() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextResolveTimeLabel.py b/src/rezgui/widgets/ContextResolveTimeLabel.py index cfe67a9bc..04f7d0b92 100644 --- a/src/rezgui/widgets/ContextResolveTimeLabel.py +++ b/src/rezgui/widgets/ContextResolveTimeLabel.py @@ -36,17 +36,3 @@ def _contextChanged(self, flags=0): self.refresh() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextSettingsWidget.py b/src/rezgui/widgets/ContextSettingsWidget.py index 672523868..c3a5adcfb 100644 --- a/src/rezgui/widgets/ContextSettingsWidget.py +++ b/src/rezgui/widgets/ContextSettingsWidget.py @@ -165,17 +165,3 @@ def _settingsChanged(self): self.apply_btn.setEnabled(True) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextTableWidget.py b/src/rezgui/widgets/ContextTableWidget.py index a2e23aecb..9d3789171 100644 --- a/src/rezgui/widgets/ContextTableWidget.py +++ b/src/rezgui/widgets/ContextTableWidget.py @@ -726,17 +726,3 @@ def _set_current_cell(self, row, column): edit.setFocus() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ContextToolsWidget.py b/src/rezgui/widgets/ContextToolsWidget.py index 4e8758b41..1fc36e423 100644 --- a/src/rezgui/widgets/ContextToolsWidget.py +++ b/src/rezgui/widgets/ContextToolsWidget.py @@ -94,17 +94,3 @@ def _instanceCountChanged(self, context_id, tool_name, num_procs): widget.set_instance_count(num_procs) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/EffectivePackageCellWidget.py b/src/rezgui/widgets/EffectivePackageCellWidget.py index 6812e2e84..36dc60e58 100644 --- a/src/rezgui/widgets/EffectivePackageCellWidget.py +++ b/src/rezgui/widgets/EffectivePackageCellWidget.py @@ -23,17 +23,3 @@ def __init__(self, request, type_, parent=None): self.setEnabled(False) # this widget always disabled by design -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/FindPopup.py b/src/rezgui/widgets/FindPopup.py index d3fc87340..7c4ed8c03 100644 --- a/src/rezgui/widgets/FindPopup.py +++ b/src/rezgui/widgets/FindPopup.py @@ -51,17 +51,3 @@ def _find_again(self): self.edit.selectAll() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/IconButton.py b/src/rezgui/widgets/IconButton.py index 55f690045..bb2923207 100644 --- a/src/rezgui/widgets/IconButton.py +++ b/src/rezgui/widgets/IconButton.py @@ -18,17 +18,3 @@ def mousePressEvent(self, event): self.clicked.emit(event.button()) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ImageViewerWidget.py b/src/rezgui/widgets/ImageViewerWidget.py index 2925e6edd..a87a2b7e9 100644 --- a/src/rezgui/widgets/ImageViewerWidget.py +++ b/src/rezgui/widgets/ImageViewerWidget.py @@ -105,17 +105,3 @@ def _fit_in_view(self): self.view.fitInView(self.image_item, QtCore.Qt.KeepAspectRatio) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/PackageLineEdit.py b/src/rezgui/widgets/PackageLineEdit.py index 5b9504d61..49658066b 100644 --- a/src/rezgui/widgets/PackageLineEdit.py +++ b/src/rezgui/widgets/PackageLineEdit.py @@ -151,17 +151,3 @@ def _err(msg, color="red"): self.setToolTip(pkg.description) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/PackageLoadingWidget.py b/src/rezgui/widgets/PackageLoadingWidget.py index 3ee138c98..5e4f06320 100644 --- a/src/rezgui/widgets/PackageLoadingWidget.py +++ b/src/rezgui/widgets/PackageLoadingWidget.py @@ -121,17 +121,3 @@ def _packagesLoaded(self, id_, packages): self.loading_widget.hide() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/PackageSelectWidget.py b/src/rezgui/widgets/PackageSelectWidget.py index 98ff02896..0d331e5d5 100644 --- a/src/rezgui/widgets/PackageSelectWidget.py +++ b/src/rezgui/widgets/PackageSelectWidget.py @@ -74,17 +74,3 @@ def _browse_package(self, button): self.setFocus() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/PackageTabWidget.py b/src/rezgui/widgets/PackageTabWidget.py index d919926ec..11d9c0dde 100644 --- a/src/rezgui/widgets/PackageTabWidget.py +++ b/src/rezgui/widgets/PackageTabWidget.py @@ -129,17 +129,3 @@ def _tabChanged(self, index): widget.set_variant(self.variant) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/PackageVersionsTable.py b/src/rezgui/widgets/PackageVersionsTable.py index 31fcf158e..1f3a95e07 100644 --- a/src/rezgui/widgets/PackageVersionsTable.py +++ b/src/rezgui/widgets/PackageVersionsTable.py @@ -131,17 +131,3 @@ def _contextChanged(self, flags=0): self.refresh() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/SearchableTextEdit.py b/src/rezgui/widgets/SearchableTextEdit.py index 8f7ed2fa3..488ad5abc 100644 --- a/src/rezgui/widgets/SearchableTextEdit.py +++ b/src/rezgui/widgets/SearchableTextEdit.py @@ -35,17 +35,3 @@ def _find_text(self, word): self.find(word) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/StreamableTextEdit.py b/src/rezgui/widgets/StreamableTextEdit.py index 8bf44fd76..099847d1f 100644 --- a/src/rezgui/widgets/StreamableTextEdit.py +++ b/src/rezgui/widgets/StreamableTextEdit.py @@ -52,17 +52,3 @@ def _write(self, txt): self.moveCursor(QtGui.QTextCursor.End) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/TimeSelecterPopup.py b/src/rezgui/widgets/TimeSelecterPopup.py index 645bc6761..e39ec076e 100644 --- a/src/rezgui/widgets/TimeSelecterPopup.py +++ b/src/rezgui/widgets/TimeSelecterPopup.py @@ -128,17 +128,3 @@ def _secondsClicked(self, seconds): self.close() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/TimestampWidget.py b/src/rezgui/widgets/TimestampWidget.py index ee8d1ad41..d76bf55a7 100644 --- a/src/rezgui/widgets/TimestampWidget.py +++ b/src/rezgui/widgets/TimestampWidget.py @@ -77,17 +77,3 @@ def _secondsClicked(self, seconds): self.set_time(now - seconds) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ToolWidget.py b/src/rezgui/widgets/ToolWidget.py index d708b78df..fc828b250 100644 --- a/src/rezgui/widgets/ToolWidget.py +++ b/src/rezgui/widgets/ToolWidget.py @@ -110,17 +110,3 @@ def set_instance_count(self, nprocs): self.instances_label.setText(txt) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantCellWidget.py b/src/rezgui/widgets/VariantCellWidget.py index 2d4cdb556..bf40bb480 100644 --- a/src/rezgui/widgets/VariantCellWidget.py +++ b/src/rezgui/widgets/VariantCellWidget.py @@ -314,17 +314,3 @@ def _set_lock_icon(self, name, tooltip): self.lock_icon = (widget, name, tooltip) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantDetailsWidget.py b/src/rezgui/widgets/VariantDetailsWidget.py index b9ca17f3c..35db1f924 100644 --- a/src/rezgui/widgets/VariantDetailsWidget.py +++ b/src/rezgui/widgets/VariantDetailsWidget.py @@ -46,17 +46,3 @@ def _contextChanged(self, flags=0): self._update_graph_btn_visibility() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantHelpWidget.py b/src/rezgui/widgets/VariantHelpWidget.py index db83e6a2e..8de6531f0 100644 --- a/src/rezgui/widgets/VariantHelpWidget.py +++ b/src/rezgui/widgets/VariantHelpWidget.py @@ -137,17 +137,3 @@ def _load_packages_callback(cls, package): return (not package.help) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantSummaryWidget.py b/src/rezgui/widgets/VariantSummaryWidget.py index b489c2cef..805bb2983 100644 --- a/src/rezgui/widgets/VariantSummaryWidget.py +++ b/src/rezgui/widgets/VariantSummaryWidget.py @@ -100,17 +100,3 @@ def set_variant(self, variant): self.variant = variant -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantToolsList.py b/src/rezgui/widgets/VariantToolsList.py index 397428c9a..444436933 100644 --- a/src/rezgui/widgets/VariantToolsList.py +++ b/src/rezgui/widgets/VariantToolsList.py @@ -67,17 +67,3 @@ def _instanceCountChanged(self, context_id, tool_name, num_procs): widget.set_instance_count(num_procs) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantVersionsTable.py b/src/rezgui/widgets/VariantVersionsTable.py index 2bb988b6e..b4ca2e607 100644 --- a/src/rezgui/widgets/VariantVersionsTable.py +++ b/src/rezgui/widgets/VariantVersionsTable.py @@ -164,17 +164,3 @@ def _item(): self.variant = variant -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantVersionsWidget.py b/src/rezgui/widgets/VariantVersionsWidget.py index 6a6219679..89d756463 100644 --- a/src/rezgui/widgets/VariantVersionsWidget.py +++ b/src/rezgui/widgets/VariantVersionsWidget.py @@ -174,17 +174,3 @@ def _close_window(self): self.closeWindow.emit() -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/VariantsList.py b/src/rezgui/widgets/VariantsList.py index 95ec79a5e..46ecdbff1 100644 --- a/src/rezgui/widgets/VariantsList.py +++ b/src/rezgui/widgets/VariantsList.py @@ -55,17 +55,3 @@ def selectionCommand(self, index, event=None): else QtGui.QItemSelectionModel.NoUpdate -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/ViewGraphButton.py b/src/rezgui/widgets/ViewGraphButton.py index 630ac50d0..50e21779d 100644 --- a/src/rezgui/widgets/ViewGraphButton.py +++ b/src/rezgui/widgets/ViewGraphButton.py @@ -58,17 +58,3 @@ def _view_dependency_graph(self): view_graph(graph_str, self.window(), prune_to=self.package_name) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/widgets/__init__.py b/src/rezgui/widgets/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/widgets/__init__.py +++ b/src/rezgui/widgets/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/windows/BrowsePackageSubWindow.py b/src/rezgui/windows/BrowsePackageSubWindow.py index 2f90fc684..097d6035a 100644 --- a/src/rezgui/windows/BrowsePackageSubWindow.py +++ b/src/rezgui/windows/BrowsePackageSubWindow.py @@ -20,17 +20,3 @@ def closeEvent(self, event): StoreSizeMixin.closeEvent(self, event) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/windows/ContextSubWindow.py b/src/rezgui/windows/ContextSubWindow.py index 999c78723..1d1d79707 100644 --- a/src/rezgui/windows/ContextSubWindow.py +++ b/src/rezgui/windows/ContextSubWindow.py @@ -146,17 +146,3 @@ def _update_window_title(self): self.setWindowTitle(title) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/windows/MainWindow.py b/src/rezgui/windows/MainWindow.py index f437ce645..d1dac450a 100644 --- a/src/rezgui/windows/MainWindow.py +++ b/src/rezgui/windows/MainWindow.py @@ -159,17 +159,3 @@ def _update_edit_menu(self): self.copy_resolve_action.setEnabled(copy_resolve) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezgui/windows/__init__.py b/src/rezgui/windows/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezgui/windows/__init__.py +++ b/src/rezgui/windows/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/__init__.py b/src/rezplugins/__init__.py index f49e68d05..139597f9c 100644 --- a/src/rezplugins/__init__.py +++ b/src/rezplugins/__init__.py @@ -1,16 +1,2 @@ -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_process/__init__.py b/src/rezplugins/build_process/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/build_process/__init__.py +++ b/src/rezplugins/build_process/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_process/local.py b/src/rezplugins/build_process/local.py index 34e4d7d4b..51919a2e3 100644 --- a/src/rezplugins/build_process/local.py +++ b/src/rezplugins/build_process/local.py @@ -264,17 +264,3 @@ def register_plugin(): return LocalBuildProcess -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_process/remote.py b/src/rezplugins/build_process/remote.py index 7da40c190..70ea87856 100644 --- a/src/rezplugins/build_process/remote.py +++ b/src/rezplugins/build_process/remote.py @@ -25,17 +25,3 @@ def register_plugin(): return RemoteBuildProcess -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/__init__.py b/src/rezplugins/build_system/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/build_system/__init__.py +++ b/src/rezplugins/build_system/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/bez.py b/src/rezplugins/build_system/bez.py index c82f93cf3..e496dabbb 100644 --- a/src/rezplugins/build_system/bez.py +++ b/src/rezplugins/build_system/bez.py @@ -136,17 +136,3 @@ def register_plugin(): return BezBuildSystem -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/cmake.py b/src/rezplugins/build_system/cmake.py index 1f3e09e15..500bb7551 100644 --- a/src/rezplugins/build_system/cmake.py +++ b/src/rezplugins/build_system/cmake.py @@ -9,7 +9,7 @@ from rez.packages_ import get_developer_package from rez.utils.platform_ import platform_ from rez.config import config -from rez.backport.shutilwhich import which +from rez._vendor.shutilwhich import which from rez.vendor.schema.schema import Or from rez.shells import create_shell import functools @@ -263,17 +263,3 @@ def register_plugin(): return CMakeBuildSystem -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/make.py b/src/rezplugins/build_system/make.py index 4098c35fa..8c2dc0bed 100644 --- a/src/rezplugins/build_system/make.py +++ b/src/rezplugins/build_system/make.py @@ -24,17 +24,3 @@ def register_plugin(): return MakeBuildSystem -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/python.py b/src/rezplugins/build_system/python.py index fe1a6a4f7..4e9cf643d 100644 --- a/src/rezplugins/build_system/python.py +++ b/src/rezplugins/build_system/python.py @@ -309,17 +309,3 @@ def register_plugin(): # Copyright 2018 Brendan Abel -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/build_system/rezconfig.py b/src/rezplugins/build_system/rezconfig.py index bcfb8d756..474c34155 100644 --- a/src/rezplugins/build_system/rezconfig.py +++ b/src/rezplugins/build_system/rezconfig.py @@ -33,17 +33,3 @@ cmake["build_system"] = "nmake" -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/package_repository/__init__.py b/src/rezplugins/package_repository/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/package_repository/__init__.py +++ b/src/rezplugins/package_repository/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/package_repository/filesystem.py b/src/rezplugins/package_repository/filesystem.py index 52c41c19f..101d3e20f 100644 --- a/src/rezplugins/package_repository/filesystem.py +++ b/src/rezplugins/package_repository/filesystem.py @@ -22,7 +22,7 @@ from rez.utils.filesystem import make_path_writable from rez.serialise import load_from_file, FileFormat from rez.config import config -from rez.backport.lru_cache import lru_cache +from rez._vendor.lru_cache import lru_cache from rez.vendor.schema.schema import Schema, Optional, And, Use, Or from rez.vendor.version.version import Version, VersionRange @@ -1111,17 +1111,3 @@ def register_plugin(): return FileSystemPackageRepository -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/package_repository/memory.py b/src/rezplugins/package_repository/memory.py index 27cb6eb00..5e830c967 100644 --- a/src/rezplugins/package_repository/memory.py +++ b/src/rezplugins/package_repository/memory.py @@ -197,17 +197,3 @@ def register_plugin(): return MemoryPackageRepository -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_hook/__init__.py b/src/rezplugins/release_hook/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/release_hook/__init__.py +++ b/src/rezplugins/release_hook/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_hook/amqp.py b/src/rezplugins/release_hook/amqp.py index ce1f9e408..618ffd46d 100644 --- a/src/rezplugins/release_hook/amqp.py +++ b/src/rezplugins/release_hook/amqp.py @@ -96,17 +96,3 @@ def register_plugin(): return AmqpReleaseHook -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_hook/command.py b/src/rezplugins/release_hook/command.py index d8f8ceb04..21c1c7b8f 100644 --- a/src/rezplugins/release_hook/command.py +++ b/src/rezplugins/release_hook/command.py @@ -199,17 +199,3 @@ def register_plugin(): return CommandReleaseHook -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_hook/emailer.py b/src/rezplugins/release_hook/emailer.py index c939c0826..b88dcdaae 100644 --- a/src/rezplugins/release_hook/emailer.py +++ b/src/rezplugins/release_hook/emailer.py @@ -152,17 +152,3 @@ def register_plugin(): return EmailReleaseHook -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_vcs/__init__.py b/src/rezplugins/release_vcs/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/release_vcs/__init__.py +++ b/src/rezplugins/release_vcs/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_vcs/git.py b/src/rezplugins/release_vcs/git.py index fa3b14ce9..51dd36375 100644 --- a/src/rezplugins/release_vcs/git.py +++ b/src/rezplugins/release_vcs/git.py @@ -236,17 +236,3 @@ def register_plugin(): return GitReleaseVCS -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_vcs/hg.py b/src/rezplugins/release_vcs/hg.py index 83788b282..371c002a3 100644 --- a/src/rezplugins/release_vcs/hg.py +++ b/src/rezplugins/release_vcs/hg.py @@ -273,17 +273,3 @@ def register_plugin(): return HgReleaseVCS -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_vcs/stub.py b/src/rezplugins/release_vcs/stub.py index 0577de470..0b566e8bf 100644 --- a/src/rezplugins/release_vcs/stub.py +++ b/src/rezplugins/release_vcs/stub.py @@ -76,17 +76,3 @@ def register_plugin(): return StubReleaseVCS -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/release_vcs/svn.py b/src/rezplugins/release_vcs/svn.py index 84bcdc9e6..9f4c94932 100644 --- a/src/rezplugins/release_vcs/svn.py +++ b/src/rezplugins/release_vcs/svn.py @@ -134,17 +134,3 @@ def register_plugin(): return SvnReleaseVCS -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/__init__.py b/src/rezplugins/shell/__init__.py index 6dab8423a..d69e08e5a 100644 --- a/src/rezplugins/shell/__init__.py +++ b/src/rezplugins/shell/__init__.py @@ -2,17 +2,3 @@ __path__ = extend_path(__path__, __name__) -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/bash.py b/src/rezplugins/shell/bash.py index 993baedfe..e09df5c89 100644 --- a/src/rezplugins/shell/bash.py +++ b/src/rezplugins/shell/bash.py @@ -93,17 +93,3 @@ def register_plugin(): return Bash -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/cmd.py b/src/rezplugins/shell/cmd.py index de17622a0..5be296b86 100644 --- a/src/rezplugins/shell/cmd.py +++ b/src/rezplugins/shell/cmd.py @@ -316,17 +316,3 @@ def register_plugin(): return CMD -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/csh.py b/src/rezplugins/shell/csh.py index 5bb5ba302..f6dc6d99b 100644 --- a/src/rezplugins/shell/csh.py +++ b/src/rezplugins/shell/csh.py @@ -155,17 +155,3 @@ def register_plugin(): return CSH -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/sh.py b/src/rezplugins/shell/sh.py index dbbf0488d..06e50561e 100644 --- a/src/rezplugins/shell/sh.py +++ b/src/rezplugins/shell/sh.py @@ -148,17 +148,3 @@ def register_plugin(): return SH -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see . diff --git a/src/rezplugins/shell/tcsh.py b/src/rezplugins/shell/tcsh.py index 13e82a49b..a6da4a993 100644 --- a/src/rezplugins/shell/tcsh.py +++ b/src/rezplugins/shell/tcsh.py @@ -52,17 +52,3 @@ def register_plugin(): return TCSH -# Copyright 2013-2016 Allan Johns. -# -# This library is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation, either -# version 3 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library. If not, see .