def read_requirement_files(files): pip_requirements = [] session = pip_download.PipSession() for filename in files: if sh.isfile(filename): cache_key = "f:%s:%s" % (sh.abspth(filename), sh.getsize(filename)) with REQUIREMENT_FILE_CACHE_LOCK: try: reqs = REQUIREMENT_FILE_CACHE[cache_key] except KeyError: reqs = tuple( pip_req.parse_requirements(filename, session=session)) REQUIREMENT_FILE_CACHE[cache_key] = reqs pip_requirements.extend(reqs) return (pip_requirements, [req.req for req in pip_requirements])
def read_requirement_files(files): pip_requirements = [] session = pip_download.PipSession() for filename in files: if sh.isfile(filename): cache_key = "f:%s:%s" % (sh.abspth(filename), sh.getsize(filename)) with REQUIREMENT_FILE_CACHE_LOCK: try: reqs = REQUIREMENT_FILE_CACHE[cache_key] except KeyError: reqs = tuple(pip_req.parse_requirements(filename, session=session)) REQUIREMENT_FILE_CACHE[cache_key] = reqs pip_requirements.extend(reqs) return (pip_requirements, [req.req for req in pip_requirements])
def get_archive_details(filename): if not sh.isfile(filename): raise IOError("Can not detail non-existent file %s" % (filename)) # Check if we already got the details of this file previously cache_key = "f:%s:%s" % (sh.basename(filename), sh.getsize(filename)) if cache_key in EGGS_DETAILED: return EGGS_DETAILED[cache_key] # Get pip to get us the egg-info. with utils.tempdir() as td: filename = sh.copy(filename, sh.joinpths(td, sh.basename(filename))) extract_to = sh.mkdir(sh.joinpths(td, 'build')) pip_util.unpack_file(filename, extract_to, content_type='', link='') details = get_directory_details(extract_to) EGGS_DETAILED[cache_key] = details return details