Index: tools/telemetry/third_party/coverage/setup.py |
diff --git a/third_party/pycoverage/setup.py b/tools/telemetry/third_party/coverage/setup.py |
similarity index 52% |
copy from third_party/pycoverage/setup.py |
copy to tools/telemetry/third_party/coverage/setup.py |
index f0e83e677a39b59707c9221a61dafbbf03127ccf..010b5b7345a7fa8985c118ef2b9e6be7f832a739 100644 |
--- a/third_party/pycoverage/setup.py |
+++ b/tools/telemetry/third_party/coverage/setup.py |
@@ -1,114 +1,99 @@ |
-# setup.py for coverage.py |
+# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 |
+# For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt |
-"""Code coverage measurement for Python |
+"""Code coverage measurement for Python""" |
-Coverage.py measures code coverage, typically during test execution. It uses |
-the code analysis tools and tracing hooks provided in the Python standard |
-library to determine which lines are executable, and which have been executed. |
- |
-Coverage.py runs on Pythons 2.3 through 3.3, and PyPy 1.9. |
- |
-Documentation is at `nedbatchelder.com <%s>`_. Code repository and issue |
-tracker are on `Bitbucket <http://bitbucket.org/ned/coveragepy>`_, with a |
-mirrored repo on `Github <https://github.com/nedbat/coveragepy>`_. |
- |
-New in 3.7: ``--debug``, and 12 bugs closed. |
- |
-New in 3.6: ``--fail-under``, and >20 bugs closed. |
- |
-New in 3.5: Branch coverage exclusions, keyboard shortcuts in HTML report. |
- |
-New in 3.4: Better control over source to measure, and unexecuted files |
-can be reported. |
+# Distutils setup for coverage.py |
+# This file is used unchanged under all versions of Python, 2.x and 3.x. |
-New in 3.3: .coveragerc files. |
+import os |
+import sys |
-New in 3.2: Branch coverage! |
-""" |
+from setuptools import setup |
+from distutils.core import Extension # pylint: disable=no-name-in-module, import-error |
+from distutils.command.build_ext import build_ext # pylint: disable=no-name-in-module, import-error |
+from distutils import errors # pylint: disable=no-name-in-module |
-# This file is used unchanged under all versions of Python, 2.x and 3.x. |
+# Get or massage our metadata. We exec coverage/version.py so we can avoid |
+# importing the product code into setup.py. |
classifiers = """\ |
Environment :: Console |
Intended Audience :: Developers |
-License :: OSI Approved :: BSD License |
+License :: OSI Approved :: Apache Software License |
Operating System :: OS Independent |
-Programming Language :: Python :: 2 |
-Programming Language :: Python :: 3 |
+Programming Language :: Python :: 2.6 |
+Programming Language :: Python :: 2.7 |
+Programming Language :: Python :: 3.3 |
+Programming Language :: Python :: 3.4 |
+Programming Language :: Python :: 3.5 |
+Programming Language :: Python :: Implementation :: CPython |
+Programming Language :: Python :: Implementation :: PyPy |
Topic :: Software Development :: Quality Assurance |
Topic :: Software Development :: Testing |
""" |
-# Pull in the tools we need. |
-import os, sys |
- |
-from setuptools import setup |
-from distutils.core import Extension # pylint: disable=E0611,F0401 |
-from distutils.command.build_ext import build_ext # pylint: disable=E0611,F0401,C0301 |
-from distutils import errors # pylint: disable=E0611,F0401 |
- |
-# Get or massage our metadata. We exec coverage/version.py so we can avoid |
-# importing the product code into setup.py. |
- |
-doc = __doc__ # __doc__ will be overwritten by version.py. |
-__version__ = __url__ = "" # Keep pylint happy. |
- |
cov_ver_py = os.path.join(os.path.split(__file__)[0], "coverage/version.py") |
-version_file = open(cov_ver_py) |
-try: |
+with open(cov_ver_py) as version_file: |
+ # __doc__ will be overwritten by version.py. |
+ doc = __doc__ |
+ # Keep pylint happy. |
+ __version__ = __url__ = version_info = "" |
+ # Execute the code in version.py. |
exec(compile(version_file.read(), cov_ver_py, 'exec')) |
-finally: |
- version_file.close() |
-doclines = (doc % __url__).splitlines() |
+with open("README.rst") as readme: |
+ long_description = readme.read().replace("http://coverage.readthedocs.org", __url__) |
+ |
classifier_list = classifiers.splitlines() |
-if 'a' in __version__: |
+if version_info[3] == 'alpha': |
devstat = "3 - Alpha" |
-elif 'b' in __version__: |
+elif version_info[3] in ['beta', 'candidate']: |
devstat = "4 - Beta" |
else: |
+ assert version_info[3] == 'final' |
devstat = "5 - Production/Stable" |
classifier_list.append("Development Status :: " + devstat) |
-# Install a script as "coverage", and as "coverage[23]", and as |
-# "coverage-2.7" (or whatever). |
-scripts = [ |
- 'coverage = coverage:main', |
- 'coverage%d = coverage:main' % sys.version_info[:1], |
- 'coverage-%d.%d = coverage:main' % sys.version_info[:2], |
- ] |
- |
# Create the keyword arguments for setup() |
setup_args = dict( |
- name = 'coverage', |
- version = __version__, |
+ name='coverage', |
+ version=__version__, |
- packages = [ |
+ packages=[ |
'coverage', |
- ], |
+ ], |
- package_data = { |
+ package_data={ |
'coverage': [ |
'htmlfiles/*.*', |
- ] |
- }, |
- |
- entry_points = {'console_scripts': scripts}, |
- |
- # We need to get HTML assets from our htmlfiles dir. |
- zip_safe = False, |
- |
- author = 'Ned Batchelder and others', |
- author_email = 'ned@nedbatchelder.com', |
- description = doclines[0], |
- long_description = '\n'.join(doclines[2:]), |
- keywords = 'code coverage testing', |
- license = 'BSD', |
- classifiers = classifier_list, |
- url = __url__, |
- ) |
+ ] |
+ }, |
+ |
+ entry_points={ |
+ # Install a script as "coverage", and as "coverage[23]", and as |
+ # "coverage-2.7" (or whatever). |
+ 'console_scripts': [ |
+ 'coverage = coverage.cmdline:main', |
+ 'coverage%d = coverage.cmdline:main' % sys.version_info[:1], |
+ 'coverage-%d.%d = coverage.cmdline:main' % sys.version_info[:2], |
+ ], |
+ }, |
+ |
+ # We need to get HTML assets from our htmlfiles directory. |
+ zip_safe=False, |
+ |
+ author='Ned Batchelder and others', |
+ author_email='ned@nedbatchelder.com', |
+ description=doc, |
+ long_description=long_description, |
+ keywords='code coverage testing', |
+ license='Apache 2.0', |
+ classifiers=classifier_list, |
+ url=__url__, |
+) |
# A replacement for the build_ext command which raises a single exception |
# if the build fails, so we can fallback nicely. |
@@ -118,16 +103,18 @@ ext_errors = ( |
errors.DistutilsExecError, |
errors.DistutilsPlatformError, |
) |
-if sys.platform == 'win32' and sys.version_info > (2, 6): |
- # 2.6's distutils.msvc9compiler can raise an IOError when failing to |
+if sys.platform == 'win32': |
+ # distutils.msvc9compiler can raise an IOError when failing to |
# find the compiler |
ext_errors += (IOError,) |
+ |
class BuildFailed(Exception): |
"""Raise this to indicate the C extension wouldn't build.""" |
def __init__(self): |
Exception.__init__(self) |
- self.cause = sys.exc_info()[1] # work around py 2/3 different syntax |
+ self.cause = sys.exc_info()[1] # work around py 2/3 different syntax |
+ |
class ve_build_ext(build_ext): |
"""Build C extensions, but fail with a straightforward exception.""" |
@@ -142,14 +129,14 @@ class ve_build_ext(build_ext): |
def build_extension(self, ext): |
"""Wrap `build_extension` with `BuildFailed`.""" |
try: |
- # Uncomment to test compile failures: |
+ # Uncomment to test compile failure handling: |
# raise errors.CCompilerError("OOPS") |
build_ext.build_extension(self, ext) |
except ext_errors: |
raise BuildFailed() |
- except ValueError: |
+ except ValueError as err: |
# this can happen on Windows 64 bit, see Python issue 7511 |
- if "'path'" in str(sys.exc_info()[1]): # works with both py 2/3 |
+ if "'path'" in str(err): # works with both py 2/3 |
raise BuildFailed() |
raise |
@@ -168,20 +155,29 @@ if '__pypy__' in sys.builtin_module_names: |
if compile_extension: |
setup_args.update(dict( |
- ext_modules = [ |
- Extension("coverage.tracer", sources=["coverage/tracer.c"]) |
- ], |
- cmdclass = { |
+ ext_modules=[ |
+ Extension( |
+ "coverage.tracer", |
+ sources=[ |
+ "coverage/ctracer/datastack.c", |
+ "coverage/ctracer/filedisp.c", |
+ "coverage/ctracer/module.c", |
+ "coverage/ctracer/tracer.c", |
+ ], |
+ ), |
+ ], |
+ cmdclass={ |
'build_ext': ve_build_ext, |
- }, |
- )) |
+ }, |
+ )) |
# Py3.x-specific details. |
if sys.version_info >= (3, 0): |
setup_args.update(dict( |
- use_2to3 = False, |
- )) |
+ use_2to3=False, |
+ )) |
+ |
def main(): |
"""Actually invoke setup() with the arguments we built above.""" |
@@ -189,9 +185,8 @@ def main(): |
# extension. Try it with, and if it fails, try it without. |
try: |
setup(**setup_args) |
- except BuildFailed: |
+ except BuildFailed as exc: |
msg = "Couldn't install with extension module, trying without it..." |
- exc = sys.exc_info()[1] |
exc_msg = "%s: %s" % (exc.__class__.__name__, exc.cause) |
print("**\n** %s\n** %s\n**" % (msg, exc_msg)) |