Thu, 10 Apr 2014 23:02:20 +0200
updated coverage to 3.7.1
(grafted from fac17a82b4314c14a5eea4fdc158059fa0540566)
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | """Code coverage measurement for Python. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | Ned Batchelder |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | http://nedbatchelder.com/code/coverage |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
8 | from .version import __version__, __url__ |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
9 | |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
10 | from .control import coverage, process_startup |
32
01f04fbc1842
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
31
diff
changeset
|
11 | from .data import CoverageData |
01f04fbc1842
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
31
diff
changeset
|
12 | from .cmdline import main, CoverageScript |
01f04fbc1842
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
31
diff
changeset
|
13 | from .misc import CoverageException |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | # Module-level functions. The original API to this module was based on |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | # functions defined directly in the module, with a singleton of the coverage() |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
17 | # class. That design hampered programmability, so the current api uses |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
18 | # explicitly-created coverage objects. But for backward compatibility, here we |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
19 | # define the top-level functions to create the singleton when they are first |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
20 | # called. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | # Singleton object for use with module-level functions. The singleton is |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | # created as needed when one of the module-level functions is called. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | _the_coverage = None |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | def _singleton_method(name): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """Return a function to the `name` method on a singleton `coverage` object. |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
28 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | The singleton object is created the first time one of these functions is |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | called. |
31
744cd0b4b8cd
Updated coverage.py to version 3.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
0
diff
changeset
|
31 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
33 | # Disable pylint msg W0612, because a bunch of variables look unused, but |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
34 | # they're accessed via locals(). |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
35 | # pylint: disable=W0612 |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
36 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | def wrapper(*args, **kwargs): |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | """Singleton wrapper around a coverage method.""" |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | global _the_coverage |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | if not _the_coverage: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | _the_coverage = coverage(auto_data=True) |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | return getattr(_the_coverage, name)(*args, **kwargs) |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
43 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
44 | import inspect |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
45 | meth = getattr(coverage, name) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
46 | args, varargs, kw, defaults = inspect.getargspec(meth) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
47 | argspec = inspect.formatargspec(args[1:], varargs, kw, defaults) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
48 | docstring = meth.__doc__ |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
49 | wrapper.__doc__ = ("""\ |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
50 | A first-use-singleton wrapper around coverage.%(name)s. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
51 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
52 | This wrapper is provided for backward compatibility with legacy code. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
53 | New code should use coverage.%(name)s directly. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
54 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
55 | %(name)s%(argspec)s: |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
56 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
57 | %(docstring)s |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
58 | """ % locals() |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
59 | ) |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
60 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | return wrapper |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | # Define the module-level functions. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | use_cache = _singleton_method('use_cache') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | start = _singleton_method('start') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | stop = _singleton_method('stop') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | erase = _singleton_method('erase') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | exclude = _singleton_method('exclude') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | analysis = _singleton_method('analysis') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | analysis2 = _singleton_method('analysis2') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | report = _singleton_method('report') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | annotate = _singleton_method('annotate') |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
76 | # On Windows, we encode and decode deep enough that something goes wrong and |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
77 | # the encodings.utf_8 module is loaded and then unloaded, I don't know why. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
78 | # Adding a reference here prevents it from being unloaded. Yuk. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
79 | import encodings.utf_8 |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
80 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
81 | # Because of the "from .control import fooey" lines at the top of the |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
82 | # file, there's an entry for coverage.coverage in sys.modules, mapped to None. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
83 | # This makes some inspection tools (like pydoc) unable to find the class |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
84 | # coverage.coverage. So remove that entry. |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
85 | import sys |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
86 | try: |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
87 | del sys.modules['coverage.coverage'] |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
88 | except KeyError: |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
89 | pass |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
90 | |
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
91 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | # COPYRIGHT AND LICENSE |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | # Copyright 2001 Gareth Rees. All rights reserved. |
3497
7f51ab29a1a2
updated coverage to 3.7.1
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
790
diff
changeset
|
95 | # Copyright 2004-2013 Ned Batchelder. All rights reserved. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | # Redistribution and use in source and binary forms, with or without |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | # modification, are permitted provided that the following conditions are |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | # met: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | # 1. Redistributions of source code must retain the above copyright |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | # notice, this list of conditions and the following disclaimer. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | # 2. Redistributions in binary form must reproduce the above copyright |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | # notice, this list of conditions and the following disclaimer in the |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | # documentation and/or other materials provided with the |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | # distribution. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | # HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH |
790
2c0ea0163ef4
Marked the Python2 debugger client files with the new eflag: marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
32
diff
changeset
|
120 | # DAMAGE. |