class Archive(object): def __init__(self, fobj, e, name, reqset): self.name = name if e == '.zip': self.arch = ZipFile(fobj) else: ## A package should not be a tar file but we don't know if e is None or e.endswith('.tar'): m = 'r' else: m = 'r:{0}'.format(e.split('.')[2]) self.arch = tarfile.open(fileobj=fobj, mode=m) self.reqset = reqset def install(self): ''' Install an archive. First it unpack the archive somewhere and then runs :file:`setup.py` ''' with TempDir() as tempdir: self.arch.extractall(tempdir) self.arch.close() ## This is for archives which have top-level setup.py files setup_py = os.path.join(tempdir, 'setup.py') if not os.path.exists(setup_py): setup_py = glob.glob(os.sep.join([tempdir, '*', 'setup.py']))[0] Dir(os.path.dirname(setup_py), self.name, tempdir, self.reqset).install()
def __init__(self, fobj, e, name, reqset): self.name = name if e == '.zip': self.arch = ZipFile(fobj) else: ## A package should not be a tar file but we don't know if e is None or e.endswith('.tar'): m = 'r' else: m = 'r:{0}'.format(e.split('.')[2]) self.arch = tarfile.open(fileobj=fobj, mode=m) self.reqset = reqset