Index: sky/tools/webkitpy/thirdparty/coverage/codeunit.py |
diff --git a/sky/tools/webkitpy/thirdparty/coverage/codeunit.py b/sky/tools/webkitpy/thirdparty/coverage/codeunit.py |
deleted file mode 100644 |
index 55f44a240acf18d30c3c6db690be0338e6a82023..0000000000000000000000000000000000000000 |
--- a/sky/tools/webkitpy/thirdparty/coverage/codeunit.py |
+++ /dev/null |
@@ -1,117 +0,0 @@ |
-"""Code unit (module) handling for Coverage.""" |
- |
-import glob, os |
- |
-from coverage.backward import open_source, string_class, StringIO |
-from coverage.misc import CoverageException |
- |
- |
-def code_unit_factory(morfs, file_locator): |
- """Construct a list of CodeUnits from polymorphic inputs. |
- |
- `morfs` is a module or a filename, or a list of same. |
- |
- `file_locator` is a FileLocator that can help resolve filenames. |
- |
- Returns a list of CodeUnit objects. |
- |
- """ |
- # Be sure we have a list. |
- if not isinstance(morfs, (list, tuple)): |
- morfs = [morfs] |
- |
- # On Windows, the shell doesn't expand wildcards. Do it here. |
- globbed = [] |
- for morf in morfs: |
- if isinstance(morf, string_class) and ('?' in morf or '*' in morf): |
- globbed.extend(glob.glob(morf)) |
- else: |
- globbed.append(morf) |
- morfs = globbed |
- |
- code_units = [CodeUnit(morf, file_locator) for morf in morfs] |
- |
- return code_units |
- |
- |
-class CodeUnit(object): |
- """Code unit: a filename or module. |
- |
- Instance attributes: |
- |
- `name` is a human-readable name for this code unit. |
- `filename` is the os path from which we can read the source. |
- `relative` is a boolean. |
- |
- """ |
- def __init__(self, morf, file_locator): |
- self.file_locator = file_locator |
- |
- if hasattr(morf, '__file__'): |
- f = morf.__file__ |
- else: |
- f = morf |
- # .pyc files should always refer to a .py instead. |
- if f.endswith('.pyc'): |
- f = f[:-1] |
- self.filename = self.file_locator.canonical_filename(f) |
- |
- if hasattr(morf, '__name__'): |
- n = modname = morf.__name__ |
- self.relative = True |
- else: |
- n = os.path.splitext(morf)[0] |
- rel = self.file_locator.relative_filename(n) |
- if os.path.isabs(n): |
- self.relative = (rel != n) |
- else: |
- self.relative = True |
- n = rel |
- modname = None |
- self.name = n |
- self.modname = modname |
- |
- def __repr__(self): |
- return "<CodeUnit name=%r filename=%r>" % (self.name, self.filename) |
- |
- # Annoying comparison operators. Py3k wants __lt__ etc, and Py2k needs all |
- # of them defined. |
- |
- def __lt__(self, other): return self.name < other.name |
- def __le__(self, other): return self.name <= other.name |
- def __eq__(self, other): return self.name == other.name |
- def __ne__(self, other): return self.name != other.name |
- def __gt__(self, other): return self.name > other.name |
- def __ge__(self, other): return self.name >= other.name |
- |
- def flat_rootname(self): |
- """A base for a flat filename to correspond to this code unit. |
- |
- Useful for writing files about the code where you want all the files in |
- the same directory, but need to differentiate same-named files from |
- different directories. |
- |
- For example, the file a/b/c.py might return 'a_b_c' |
- |
- """ |
- if self.modname: |
- return self.modname.replace('.', '_') |
- else: |
- root = os.path.splitdrive(self.name)[1] |
- return root.replace('\\', '_').replace('/', '_').replace('.', '_') |
- |
- def source_file(self): |
- """Return an open file for reading the source of the code unit.""" |
- if os.path.exists(self.filename): |
- # A regular text file: open it. |
- return open_source(self.filename) |
- |
- # Maybe it's in a zip file? |
- source = self.file_locator.get_zip_data(self.filename) |
- if source is not None: |
- return StringIO(source) |
- |
- # Couldn't find source. |
- raise CoverageException( |
- "No source for code %r." % self.filename |
- ) |