Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #1

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open

Initial Update #1

wants to merge 11 commits into from

Conversation

pyup-bot
Copy link

This is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

aiohttp 1.0.2 » 2.2.5 PyPI | Changelog | Repo
async-timeout 1.0.0 » 1.3.0 PyPI | Changelog | Repo
chardet 2.3.0 » 3.0.4 PyPI | Changelog | Repo
docutils 0.13.1 » 0.14 PyPI | Changelog | Homepage | Bugtracker
multidict 2.1.2 » 3.1.3 PyPI | Changelog | Repo
sockjs 0.5.0 » 0.6.0 PyPI | Changelog | Repo | Docs
pip 8.1.2 » 9.0.1 PyPI | Changelog | Homepage
flake8 2.6.0 » 3.4.1 PyPI | Changelog | Repo
tox 2.3.1 » 2.7.0 PyPI | Changelog | Docs
coverage 4.1 » 4.4.1 PyPI | Changelog | Docs
Sphinx 1.4.8 » 1.6.3 PyPI | Changelog | Homepage

Changelogs

aiohttp 1.0.2 -> 2.2.5

2.2.5

==================

  • Don't raise deprecation warning on
    loop.run_until_complete(client.close()) (2065)

2.2.4

==================

  • Fix issue with synchronous session closing when using ClientSession
    as an asynchronous context manager. (2063)

2.2.3

==================

  • Fix _CoroGuard for python 3.4

2.2.2

==================

  • Allow await session.close() along with yield from session.close()

2.2.1

==================

  • Relax yarl requirement to 0.11+
  • Backport 2026: session.close is a coroutine (2029)

2.2.0

==================

  • Add doc for add_head, update doc for add_get. (1944)
  • Fixed consecutive calls for Response.write_eof.
  • Retain method attributes (e.g. :code:__doc__) when registering synchronous
    handlers for resources. (1953)
  • Added signal TERM handling in run_app to gracefully exit (1932)
  • Fix websocket issues caused by frame fragmentation. (1962)
  • Raise RuntimeError is you try to set the Content Length and enable
    chunked encoding at the same time (1941)
  • Small update for unittest_run_loop
  • Use CIMultiDict for ClientRequest.skip_auto_headers (1970)
  • Fix wrong startup sequence: test server and run_app() are not raise
    DeprecationWarning now (1947)
  • Make sure cleanup signal is sent if startup signal has been sent (1959)
  • Fixed server keep-alive handler, could cause 100% cpu utilization (1955)
  • Connection can be destroyed before response get processed if
    await aiohttp.request(..) is used (1981)
  • MultipartReader does not work with -OO (1969)
  • Fixed ClientPayloadError with blank Content-Encoding header (1931)
  • Support deflate encoding implemented in httpbin.org/deflate (1918)
  • Fix BadStatusLine caused by extra CRLF after POST data (1792)
  • Keep a reference to ClientSession in response object (1985)
  • Deprecate undocumented app.on_loop_available signal (1978)

2.1.0

==================

  • Write to transport \r\n before closing after keepalive timeout,
    otherwise client can not detect socket disconnection. (1883)
  • Only call loop.close in run_app if the user did not supply a loop.
    Useful for allowing clients to specify their own cleanup before closing the
    asyncio loop if they wish to tightly control loop behavior
  • Content disposition with semicolon in filename (917)
  • Added request_info to response object and ClientResponseError. (1733)
  • Added history to ClientResponseError. (1741)
  • Allow to disable redirect url re-quoting (1474)
  • Handle RuntimeError from transport (1790)
  • Dropped "%O" in access logger (1673)
  • Added args and kwargs to unittest_run_loop. Useful with other
    decorators, for example patch. (1803)
  • Added iter_chunks to response.content object. (1805)
  • Avoid creating TimerContext when there is no timeout to allow
    compatibility with Tornado. (1817) (1180)
  • Add proxy_from_env to ClientRequest to read from environment
    variables. (1791)
  • Add DummyCookieJar helper. (1830)
  • Fix assertion errors in Python 3.4 from noop helper. (1847)
  • Do not unquote + in match_info values (1816)
  • Use Forwarded, X-Forwarded-Scheme and X-Forwarded-Host for better scheme and
    host resolution. (1134)
  • Fix sub-application middlewares resolution order (1853)
  • Fix applications comparison (1866)
  • Fix static location in index when prefix is used (1662)
  • Make test server more reliable (1896)
  • Extend list of web exceptions, add HTTPUnprocessableEntity,
    HTTPFailedDependency, HTTPInsufficientStorage status codes (1920)

2.0.7

==================

  • Fix pypi distribution
  • Fix exception description (1807)
  • Handle socket error in FileResponse (1773)
  • Cancel websocket heartbeat on close (1793)

2.0.6

==================

  • Keeping blank values for request.post() and multipart.form() (1765)
  • TypeError in data_received of ResponseHandler (1770)
  • Fix web.run_app not to bind to default host-port pair if only socket is
    passed (1786)

2.0.5

==================

  • Memory leak with aiohttp.request (1756)
  • Disable cleanup closed ssl transports by default.
  • Exception in request handling if the server responds before the body
    is sent (1761)

2.0.4

==================

  • Memory leak with aiohttp.request (1756)
  • Encoding is always UTF-8 in POST data (1750)
  • Do not add "Content-Disposition" header by default (1755)

2.0.3

==================

  • Call https website through proxy will cause error (1745)
  • Fix exception on multipart/form-data post if content-type is not set (1743)

2.0.2

==================

  • Fixed Application.on_loop_available signal (1739)
  • Remove debug code

2.0.1

==================

  • Fix allow-head to include name on route (1737)
  • Fixed AttributeError in WebSocketResponse.can_prepare (1736)

2.0.0

==================

  • Added json to ClientSession.request() method (1726)
  • Added session's raise_for_status parameter, automatically calls
    raise_for_status() on any request. (1724)
  • response.json() raises ClientReponseError exception if response's
    content type does not match (1723)
  • Cleanup timer and loop handle on any client exception.
  • Deprecate loop parameter for Application's constructor

2.0.0rc1

=======================

  • Properly handle payload errors (1710)
  • Added ClientWebSocketResponse.get_extra_info() (1717)
  • It is not possible to combine Transfer-Encoding and chunked parameter,
    same for compress and Content-Encoding (1655)
  • Connector's limit parameter indicates total concurrent connections.
    New limit_per_host added, indicates total connections per endpoint. (1601)
  • Use url's raw_host for name resolution (1685)
  • Change ClientResponse.url to yarl.URL instance (1654)
  • Add max_size parameter to web.Request reading methods (1133)
  • Web Request.post() stores data in temp files (1469)
  • Add the allow_head=True keyword argument for add_get (1618)
  • run_app and the Command Line Interface now support serving over
    Unix domain sockets for faster inter-process communication.
  • run_app now supports passing a preexisting socket object. This can be useful
    e.g. for socket-based activated applications, when binding of a socket is
    done by the parent process.
  • Implementation for Trailer headers parser is broken (1619)
  • Fix FileResponse to not fall on bad request (range out of file size)
  • Fix FileResponse to correct stream video to Chromes
  • Deprecate public low-level api (1657)
  • Deprecate encoding parameter for ClientSession.request() method
  • Dropped aiohttp.wsgi (1108)
  • Dropped version from ClientSession.request() method
  • Dropped websocket version 76 support (1160)
  • Dropped: aiohttp.protocol.HttpPrefixParser (1590)
  • Dropped: Servers response's .started, .start() and
    .can_start() method (1591)
  • Dropped: Adding sub app via app.router.add_subapp() is deprecated
    use app.add_subapp() instead (1592)
  • Dropped: Application.finish() and Application.register_on_finish() (1602)
  • Dropped: web.Request.GET and web.Request.POST
  • Dropped: aiohttp.get(), aiohttp.options(), aiohttp.head(),
    aiohttp.post(), aiohttp.put(), aiohttp.patch(), aiohttp.delete(), and
    aiohttp.ws_connect() (1593)
  • Dropped: aiohttp.web.WebSocketResponse.receive_msg() (1605)
  • Dropped: ServerHttpProtocol.keep_alive_timeout attribute and
    keep-alive, keep_alive_on, timeout, log constructor parameters (1606)
  • Dropped: TCPConnector's`` .resolve, .resolved_hosts, .clear_resolved_hosts()attributes andresolve` constructor
    parameter (1607)
  • Dropped ProxyConnector (1609)

1.3.5

==================

  • Fixed None timeout support (1720)

1.3.4

==================

  • Revert timeout handling in client request
  • Fix StreamResponse representation after eof
  • Fix file_sender to not fall on bad request (range out of file size)
  • Fix file_sender to correct stream video to Chromes
  • Fix NotImplementedError server exception (1703)
  • Clearer error message for URL without a host name. (1691)
  • Silence deprecation warning in repr (1690)
  • IDN + HTTPS = ssl.CertificateError (1685)

1.3.3

==================

  • Fixed memory leak in time service (1656)

1.3.2

==================

  • Awaiting on WebSocketResponse.send_* does not work (1645)
  • Fix multiple calls to client ws_connect when using a shared header
    dict (1643)
  • Make CookieJar.filter_cookies() accept plain string parameter. (1636)

1.3.1

==================

  • Handle CLOSING in WebSocketResponse.anext
  • Fixed AttributeError 'drain' for server websocket handler (1613)

1.3.0

==================

  • Multipart writer validates the data on append instead of on a
    request send (920)
  • Multipart reader accepts multipart messages with or without their epilogue
    to consistently handle valid and legacy behaviors (1526) (1581)
  • Separate read + connect + request timeouts 1523
  • Do not swallow Upgrade header (1587)
  • Fix polls demo run application (1487)
  • Ignore unknown 1XX status codes in client (1353)
  • Fix sub-Multipart messages missing their headers on serialization (1525)
  • Do not use readline when reading the content of a part
    in the multipart reader (1535)
  • Add optional flag for quoting FormData fields (916)
  • 416 Range Not Satisfiable if requested range end > file size (1588)
  • Having a : or `` in a route does not work (1552)
  • Added receive_timeout timeout for websocket to receive complete
    message. (1325)
  • Added heartbeat parameter for websocket to automatically send
    ping message. (1024) (777)
  • Remove web.Application dependency from web.UrlDispatcher (1510)
  • Accepting back-pressure from slow websocket clients (1367)
  • Do not pause transport during set_parser stage (1211)
  • Lingering close does not terminate before timeout (1559)
  • setsockopt may raise OSError exception if socket is closed already (1595)
  • Lots of CancelledError when requests are interrupted (1565)
  • Allow users to specify what should happen to decoding errors
    when calling a responses text() method (1542)
  • Back port std module http.cookies for python3.4.2 (1566)
  • Maintain url's fragment in client response (1314)
  • Allow concurrently close WebSocket connection (754)
  • Gzipped responses with empty body raises ContentEncodingError (609)
  • Return 504 if request handle raises TimeoutError.
  • Refactor how we use keep-alive and close lingering timeouts.
  • Close response connection if we can not consume whole http
    message during client response release
  • Abort closed ssl client transports, broken servers can keep socket
    open un-limit time (1568)
  • Log warning instead of RuntimeError is websocket connection is closed.
  • Deprecated: aiohttp.protocol.HttpPrefixParser
    will be removed in 1.4 (1590)
  • Deprecated: Servers response's .started, .start() and
    .can_start() method will be removed in 1.4 (1591)
  • Deprecated: Adding sub app via app.router.add_subapp() is deprecated
    use app.add_subapp() instead, will be removed in 1.4 (1592)
  • Deprecated: aiohttp.get(), aiohttp.options(), aiohttp.head(), aiohttp.post(),
    aiohttp.put(), aiohttp.patch(), aiohttp.delete(), and aiohttp.ws_connect()
    will be removed in 1.4 (1593)
  • Deprecated: Application.finish() and Application.register_on_finish()
    will be removed in 1.4 (1602)

1.2.0

==================

  • Extract BaseRequest from web.Request, introduce web.Server
    (former RequestHandlerFactory), introduce new low-level web server
    which is not coupled with web.Application and routing (1362)
  • Make TestServer.make_url compatible with yarl.URL (1389)
  • Implement range requests for static files (1382)
  • Support task attribute for StreamResponse (1410)
  • Drop TestClient.app property, use TestClient.server.app instead
    (BACKWARD INCOMPATIBLE)
  • Drop TestClient.handler property, use TestClient.server.handler instead
    (BACKWARD INCOMPATIBLE)
  • TestClient.server property returns a test server instance, was
    asyncio.AbstractServer (BACKWARD INCOMPATIBLE)
  • Follow gunicorn's signal semantics in Gunicorn[UVLoop]WebWorker (1201)
  • Call worker_int and worker_abort callbacks in
    Gunicorn[UVLoop]WebWorker (1202)
  • Has functional tests for client proxy (1218)
  • Fix bugs with client proxy target path and proxy host with port (1413)
  • Fix bugs related to the use of unicode hostnames (1444)
  • Preserve cookie quoting/escaping (1453)
  • FileSender will send gzipped response if gzip version available (1426)
  • Don't override Content-Length header in web.Response if no body
    was set (1400)
  • Introduce router.post_init() for solving (1373)
  • Fix raise error in case of multiple calls of TimeServive.stop()
  • Allow to raise web exceptions on router resolving stage (1460)
  • Add a warning for session creation outside of coroutine (1468)
  • Avoid a race when application might start accepting incoming requests
    but startup signals are not processed yet e98e8c6
  • Raise a RuntimeError when trying to change the status of the HTTP response
    after the headers have been sent (1480)
  • Fix bug with https proxy acquired cleanup (1340)
  • Use UTF-8 as the default encoding for multipart text parts (1484)

1.1.6

==================

  • Fix BodyPartReader.read_chunk bug about returns zero bytes before
    EOF (1428)

1.1.5

==================

  • Fix static file serving in fallback mode (1401)

1.1.4

==================

  • Make TestServer.make_url compatible with yarl.URL (1389)
  • Generate informative exception on redirects from server which
    does not provide redirection headers (1396)

1.1.3

==================

  • Support root resources for sub-applications (1379)

1.1.2

==================

  • Allow starting variables with an underscore (1379)
  • Properly process UNIX sockets by gunicorn worker (1375)
  • Fix ordering for FrozenList
  • Don't propagate pre and post signals to sub-application (1377)

1.1.1

==================

  • Fix documentation generation (1120)

1.1.0

==================

  • Drop deprecated WSClientDisconnectedError (BACKWARD INCOMPATIBLE)
  • Use yarl.URL in client API. The change is 99% backward compatible
    but ClientResponse.url is an yarl.URL instance now. (1217)
  • Close idle keep-alive connections on shutdown (1222)
  • Modify regex in AccessLogger to accept underscore and numbers (1225)
  • Use yarl.URL in web server API. web.Request.rel_url and
    web.Request.url are added. URLs and templates are percent-encoded
    now. (1224)
  • Accept yarl.URL by server redirections (1278)
  • Return yarl.URL by .make_url() testing utility (1279)
  • Properly format IPv6 addresses by aiohttp.web.run_app (1139)
  • Use yarl.URL by server API (1288)
  • Introduce resource.url_for(), deprecate resource.url().
  • Implement StaticResource.
  • Inherit SystemRoute from AbstractRoute
  • Drop old-style routes: Route, PlainRoute, DynamicRoute,
    StaticRoute, ResourceAdapter.
  • Revert resp.url back to str, introduce resp.url_obj (1292)
  • Raise ValueError if BasicAuth login has a ":" character (1307)
  • Fix bug when ClientRequest send payload file with opened as
    open('filename', 'r+b') (1306)
  • Enhancement to AccessLogger (pass extra dict) (1303)
  • Show more verbose message on import errors (1319)
  • Added save and load functionality for CookieJar (1219)
  • Added option on StaticRoute to follow symlinks (1299)
  • Force encoding of application/json content type to utf-8 (1339)
  • Fix invalid invocations of errors.LineTooLong (1335)
  • Websockets: Stop async for iteration when connection is closed (1144)
  • Ensure TestClient HTTP methods return a context manager (1318)
  • Raise ClientDisconnectedError to FlowControlStreamReader read function
    if ClientSession object is closed by client when reading data. (1323)
  • Document deployment without Gunicorn (1120)
  • Add deprecation warning for MD5 and SHA1 digests when used for fingerprint
    of site certs in TCPConnector. (1186)
  • Implement sub-applications (1301)
  • Don't inherit web.Request from dict but implement
    MutableMapping protocol.
  • Implement frozen signals
  • Don't inherit web.Application from dict but implement
    MutableMapping protocol.
  • Support freezing for web applications
  • Accept access_log parameter in web.run_app, use None to disable logging
  • Don't flap tcp_cork and tcp_nodelay in regular request handling.
    tcp_nodelay is still enabled by default.
  • Improve performance of web server by removing premature computing of
    Content-Type if the value was set by web.Response constructor.

While the patch boosts speed of trivial web.Response(text='OK', content_type='text/plain) very well please don't expect significant
boost of your application -- a couple DB requests and business logic
is still the main bottleneck.

  • Boost performance by adding a custom time service (1350)
  • Extend ClientResponse with content_type and charset
    properties like in web.Request. (1349)
  • Disable aiodns by default (559)
  • Don't flap tcp_cork in client code, use TCP_NODELAY mode by default.
  • Implement web.Request.clone() (1361)

1.0.5

==================

  • Fix StreamReader._read_nowait to return all available
    data up to the requested amount (1297)

1.0.4

==================

  • Fix FlowControlStreamReader.read_nowait so that it checks
    whether the transport is paused (1206)

async-timeout 1.0.0 -> 1.3.0

1.3.0


  • Don't suppress nested exception on timeout. Exception context points
    on cancelled line with suspended await (13)
  • Introduce .timeout property (16)
  • Add methods for using as async context manager (9)

1.2.1


  • Support unpublished event loop's "current_task" api.

1.2.0


  • Extra check on context manager exit
  • 0 is no-op timeout

1.1.0


  • Rename to async-timeout

chardet 2.3.0 -> 3.0.4

3.0.4

This minor bugfix release just fixes some packaging and documentation issues:

  • Fix issue with setup.py where pytest_runner was always being installed. (PR 119, thanks zmedico)
  • Make sure test.py is included in the manifest (PR 118, thanks zmedico)
  • Fix a bunch of old URLs in the README and other docs. (PRs 123 and 129, thanks qfan and jdufresne)
  • Update documentation to no longer imply we test/support Python 3 versions before 3.3 (PR 130, thanks jdufresne)

3.0.3

This release fixes a crash when debugging logging was enabled. (Issue 115, PRs 117 and 125)

3.0.2

Fixes an issue where detect would sometimes return None instead of a dict with the keys encoding, language, and confidence (Issue 113, PR 114).

3.0.1

This bugfix release fixes a crash in the EUC-TW prober when it encountered certain strings (Issue 67).

3.0.0

This release is long overdue, but still mostly serves as a placeholder for the impending 4.0.0 release, which will have retrained models for better accuracy. For now, this release will get the following improvements up on PyPI:

  • Added support for Turkish ISO-8859-9 detection (PR 41, thanks queeup)
  • Commented out large unused sections of Big5 and EUC-KR tables to save memory (8bc4b89)
  • Removed Python 3.2 from testing, but add 3.4 - 3.6
  • Ensure that stdin is open with mode 'rb' for chardetect CLI. (PR 38, thanks lpsinger)
  • Fixed chardetect crash with non-ascii file names (PR 39, thanks nkanaev)
  • Made naming conventions more Pythonic throughout (no more mTypicalPositiveRatio, and instead typical_positive_ratio)
  • Modernized test scripts and infrastructure so we've got Travis testing and all that stuff
  • Rename filter_without_english_words to filter_international_words and make it match current Mozilla implementation (PR 44, thanks rsnair2)
  • Updated filter_english_letters to match C implementation (c6654595)
  • Temporarily disabled Hungarian ISO-8859-2 and Windows-1250 detection because it is very inaccurate (da6c0a079)
  • Allow CLI sub-package to be importable (PR 55)
  • Add a hypotheis-based test (PR 66, thanks DRMacIver)
  • Strip endianness from UTF with BOM predictions so that the encoding can be passed directly to bytes.decode() (PR 73, thanks snoack)
  • Fixed broken links in docs (PR 90, thanks roskakori)
  • Added early exit to chardetect when encoding is detected instead of looping through entire file (PR 103, thanks jpz)
  • Use bytearray objects internally instead of wrap_ord calls, which provides a nice performance boost across the board (PR 106)
  • Add language property to probers and UniversalDetector results (PR 180)
  • Mark the 5 known test failures as such so we can have more useful Travis build results in the meantime (d588407)

docutils 0.13.1 -> 0.14

0.14

=========================

As rc2.

  • docutils/docs/ref/docutils.dtd:
  • Enable validation of Docutils XML documents against the DTD:
  • docutils/parsers/rst/:
  • Added functionality: escaped whitespace in URI contexts.
  • Consistent handling of all whitespace characters in inline markup
    recognition. (May break documents that relied on some whitespace
    characters (NBSP, ...) not to be recognized as whitespace.)
  • docutils/utils/smartquotes.py:
  • Update quote definitions for et, fi, fr, ro, sv, tr, uk.
  • Add quote definitions for hr, hsb, hu, lv, sh, sl, sr.
  • Differentiate apostrophe from closing single quote (if possible).
  • Add command line interface for stand-alone use (requires 2.7).
  • docutils/writers/_html_base:
  • Provide default title in metadata.
  • The MathJax CDN shut down on April 30, 2017. For security reasons, we
    don't use a third party public installation as default but warn
    if math-output is set to MathJax without specifying a URL.
    See math-output_ for details.
  • docutils/writers/html4css1:
  • Respect automatic table column sizing.
  • docutils/writers/latex2e/init.py
  • Handle class arguments for block-level elements by wrapping them
    in a "DUclass" environment. This replaces the special handling for
    "epigraph" and "topic" elements.
  • docutils/writers/odf_odt:
  • Language option sets ODF document's default language
  • Image width, scale, ... set image size in generated ODF.
  • tools/
  • New front-end rst2html4.py.

multidict 2.1.2 -> 3.1.3

3.1.3


  • Fix build

3.1.2


  • Fix type annotations

3.1.1


  • Fix 105: Remove memory leak in istr implementation

3.1.0


  • Fix 99: raise RuntimeError on dict iterations if the dict was changed
  • Update __init__.pyi signatures

3.0.0


  • Refactor internal data structures: main dict operations are about
    100% faster now.
  • Preserve order on multidict updates 68

Updates are md[key] = val and md.update(...) calls.

Now the last entry is replaced with new key/value pair, all
previous occurrences are removed.

If key is not present in dictionary the pair is added to the end

  • Force keys to str instances 88
  • Implement .popall(key[, default]) 84
  • .pop() removes only first occurence, .popone() added 92
  • Implement dict's version 86
  • Proxies are not pickable anymore 77

2.1.7


  • Fix import warning on Python 3.6 79

2.1.6


  • Rebuild the library for fixning missing __spec__ attribute 79

2.1.5


  • Build Python 3.6 binary wheels

2.1.4


  • Remove LICENSE filename extension MANIFEST.in file 31

2.1.3


  • Add a fastpath for multidict extending by multidict

sockjs 0.5.0 -> 0.6.0

0.6


  • Fixed support for aiohttp 2.0+.

pip 8.1.2 -> 9.0.1

9.0.1

==================

  • Correct the deprecation message when not specifying a --format so that it
    uses the correct setting name (format) rather than the incorrect one
    (list_format). (4058)
  • Fix pip check to check all available distributions and not just the
    local ones. (4083)
  • Fix a crash on non ASCII characters from lsb_release. (4062)
  • Fix an SyntaxError in an unused module of a vendored dependency. (4059)
  • Fix UNC paths on Windows. (4064)

9.0.0

==================

  • BACKWARD INCOMPATIBLE Remove the attempted autodetection of requirement
    names from URLs, URLs must include a name via egg=.
  • DEPRECATION pip install --egg have been deprecated and will be
    removed in the future. This "feature" has a long list of drawbacks which
    break nearly all of pip's other features in subtle and hard-to-diagnose
    ways.
  • DEPRECATION --default-vcs option. (4052)
  • WARNING pip 9 cache can break forward compatibility with previous pip
    versions if your package repository allows chunked responses. (4078)
  • Add a pip check command to check installed packages dependencies. (3750)
  • Add option allowing user to abort pip operation if file/directory exists
  • Add Appveyor CI
  • Uninstall existing packages when performing an editable installation of
    the same packages. (1548)
  • pip show is less verbose by default. --verbose prints multiline
    fields. (3858)
  • Add optional column formatting to pip list. (3651)
  • Add --not-required option to pip list, which lists packages that are
    not dependencies of other packages.
  • Fix builds on systems with symlinked /tmp directory for custom
    builds such as numpy. (3701)
  • Fix regression in pip freeze: when there is more than one git remote,
    priority is given to the remote named origin. (3708, 3616).
  • Fix crash when calling pip freeze with invalid requirement installed.
    (3704, 3681)
  • Allow multiple --requirement files in pip freeze. (3703)
  • Implementation of pep-503 data-requires-python. When this field is
    present for a release link, pip will ignore the download when
    installing to a Python version that doesn't satisfy the requirement.
  • pip wheel now works on editable packages too (it was only working on
    editable dependencies before); this allows running pip wheel on the result
    of pip freeze in presence of editable requirements. (3695, 3291)
  • Load credentials from .netrc files. (3715, 3569)
  • Add --platform, --python-version, --implementation and --abi
    parameters to pip download. These allow utilities and advanced users to
    gather distributions for interpreters other than the one pip is being run on.
    (3760)
  • Skip scanning virtual environments, even when venv/bin/python is a dangling
    symlink.
  • Added pip completion support for the fish shell.
  • Fix problems on Windows on Python 2 when username or hostname contains
    non-ASCII characters. (3463, 3970, 4000)
  • Use git fetch --tags to fetch tags in addition to everything else that
    is normally fetched; this is necessary in case a git requirement url
    points to a tag or commit that is not on a branch. (3791)
  • Normalize package names before using in pip show (3976)
  • Raise when Requires-Python do not match the running version and add
    --ignore-requires-python option as escape hatch. (3846)
  • Report the correct installed version when performing an upgrade in some
    corner cases. (2382
  • Add -i shorthand for --index flag in pip search.
  • Do not optionally load C dependencies in requests. (1840, 2930, 3024)
  • Strip authentication from SVN url prior to passing it to svn.
    (3697, 3209)
  • Also install in platlib with --target option. (3694, 3682)
  • Restore the ability to use inline comments in requirements files passed to
    pip freeze. (3680)

flake8 2.6.0 -> 3.4.1

3.4.1


You can view the 3.4.1 milestone_ on GitLab for more details.

  • Fix minor regression when users specify only a --select list with items
    in the enabled/extended select list. (See also GitLab354_)

.. all links
.. _3.4.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/19

.. issue links
.. _GitLab354:
https://gitlab.com/pycqa/flake8/issues/354

.. merge request links

3.4.0


You can view the 3.4.0 milestone_ on GitLab for more details.

  • Refine logic around --select and --ignore when combined with the
    default values for each. (See also GitLab318_)
  • Handle spaces as an alternate separate for error codes, e.g.,
    --ignore 'E123 E234'. (See also GitLab329_)
  • Filter out empty select and ignore codes, e.g., --ignore E123,,E234.
    (See also GitLab330_)
  • Specify dependencies appropriately in setup.py (See also Gitlab341_)
  • Fix bug in parsing --quiet and --verbose from config files.
    (See also GitLab!193_)
  • Remove unused import of os in the git hook template (See also
    GitLab!194_)

.. all links
.. _3.4.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/18

.. issue links
.. _GitLab318:
https://gitlab.com/pycqa/flake8/issues/318
.. _GitLab329:
https://gitlab.com/pycqa/flake8/issues/329
.. _GitLab330:
https://gitlab.com/pycqa/flake8/issues/330
.. _GitLab341:
https://gitlab.com/pycqa/flake8/issues/341

.. merge request links
.. _GitLab!193:
https://gitlab.com/pycqa/flake8/merge_requests/193
.. _GitLab!194:
https://gitlab.com/pycqa/flake8/merge_requests/194

3.3.0


You can view the 3.3.0 milestone_ on GitLab for more details.

  • Add support for Python 3.6 (via dependencies). Note Flake8 does not
    guarantee that all plugins will support Python 3.6.
  • Added unique error codes for all missing PyFlakes messages. (14 new
    codes, see "Error / Violation Codes")
  • Dramatically improve the performance of Flake8. (See also GitLab!156_)
  • Display the local file path instead of the temporary file path when
    using the git hook. (See also GitLab244_)
  • Add methods to Report class that will be called when Flake8 starts and
    finishes processing a file. (See also GitLab251_)
  • Fix problem where hooks should only check *.py files. (See also
    GitLab268_)
  • Fix handling of SyntaxErrors that do not include physical line information.
    (See also GitLab279_)
  • Update upper bound on PyFlakes to allow for PyFlakes 1.5.0. (See also
    GitLab290_)
  • Update setuptools integration to less eagerly deduplicate packages.
    (See also GitLab295_)
  • Force flake8 --version to be repeatable between invocations. (See also
    GitLab297_)

.. all links
.. _3.3.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/16

.. issue links
.. _GitLab244:
https://gitlab.com/pycqa/flake8/issues/244
.. _GitLab251:
https://gitlab.com/pycqa/flake8/issues/251
.. _GitLab268:
https://gitlab.com/pycqa/flake8/issues/268
.. _GitLab279:
https://gitlab.com/pycqa/flake8/issues/279
.. _GitLab290:
https://gitlab.com/pycqa/flake8/issues/290
.. _GitLab295:
https://gitlab.com/pycqa/flake8/issues/295
.. _GitLab297:
https://gitlab.com/pycqa/flake8/issues/297

.. merge request links
.. _GitLab!156:
https://gitlab.com/pycqa/flake8/merge_requests/156

3.2.1


You can view the 3.2.1 milestone_ on GitLab for more details.

  • Fix subtle bug when deciding whether to report an on-by-default's violation
    (See also GitLab257_)
  • Fix another bug around SyntaxErrors not being reported at the right column
    and row (See also GitLab259_ and GitLab237_ for a related, previously
    fixed bug)
  • Fix regression from 2.x where we run checks against explicitly provided
    files, even if they don't match the filename patterns. (See also
    GitLab266_)

.. links
.. _3.2.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/15
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab257:
https://gitlab.com/pycqa/flake8/issues/257
.. _GitLab259:
https://gitlab.com/pycqa/flake8/issues/259
.. _GitLab266:
https://gitlab.com/pycqa/flake8/issues/266

3.2.0


You can view the 3.2.0 milestone_ on GitLab for more details.

  • Allow for pycodestyle 2.2.0 which fixes a bug in E305 (See also
    GitLab256_)

.. links
.. _3.2.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/14
.. _GitLab256:
https://gitlab.com/pycqa/flake8/issues/256

3.1.1


You can view the 3.1.1 milestone_ on GitLab for more details.

  • Do not attempt to install/distribute a man file with the Python package;
    leave this for others to do. (See also GitLab254_)
  • Fix packaging bug where wheel version constraints specified in setup.cfg did
    not match the constraints in setup.py. (See also GitLab255_)

.. links
.. _3.1.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/13
.. _GitLab254:
https://gitlab.com/pycqa/flake8/issues/254
.. _GitLab255:
https://gitlab.com/pycqa/flake8/issues/255

3.1.0


You can view the 3.1.0 milestone_ on GitLab for more details.

  • Add --bug-report flag to make issue reporters' lives easier.
  • Collect configuration files from the current directory when using our Git
    hook. (See also GitLab210, GitLab218, GitLab223_)
  • Avoid unhandled exceptions when dealing with SyntaxErrors. (See also
    GitLab214, GitLab238)
  • Exit early if the value for --diff is empty. (See also GitLab226_)
  • Handle empty --stdin-display-name values. (See also GitLab235_)
  • Properly report the column number of Syntax Errors. We were assuming that
    all reports of column numbers were 0-indexed, however, SyntaxErrors report
    the column number as 1-indexed. This caused us to report a column number
    that was 1 past the actual position. Further, when combined with
    SyntaxErrors that occur at a newline, this caused the position to be
    visually off by two. (See also GitLab237_)
  • Fix the behaviour of --enable-extensions. Previously, items specified
    here were still ignored due to the fact that the off-by-default extension
    codes were being left in the ignore list. (See also GitLab239_)
  • Fix problems around --select and --ignore behaviour that prevented
    codes that were neither explicitly selected nor explicitly ignored from
    being reported. (See also GitLab242_)
  • Truly be quiet when the user specifies -q one or more times. Previously,
    we were showing the if the user specified -q and --show-source. We
    have fixed this bug. (See also GitLab245_)
  • Add new File Processor attribute, previous_unindented_logical_line to
    accommodate pycodestyle 2.1.0. (See also GitLab246_)
  • When something goes wrong, exit non-zero. (See also GitLab248,
    GitLab209
    )
  • Add --tee as an option to allow use of --output-file and printing to
    standard out.
  • Allow the git plugin to actually be lazy when collecting files.
  • Allow for pycodestyle 2.1 series and pyflakes 1.3 series.

.. links
.. _3.1.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/12
.. _GitLab209:
https://gitlab.com/pycqa/flake8/issues/209
.. _GitLab210:
https://gitlab.com/pycqa/flake8/issues/210
.. _GitLab214:
https://gitlab.com/pycqa/flake8/issues/214
.. _GitLab218:
https://gitlab.com/pycqa/flake8/issues/218
.. _GitLab223:
https://gitlab.com/pycqa/flake8/issues/223
.. _GitLab226:
https://gitlab.com/pycqa/flake8/issues/226
.. _GitLab235:
https://gitlab.com/pycqa/flake8/issues/235
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab238:
https://gitlab.com/pycqa/flake8/issues/238
.. _GitLab239:
https://gitlab.com/pycqa/flake8/issues/239
.. _GitLab242:
https://gitlab.com/pycqa/flake8/issues/242
.. _GitLab245:
https://gitlab.com/pycqa/flake8/issues/245
.. _GitLab246:
https://gitlab.com/pycqa/flake8/issues/246
.. _GitLab248:
https://gitlab.com/pycqa/flake8/issues/248

3.0.4


  • Side-step a Pickling Error when using Flake8 with multiprocessing on Unix
    systems. (See also GitLab164_)
  • Fix an Attribute Error raised when dealing with Invalid Syntax. (See also
    GitLab203_)
  • Fix an unhandled Syntax Error when tokenizing files. (See also
    GitLab205_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab203:
https://gitlab.com/pycqa/flake8/issues/203
.. _GitLab205:
https://gitlab.com/pycqa/flake8/issues/205

3.0.3


  • Disable --jobs for any version of Python on Windows.
    (See also this Python bug report_)
  • Raise exception when entry_point in plugin not callable.
    This raises an informative error when a plugin fails to load because its
    entry_point is not callable, which can happen with a plugin which is buggy or
    not updated for the current version of flake8. This is nicer than raising a
    PicklingError about failing to pickle a module (See also GitLab164_)
  • Fix noqa comments followed by a : and explanation broken by
    3.0.0 (See also GitLab178_)
  • Always open our output file in append mode so we do not overwrite log
    messages. (See also GitLab193_)
  • When normalizing path values read from configuration, keep in context the
    directory where the configuration was found so that relative paths work.
    (See also GitLab194_)
  • Fix issue where users were unable to ignore plugin errors that were on
    by default. (See also GitLab195_)
  • Fix our legacy API StyleGuide's init_report method to actually override
    the previous formatter. (See also GitLab200_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab178:
https://gitlab.com/pycqa/flake8/issues/178
.. _GitLab193:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab194:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab195:
https://gitlab.com/pycqa/flake8/issues/195
.. _GitLab200:
https://gitlab.com/pycqa/flake8/issues/200
.. _this Python bug report:
https://bugs.python.org/issue27649

3.0.2


  • Fix local config file discovery. (See also GitLab181_)
  • Fix indexing of column numbers. We accidentally were starting column indices
    at 0 instead of 1.
  • Fix regression in handling of errors like E402 that rely on a combination of
    attributes. (See also GitLab186_)

.. links
.. _GitLab181:
https://gitlab.com/pycqa/flake8/issues/181
.. _GitLab186:
https://gitlab.com/pycqa/flake8/issues/186

3.0.1


  • Fix regression in handling of noqa for multiline strings.
    (See also GitLab177_)
  • Fix regression in handling of --output-file when not also using
    --verbose. (See also GitLab180_)
  • Fix regression in handling of --quiet. (See also GitLab180_)
  • Fix regression in handling of --statistics. (See also GitLab180_)

.. links
.. _GitLab177:
https://gitlab.com/pycqa/flake8/issues/177
.. _GitLab180:
https://gitlab.com/pycqa/flake8/issues/180

3.0.0


  • Drop explicit support for Pythons 2.6, 3.2, and 3.3.
  • Remove dependence on pep8/pycodestyle for file processing, plugin
    dispatching, and more. We now control all of this while keeping backwards
    compatibility.
  • --select and --ignore can now both be specified and try to find the
    most specific rule from each. For example, if you do --select E --ignore E123 then we will report everything that starts with E except for
    E123. Previously, you would have had to do --ignore E123,F,W which
    will also still work, but the former should be far more intuitive.
  • Add support for in-line noqa comments to specify only the error
    codes to be ignored, e.g., noqa: E123,W503
  • Add entry-point for formatters as well as a base class that new formatters
    can inherit from. See the documentation for more details.
  • Add detailed verbose output using the standard library logging module.
  • Enhance our usage of optparse for plugin developers by adding new parameters
    to the add_option that plugins use to register new options.
  • Update --install-hook to require the name of version control system hook
    you wish to install a Flake8.
  • Stop checking sub-directories more than once via the setuptools command
  • When passing a file on standard-in, allow the caller to specify
    --stdin-display-name so the output is properly formatted
  • The Git hook now uses sys.executable to format the shebang line.
    This allows Flake8 to install a hook script from a virtualenv that points to
    that virtualenv's Flake8 as opposed to a global one (without the virtualenv
    being sourced).
  • Print results in a deterministic and consistent ordering when used with
    multiprocessing
  • When using --count, the output is no longer written to stderr.
  • AST plugins can either be functions or classes and all plugins can now
    register options so long as there are callable attributes named as we
    expect.
  • Stop forcibly re-adding .tox, .eggs, and *.eggs to
    --exclude. Flake8 2.x started always appending those three patterns
    to any exclude list (including the default and any user supplied list).
    Flake8 3 has stopped adding these in, so you may see errors when upgrading
    due to these patterns no longer being forcibly excluded by default if you
    have your own exclude patterns specified.

To fix this, add the appropriate patterns to your exclude patterns list.

.. note::

 This item was added in November of 2016, as a result of a bug
 report.

2.6.2


  • Bug Fix packaging error during release process.

2.6.1


  • Bug Update the config files to search for to include setup.cfg and
    tox.ini. This was broken in 2.5.5 when we stopped passing
    config_file to our Style Guide

tox 2.3.1 -> 2.7.0

2.7.0


  • p450: Stop after the first installdeps and first testenv create hooks
    succeed. This changes the default behaviour of tox_testenv_create
    and tox_testenv_install_deps to not execute other registered hooks when
    the first hook returns a result that is not None.
    Thanks Anthony Sottile (asottile).
  • 271 and 464: Improve environment information for users.

New command line parameter: -a show all defined environments -
not just the ones defined in (or generated from) envlist.

New verbosity settings for -l and -a: show user defined descriptions
of the environments. This also works for generated environments from factors
by concatenating factor descriptions into a complete description.

Note that for backwards compatibility with scripts using the output of -l
it's output remains unchanged.

Thanks Gábor Bernát (gaborbernat).

  • 464: Fix incorrect egg-info location for modified package_dir in setup.py.
    Thanks Selim Belhaouane (selimb).
  • 431: Add 'LANGUAGE' to default passed environment variables.
    Thanks Paweł Adamczak (pawalad).
  • 455: Add a Vagrantfile with a customized Arch Linux box for local testing.
    Thanks Oliver Bestwalter (obestwalter).
  • 454: Revert 407, empty commands is not treated as an error.
    Thanks Anthony Sottile (asottile).
  • 446: (infrastructure) Travis CI tests for tox now also run on OS X now.
    Thanks Jason R. Coombs (jaraco).

2.6.0


  • add "alwayscopy" config option to instruct virtualenv to always copy
    files instead of symlinking. Thanks Igor Duarte Cardoso (igordcard).
  • pass setenv variables to setup.py during a usedevelop install.
    Thanks Eli Collins (eli-collins).
  • replace all references to testrun.org with readthedocs ones.
    Thanks Oliver Bestwalter (obestwalter).
  • fix 323 by avoiding virtualenv14 is not used on py32
    (although we don't officially support py32).
    Thanks Jason R. Coombs (jaraco).
  • add Python 3.6 to envlist and CI.
    Thanks Andrii Soldatenko (andriisoldatenko).
  • fix glob resolution from TOX_TESTENV_PASSENV env variable
    Thanks Allan Feldman (a-feld).

2.5.0


  • slightly backward incompatible: fix issue310: the {posargs} substitution
    now properly preserves the tox command line positional arguments. Positional
    arguments with spaces are now properly handled.
    NOTE: if your tox invocation previously used extra quoting for positional arguments to
    work around issue310, you need to remove the quoting. Example:
    tox -- "'some string'" has to now be written simply as
    tox -- "some string"
    thanks holger krekel. You can set minversion = 2.5.0 in the [tox]
    section of tox.ini to make sure people using your tox.ini use the correct version.
  • fix 359: add COMSPEC to default passenv on windows. Thanks
    anthrotype.
  • add support for py36 and py37 and add py36-dev and py37(nightly) to
    travis builds of tox. Thanks John Vandenberg.
  • fix 348: add py2 and py3 as default environments pointing to
    "python2" and "python3" basepython executables. Also fix 347 by
    updating the list of default envs in the tox basic example.
    Thanks Tobias McNulty.
  • make "-h" and "--help-ini" options work even if there is no tox.ini,
    thanks holger krekel.
  • add {:} substitution, which is replaced with os-specific path
    separator, thanks Lukasz Rogalski.
  • fix 305: downloadcache test env config is now ignored as pip-8
    does caching by default. Thanks holger krekel.
  • output from install command in verbose (-vv) mode is now printed to console instead of
    being redirected to file, thanks Lukasz Rogalski
  • fix 399. Make sure {envtmpdir} is created if it doesn't exist at the
    start of a testenvironment run. Thanks Manuel Jacob.
  • fix 316: Lack of commands key in ini file is now treated as an error.
    Reported virtualenv status is 'nothing to do' instead of 'commands
    succeeded', with relevant error message displayed. Thanks Lukasz Rogalski.

2.4.1


  • fix issue380: properly perform substitution again. Thanks Ian
    Cordasco.

2.4.0


  • remove PYTHONPATH from environment during the install phase because a
    tox-run should not have hidden dependencies and the test commands will also
    not see a PYTHONPATH. If this causes unforeseen problems it may be
    reverted in a bugfix release. Thanks Jason R. Coombs.
  • fix issue352: prevent a configuration where envdir==toxinidir and
    refine docs to warn people about changing "envdir". Thanks Oliver Bestwalter and holger krekel.
  • fix issue375, fix issue330: warn against tox-setup.py integration as
    "setup.py test" should really just test with the current interpreter. Thanks Ronny Pfannschmidt.
  • fix issue302: allow cross-testenv substitution where we substitute
    with {x,y} generative syntax. Thanks Andrew Pashkin.
  • fix issue212: allow escaping curly brace chars "{" and "}" if you need the
    chars "{" and "}" to appear in your commands or other ini values.
    Thanks John Vandenberg.
  • addresses issue66: add --workdir option to override where tox stores its ".tox" directory
    and all of the virtualenv environment. Thanks Danring.
  • introduce per-venv list_dependencies_command which defaults
    to "pip freeze" to obtain the list of installed packages.
    Thanks Ted Shaw, Holger Krekel.
  • close issue66: add documentation to jenkins page on how to avoid
    "too long shebang" lines when calling pip from tox. Note that we
    can not use "python -m pip install X" by default because the latter
    adds the CWD and pip will think X is installed if it is there.
    "pip install X" does not do that.
  • new list_dependencies_command to influence how tox determines
    which dependencies are installed in a testenv.
  • (experimental) New feature: When a search for a config file fails, tox tries loading
    setup.cfg with a section prefix of "tox".
  • fix issue275: Introduce hooks tox_runtest_pre``` and tox_runtest_post`` which run before and after the tests of a venv,
    respectively. Thanks to Matthew Schinckel and itxaka serrano.
  • fix issue317: evaluate minversion before tox config is parsed completely.
    Thanks Sachi King for the PR.
  • added the "extras" environment option to specify the extras to use when doing the
    sdist or develop install. Contributed by Alex Grönholm.
  • use pytest-catchlog instead of pytest-capturelog (latter is not
    maintained, uses deprecated pytest API)

2.3.2


  • fix issue314: fix command invocation with .py scripts on windows.
  • fix issue279: allow cross-section substitution when the value contains
    posargs. Thanks Sachi King for the PR.

coverage 4.1 -> 4.4.1

4.4.1


  • No code changes: just corrected packaging for Python 2.7 Linux wheels.

.. _changes_44:

4.4


  • Reports could produce the wrong file names for packages, reporting pkg.py
    instead of the correct pkg/__init__.py. This is now fixed. Thanks, Dirk
    Thomas.
  • XML reports could produce <source> and <class> lines that together
    didn't specify a valid source file path. This is now fixed. (issue 526_)
  • Namespace packages are no longer warned as having no code. (issue 572_)
  • Code that uses sys.settrace(sys.gettrace()) in a file that wasn't being
    coverage-measured would prevent correct coverage measurement in following
    code. An example of this was running doctests programmatically. This is now
    fixed. (issue 575_)
  • Errors printed by the coverage command now go to stderr instead of
    stdout.
  • Running coverage xml in a directory named with non-ASCII characters would
    fail under Python 2. This is now fixed. (issue 573_)

.. _issue 526: https://bitbucket.org/ned/coveragepy/issues/526/generated-xml-invalid-paths-for-cobertura
.. _issue 572: https://bitbucket.org/ned/coveragepy/issues/572/no-python-source-warning-for-namespace
.. _issue 573: https://bitbucket.org/ned/coveragepy/issues/573/cant-generate-xml-report-if-some-source
.. _issue 575: https://bitbucket.org/ned/coveragepy/issues/575/running-doctest-prevents-complete-coverage

4.4b1


  • Some warnings can now be individually disabled. Warnings that can be
    disabled have a short name appended. The [run] disable_warnings setting
    takes a list of these warning names to disable. Closes both issue 96_ and
    issue 355_.
  • The XML report now includes attributes from version 4 of the Cobertura XML
    format, fixing issue 570_.
  • In previous versions, calling a method that used collected data would prevent
    further collection. For example, save(), report(), html_report(), and
    others would all stop collection. An explicit start() was needed to get it
    going again. This is no longer true. Now you can use the collected data and
    also continue measurement. Both issue 79_ and issue 448_ described this
    problem, and have been fixed.
  • Plugins can now find unexecuted files if they choose, by implementing the
    find_executable_files method. Thanks, Emil Madsen.
  • Minimal IronPython support. You should be able to run IronPython programs
    under coverage run, though you will still have to do the reporting phase
    with CPython.
  • Coverage.py has long had a special hack to support CPython's need to measure
    the coverage of the standard library tests. This code was not installed by
    kitted versions of coverage.py. Now it is.

.. _issue 79: https://bitbucket.org/ned/coveragepy/issues/79/save-prevents-harvesting-on-stop
.. _issue 96: https://bitbucket.org/ned/coveragepy/issues/96/unhelpful-warnings-produced-when-using
.. _issue 355: https://bitbucket.org/ned/coveragepy/issues/355/warnings-should-be-suppressable
.. _issue 448: https://bitbucket.org/ned/coveragepy/issues/448/save-and-html_report-prevent-further
.. _issue 570: https://bitbucket.org/ned/coveragepy/issues/570/cobertura-coverage-04dtd-support

.. _changes_434:

4.3.4


  • Fixing 2.6 in version 4.3.3 broke other things, because the too-tricky
    exception wasn't properly derived from Exception, described in issue 556_.
    A newb mistake; it hasn't been a good few days.

.. _issue 556: https://bitbucket.org/ned/coveragepy/issues/556/43-fails-if-there-are-html-files-in-the

.. _changes_433:

4.3.3


  • Python 2.6 support was broken due to a testing exception imported for the
    benefit of the coverage.py test suite. Properly conditionalizing it fixed
    issue 554_ so that Python 2.6 works again.

.. _issue 554: https://bitbucket.org/ned/coveragepy/issues/554/traceback-on-python-26-starting-with-432

.. _changes_432:

4.3.2


  • Using the --skip-covered option on an HTML report with 100% coverage
    would cause a "No data to report" error, as reported in issue 549_. This is
    now fixed; thanks, Loïc Dachary.
  • If-statements can be optimized away during compilation, for example, if 0:
    or if __debug__:. Coverage.py had problems properly understanding these
    statements which existed in the source, but not in the compiled bytecode.
    This problem, reported in issue 522_, is now fixed.
  • If you specified --source as a directory, then coverage.py would look for
    importable Python files in that directory, and could identify ones that had
    never been executed at all. But if you specified it as a package name, that
    detection wasn't performed. Now it is, closing issue 426_. Thanks to Loïc
    Dachary for the fix.
  • If you started and stopped coverage measurement thousands of times in your
    process, you could crash Python with a "Fatal Python error: deallocating
    None" error. This is now fixed. Thanks to Alex Groce for the bug report.
  • On PyPy, measuring coverage in subprocesses could produce a warning: "Trace
    function changed, measurement is likely wrong: None". This was spurious, and
    has been suppressed.
  • Previously, coverage.py couldn't start on Jython, due to that implementation
    missing the multiprocessing module (issue 551). This problem has now been
    fixed. Also, issue 322
    about not being able to invoke coverage
    conveniently, seems much better: jython -m coverage run myprog.py works
    properly.
  • Let's say you ran the HTML report over and over again in the same output
    directory, with --skip-covered. And imagine due to your heroic
    test-writing efforts, a file just acheived the goal of 100% coverage. With
    coverage.py 4.3, the old HTML file with the less-than-100% coverage would be
    left behind. This file is now properly deleted.

.. _issue 322: https://bitbucket.org/ned/coveragepy/issues/322/cannot-use-coverage-with-jython
.. issue 426: https://bitbucket.org/ned/coveragepy/issues/426/difference-between-coverage-results-with
.. issue 522: https://bitbucket.org/ned/coveragepy/issues/522/incorrect-branch-reporting-with-__debug

.. _issue 549: https://bitbucket.org/ned/coveragepy/issues/549/skip-covered-with-100-coverage-throws-a-no
.. _issue 551: https://bitbucket.org/ned/coveragepy/issues/551/coveragepy-cannot-be-imported-in-jython27

.. _changes_431:

4.3.1


  • Some environments couldn't install 4.3, as described in issue 540_. This is
    now fixed.
  • The check for conflicting --source and --include was too simple in a
    few different ways, breaking a few perfectly reasonable use cases, described
    in issue 541. The check has been reverted while we re-think the fix for
    issue 265
    .

.. _issue 540: https://bitbucket.org/ned/coveragepy/issues/540/cant-install-coverage-v43-into-under
.. _issue 541: https://bitbucket.org/ned/coveragepy/issues/541/coverage-43-breaks-nosetest-with-coverage

.. _changes_43:

4.3


Special thanks to Loïc Dachary, who took an extraordinary interest in
coverage.py and contributed a number of improvements in this release.

  • Subprocesses that are measured with automatic subprocess measurement_ used
    to read in any pre-existing data file. This meant data would be incorrectly
    carried forward from run to run. Now those files are not read, so each
    subprocess only writes its own data. Fixes issue 510_.
  • The coverage combine command will now fail if there are no data files to
    combine. The combine changes in 4.2 meant that multiple combines could lose
    data, leaving you with an empty .coverage data file. Fixes
    issue 525, issue 412, issue 516, and probably issue 511.
  • Coverage.py wouldn't execute sys.excepthook_ when an exception happened in
    your program. Now it does, thanks to Andrew Hoos. Closes issue 535_.
  • Branch coverage fixes:
  • Branch coverage could misunderstand a finally clause on a try block that
    never continued on to the following statement, as described in issue 493_. This is now fixed. Thanks to Joe Doherty for the report and Loïc
    Dachary for the fix.
  • A while loop with a constant condition (while True) and a continue
    statement would be mis-analyzed, as described in issue 496_. This is now
    fixed, thanks to a bug report by Eli Skeggs and a fix by Loïc Dachary.
  • While loops with constant conditions that were never executed could result
    in a non-zero coverage report. Artem Dayneko reported this in issue 502_, and Loïc Dachary provided the fix.
  • The HTML report now supports a --skip-covered option like the other
    reporting commands. Thanks, Loïc Dachary for the implementation, closing
    issue 433_.
  • Options can now be read from a tox.ini file, if any. Like setup.cfg, sections
    are prefixed with "coverage:", so [run] options will be read from the
    [coverage:run] section of tox.ini. Implements part of issue 519_.
    Thanks, Stephen Finucane.
  • Specifying both --source and --include no longer silently ignores the
    include setting, instead it fails with a message. Thanks, Nathan Land and
    Loïc Dachary. Closes issue 265_.
  • The Coverage.combine method has a new parameter, strict=False, to
    support failing if there are no data files to combine.
  • When forking subprocesses, the coverage data files would have the same random
    number appended to the file name. This didn't cause problems, because the
    file names had the process id also, making collisions (nearly) impossible.
    But it was disconcerting. This is now fixed.
  • The text report now properly sizes headers when skipping some files, fixing
    issue 524_. Thanks, Anthony Sottile and Loïc Dachary.
  • Coverage.py can now search .pex files for source, just as it can .zip and
    .egg. Thanks, Peter Ebden.
  • Data files are now about 15% smaller.
  • Improvements in the [run] debug setting:
  • The "dataio" debug setting now also logs when data files are deleted during
    combining or erasing.
  • A new debug option, "multiproc", for logging the behavior of
    concurrency=multiprocessing.
  • If you used the debug options "config" and "callers" together, you'd get a
    call stack printe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant