All tests using @given now fix the global random seed. This removes the
health check for that. If a non-zero seed is required for the final
falsifying example, it will be reported. Otherwise Hypothesis will
assume randomization was not a significant factor for the test and be
silent on the subject. If you use the random_module() strategy this will
continue to work and will always display the seed.
Version 4.1 --- 2016-05-21
- The internal attribute Reporter.file_reporters was removed in 4.1b3.
It should have come has no surprise that there were third-party tools
out there using that attribute. It has been restored, but with a
deprecation warning.
Version 4.1b3 --- 2016-05-10
- When running your program, execution can jump from an except X: line
to some other line when an exception other than X happens. This jump
is no longer considered a branch when measuring branch coverage.
- When measuring branch coverage, yield statements that were never
resumed were incorrectly marked as missing. This is now fixed.
- During branch coverage of single-line callables like lambdas and
generator expressions, coverage.py can now distinguish between them
never being called, or being called but not completed.
- The HTML report now has a map of the file along the rightmost edge of
the page, giving an overview of where the missed lines are. Thanks,
Dmitry Shishov.
- The HTML report now uses different monospaced fonts, favoring Consolas
over Courier. Along the way not properly handling one-space indents
was fixed. The index page also has slightly different styling, to try
to make the clickable detail pages more apparent.
- Missing branches reported with coverage report -m will now say ->exit
for missed branches to the exit of a function, rather than a negative
number.
- coverage --help and coverage --version now mention which tracer is
installed, to help diagnose problems. The docs mention which features
need the C extension.
- Officially support PyPy 5.1, which required no changes, just updates
to the docs.
- The Coverage.report function had two parameters with non-None
defaults, which have been changed. show_missing used to default to
True, but now defaults to None. If you had been calling
Coverage.report without specifying show_missing, you'll need to
explicitly set it to True to keep the same behavior. skip_covered used
to default to False. It is now None, which doesn't change the
behavior.
- It's never been possible to pass a namespace module to one of the
analysis functions, but now at least we raise a more specific error
message, rather than getting confused.
- The coverage.process_startup function now returns the Coverage
instance it creates.
- Make a small tweak to how we compare threads, to avoid buggy custom
comparison code in thread classes.
Version 4.1b2 --- 2016-01-23
- Problems with the new branch measurement in 4.1 beta 1 were fixed:
- Class docstrings were considered executable. Now they no longer are.
- yield from and await were considered returns from functions, since
they could tranfer control to the caller. This produced unhelpful
"missing branch" reports in a number of circumstances. Now they no
longer are considered returns.
- In unusual situations, a missing branch to a negative number was
reported.
- The XML report now produces correct package names for modules found in
directories specified with source=.
- coverage report won't produce trailing whitespace.
Version 4.1b1 --- 2016-01-10
- Branch analysis has been rewritten: it used to be based on bytecode,
but now uses AST analysis. This has changed a number of things:
- More code paths are now considered runnable, especially in
try/except structures. This may mean that coverage.py will identify
more code paths as uncovered. This could either raise or lower your
overall coverage number.
- Python 3.5's async and await keywords are properly supported
- Some long-standing branch coverage bugs were fixed:
- functions with only a docstring for a body would incorrectly
report a missing branch on the def line.
- code in an except block could be incorrectly marked as a missing
branch.
- context managers (with statements) in a loop or try block could
confuse the branch measurement, reporting incorrect partial
branches.
- In Python 3.5, an actual partial branch could be marked as
complete.
- Pragmas to disable coverage measurement can now be used on decorator
lines, and they will apply to the entire function or class being
decorated.
- Multiprocessing support is now available on Windows.
- Files with two encoding declarations are properly supported.
- Non-ascii characters in regexes in the configuration file worked in
3.7, but stopped working in 4.0. Now they work again.
- Form-feed characters would prevent accurate determination of the
beginning of statements in the rest of the file. This is now fixed.
When we are in rapid mode with only one link, after following the hint, fire()
called filter_hints(None) to display all hints again. Then filter_hints tried
to follow that link, fire() tried to show all again, etc., leading to a
RecursionError.
Fixes#1513.
A test will be added via #1510.
The check `key.startswith('<') and key.endswith('>') is repeated many
times in code to check for a special key. Replace all these with a call
to the same function.
Currently, the keyhint window is shown even if the keystring matches no
possible bindings. This causes an empty keyhint window to hang around
after entering hinting mode.
Instead, the window is now hidden if no bindings match the current
keystring.
Resolves#1507.
When showing the currently bound key in the misc column for command
completion, if the command has multiple bindings, show special bindings
(e.g. <ctrl-a>) after non-special bindings.
- Add a space after the comman for multiple binding suggestions.
- Use defaultdict(list) instead of defaultdict(lambda: [])
- Move the pylint comment back to the top of the class
Since we're not using those functions as argparse callbacks anymore, we
can write a normal function instead of factories, which simplifies
things a lot.