|
1 ------------------------------ |
|
2 Change history for Coverage.py |
|
3 ------------------------------ |
|
4 |
|
5 |
|
6 Version 3.0.1, 7 July 2009 |
|
7 -------------------------- |
|
8 |
|
9 - Removed the recursion limit in the tracer function. Previously, code that |
|
10 ran more than 500 frames deep would crash. |
|
11 |
|
12 - Fixed a bizarre problem involving pyexpat, whereby lines following XML parser |
|
13 invocations could be overlooked. |
|
14 |
|
15 - On Python 2.3, coverage.py could mis-measure code with exceptions being |
|
16 raised. This is now fixed. |
|
17 |
|
18 - The coverage.py code itself will now not be measured by coverage.py, and no |
|
19 coverage modules will be mentioned in the nose --with-cover plugin. |
|
20 |
|
21 - When running source files, coverage.py now opens them in universal newline |
|
22 mode just like Python does. This lets it run Windows files on Mac, for |
|
23 example. |
|
24 |
|
25 |
|
26 Version 3.0, 13 June 2009 |
|
27 ------------------------- |
|
28 |
|
29 - Fixed the way the Python library was ignored. Too much code was being |
|
30 excluded the old way. |
|
31 |
|
32 - Tabs are now properly converted in HTML reports. Previously indentation was |
|
33 lost. |
|
34 |
|
35 - Nested modules now get a proper flat_rootname. Thanks, Christian Heimes. |
|
36 |
|
37 |
|
38 Version 3.0b3, 16 May 2009 |
|
39 -------------------------- |
|
40 |
|
41 - Added parameters to coverage.__init__ for options that had been set on the |
|
42 coverage object itself. |
|
43 |
|
44 - Added clear_exclude() and get_exclude_list() methods for programmatic |
|
45 manipulation of the exclude regexes. |
|
46 |
|
47 - Added coverage.load() to read previously-saved data from the data file. |
|
48 |
|
49 - Improved the finding of code files. For example, .pyc files that have been |
|
50 installed after compiling are now located correctly. Thanks, Detlev |
|
51 Offenbach. |
|
52 |
|
53 - When using the object api (that is, constructing a coverage() object), data |
|
54 is no longer saved automatically on process exit. You can re-enable it with |
|
55 the auto_data=True parameter on the coverage() constructor. The module-level |
|
56 interface still uses automatic saving. |
|
57 |
|
58 |
|
59 Version 3.0b2, 30 April 2009 |
|
60 ---------------------------- |
|
61 |
|
62 HTML reporting, and continued refactoring. |
|
63 |
|
64 - HTML reports and annotation of source files: use the new -b (browser) switch. |
|
65 Thanks to George Song for code, inspiration and guidance. |
|
66 |
|
67 - Code in the Python standard library is not measured by default. If you need |
|
68 to measure standard library code, use the -L command-line switch during |
|
69 execution, or the cover_pylib=True argument to the coverage() constructor. |
|
70 |
|
71 - Source annotation into a directory (-a -d) behaves differently. The |
|
72 annotated files are named with their hierarchy flattened so that same-named |
|
73 files from different directories no longer collide. Also, only files in the |
|
74 current tree are included. |
|
75 |
|
76 - coverage.annotate_file is no longer available. |
|
77 |
|
78 - Programs executed with -x now behave more as they should, for example, |
|
79 __file__ has the correct value. |
|
80 |
|
81 - .coverage data files have a new pickle-based format designed for better |
|
82 extensibility. |
|
83 |
|
84 - Removed the undocumented cache_file argument to coverage.usecache(). |
|
85 |
|
86 |
|
87 Version 3.0b1, 7 March 2009 |
|
88 --------------------------- |
|
89 |
|
90 Major overhaul. |
|
91 |
|
92 - Coverage is now a package rather than a module. Functionality has been split |
|
93 into classes. |
|
94 |
|
95 - The trace function is implemented in C for speed. Coverage runs are now |
|
96 much faster. Thanks to David Christian for productive micro-sprints and |
|
97 other encouragement. |
|
98 |
|
99 - Executable lines are identified by reading the line number tables in the |
|
100 compiled code, removing a great deal of complicated analysis code. |
|
101 |
|
102 - Precisely which lines are considered executable has changed in some cases. |
|
103 Therefore, your coverage stats may also change slightly. |
|
104 |
|
105 - The singleton coverage object is only created if the module-level functions |
|
106 are used. This maintains the old interface while allowing better |
|
107 programmatic use of Coverage. |
|
108 |
|
109 - The minimum supported Python version is 2.3. |
|
110 |
|
111 |
|
112 Version 2.85, 14 September 2008 |
|
113 ------------------------------- |
|
114 |
|
115 - Add support for finding source files in eggs. Don't check for |
|
116 morf's being instances of ModuleType, instead use duck typing so that |
|
117 pseudo-modules can participate. Thanks, Imri Goldberg. |
|
118 |
|
119 - Use os.realpath as part of the fixing of filenames so that symlinks won't |
|
120 confuse things. Thanks, Patrick Mezard. |
|
121 |
|
122 |
|
123 Version 2.80, 25 May 2008 |
|
124 ------------------------- |
|
125 |
|
126 - Open files in rU mode to avoid line ending craziness. Thanks, Edward Loper. |
|
127 |
|
128 |
|
129 Version 2.78, 30 September 2007 |
|
130 ------------------------------- |
|
131 |
|
132 - Don't try to predict whether a file is Python source based on the extension. |
|
133 Extensionless files are often Pythons scripts. Instead, simply parse the file |
|
134 and catch the syntax errors. Hat tip to Ben Finney. |
|
135 |
|
136 |
|
137 Version 2.77, 29 July 2007 |
|
138 -------------------------- |
|
139 |
|
140 - Better packaging. |
|
141 |
|
142 |
|
143 Version 2.76, 23 July 2007 |
|
144 -------------------------- |
|
145 |
|
146 - Now Python 2.5 is *really* fully supported: the body of the new with |
|
147 statement is counted as executable. |
|
148 |
|
149 |
|
150 Version 2.75, 22 July 2007 |
|
151 -------------------------- |
|
152 |
|
153 - Python 2.5 now fully supported. The method of dealing with multi-line |
|
154 statements is now less sensitive to the exact line that Python reports during |
|
155 execution. Pass statements are handled specially so that their disappearance |
|
156 during execution won't throw off the measurement. |
|
157 |
|
158 |
|
159 Version 2.7, 21 July 2007 |
|
160 ------------------------- |
|
161 |
|
162 - "#pragma: nocover" is excluded by default. |
|
163 |
|
164 - Properly ignore docstrings and other constant expressions that appear in the |
|
165 middle of a function, a problem reported by Tim Leslie. |
|
166 |
|
167 - coverage.erase() shouldn't clobber the exclude regex. Change how parallel |
|
168 mode is invoked, and fix erase() so that it erases the cache when called |
|
169 programmatically. |
|
170 |
|
171 - In reports, ignore code executed from strings, since we can't do anything |
|
172 useful with it anyway. |
|
173 |
|
174 - Better file handling on Linux, thanks Guillaume Chazarain. |
|
175 |
|
176 - Better shell support on Windows, thanks Noel O'Boyle. |
|
177 |
|
178 - Python 2.2 support maintained, thanks Catherine Proulx. |
|
179 |
|
180 - Minor changes to avoid lint warnings. |
|
181 |
|
182 |
|
183 Version 2.6, 23 August 2006 |
|
184 --------------------------- |
|
185 |
|
186 - Applied Joseph Tate's patch for function decorators. |
|
187 |
|
188 - Applied Sigve Tjora and Mark van der Wal's fixes for argument handling. |
|
189 |
|
190 - Applied Geoff Bache's parallel mode patch. |
|
191 |
|
192 - Refactorings to improve testability. Fixes to command-line logic for parallel |
|
193 mode and collect. |
|
194 |
|
195 |
|
196 Version 2.5, 4 December 2005 |
|
197 ---------------------------- |
|
198 |
|
199 - Call threading.settrace so that all threads are measured. Thanks Martin |
|
200 Fuzzey. |
|
201 |
|
202 - Add a file argument to report so that reports can be captured to a different |
|
203 destination. |
|
204 |
|
205 - coverage.py can now measure itself. |
|
206 |
|
207 - Adapted Greg Rogers' patch for using relative filenames, and sorting and |
|
208 omitting files to report on. |
|
209 |
|
210 |
|
211 Version 2.2, 31 December 2004 |
|
212 ----------------------------- |
|
213 |
|
214 - Allow for keyword arguments in the module global functions. Thanks, Allen. |
|
215 |
|
216 |
|
217 Version 2.1, 14 December 2004 |
|
218 ----------------------------- |
|
219 |
|
220 - Return 'analysis' to its original behavior and add 'analysis2'. Add a global |
|
221 for 'annotate', and factor it, adding 'annotate_file'. |
|
222 |
|
223 |
|
224 Version 2.0, 12 December 2004 |
|
225 ----------------------------- |
|
226 |
|
227 Significant code changes. |
|
228 |
|
229 - Finding executable statements has been rewritten so that docstrings and |
|
230 other quirks of Python execution aren't mistakenly identified as missing |
|
231 lines. |
|
232 |
|
233 - Lines can be excluded from consideration, even entire suites of lines. |
|
234 |
|
235 - The filesystem cache of covered lines can be disabled programmatically. |
|
236 |
|
237 - Modernized the code. |
|
238 |
|
239 |
|
240 Earlier History |
|
241 --------------- |
|
242 |
|
243 2001-12-04 GDR Created. |
|
244 |
|
245 2001-12-06 GDR Added command-line interface and source code annotation. |
|
246 |
|
247 2001-12-09 GDR Moved design and interface to separate documents. |
|
248 |
|
249 2001-12-10 GDR Open cache file as binary on Windows. Allow simultaneous -e and |
|
250 -x, or -a and -r. |
|
251 |
|
252 2001-12-12 GDR Added command-line help. Cache analysis so that it only needs to |
|
253 be done once when you specify -a and -r. |
|
254 |
|
255 2001-12-13 GDR Improved speed while recording. Portable between Python 1.5.2 |
|
256 and 2.1.1. |
|
257 |
|
258 2002-01-03 GDR Module-level functions work correctly. |
|
259 |
|
260 2002-01-07 GDR Update sys.path when running a file with the -x option, so that |
|
261 it matches the value the program would get if it were run on its own. |