Improvements
- Added support for the ALL_PROXY environment variable.
- Reject header values that contain leading whitespace or newline characters to
reduce risk of header smuggling.
Bugfixes
- Fixed occasional TypeError when attempting to decode a JSON response that
occurred in an error case. Now correctly returns a ValueError.
- Requests would incorrectly ignore a non-CIDR IP address in the NO_PROXY
environment variables: Requests now treats it as a specific IP.
- Fixed a bug when sending JSON data that could cause us to encounter obscure
OpenSSL errors in certain network conditions (yes, really).
- Added type checks to ensure that iter_content only accepts integers and None
for chunk sizes.
- Fixed issue where responses whose body had not been fully consumed would have
the underlying connection closed but not returned to the connection pool,
which could cause Requests to hang in situations where the HTTPAdapter had
been configured to use a blocking connection pool.
Miscellaneous
- Updated bundled urllib3 to 1.16.
- Some previous releases accidentally accepted integers as acceptable header
values. This release does not.
Version 4.2
------------
- Since concurrency=multiprocessing uses subprocesses, options specified
on the coverage.py command line will not be communicated down to them.
Only options in the configuration file will apply to the subprocesses.
Previously, the options didn't apply to the subprocesses, but there
was no indication. Now it is an error to use
--concurrency=multiprocessing and other run-affecting options on the
command line. This prevents failures like those reported in issue 495.
- Filtering the HTML report is now faster, thanks to Ville Skyttä.
Version 4.2b1
-------------
Work from the PyCon 2016 Sprints!
- BACKWARD INCOMPATIBILITY: the coverage combine command now ignores an
existing .coverage data file. It used to include that file in its
combining. This caused confusing results, and extra tox "clean" steps.
If you want the old behavior, use the new coverage combine --append
option.
- The concurrency option can now take multiple values, to support
programs using multiprocessing and another library such as eventlet.
This is only possible in the configuration file, not from the command
line. The configuration file is the only way for sub-processes to all
run with the same options.
- Using a concurrency setting of multiprocessing now implies --parallel
so that the main program is measured similarly to the sub-processes.
- When using automatic subprocess measurement, running coverage commands
would create spurious data files. This is now fixed.
- A new configuration option, report:sort, controls what column of the
text report is used to sort the rows.
- The HTML report has a more-visible indicator for which column is being
sorted.
- If the HTML report cannot find the source for a file, the message now
suggests using the -i flag to allow the report to continue.
- When reports are ignoring errors, there's now a warning if a file
cannot be parsed, rather than being silently ignored.
- A new option for coverage debug is available: coverage debug config
shows the current configuration.
- Running coverage as a module (python -m coverage) no longer shows the
program name as __main__.py.
- The test_helpers module has been moved into a separate pip-installable
package: unittest-mixins.
While this makes things a little more complicated and means we'll need to use
`-r` to recreate tox environments, it has several advantages:
- Full support from requires.io (including PRs)
- Workaround for https://bitbucket.org/hpk42/tox/issues/332/ so we can update
virtualenv/pip