Index: tools/telemetry/third_party/modulegraph/modulegraph/zipio.py |
diff --git a/tools/telemetry/third_party/modulegraph/modulegraph/zipio.py b/tools/telemetry/third_party/modulegraph/modulegraph/zipio.py |
deleted file mode 100644 |
index 34d580e4b614bbd6278df25e0f9f8020e8bc0e21..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/third_party/modulegraph/modulegraph/zipio.py |
+++ /dev/null |
@@ -1,426 +0,0 @@ |
-""" |
-A helper module that can work with paths |
-that can refer to data inside a zipfile |
- |
-XXX: Need to determine if isdir("zipfile.zip") |
-should return True or False. Currently returns |
-True, but that might do the wrong thing with |
-data-files that are zipfiles. |
-""" |
-import os as _os |
-import zipfile as _zipfile |
-import errno as _errno |
-import time as _time |
-import sys as _sys |
-import stat as _stat |
- |
-_DFLT_DIR_MODE = ( |
- _stat.S_IFDIR |
- | _stat.S_IXOTH |
- | _stat.S_IXGRP |
- | _stat.S_IXUSR |
- | _stat.S_IROTH |
- | _stat.S_IRGRP |
- | _stat.S_IRUSR) |
- |
-_DFLT_FILE_MODE = ( |
- _stat.S_IFREG |
- | _stat.S_IROTH |
- | _stat.S_IRGRP |
- | _stat.S_IRUSR) |
- |
- |
-if _sys.version_info[0] == 2: |
- from StringIO import StringIO as _BaseStringIO |
- from StringIO import StringIO as _BaseBytesIO |
- |
- class _StringIO (_BaseStringIO): |
- def __enter__(self): |
- return self |
- |
- def __exit__(self, exc_type, exc_value, traceback): |
- self.close() |
- return False |
- |
- class _BytesIO (_BaseBytesIO): |
- def __enter__(self): |
- return self |
- |
- def __exit__(self, exc_type, exc_value, traceback): |
- self.close() |
- return False |
- |
-else: |
- from io import StringIO as _StringIO |
- from io import BytesIO as _BytesIO |
- |
- |
- |
- |
-def _locate(path): |
- full_path = path |
- if _os.path.exists(path): |
- return path, None |
- |
- else: |
- rest = [] |
- root = _os.path.splitdrive(path) |
- while path and path != root: |
- path, bn = _os.path.split(path) |
- rest.append(bn) |
- if _os.path.exists(path): |
- break |
- |
- if path == root: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- if not _os.path.isfile(path): |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- rest.reverse() |
- return path, '/'.join(rest).strip('/') |
- |
-_open = open |
-def open(path, mode='r'): |
- if 'w' in mode or 'a' in mode: |
- raise IOError( |
- _errno.EINVAL, path, "Write access not supported") |
- elif 'r+' in mode: |
- raise IOError( |
- _errno.EINVAL, path, "Write access not supported") |
- |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- return _open(path, mode) |
- |
- else: |
- try: |
- zf = _zipfile.ZipFile(path, 'r') |
- |
- except _zipfile.error: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- try: |
- data = zf.read(rest) |
- except (_zipfile.error, KeyError): |
- zf.close() |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- zf.close() |
- |
- if mode == 'rb': |
- return _BytesIO(data) |
- |
- else: |
- if _sys.version_info[0] == 3: |
- data = data.decode('ascii') |
- |
- return _StringIO(data) |
- |
-def listdir(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest and not _os.path.isfile(path): |
- return _os.listdir(path) |
- |
- else: |
- try: |
- zf = _zipfile.ZipFile(path, 'r') |
- |
- except _zipfile.error: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- result = set() |
- seen = False |
- try: |
- for nm in zf.namelist(): |
- if rest is None: |
- seen = True |
- value = nm.split('/')[0] |
- if value: |
- result.add(value) |
- |
- elif nm.startswith(rest): |
- if nm == rest: |
- seen = True |
- value = '' |
- pass |
- elif nm[len(rest)] == '/': |
- seen = True |
- value = nm[len(rest)+1:].split('/')[0] |
- else: |
- value = None |
- |
- if value: |
- result.add(value) |
- except _zipfile.error: |
- zf.close() |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- zf.close() |
- |
- if not seen: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- return list(result) |
- |
-def isfile(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- ok = _os.path.isfile(path) |
- if ok: |
- try: |
- zf = _zipfile.ZipFile(path, 'r') |
- return False |
- except (_zipfile.error, IOError): |
- return True |
- return False |
- |
- zf = None |
- try: |
- zf = _zipfile.ZipFile(path, 'r') |
- info = zf.getinfo(rest) |
- zf.close() |
- return True |
- except (KeyError, _zipfile.error): |
- if zf is not None: |
- zf.close() |
- |
- # Check if this is a directory |
- try: |
- info = zf.getinfo(rest + '/') |
- except KeyError: |
- pass |
- else: |
- return False |
- |
- rest = rest + '/' |
- for nm in zf.namelist(): |
- if nm.startswith(rest): |
- # Directory |
- return False |
- |
- # No trace in zipfile |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- |
- |
- |
-def isdir(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- ok = _os.path.isdir(path) |
- if not ok: |
- try: |
- zf = _zipfile.ZipFile(path, 'r') |
- except (_zipfile.error, IOError): |
- return False |
- return True |
- return True |
- |
- zf = None |
- try: |
- try: |
- zf = _zipfile.ZipFile(path) |
- except _zipfile.error: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- else: |
- # File found |
- return False |
- |
- rest = rest + '/' |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- else: |
- # Directory entry found |
- return True |
- |
- for nm in zf.namelist(): |
- if nm.startswith(rest): |
- return True |
- |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- finally: |
- if zf is not None: |
- zf.close() |
- |
- |
-def islink(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- return _os.path.islink(path) |
- |
- try: |
- zf = _zipfile.ZipFile(path) |
- except _zipfile.error: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- try: |
- |
- |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- else: |
- # File |
- return False |
- |
- rest += '/' |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- else: |
- # Directory |
- return False |
- |
- for nm in zf.namelist(): |
- if nm.startswith(rest): |
- # Directory without listing |
- return False |
- |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- finally: |
- zf.close() |
- |
- |
-def readlink(path): |
- full_path = path |
- path, rest = _locate(path) |
- if rest: |
- # No symlinks inside zipfiles |
- raise OSError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- return _os.readlink(path) |
- |
-def getmode(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- return _os.stat(path).st_mode |
- |
- zf = None |
- try: |
- zf = _zipfile.ZipFile(path) |
- info = None |
- |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- |
- if info is None: |
- try: |
- info = zf.getinfo(rest + '/') |
- except KeyError: |
- pass |
- |
- if info is None: |
- rest = rest + '/' |
- for nm in zf.namelist(): |
- if nm.startswith(rest): |
- break |
- else: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- # Directory exists, but has no entry of its own. |
- return _DFLT_DIR_MODE |
- |
- # The mode is stored without file-type in external_attr. |
- if (info.external_attr >> 16) != 0: |
- return _stat.S_IFREG | (info.external_attr >> 16) |
- else: |
- return _DFLT_FILE_MODE |
- |
- |
- except KeyError: |
- if zf is not None: |
- zf.close() |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
-def getmtime(path): |
- full_path = path |
- path, rest = _locate(path) |
- if not rest: |
- return _os.path.getmtime(path) |
- |
- zf = None |
- try: |
- zf = _zipfile.ZipFile(path) |
- info = None |
- |
- try: |
- info = zf.getinfo(rest) |
- except KeyError: |
- pass |
- |
- if info is None: |
- try: |
- info = zf.getinfo(rest + '/') |
- except KeyError: |
- pass |
- |
- if info is None: |
- rest = rest + '/' |
- for nm in zf.namelist(): |
- if nm.startswith(rest): |
- break |
- else: |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |
- |
- # Directory exists, but has no entry of its |
- # own, fake mtime by using the timestamp of |
- # the zipfile itself. |
- return _os.path.getmtime(path) |
- |
- return _time.mktime(info.date_time + (0, 0, -1)) |
- |
- except KeyError: |
- if zf is not None: |
- zf.close() |
- raise IOError( |
- _errno.ENOENT, full_path, |
- "No such file or directory") |