8000 Initial Update by pyup-bot · Pull Request #344 · djangopackages/djangopackages · GitHub
[go: up one dir, main page]

Skip to content

Initial Update #344

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

Merged
merged 35 commits into from
Nov 8, 2016
Merged

Initial Update #344

merged 35 commits into from
Nov 8, 2016

Conversation

pyup-bot
Copy link
Contributor

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

Name used latest pypi
six 1.9.0 1.10.0 pypi
requests 2.7.0 2.10.0 pypi
shortuuid 0.4.2 0.4.3 pypi
greenlet 0.3.4 0.4.10 pypi
github3.py 0.7.0 0.9.5 pypi
mimeparse 0.1.3 0.1.4 pypi
httplib2 0.7.7 0.9.2 pypi
django-redis 4.2.0 4.4.4 pypi
django-environ 0.3.0 0.4.0 pypi
oauth2 1.5.211 1.9.0.post1 pypi
django-floppyforms 1.3.0 1.6.2 pypi
appenlight-client 0.6.5 0.6.17 pypi
python-social-auth 0.2.3 0.2.19 pypi
eventlet 0.9.17 0.19.0 pypi
feedparser 5.0.1 5.2.1 pypi
gunicorn 19.3.0 19.6.0 pypi
Django 1.8.4 1.9.8 pypi
coverage 3.4 4.2 pypi
django-extensions 1.5.2 1.6.7 pypi
psycopg2 2.6 2.6.2 pypi
django-braces 1.3.1 1.9.0 pypi
django-storages 1.1.3 1.4.1 pypi
django-crispy-forms 1.4.0 1.6.0 pypi
django-debug-toolbar 1.3.2 1.5 pypi
certifi 0.0.8 2016.2.28 pypi
whitenoise 2.0.3 3.2 pypi
chardet 1.0.1 2.3.0 pypi
djangorestframework 3.2.4 3.4.0 pypi
python-dateutil 2.1 2.5.3 pypi
django-reversion 1.8.5 2.0.6 pypi

Pins

Name Pinned to pypi
opbeat 3.3.4 pypi

Changelogs

requests 2.7.0 -> 2.10.0

2.10.0

+++++++++++++++++++

New Features

  • SOCKS Proxy Support! (requires PySocks; $ pip install requests[socks])

Miscellaneous

  • Updated bundled urllib3 to 1.15.1.

2.9.2

++++++++++++++++++

Improvements

  • Change built-in CaseInsensitiveDict (used for headers) to use OrderedDict
    as its underlying datastore.

Bugfixes

  • Don't use redirect_cache if allow_redirects=False
  • When passed objects that throw exceptions from tell(), send them via
    chunked transfer encoding instead of failing.
  • Raise a ProxyError for proxy related connection issues.

2.9.1

++++++++++++++++++

Bugfixes

  • Resolve regression introduced in 2.9.0 that made it impossible to send binary
    strings as bodies in Python 3.
  • Fixed errors when calculating cookie expiration dates in certain locales.

Miscellaneous

  • Updated bundled urllib3 to 1.13.1.

2.9.0

++++++++++++++++++

Minor Improvements (Backwards compatible)

  • The verify keyword argument now supports being passed a path to a
    directory of CA certificates, not just a single-file bundle.
  • Warnings are now emitted when sending files opened in text mode.
  • Added the 511 Network Authentication Required status code to the status code
    registry.

Bugfixes

  • For file-like objects that are not seeked to the very beginning, we now
    send the content length for the number of bytes we will actually read, rather
    than the total size of the file, allowing partial file uploads.
  • When uploading file-like objects, if they are empty or have no obvious
    content length we set Transfer-Encoding: chunked rather than
    Content-Length: 0.
  • We correctly receive the response in buffered mode when uploading chunked
    bodies.
  • We now handle being passed a query string as a bytestring on Python 3, by
    decoding it as UTF-8.
  • Sessions are now closed in all cases (exceptional and not) when using the
    functional API rather than leaking and waiting for the garbage collector to
    clean them up.
  • Correctly handle digest auth headers with a malformed qop directive that
    contains no token, by treating it the same as if no qop directive was
    provided at all.
  • Minor performance improvements when removing specific cookies by name.

Miscellaneous

  • Updated urllib3 to 1.13.

2.8.1

++++++++++++++++++

Bugfixes

  • Update certificate bundle to match certifi 2015.9.6.2's weak certificate
    bundle.
  • Fix a bug in 2.8.0 where requests would raise ConnectTimeout instead of
    ConnectionError
  • When using the PreparedRequest flow, requests will now correctly respect the
    json parameter. Broken in 2.8.0.
  • When using the PreparedRequest flow, requests will now correctly handle a
    Unicode-string method name on Python 2. Broken in 2.8.0.

2.8.0

++++++++++++++++++

Minor Improvements (Backwards Compatible)

  • Requests now supports per-host proxies. This allows the proxies
    dictionary to have entries of the form
    {'<scheme>://<hostname>': '<proxy>'}. Host-specific proxies will be used
    in preference to the previously-supported scheme-specific ones, but the
    previous syntax will continue to work.
  • Response.raise_for_status now prints the URL that failed as part of the
    exception message.
  • requests.utils.get_netrc_auth now takes an raise_errors kwarg,
    defaulting to False. When True, errors parsing .netrc files cause
    exceptions to be thrown.
  • Change to bundled projects import logic to make it easier to unbundle
    requests downstream.
  • Changed the default User-Agent string to avoid leaking data on Linux: now
    contains only the requests version.

Bugfixes

  • The json parameter to post() and friends will now only be used if
    neither data nor files are present, consistent with the
    documentation.
  • We now ignore empty fields in the NO_PROXY environment variable.
  • Fixed problem where httplib.BadStatusLine would get raised if combining
    stream=True with contextlib.closing.
  • Prevented bugs where we would attempt to return the same connection back to
    the connection pool twice when sending a Chunked body.
  • Miscellaneous minor internal changes.
  • Digest Auth support is now thread safe.

Updates

  • Updated urllib3 to 1.12.

greenlet 0.3.4 -> 0.4.10

0.4.10

  • Added missing files to manifest
  • Added workaround for ppc32 on Linux
  • Start building binary manylinux1 wheels

0.4.9

  • Fixed Windows builds

0.4.8

  • Added support for iOS (arm32)
  • Added support for ppc64le

0.4.7

  • Added a missing workaround for return 0 on mips
  • Restore compatibility with Python 2.5
  • Fixed stack switching on sparc

0.4.6

  • Expose _stack_saved property on greenlet objects, it may be used to
    introspect the amount of memory used by a saved stack, but the API is
    subject to change in the future
  • Added a workaround for return 0 compiler optimizations on all
    architectures
  • C API typo fixes

0.4.5

  • Fixed several bugs in greenlet C API
  • Fixed a bug in multi-threaded applications, which manifested itself
    with spurious "cannot switch to a different thread" exceptions
  • Fixed some crashes on arm and mips architectures

0.4.4

  • Fixed PyGreenlet_SetParent signature, thanks to BoonsNaibot
  • Fixed 64-bit Windows builds depending on wrong runtime dll

0.4.3

  • Better slp_switch performance on SPARC
  • Drop support for Python 2.3
  • Fix trashcan assertions on debug builds of Python
  • Remove deprecated -fno-tree-dominator-opts compiler switch
  • Enable switch code for SunStudio on 32-bit SunOS
  • Support for abc abstract methods in greenlet subclasses
  • Support custom directories for tests
  • Document switch tracing support

0.4.2

  • Add .travis.yml
  • Fix 'err' may be used uninitialized in this function
  • Check _MSC_VER for msvc specific code
  • Fix slp_switch on SPARC for multi-threaded environments
  • Add support for m68k

0.4.1

  • fix segfaults when using gcc 4.8 on amd64/x86 unix
  • try to disable certain gcc 4.8 optimizations that make greenlet
    crash
  • Fix greenlet on aarch64 with gcc 4.8
  • workaround segfault on SunOS/sun4v
  • Add support for Aarch64
  • Add support for x32 psABI on x86_64
  • Changed memory constraints for assembly macro for PPC Linux
    platforms.

0.4.0

  • Greenlet has an instance dictionary now, which means it can be
    used for implementing greenlet local storage, etc. However, this
    might introduce incompatibility if subclasses have dict in their
    slots. Classes like that will fail, because greenlet already
    has dict out of the box.
  • Greenlet no longer leaks memory after thread termination, as long as
    terminated thread has no running greenlets left at the time.
  • Add support for debian sparc and openbsd5-sparc64
  • Add support for ppc64 linux
  • Don't allow greenlets to be copied with copy.copy/deepcopy
  • Fix arm32/thumb support
  • Restore greenlet's parent after kill
  • Add experimental greenlet tracing

github3.py 0.7.0 -> 0.9.5

0.9.3


- Backport of ``PullRequestcreate_review_comment`` by Adrian Moisey

- Backport of ``PullRequestreview_comments`` by Adrian Moisey

- Backport of a fix that allows authenticated users to download Release
 Assets. Original bug reported by Eugene Fidelin in issue 288.

- Documentation typo fix by Marc Abramowitz



### 0.9.2

  • Updates for new team management_ API changes
    • Add Teaminvite, Teammembership_for, and
      Teamrevoke_membership
    • Deprecate Teamadd_member, Teamremove_member, and
      Organizationadd_member.
    • Update payload handler for TeamAddEvent.

.. _new team management:
https://developer.github.com/changes/2014-09-23-one-more-week-before-the-add-team-member-api-breaking-change/

0.9.1


- Correct Repository attribute ``fork_count`` should be ``forks_count``



### 0.9.0

  • Add Deployments API
  • Add Pages API
  • Add support so applications can revoke a single authorization_ or all authorizations_ created by the application
  • Add the ability for users to ping_ hooks
  • Allow users to list a Repository's collaborators_
  • Allow users to create an empty blob on a Repository
  • Update how users can list issues and pull requests. See:
    http://developer.github.com/changes/2014-02-28-issue-and-pull-query-enhancements/
    This includes breaking changes to Repositoryiter_pulls.
  • Update methods to handle the pagination changes_.
  • Fix typo stargarzers_url_
  • Add assets attribute to Release object.
  • Fix wrong argument to Organizationcreate_team (permissions versus
    permission)
  • Fix Issue Search Result's representation and initialization
  • Fix Repository Search Result's initialization
  • Allow users to pass a two-factor authentication callback to
    GitHubauthorize.

.. _single authorization: https://github3py.readthedocs.org/en/latest/github.htmlgithub3.github.GitHub.revoke_authorization
.. _all authorizations: https://github3py.readthedocs.org/en/latest/github.htmlgithub3.github.GitHub.revoke_authorizations
.. _ping: https://github3py.readthedocs.org/en/latest/repos.html?highlight=pinggithub3.repos.hook.Hook.ping
.. _Repository's collaborators: https://github3py.readthedocs.org/en/latest/repos.htmlgithub3.repos.repo.Repository.iter_collaborators
.. _pagination changes: https://developer.github.com/changes/2014-03-18-paginating-method-changes/
.. _stargarzers_url: sigmavirus24/github3.py#240

0.8.2


- Fix bug in ``GitHubsearch_users`` (and ``github3.search_users``). Thanks
 abesto

- Expose the stargazers count for repositories. Thanks seveas



### 0.8.1

  • Add documentation for using Two Factor Authentication
  • Fix oversight where github3.login could not be used for 2FA

0.8.0


- **Breaking Change** Remove legacy search API

 I realize this should have been scheduled for 1.0 but I was a bit eager to 
 remove this.

- Use Betamax to start recording integration tests

- Add support for Releases API

- Add support for Feeds API

- Add support for Two-Factor Authentication via the API

- Add support for New Search API

 - Add ``github3.search_code``, ``github3.search_issues``, 
   ``github3.search_repositories``, ``github3.search_users``

 - Add ``GitHubsearch_code``, ``GitHubsearch_issues``, 
   ``GitHubsearch_repositories``, ``GitHubsearch_users``

- Switch to requests >= 2.0

- Totally remove all references to the Downloads API

- Fix bug in ``Repositoryupdate_file`` where ``branch`` was not being sent to
 the API. Thanks tpetr!

- Add ``GitHubrate_limit`` to return all of the information from the
 ``/rate_limit`` endpoint.

- Catch missing attributes -- ``diff_hunk``, ``original_commit_id`` -- on 
 ``ReviewComment``.

- Add support for the Emojis endpoint

- Note deprecation of a few object attributes

- Add support for the ``ReleaseEvent``

- Add ``GitHubiter_user_teams`` to return all of the teams the authenticated 
 user belongs to



### 0.7.1

  • Add dependency on uritemplate.py_ to add URITemplates to different classes.
    See the documentation for attributes which are templates.
  • Fixed issue trying to parse html_url on Pull Requests courtesy of
    rogerhu.
  • Remove expecter as a test dependency courtesy of esacteksab.
  • Fixed issue 141 trying to find an Event that doesn't exist.

.. _uritemplate.py: https://github.com/sigmavirus24/uritemplate

httplib2 0.7.7 -> 0.9.2

0.9.2

Fixes in this release:

jcgregorio/httplib2#313

Fix incorrect ResponseNotReady exceptions, retry on transient errors.

0.9.1

Fixes in this release:

jcgregorio/httplib2#296

   There was a problem with headers when a binary string is passed (like
   b'Authorization').

jcgregorio/httplib2#276

   Default to doing DNS resolution through a proxy server if present.

0.9

Heartbleed

0.8

More fixes for the App Engine support.

Added a new feature that allows you to supply your own provider for the
CA_CERTS file. Just create a module named ca_certs_locater that has a method
get() that returns the file location of the CA_CERTS file.

Lots of clean up of the code formatting to make it more consistent.

django-redis 4.2.0 -> 4.4.4

4.4.4


Date: 2016-07-25

  • Fix possible race condition on incr implementation using
    lua script (thanks to prokaktus).

4.4.3


Date: 2016-05-17

  • Fix minor ttl inconsistencies.

4.4.2


Date: 2016-04-21

  • Fix timeout bug (thanks to skorokithakis)

4.4.1


Date: 2016-04-13

  • Add additional check for avoid wrong exception on get_redis_connection.

4.4.0


Date: 2016-04-12

  • Make redis client pluggable (thanks to arnuschky)
  • Add version number inside python module (thanks to BertrandBordage)
  • Fix clear metho 8000 d (thanks to ostcar)
  • Add the ability to specify key prefix on delete and delete_pattern.
  • BREAKING CHANGE: improved compression support (make it more plugable).

4.3.0


Date: 2015-10-31

  • Improved exception handling in herd client (thanks to brandoshmando)
  • Fix bug that not allows use generators on delete_many (thanks to ostcar).
  • Remove obsolete code that makes hard dependency to mspack.

django-floppyforms 1.3.0 -> 1.6.2

1.6.2


* `169`_: Use the attributes ``ClearableFileInput.initial_text``,
 ``ClearableFileInput.input_text``,
 ``ClearableFileInput.clear_checkbox_label`` to determine the used text in the
 template. This was inconsistent so far with Django's behaviour.

.. _169: https://github.com/gregmuellegger/django-floppyforms/issues/169



### 1.6.1

  • 167_: Fix django-floppyforms' CheckboxInput.value_from_datadict which
    was inconsistent with Django's behaviour.

.. _167: jazzband/django-floppyforms#167

1.6.0


* `160`_: Django 1.9 support! Thanks to Jonas Haag for the patch.

.. _160: https://github.com/gregmuellegger/django-floppyforms/pull/160



### 1.5.2

  • 156_: The min, max, step attributes for DecimalField and
    FloatField were localized which can result in invalid values (rendering
    0.01 as 0,01 in respective locales). Those attributes won't get
    localized anymore. Thanks to Yannick Chabbert for the fix.

.. _156: jazzband/django-floppyforms#156

1.5.1


* `FloatField`` now fills in ``min``, ``max``, and ``step`` attributes to match
 the behaviour of `DecimalField`. Leaving out the ``step`` attribute would
 result in widgets that only allow integers to be filled in (HTML 5 default
 for ``step`` is ``1``).



### 1.5.0

  • 148_: Added support for custom label_suffix arguments in forms and fields.
  • The contents in floppyforms/input.html is now wrapped in a {% block content %} for easier extending.
  • 70_: `DecimalFieldnow fills inmin``,``max``, and``step``attributes for
    better client side validation. Use the``novalidate``attribute on your
    ``<form>`` tag to disable HTML5 input validation in the browser. Thanks to
    caacree for the patch.

.. _148: jazzband/django-floppyforms#148
.. _70: jazzband/django-floppyforms#70

1.4.1


* Fixed source distribution to include all files in
 ``floppyforms/static/floppyforms/openlayers``.



### 1.4.0

  • Every widget is now using its own template. Previously all widgets that are
    based on the HTML &lt;input&gt; tag used the generic floppyforms/input.html
    template. Now the widgets each have a custom element for easier
    customisation. For example CheckboxInput now uses
    floppyforms/checkbox.html instead of floppyforms/input.html. See
    Widgets reference &lt;http://django-floppyforms.readthedocs.org/en/latest/widgets-reference.html&gt;_
    for a complete list of available widgets and which templates they use.
  • Adjusting the SRIDs used in the GeoDjango widgets to conform with
    Django 1.7. Thanks to Tyler Tipton for the patch.
  • Python 3.2 is now officially supported.
  • Django 1.8 is now officially supported. django-floppyforms no longers
    triggers Django deprecation warnings.
  • Adding OpenLayers_ distribution to django-floppyforms static files in order
    to better support HTTPS setups when GIS widgets are used (See 15 for more
    details).
  • Fix: python setup.py bdist_rpm failed because of wrong string encodings
    in setup.py. Thanks to Yuki Izumi for the fix.
  • Fix: The CheckboxInput widget did detect different values in Python 2
    when given &#39;False&#39; and u&#39;False&#39; as data. Thanks to artscoop for the
    patch.
  • Fix: MultipleChoiceField can now correctly be rendered as hidden field by
    using the as_hidden helper in the template. That was not working
    previously as there was no value set for MultipleChoiceField.hidden_widget.

.. _OpenLayers: http://openlayers.org/

eventlet 0.9.17 -> 0.19.0

0.19.0

  • ssl: IMPORTANT DoS FIX do_handshake_connect=False in server accept(); Thanks to Garth Mollett
  • patcher: patch existing threading locks; Thanks to Alexis Lee
  • green.urllib2: missing patched ssl module; Thanks to Collin RM Stocks
  • wsgi: environ[headers_raw] tuple of unmodified name: value pairs
  • test against modern pyopenssl 16.0.0 for Python 2.7+; Thanks to Victor Stinner
  • wsgi: document compatibility with python logging
  • Minor grammatical improvements and typo fixes to the docs; Thanks to Steven Erenst

0.18.4

  • wsgi: change TCP_NODELAY to TCP_QUICKACK, ignore socket error when not available

0.18.3

  • wsgi: Use buffered writes - fixes partial socket.send without custom
    writelines(); Github issue 295
  • wsgi: TCP_NODELAY enabled by default

0.18.2

  • wsgi: Fix data loss on partial writes (socket.send); Thanks to Jakub Stasiak

0.18.1

  • IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1
  • patcher: Fix AttributeError in subprocess communicate()
  • greenio: Fix "TypeError: an integer is required" in sendto()

0.18.0

  • IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1
  • greenio: Fixed a bug that could cause send() to start an endless loop on
    ENOTCONN; Thanks to Seyeong Kim
  • wsgi: Fixed UNIX socket address being trimmed in "wsgi starting" log; Thanks
    to Ihar Hrachyshka
  • ssl: Ported eventlet.green.OpenSSL to Python 3; Thanks to Victor Stinner
  • greenio: Made read() support buflen=-1 and added readall() (Python 3);
    Thanks to David Szotten
  • wsgi: Made the error raised in case of chunk read failures more precise (this
    should be backwards compatible as the new exception class,
    wsgi.ChunkReadError, is a subclass of ValueError which was being used there
    before); Thanks to Samuel Merritt
  • greenio: Fixed socket.recv() sometimes returning str instead of bytes on
    Python 3; Thanks to Janusz Harkot
  • wsgi: Improved request body discarding
  • websocket: Fixed TypeError on empty websocket message (Python 3); Thanks to
    Fukuchi Daisuke
  • subprocess: Fixed universal_newlines support
  • wsgi: Output of 0-byte chunks is now suppressed; Thanks to Samuel Merritt
  • Improved the documentation; Thanks to Ramakrishnan G, ashutosh-mishra and
    Azhar Hussain
  • greenio: Changed GreenFileIO.write() (Python 3) to always write all data to
    match the behavior on Python 2; Thanks to Victor Stinner
  • subprocess: Fixed missing subprocess.mswindows attribute on Python 3.5;
    Thanks to Josh VanderLinden
  • ssl/monkey patching: Fixed a bug that would cause merely importing eventlet
    to monkey patch the ssl module; Thanks to David Szotten
  • documentation: Added support for building plain text documentation; thanks
    to Levente Polyak
  • greenio: Fixed handling blocking IO errors in various GreenSocket methods;
    Thanks to Victor Stinner
  • greenio: Fixed GreenPipe ignoring the bufsize parameter on Python 2; Thanks
    to Phus Lu
  • backdoor: Added Unix and IPv6 socket support; Thanks to Eric Urban

Backwards incompatible:

  • monkey patching: The following select methods and selector classes are now
    removed, instead of being left in their respective modules after patching
    even though they are not green (this also fixes HTTPServer.serve_forever()
    blocking whole process on Python 3):

    • select.poll
    • select.epoll
    • select.devpoll
    • select.kqueue
    • select.kevent
    • selectors.PollSelector
    • selectors.EpollSelector
    • selectors.DevpollSelector
    • selectors.KqueueSelector

    Additionally selectors.DefaultSelector points to a green SelectSelector

  • greenio: Fixed send() to no longer behave like sendall() which makes it
    consistent with Python standard library and removes a source of very subtle
    errors

0.17.4

  • ssl: incorrect initalization of default context; Thanks to stuart-mclaren

0.17.3

  • green.thread: Python3.3+ fixes; Thanks to Victor Stinner
  • Semaphore.acquire() accepts timeout=-1; Thanks to Victor Stinner

0.17.2

  • wsgi: Provide python logging compatibility; Thanks to Sean Dague
  • greendns: fix premature connection closing in DNS proxy; Thanks to Tim Simmons
  • greenio: correct fd close; Thanks to Antonio Cuni and Victor Sergeyev
  • green.ssl: HTTPS client Python 2.7.9+ compatibility
  • setup: tests.{isolated,manual} polluted top-level packages

0.17.1

  • greendns: fix dns.name import and Python3 compatibility

0.17

  • Full Python3 compatibility; Thanks to Jakub Stasiak
  • greendns: IPv6 support, improved handling of /etc/hosts; Thanks to Floris Bruynooghe
  • tpool: make sure we return results during killall; Thanks to David Szotten
  • semaphore: Don't hog a semaphore if someone else is waiting for it; Thanks to Shaun Stanworth
  • green.socket: create_connection() was wrapping all exceptions in socket.error; Thanks to Donagh McCabe
  • Make sure SSL retries are done using the exact same data buffer; Thanks to Lior Neudorfer
  • greenio: shutdown already closed sockets without error; Thanks to David Szotten

0.16.1

  • Wheel build 0.16.0 incorrectly shipped removed module eventlet.util.

0.16.0

  • Fix SSL socket wrapping and Python 2.7.9 compatibility; Thanks to Jakub Stasiak
  • Fix monkey_patch() on Python 3; Thanks to Victor Stinner
  • Fix "maximum recursion depth exceeded in GreenSocket.del"; Thanks to Jakub Stasiak
  • db_pool: BaseConnectionPool.clear updates .current_size 139; Thanks to Andrey Gubarev
  • Fix str method on the TimeoutExpired exception class.; Thanks to Tomaz Muraus
  • hubs: drop Twisted support
  • Removed deprecated modules: api, most of coros, pool, proc, processes and util
  • Improved Python 3 compatibility (including patch by raylu); Thanks to Jakub Stasiak
  • Allow more graceful shutdown of wsgi server; Thanks to Stuart McLaren
  • wsgi.input: Make send_hundred_continue_headers() a public API; Thanks to Tushar Gohad
  • tpool: Windows compatibility, fix ResourceWarning. Thanks to Victor Stinner
  • tests: Fix timers not cleaned up on MySQL test skips; Thanks to Corey Wright

0.15.2

  • greenio: fixed memory leak, introduced in 0.15.1; Thanks to Michael Kerrin, Tushar Gohad
  • wsgi: Support optional headers w/ "100 Continue" responses; Thanks to Tushar Gohad

0.15.1

  • greenio: Fix second simultaneous read (parallel paramiko issue); Thanks to Jan Grant, Michael Kerrin
  • db_pool: customizable connection cleanup function; Thanks to Avery Fay

0.15

  • Python3 compatibility -- not ready yet; Thanks to Astrum Kuo, Davanum Srinivas, Jakub Stasiak, Victor Sergeyev
  • coros: remove Actor which was deprecated in 2010-01
  • saranwrap: remove saranwrap which was deprecated in 2010-02
  • PyPy compatibility fixes; Thanks to Dmitriy Kruglyak, Jakub Stasiak
  • green.profile: accumulate results between runs; Thanks to Zhang Hua
  • greenthread: add .unlink() method; Thanks to Astrum Kuo
  • packaging: Generate universal wheels; Thanks to Jakub Stasiak
  • queue: Make join not wait if there are no unfinished tasks; Thanks to Jakub Stasiak
  • tpool: proxy enter, exit fixes Bitbucket-158; Thanks to Eric Urban
  • websockets: Add websockets13 support; handle lack of Upgrade header; Thanks to Edward George
  • wsgi: capitalize_response_headers option

0.14

  • wsgi: handle connection socket timeouts; Thanks to Paul Oppenheim
  • wsgi: close timed out client connections
  • greenio: socket pypy compatibility; Thanks to Alex Gaynor
  • wsgi: env['wsgi.input'] was returning 1 byte strings; Thanks to Eric Urban
  • green.ssl: fix NameError; Github 17; Thanks to Jakub Stasiak
  • websocket: allow "websocket" in lowercase in Upgrade header; Compatibility with current Google Chrome; Thanks to Dmitry Orlov
  • wsgi: allow minimum_chunk_size to be overriden on a per request basis; Thanks to David Goetz
  • wsgi: configurable socket_timeout

0.13

  • hubs: kqueue support! Thanks to YAMAMOTO Takashi, Edward George
  • greenio: Fix AttributeError on MacOSX; Bitbucket 136; Thanks to Derk Tegeler
  • green: subprocess: Fix subprocess.communicate() block on Python 2.7; Thanks to Edward George
  • green: select: ensure that hub can .wait() at least once before timeout; Thanks to YAMAMOTO Takashi
  • tpool: single request queue to avoid deadlocks; Bitbucket pull request 31,32; Thanks to Edward George
  • zmq: pyzmq 13.x compatibility; Thanks to Edward George
  • green: subprocess: Popen.wait() accepts new timeout kwarg; Python 3.3 and RHEL 6.1 compatibility
  • hubs: EVENTLET_HUB can point to external modules; Thanks to Edward George
  • semaphore: support timeout for acquire(); Thanks to Justin Patrin
  • support: do not clear sys.exc_info if can be preserved (greenlet >= 0.3.2); Thanks to Edward George
  • Travis continous integration; Thanks to Thomas Grainger, Jakub Stasiak
  • wsgi: minimum_chunk_size of last Server altered all previous (global variable); Thanks to Jakub Stasiak
  • doc: hubs: Point to the correct function in exception message; Thanks to Floris Bruynooghe

0.12

  • zmq: Fix 100% busy CPU in idle after .bind(PUB) (thanks to Geoff Salmon)
  • greenio: Fix socket.settimeout() did not switch back to blocking mode (thanks to Peter Skirko)
  • greenio: socket.dup() made excess fcntl syscalls (thanks to Peter Portante)
  • setup: Remove legacy --without-greenlet option and unused httplib2 dependency (thanks to Thomas Grainger)
  • wsgi: environ[REMOTE_PORT], also available in log_format, log accept event (thanks to Peter Portante)
  • tests: Support libzmq 3.0 SNDHWM option (thanks to Geoff Salmon)

0.11

  • ssl: Fix 100% busy CPU in socket.sendall() (thanks to Raymon Lu)
  • zmq: Return linger argument to Socket.close() (thanks to Eric Windisch)
  • tests: SSL tests were always skipped due to bug in skip_if_no_ssl decorator

0.10

  • greenio: Fix relative seek() (thanks to AlanP)
  • db_pool: Fix pool.put() TypeError with min_size > 1 (thanks to Jessica Qi)
  • greenthread: Prevent infinite recursion with linking to current greenthread (thanks to Edward George)
  • zmq: getsockopt(EVENTS) wakes correct threads (thanks to Eric Windisch)
  • wsgi: Handle client disconnect while sending response (thanks to Clay Gerrard)
  • hubs: Ensure that new hub greenlet is parent of old one (thanks to Edward George)
  • os: Fix waitpid() returning (0, 0) (thanks to Vishvananda Ishaya)
  • tpool: Add set_num_threads() method to set the number of tpool threads (thanks to David Ibarra)
  • threading, zmq: Fix Python 2.5 support (thanks to Floris Bruynooghe)
  • tests: tox configuration for all supported Python versions (thanks to Floris Bruynooghe)
  • tests: Fix zmq._QueueLock test in Python2.6
  • tests: Fix patcher_test on Darwin (/bin/true issue) (thanks to Edward George)
  • tests: Skip SSL tests when not available (thanks to Floris Bruynooghe)
  • greenio: Remove deprecated GreenPipe.xreadlines() method, was broken anyway

feedparser 5.0.1 -> 5.2.1

5.2.1

  • Fix 22 (pip package keeps upgrading all the time)

5.2.0

  • Support PyPy
  • Remove the HTTP Status 9001 test that caused unit test tracebacks
  • Remove the completely-untested HTML tidy code
  • Remove BeautifulSoup as a dependency
  • Remove the XFN microformat parsing code
  • Remove the rel_enclosure microformat parsing code
  • Remove the rel_hcard microformat parsing code
  • Remove the rel_tag microformat parsing code
  • Replace the regex-based RFC 822 date parser with a procedural one
  • Replace the Python-licensed W3DTF date parser
  • Support HTML5 audio/source/video element relative URL's
  • Remove the unparsed itunes_keywords key from the result dictionary
  • Fix issue 321 just a little more (yet another code path was missed)
  • Issue 62 (support georss and gml namespaces)
  • Issue 296 (GUID's are always treated like relative URI's)
  • Issue 334 (media:restriction element content is not returned)
  • Issue 335 (sub-elements of media:group are not parsed and returned)
  • Issue 342 (support multiple dc:creator elements)
  • Issue 357 (loose parser breaks ampersands in link element URL's)
  • Issue 374 (support the Podlove Simple Chapters namespace)
  • Issue 380 (support media:rating element)
  • Issue 384 (fix chardet support in Python 3)
  • Issue 389 (elements in unknown uppercase namespaces are ignored)
  • Issue 392 (tags element subverts 'tags' key in result dictionary)
  • Issue 396 (Podlove Simple Chapters version 1.0 causes a KeyError)
  • Issue 399 (docs call request_headers parameter extra_headers)
  • Issue 401 (support additional dcterms and media namespaces elements)
  • Issue 404 (support asctime datetime strings with timezone information)
  • Issue 407 (decode forward slashes encoded as character entities)
  • Issue 421 (delay chardet invocation as long as possible)
  • Issue 422 (add return types docstrings)
  • Issue 433 (update the list of allowed MathML elements and attributes)

5.1.3

  • Consolidated and simplified the character encoding detection code
  • Issue 346 (the gb2312 encoding isn't always upgraded to gb18030)
  • Issue 350 (HTTP Last-Modified example is incorrect in documentation)
  • Issue 352 (importing lxml.etree changes what exceptions libxml2 throws)
  • Issue 356 (add support for the HTML5 attributes poster and preload)
  • Issue 364 (enclosure-sniffing microformat code can throw ValueError)
  • Issue 373 (support RFC822-ish dates with swapped days and months)
  • Issue 376 (uppercase 'X' in hex character references cause ValueError)
  • Issue 382 (don't strip inline user:password credentials from FTP URL's)

5.1.2

  • Minor changes to the documentation
  • Strip potentially dangerous ENTITY declarations in encoded feeds
  • feedparser will now try to continue parsing despite compression errors
  • Fix issue 321 a little more (the initial fix missed a code path)
  • Issue 337 (_parse_date_rfc822() returns None on single-digit days)
  • Issue 343 (add magnet links to the ACCEPTABLE_URI_SCHEMES)
  • Issue 344 (handle deflated data with no headers nor checksums)
  • Issue 347 (support itunes:image elements with a url attribute)

5.1.1

  • Fix mistakes, typos, and bugs in the unit test code
  • Fix crash in Python 2.4 and 2.5 if the feed has a UTF_32 byte order mark
  • Replace the RFC822 date parser for more extensibility
  • Issue 304 (handle RFC822 dates with timezones like GMT+00:00)
  • Issue 309 (itunes:keywords should be split by commas, not whitespace)
  • Issue 310 (pubDate should map to published, not updated)
  • Issue 313 (include the compression test files in MANIFEST.in)
  • Issue 314 (far-flung RFC822 dates don't throw OverflowError on x64)
  • Issue 315 (HTTP server for unit tests runs on 0.0.0.0)
  • Issue 321 (malformed URIs can cause ValueError to be thrown)
  • Issue 322 (HTTP redirect to HTTP 304 causes SAXParseException)
  • Issue 323 (installing chardet causes 11 unit test failures)
  • Issue 325 (map description_detail to summary_detail)
  • Issue 326 (Unicode filename causes UnicodeEncodeError if locale is ASCII)
  • Issue 327 (handle RFC822 dates with extraneous commas)
  • Issue 328 (temporarily map updated to published due to issue 310)
  • Issue 329 (escape backslashes in Windows path in docs/introduction.rst)
  • Issue 331 (don't escape backslashes that are in raw strings in the docs)

5.1

  • Extensive, extensive unit test refactoring
  • Convert the Docbook documentation to ReST
  • Include the documentation in the source distribution
  • Consolidate the disparate README files into one
  • Support Jython somewhat (almost all unit tests pass)
  • Support Python 3.2
  • Fix Python 3 issues exposed by improved unit tests
  • Fix international domain name issues exposed by improved unit tests
  • Issue 148 (loose parser doesn't always return unicode strings)
  • Issue 204 (FeedParserDict behavior should not be controlled by assert)
  • Issue 247 (mssql date parser uses hardcoded tokyo timezone)
  • Issue 249 (KeyboardInterrupt and SystemExit exceptions being caught)
  • Issue 250 (updated can be a 9-tuple or a string, depending on context)
  • Issue 252 (running setup.py in Python 3 fails due to missing sgmllib)
  • Issue 253 (document that text/plain content isn't sanitized)
  • Issue 260 (Python 3 doesn't decompress gzip'ed or deflate'd content)
  • Issue 261 (popping from empty tag list)
  • Issue 262 (docs are missing from distribution files)
  • Issue 264 (vcard parser crashes on non-ascii characters)
  • Issue 265 (http header comparisons are case sensitive)
  • Issue 271 (monkey-patching sgmllib breaks other libraries)
  • Issue 272 (can't pass bytes or str to parse() in Python 3)
  • Issue 275 (_parse_date() doesn't catch OverflowError)
  • Issue 276 (mutable types used as default values in parse())
  • Issue 277 (python3 setup.py install fails)
  • Issue 281 (_parse_date() doesn't catch ValueError)
  • Issue 282 (_parse_date() crashes when passed None)
  • Issue 285 (crash on empty xmlns attribute)
  • Issue 286 ('apos' character entity not handled properly)
  • Issue 289 (add an option to disable microformat parsing)
  • Issue 290 (Blogger's invalid img tags are unparseable)
  • Issue 292 (atom id element not explicitly supported)
  • Issue 294 ('categories' key exists but raises KeyError)
  • Issue 297 (unresolvable external doctype causes crash)
  • Issue 298 (nested nodes clobber actual values)
  • Issue 300 (performance improvements)
  • Issue 303 (unicode characters cause crash during relative uri resolution)
  • Remove "Hot RSS" support since the format doesn't actually exist
  • Remove the old feedparser.org website files from the source
  • Remove the feedparser command line interface
  • Remove the Zope interoperability hack
  • Remove extraneous whitespace

opbeat -> 3.3.4

3.3.4

  • Introduce transactions ignore patterns.

3.3.3

  • fixed an issue where Opbeat for Flask would listen for all signals, instead
    of just signals from the app it has been initialized with. Thanks tomlinton
    for the fix.
  • fixed an encoding issue when loading the README.rst in setup.py. Thanks
    apuyou for the fix.

3.3.2

  • removed suprious print statement that made it into 3.3.1. Thanks coagulant for
    the heads up!
  • updated README

3.3.1

  • setting PROCESSORS to an empty list now skips processing completely instead
    of using the default processors
  • setting _opbeat_transaction_name on the request object from a view or
    middleware allows code to override the name used for the transaction
  • experimental support for manylinux1 binary wheels. Note that the wheels will
    not be uploaded to PyPI for now, but will be available on the
    release page
    on GitHub.

3.3

  • added an asyncio transport (for Python 3.5 and up), thanks ticosax!
  • fixed a bug with uWSGI master mode which would stop the module from sending
    errors to Opbeat if it was used before uWSGI forked the worker processes.
    Thanks dsanders11 for finding the bug and initial patch!

3.2.2

3.2.1

  • added a FILTER_EXCEPTION_TYPES attribute in the OPBEAT dict in Django / Flask settings
    that allows the user to filter out specific exception types

3.2

  • prefixed Django and Flask transaction names with HTTP methods names
  • Note: This means views in the "Views" list on the Opbeat performance tab will
    change their name and you will have both non-prefixed names and http method
    prefixed names in the list until the old names fall out of the selected timeframe

3.1.4

  • added possibility to override the transport class used by the client
  • fixed a regression in our frame walker for Django templates in Django 1.9+

3.1.3

  • fixed an issue where SSL connections would not get closed on the client
  • added support for OPBEAT_WRAPT_EXTENSIONS to override building of the
    wrapt C extension module during installation.

3.1.2

  • preliminary support for Django 1.9
  • support for Python 3.5
  • added OPBEAT_DISABLE_SEND environment variable to completely stop sending
    data to Opbeat
  • improved test suite

3.1.1

  • Fixed bug in Redis instrumentation introduced in 3.1 refactor.

3.1

  • Flask APM support. Install as opbeat[flask] to ensure flask deps are installed.
  • Introduce opbeat.trace decorator for better insights into custom code
  • Internal refactoring to support the decorator.
  • Stop instrumenting pipelined Redis operations.

3.0.4

  • Only log one line per module we failed to instrument

3.0.3

  • Fix a problem that occurs when end_transaction gets called twice in a row
  • Silently ignore DatabaseError when collecting user info for Django.
  • Better error logging with async=True
  • Renamed async keyword in anticipation of Python 3.5+
  • Instruments Django middleware by default to give better insights in APM
  • Better sanitation of http body
  • A bit of cleanups and refactoring

3.0.2

  • Fix a bug in trace reporting that occurred if the traced code would raise
  • Introduce a management command to test out local Opbeat configuration and
    send a test exception.
  • Include templates in stackframes in traces.
  • Various bug fixes related to stackframes in traces.

3.0.1

  • instrument python-memcached
  • Make sure only one of urllib3 and requests will show up on traces

3.0

  • introduced instrumentation to enable in-depth performance monitoring
  • began deprecation of camelCase style capture methods on `Client.
    Full deprecation in 4.0.

2.1.1

  • refactored AyncWorker, should now be better behaved when shutting down
  • fixed bug with django-configurations

2.1

  • fixed issue with template debug in Django 1.9 (unreleased)
  • added experimental support for instrumenting Django middleware for
    better metrics data

2.0.4

  • fixed bug with Django and DEBUG = True

2.0.3

  • fixed bug in collecting Django POST data

2.0.2

  • start using the new intake URL
  • Flask: module now adheres to the Flask.debug option and does not log to
    Opbeat unless it is False

2.0.1

  • Fixed a bug when __name__ does not exist for view_func given to
    OpbeatAPMMiddleware

2.0

  • Async support was refactored, removed old AsyncClient classes
  • OpbeatAPMMiddleware was added to time requests
  • APP_ID now configurable from environment
  • Lots of cleanups

1.9.0

  • Signatures are no longer sent with messages. This requires the server version to be at least 4.4.6.
  • Several fixes and additions were added to the Django report view.
  • long types are now handled in transform().
  • Improved integration with Celery (and django-celery) for capturing errors.

1.8.0

  • There is now a builtin view as part of the Django integration for sending events server-side
    (from the client) to Sentry. The view is currently undocumented, but is available as {% url raven-report %}
    and will use your server side credentials. To use this view you'd simply swap out the servers configuration in
    raven-js and point it to the given URL.
  • A new middleware for ZeroRPC now exists.
  • A new protocol for registering transports now exists.
  • Corrected some behavior in the UDP transport.
  • Celery signals are now connected by default within the Django integration.

1.7.0

  • The password sanitizer will now attempt to sanitize key=value pairs within strings (such as the querystring).
  • Two new santiziers were added: RemoveStackLocalsProcessor and RemovePostDataProcessor

1.6.0

  • Stacks must now be passed as a list of tuples (frame, lineno) rather than a list of frames. This
    includes calls to logging (extra={'stack': []}), as well as explicit client calls (capture(stack=[])).

    This corrects some issues (mostly in tracebacks) with the wrong lineno being reported for a frame.

1.4

  • added preliminary support for Django 1.8
  • dropped support for Django 1.3
  • When using Django, only try to submit user data if django.contrib.auth is
    installed. Thanks nickbruun for the report and fix!

1.4.0

  • raven now tracks the state of the Sentry server. If it receives an error, it will slow down
    requests to the server (by passing them into a named logger, sentry.errors), and increasingly
    delay the next try with repeated failures, up to about a minute.

1.3.6

  • gunicorn is now disabled in default logging configuration

1.3.5

  • Moved exception and message methods to capture{Exception,Message}.
  • Added captureQuery method.

1.3.4

  • Corrected duplicate DSN behavior in Django client.

1.3.3

  • Django can now be configured by setting SENTRY_DSN.
  • Improve logging for send_remote failures (and correct issue created when
    send_encoded was introduced).
  • Renamed SantizePassworsProcessor to SanitizePassworsProcessor.

1.3.2

  • Support sending the culprit with logging messages as part of extra.

1.3.1

  • Added client.exception and client.message shortcuts.

1.3

  • added support for Django 1.7
  • dropped support for Django 1.2
  • switched from nosetests to py.test

1.3.0

  • Refactored client send API to be more easily extensible.
  • MOAR TESTS!

1.2.2

  • Gracefully handle exceptions in Django client when using integrated
    setup.
  • Added Client.error_logger as a new logger instance that points to
    sentry.errors.

1.2.1

  • Corrected behavior with raven logging errors to send_remote
    which could potentially cause a very large backlog to Sentry
    when it should just log to sentry.errors.
  • Ensure the site argument is sent to the server.

1.2.0

  • Made DSN a first-class citizen throughout raven.
  • Added a Pylons-specific WSGI middleware.
  • Improved the generic WSGI middleware to capture HTTP information.
  • Improved logging and logbook handlers.

1.2

  • support for Python 3

1.1.6

  • Corrected logging stack behavior so that it doesnt capture raven+logging
    extensions are part of the frames.

1.1.5

  • Remove logging attr magic.

1.1.4

  • Correct encoding behavior on bool and float types.

1.1.3

  • Fix 'request' attribute on Django logging.

1.1.2

  • Corrected logging behavior with extra data to match pre 1.x behavior.

1.1.1

  • Handle frames that are missing f_globals and f_locals.
  • Stricter conversion of int and boolean values.
  • Handle invalid sources for templates in Django.

1.1

  • Renamed from opbeat_python to opbeat.
  • Simplified configuration
  • Conform to the updated Opbeat API.

1.1.0

  • varmap was refactored to send keys back to callbacks.
  • SanitizePasswordProcessor now handles http data.

1.0.5

  • Renaming raven2 to raven as it causes too many issues.

1.0.4

  • Corrected a bug in setup_logging.
  • raven now sends "sentry_version" header which is the expected
    server version.

1.0.3

  • Handle more edge cases on stack iteration.

1.0.2

  • Gracefully handle invalid f_locals.

1.0.1

  • All datetimes are assumed to be utcnow() as of Sentry 2.0.0-RC5

1.0.0

  • Now only works with Sentry>=2.0.0 server.
  • raven is now listed as raven2 on PyPi.

1.0

  • Changes to conform to the Opbeat API.
  • Forked from Raven 1.9.0

0.8.0

  • raven.contrib.celery is now useable.
  • raven.contrib.django.celery is now useable.
  • Fixed a bug with request.raw_post_data buffering in Django.

0.7.1

  • Servers would stop iterating after the first successful post which was not the
    intended behavior.

0.7.0

  • You can now explicitly pass a list of frame objects to the process method.

0.6.1

0.6

  • Added a Django-specific WSGI middleware.

0.5.1

0.5

  • Require servers on base Client.
  • Added support for the site option in Client.
  • Moved raven.contrib.django.logging to raven.contrib.django.handlers.

0.4

  • Fixed an infinite loop in iter_tb.

0.3

  • Removed the thrashed key in request.sentry for the Django integration.
  • Changed the logging handler to correctly inherit old-style classes (Add license to the grid detail page #1).
  • Added a client argument to raven.contrib.django.models.get_client().

0.2

  • auto_log_stacks now works with create_from_text
  • added Client.get_ident

0.1

  • Initial version of raven (extracted from django-sentry 1.12.1).

coverage 3.4 -> 4.2

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ä.

.. _issue 495: https://bitbucket.org/ned/coveragepy/issues/495/branch-and-concurrency-are-conflicting

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. Fixes issue 484_. Thanks to Josh Williams for prototyping.
  • 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, thanks to diagnosis and
    testing by Dan Riti. Closes issue 492
    .
  • A new configuration option, report:sort, controls what column of the
    text report is used to sort the rows. Thanks to Dan Wandschneider, this
    closes issue 199_.
  • The HTML report has a more-visible indicator for which column is being
    sorted. Closes issue 298_, thanks to Josh Williams.
  • 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. Closes
    issue 231_, thanks, Nathan Land.
  • When reports are ignoring errors, there's now a warning if a file cannot be
    parsed, rather than being silently ignored. Closes issue 396_. Thanks,
    Matthew Boehm.
  • A new option for coverage debug is available: coverage debug config
    shows the current configuration. Closes issue 454_, thanks to Matthew
    Boehm.
  • Running coverage as a module (python -m coverage) no longer shows the
    program name as __main__.py. Fixes issue 478_. Thanks, Scott Belden.
  • The test_helpers module has been moved into a separate pip-installable
    package: unittest-mixins_.

.. _automatic subprocess measurement: http://coverage.readthedocs.io/en/latest/subprocess.html
.. _issue 199: https://bitbucket.org/ned/coveragepy/issues/199/add-a-way-to-sort-the-text-report
.. _issue 231: https://bitbucket.org/ned/coveragepy/issues/231/various-default-behavior-in-report-phase
.. _issue 298: https://bitbucket.org/ned/coveragepy/issues/298/show-in-html-report-that-the-columns-are
.. _issue 396: https://bitbucket.org/ned/coveragepy/issues/396/coverage-xml-shouldnt-bail-out-on-parse
.. _issue 454: https://bitbucket.org/ned/coveragepy/issues/454/coverage-debug-config-should-be
.. _issue 478: https://bitbucket.org/ned/coveragepy/issues/478/help-shows-silly-program-name-when-running
.. _issue 484: https://bitbucket.org/ned/coveragepy/issues/484/multiprocessing-greenlet-concurrency
.. _issue 492: https://bitbucket.org/ned/coveragepy/issues/492/subprocess-coverage-strange-detection-of
.. _unittest-mixins: https://pypi.python.org/pypi/unittest-mixins

4.1


  • 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.

4.1b3


  • 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, as reported in issue 440_. 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. Fixes issue 90, issue 460 and
    issue 475_.
  • 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, issue 472_ about 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 -&gt;exit
    for missed branches to the exit of a function, rather than a negative number.
    Fixes issue 469_.
  • coverage --help and coverage --version now mention which tracer is
    installed, to help diagnose problems. The docs mention which features need
    the C extension. (issue 479_)
  • 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. This fixes issue 485_.
  • 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. (issue 456_)
  • The coverage.process_startup function now returns the Coverage instance
    it creates, as suggested in issue 481_.
  • Make a small tweak to how we compare threads, to avoid buggy custom
    comparison code in thread classes. (issue 245_)

.. _issue 90: https://bitbucket.org/ned/coveragepy/issues/90/lambda-expression-confuses-branch
.. _issue 245: https://bitbucket.org/ned/coveragepy/issues/245/change-solution-for-issue-164
.. _issue 440: https://bitbucket.org/ned/coveragepy/issues/440/yielded-twisted-failure-marked-as-missed
.. _issue 456: https://bitbucket.org/ned/coveragepy/issues/456/coverage-breaks-with-implicit-namespaces
.. _issue 460: https://bitbucket.org/ned/coveragepy/issues/460/confusing-html-report-for-certain-partial
.. _issue 469: https://bitbucket.org/ned/coveragepy/issues/469/strange-1-line-number-in-branch-coverage
.. _issue 472: https://bitbucket.org/ned/coveragepy/issues/472/html-report-indents-incorrectly-for-one
.. _issue 475: https://bitbucket.org/ned/coveragepy/issues/475/generator-expression-is-marked-as-not
.. _issue 479: https://bitbucket.org/ned/coveragepy/issues/479/clarify-the-need-for-the-c-extension
.. _issue 481: https://bitbucket.org/ned/coveragepy/issues/481/asyncioprocesspoolexecutor-tracing-not
.. _issue 485: https://bitbucket.org/ned/coveragepy/issues/485/coveragereport-ignores-show_missing-and

4.1b2


  • 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.
      This has been fixed, closing issue 466_.
  • The XML report now produces correct package names for modules found in
    directories specified with source=. Fixes issue 465_.
  • coverage report won't produce trailing whitespace.

.. _issue 465: https://bitbucket.org/ned/coveragepy/issues/465/coveragexml-produces-package-names-with-an
.. _issue 466: https://bitbucket.org/ned/coveragepy/issues/466/impossible-missed-branch-to-a-negative< 8000 /a>

4.1b1


  • 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,
      fixing issue 434_.
    • Some long-standing branch coverage bugs were fixed:
      • issue 129_: functions with only a docstring for a body would
        incorrectly report a missing branch on the def line.
    • issue 212_: code in an except block could be incorrectly marked as
      a missing branch.
    • issue 146_: context managers (with statements) in a loop or try
      block could confuse the branch measurement, reporting incorrect partial
      branches.
    • issue 422_: 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. This
    implements the feature requested in issue 131_.
  • Multiprocessing support is now available on Windows. Thanks, Rodrigue
    Cloutier.
  • Files with two encoding declarations are properly supported, fixing
    issue 453_. Thanks, Max Linke.
  • Non-ascii characters in regexes in the configuration file worked in 3.7, but
    stopped working in 4.0. Now they work again, closing issue 455_.
  • Form-feed characters would prevent accurate determination of the beginning of
    statements in the rest of the file. This is now fixed, closing issue 461_.

.. _issue 129: https://bitbucket.org/ned/coveragepy/issues/129/misleading-branch-coverage-of-empty
.. _issue 131: https://bitbucket.org/ned/coveragepy/issues/131/pragma-on-a-decorator-line-should-affect
.. _issue 146: https://bitbucket.org/ned/coveragepy/issues/146/context-managers-confuse-branch-coverage
.. _issue 212: https://bitbucket.org/ned/coveragepy/issues/212/coverage-erroneously-reports-partial
.. _issue 422: https://bitbucket.org/ned/coveragepy/issues/422/python35-partial-branch-marked-as-fully
.. _issue 434: https://bitbucket.org/ned/coveragepy/issues/434/indexerror-in-python-35
.. _issue 453: https://bitbucket.org/ned/coveragepy/issues/453/source-code-encoding-can-only-be-specified
.. _issue 455: https://bitbucket.org/ned/coveragepy/issues/455/unusual-exclusions-stopped-working-in
.. _issue 461: https://bitbucket.org/ned/coveragepy/issues/461/multiline-asserts-need-too-many-pragma

4.0.3


  • Fixed a mysterious problem that manifested in different ways: sometimes
    hanging the process (issue 420), sometimes making database connections
    fail (issue 445
    ).
  • The XML report now has correct &lt;source&gt; elements when using a
    --source= option somewhere besides the current directory. This fixes
    issue 439_. Thanks, Arcady Ivanov.
  • Fixed an unusual edge case of detecting source encodings, described in
    issue 443_.
  • Help messages that mention the command to use now properly use the actual
    command name, which might be different than "coverage". Thanks to Ben
    Finney, this closes issue 438_.

.. _issue 420: https://bitbucket.org/ned/coveragepy/issues/420/coverage-40-hangs-indefinitely-on-python27
.. _issue 438: https://bitbucket.org/ned/coveragepy/issues/438/parameterise-coverage-command-name
.. _issue 439: https://bitbucket.org/ned/coveragepy/issues/439/incorrect-cobertura-file-sources-generated
.. _issue 443: https://bitbucket.org/ned/coveragepy/issues/443/coverage-gets-confused-when-encoding
.. _issue 445: https://bitbucket.org/ned/coveragepy/issues/445/django-app-cannot-connect-to-cassandra

4.0.2


  • More work on supporting unusually encoded source. Fixed issue 431_.
  • Files or directories with non-ASCII characters are now handled properly,
    fixing issue 432_.
  • Setting a trace function with sys.settrace was broken by a change in 4.0.1,
    as reported in issue 436_. This is now fixed.
  • Officially support PyPy 4.0, which required no changes, just updates to the
    docs.

.. _issue 431: https://bitbucket.org/ned/coveragepy/issues/431/couldnt-parse-python-file-with-cp1252
.. _issue 432: https://bitbucket.org/ned/coveragepy/issues/432/path-with-unicode-characters-various
.. _issue 436: https://bitbucket.org/ned/coveragepy/issues/436/disabled-coverage-ctracer-may-rise-from

4.0.1


  • When combining data files, unreadable files will now generate a warning
    instead of failing the command. This is more in line with the older
    coverage.py v3.7.1 behavior, which silently ignored unreadable files.
    Prompted by issue 418_.
  • The --skip-covered option would skip reporting on 100% covered files, but
    also skipped them when calculating total coverage. This was wrong, it should
    only remove lines from the report, not change the final answer. This is now
    fixed, closing issue 423_.
  • In 4.0, the data file recorded a summary of the system on which it was run.
    Combined data files would keep all of those summaries. This could lead to
    enormous data files consisting of mostly repetitive useless information. That
    summary is now gone, fixing issue 415_. If you want summary information,
    get in touch, and we'll figure out a better way to do it.
  • Test suites that mocked os.path.exists would experience strange failures, due
    to coverage.py using their mock inadvertently. This is now fixed, closing
    issue 416_.
  • Importing a __init__ module explicitly would lead to an error:
    AttributeError: &#39;module&#39; object has no attribute &#39;__path__&#39;, as reported
    in issue 410_. This is now fixed.
  • Code that uses sys.settrace(sys.gettrace()) used to incur a more than 2x
    speed penalty. Now there's no penalty at all. Fixes issue 397_.
  • Pyexpat C code will no longer be recorded as a source file, fixing
    issue 419_.
  • The source kit now contains all of the files needed to have a complete source
    tree, re-fixing issue 137_ and closing issue 281_.

.. _issue 281: https://bitbucket.org/ned/coveragepy/issues/281/supply-scripts-for-testing-in-the
.. _issue 397: https://bitbucket.org/ned/coveragepy/issues/397/stopping-and-resuming-coverage-with
.. _issue 410: https://bitbucket.org/ned/coveragepy/issues/410/attributeerror-module-object-has-no
.. _issue 415: https://bitbucket.org/ned/coveragepy/issues/415/repeated-coveragedataupdates-cause
.. _issue 416: https://bitbucket.org/ned/coveragepy/issues/416/mocking-ospathexists-causes-failures
.. _issue 418: https://bitbucket.org/ned/coveragepy/issues/418/json-parse-error
.. _issue 419: https://bitbucket.org/ned/coveragepy/issues/419/nosource-no-source-for-code-path-to-c
.. _issue 423: https://bitbucket.org/ned/coveragepy/issues/423/skip_covered-changes-reported-total

4.0


4.0b3


  • Reporting on an unmeasured file would fail with a traceback. This is now
    fixed, closing issue 403_.
  • The Jenkins ShiningPanda plugin looks for an obsolete file name to find the
    HTML reports to publish, so it was failing under coverage.py 4.0. Now we
    create that file if we are running under Jenkins, to keep things working
    smoothly. issue 404_.
  • Kits used to include tests and docs, but didn't install them anywhere, or
    provide all of the supporting tools to make them useful. Kits no longer
    include tests and docs. If you were using them from the older packages, get
    in touch and help me understand how.

.. _issue 403: https://bitbucket.org/ned/coveragepy/issues/403/hasherupdate-fails-with-typeerror-nonetype
.. _issue 404: https://bitbucket.org/ned/coveragepy/issues/404/shiningpanda-jenkins-plugin-cant-find-html

4.0b2


  • 4.0b1 broke --append creating new data files. This is now fixed, closing
    issue 392_.
  • py.test --cov can write empty data, then touch files due to --source,
    which made coverage.py mistakenly force the data file to record lines instead
    of arcs. This would lead to a "Can't combine line data with arc data" error
    message. This is now fixed, and changed some method names in the
    CoverageData interface. Fixes issue 399_.
  • CoverageData.read_fileobj and CoverageData.write_fileobj replace the
    .read and .write methods, and are now properly inverses of each other.
  • When using report --skip-covered, a message will now be included in the
    report output indicating how many files were skipped, and if all files are
    skipped, coverage.py won't accidentally scold you for having no data to
    report. Thanks, Krystian Kichewko.
  • A new conversion utility has been added: python -m coverage.pickle2json
    will convert v3.x pickle data files to v4.x JSON data files. Thanks,
    Alexander Todorov. Closes issue 395_.
  • A new version identifier is available, coverage.version_info, a plain tuple
    of values similar to sys.version_info_.

.. _issue 392: https://bitbucket.org/ned/coveragepy/issues/392/run-append-doesnt-create-coverage-file
.. _issue 395: https://bitbucket.org/ned/coveragepy/issues/395/rfe-read-pickled-files-as-well-for
.. _issue 399: https://bitbucket.org/ned/coveragepy/issues/399/coverageexception-cant-combine-line-data
.. _sys.version_info: https://docs.python.org/3/library/sys.htmlsys.version_info

4.0b1


  • Coverage.py is now licensed under the Apache 2.0 license. See NOTICE.txt for
    details. Closes issue 313_.
  • The data storage has been completely revamped. The data file is now
    JSON-based instead of a pickle, closing issue 236_. The CoverageData
    class is now a public supported documented API to the data file.
  • A new configuration option, [run] note, lets you set a note that will be
    stored in the runs section of the data file. You can use this to annotate
    the data file with any information you like.
  • Unrecognized configuration options will now print an error message and stop
    coverage.py. This should help prevent configuration mistakes from passing
    silently. Finishes issue 386_.
  • In parallel mode, coverage erase will now delete all of the data files,
    fixing issue 262_.
  • Coverage.py now accepts a directory name for coverage run and will run a
    __main__.py found there, just like Python will. Fixes issue 252_.
    Thanks, Dmitry Trofimov.
  • The XML report now includes a missing-branches attribute. Thanks, Steve
    Peak. This is not a part of the Cobertura DTD, so the XML report no longer
    references the DTD.
  • Missing branches in the HTML report now have a bit more information in the
    right-hand annotations. Hopefully this will make their meaning clearer.
  • All the reporting functions now behave the same if no data had been
    collected, exiting with a status code of 1. Fixed fail_under to be
    applied even when the report is empty. Thanks, Ionel Cristian M�rie�.
  • Plugins are now initialized differently. Instead of looking for a class
    called Plugin, coverage.py looks for a function called coverage_init.
  • A file-tracing plugin can now ask to have built-in Python reporting by
    returning &quot;python&quot; from its file_reporter() method.
  • Code that was executed with exec would be mis-attributed to the file that
    called it. This is now fixed, closing issue 380_.
  • The ability to use item access on Coverage.config (introduced in 4.0a2) has
    been changed to a more explicit Coverage.get_option and
    Coverage.set_option API.
  • The Coverage.use_cache method is no longer supported.
  • The private method Coverage._harvest_data is now called
    Coverage.get_data, and returns the CoverageData containing the
    collected data.
  • The project is consistently referred to as "coverage.py" throughout the code
    and the documentation, closing issue 275_.
  • Combining data files with an explicit configuration file was broken in 4.0a6,
    but now works again, closing issue 385_.
  • coverage combine now accepts files as well as directories.
  • The speed is back to 3.7.1 levels, after having slowed down due to plugin
    support, finishing up issue 387_.

.. _issue 236: https://bitbucket.org/ned/coveragepy/issues/236/pickles-are-bad-and-you-should-feel-bad
.. _issue 252: https://bitbucket.org/ned/coveragepy/issues/252/coverage-wont-run-a-program-with
.. _issue 262: https://bitbucket.org/ned/coveragepy/issues/262/when-parallel-true-erase-should-erase-all
.. _issue 275: https://bitbucket.org/ned/coveragepy/issues/275/refer-consistently-to-project-as-coverage
.. _issue 313: https://bitbucket.org/ned/coveragepy/issues/313/add-license-file-containing-2-3-or-4
.. _issue 380: https://bitbucket.org/ned/coveragepy/issues/380/code-executed-by-exec-excluded-from
.. _issue 385: https://bitbucket.org/ned/coveragepy/issues/385/coverage-combine-doesnt-work-with-rcfile
.. _issue 386: https://bitbucket.org/ned/coveragepy/issues/386/error-on-unrecognised-configuration
.. _issue 387: https://bitbucket.org/ned/coveragepy/issues/387/performance-degradation-from-371-to-40

.. 40 issues closed in 4.0 below here

4.0a6


  • Python 3.5b2 and PyPy 2.6.0 are supported.
  • The original module-level function interface to coverage.py is no longer
    supported. You must now create a coverage.Coverage object, and use
    methods on it.
  • The coverage combine command now accepts any number of directories as
    arguments, and will combine all the data files from those directories. This
    means you don't have to copy the files to one directory before combining.
    Thanks, Christine Lytwynec. Finishes issue 354_.
  • Branch coverage couldn't properly handle certain extremely long files. This
    is now fixed (issue 359_).
  • Branch coverage didn't understand yield statements properly. Mickie Betz
    persisted in pursuing this despite Ned's pessimism. Fixes issue 308_ and
    issue 324_.
  • The COVERAGE_DEBUG environment variable can be used to set the [run] debug
    configuration option to control what internal operations are logged.
  • HTML reports were truncated at formfeed characters. This is now fixed
    (issue 360). It's always fun when the problem is due to a bug in the Python standard library &lt;http://bugs.python.org/issue19035&gt;.
  • Files with incorrect encoding declaration comments are no longer ignored by
    the reporting commands, fixing issue 351_.
  • HTML reports now include a timestamp in the footer, closing issue 299_.
    Thanks, Conrad Ho.
  • HTML reports now begrudgingly use double-quotes rather than single quotes,
    because there are "software engineers" out there writing tools that read HTML
    and somehow have no idea that single quotes exist. Capitulates to the absurd
    issue 361_. Thanks, Jon Chappell.
  • The coverage annotate command now handles non-ASCII characters properly,
    closing issue 363_. Thanks, Leonardo Pistone.
  • Drive letters on Windows were not normalized correctly, now they are. Thanks,
    Ionel Cristian M�rie�.
  • Plugin support had some bugs fixed, closing issue 374_ and issue 375_.
    Thanks, Stefan Behnel.

.. _issue 299: https://bitbucket.org/ned/coveragepy/issue/299/inserted-created-on-yyyy-mm-dd-hh-mm-in
.. _issue 308: https://bitbucket.org/ned/coveragepy/issue/308/yield-lambda-branch-coverage
.. _issue 324: https://bitbucket.org/ned/coveragepy/issue/324/yield-in-loop-confuses-branch-coverage
.. _issue 351: https://bitbucket.org/ned/coveragepy/issue/351/files-with-incorrect-encoding-are-ignored
.. _issue 354: https://bitbucket.org/ned/coveragepy/issue/354/coverage-combine-should-take-a-list-of
.. _issue 359: https://bitbucket.org/ned/coveragepy/issue/359/xml-report-chunk-error
.. _issue 360: https://bitbucket.org/ned/coveragepy/issue/360/html-reports-get-confused-by-l-in-the-code
.. _issue 361: https://bitbucket.org/ned/coveragepy/issue/361/use-double-quotes-in-html-output-to
.. _issue 363: https://bitbucket.org/ned/coveragepy/issue/363/annotate-command-hits-unicode-happy-fun
.. _issue 374: https://bitbucket.org/ned/coveragepy/issue/374/c-tracer-lookups-fail-in
.. _issue 375: https://bitbucket.org/ned/coveragepy/issue/375/ctracer_handle_return-reads-byte-code

4.0a5


  • Plugin support is now implemented in the C tracer instead of the Python
    tracer. This greatly improves the speed of tracing projects using plugins.
  • Coverage.py now always adds the current directory to sys.path, so that
    plugins can import files in the current directory (issue 358_).
  • If the config_file argument to the Coverage constructor is specified as
    ".coveragerc", it is treated as if it were True. This means setup.cfg is
    also examined, and a missing file is not considered an error (issue 357_).
  • Wildly experimental: support for measuring processes started by the
    multiprocessing module. To use, set --concurrency=multiprocessing,
    either on the command line or in the .coveragerc file (issue 117_). Thanks,
    Eduardo Schettino. Currently, this does not work on Windows.
  • A new warning is possible, if a desired file isn't measured because it was
    imported before coverage.py was started (issue 353_).
  • The coverage.process_startup function now will start coverage measurement
    only once, no matter how many times it is called. This fixes problems due
    to unusual virtualenv configurations (issue 340_).
  • Added 3.5.0a1 to the list of supported CPython versions.

.. _issue 117: https://bitbucket.org/ned/coveragepy/issue/117/enable-coverage-measurement-of-code-run-by
.. _issue 340: https://bitbucket.org/ned/coveragepy/issue/340/keyerror-subpy
.. _issue 353: https://bitbucket.org/ned/coveragepy/issue/353/40a3-introduces-an-unexpected-third-case
.. _issue 357: https://bitbucket.org/ned/coveragepy/issue/357/behavior-changed-when-coveragerc-is
.. _issue 358: https://bitbucket.org/ned/coveragepy/issue/358/all-coverage-commands-should-adjust

4.0a4


  • Plugins can now provide sys_info for debugging output.
  • Started plugins documentation.
  • Prepared to move the docs to readthedocs.org.

4.0a3


  • Reports now use file names with extensions. Previously, a report would
    describe a/b/c.py as "a/b/c". Now it is shown as "a/b/c.py". This allows
    for better support of non-Python files, and also fixed issue 69_.
  • The XML report now reports each directory as a package again. This was a bad
    regression, I apologize. This was reported in issue 235_, which is now
    fixed.
  • A new configuration option for the XML report: [xml] package_depth
    controls which directories are identified as packages in the report.
    Directories deeper than this depth are not reported as packages.
    The default is that all directories are reported as packages.
    Thanks, Lex Berezhny.
  • When looking for the source for a frame, check if the file exists. On
    Windows, .pyw files are no longer recorded as .py files. Along the way, this
    fixed issue 290_.
  • Empty files are now reported as 100% covered in the XML report, not 0%
    covered (issue 345_).
  • Regexes in the configuration file are now compiled as soon as they are read,
    to provide error messages earlier (issue 349_).

.. _issue 69: https://bitbucket.org/ned/coveragepy/issue/69/coverage-html-overwrite-files-that-doesnt
.. _issue 235: https://bitbucket.org/ned/coveragepy/issue/235/package-name-is-missing-in-xml-report
.. _issue 290: https://bitbucket.org/ned/coveragepy/issue/290/running-programmatically-with-pyw-files
.. _issue 345: https://bitbucket.org/ned/coveragepy/issue/345/xml-reports-line-rate-0-for-empty-files
.. _issue 349: https://bitbucket.org/ned/coveragepy/issue/349/bad-regex-in-config-should-get-an-earlier

4.0a2


  • Officially support PyPy 2.4, and PyPy3 2.4. Drop support for
    CPython 3.2 and older versions of PyPy. The code won't work on CPython 3.2.
    It will probably still work on older versions of PyPy, but I'm not testing
    against them.
  • Plugins!
  • The original command line switches (-x to run a program, etc) are no
    longer supported.
  • A new option: coverage report --skip-covered will reduce the number of
    files reported by skipping files with 100% coverage. Thanks, Krystian
    Kichewko. This means that empty __init__.py files will be skipped, since
    they are 100% covered, closing issue 315_.
  • You can now specify the --fail-under option in the .coveragerc file
    as the [report] fail_under option. This closes issue 314_.
  • The COVERAGE_OPTIONS environment variable is no longer supported. It was
    a hack for --timid before configuration files were available.
  • The HTML report now has filtering. Type text into the Filter box on the
    index page, and only modules with that text in the name will be shown.
    Thanks, Danny Allen.
  • The textual report and the HTML report used to report partial branches
    differently for no good reason. Now the text report's "missing branches"
    column is a "partial branches" column so that both reports show the same
    numbers. This closes issue 342_.
  • If you specify a --rcfile that cannot be read, you will get an error
    message. Fixes issue 343_.
  • The --debug switch can now be used on any command.
  • You can now programmatically adjust the configuration of coverage.py by
    setting items on Coverage.config after construction.
  • A module run with -m can be used as the argument to --source, fixing
    issue 328_. Thanks, Buck Evan.
  • The regex for matching exclusion pragmas has been fixed to allow more kinds
    of whitespace, fixing issue 334_.
  • Made some PyPy-specific tweaks to improve speed under PyPy. Thanks, Alex
    Gaynor.
  • In some cases, with a source file missing a final newline, coverage.py would
    count statements incorrectly. This is now fixed, closing issue 293_.
  • The status.dat file that HTML reports use to avoid re-creating files that
    haven't changed is now a JSON file instead of a pickle file. This obviates
    issue 287_ and issue 237_.

.. _issue 237: https://bitbucket.org/ned/coveragepy/issue/237/htmlcov-with-corrupt-statusdat
.. _issue 287: https://bitbucket.org/ned/coveragepy/issue/287/htmlpy-doesnt-specify-pickle-protocol
.. _issue 293: https://bitbucket.org/ned/coveragepy/issue/293/number-of-statement-detection-wrong-if-no
.. _issue 314: https://bitbucket.org/ned/coveragepy/issue/314/fail_under-param-not-working-in-coveragerc
.. _issue 315: https://bitbucket.org/ned/coveragepy/issue/315/option-to-omit-empty-files-eg-__init__py
.. _issue 328: https://bitbucket.org/ned/coveragepy/issue/328/misbehavior-in-run-source
.. _issue 334: https://bitbucket.org/ned/coveragepy/issue/334/pragma-not-recognized-if-tab-character
.. _issue 342: https://bitbucket.org/ned/coveragepy/issue/342/console-and-html-coverage-reports-differ
.. _issue 343: https://bitbucket.org/ned/coveragepy/issue/343/an-explicitly-named-non-existent-config

4.0a1


  • Python versions supported are now CPython 2.6, 2.7, 3.2, 3.3, and 3.4, and
    PyPy 2.2.
  • Gevent, eventlet, and greenlet are now supported, closing issue 149_.
    The concurrency setting specifies the concurrency library in use. Huge
    thanks to Peter Portante for initial implementation, and to Joe Jevnik for
    the final insight that completed the work.
  • Options are now also read from a setup.cfg file, if any. Sections are
    prefixed with "coverage:", so the [run] options will be read from the
    [coverage:run] section of setup.cfg. Finishes issue 304_.
  • The report -m command can now show missing branches when reporting on
    branch coverage. Thanks, Steve Leonard. Closes issue 230_.
  • The XML report now contains a <source> element, fixing issue 94_. Thanks
    Stan Hu.
  • The class defined in the coverage module is now called Coverage instead
    of coverage, though the old name still works, for backward compatibility.
  • The fail-under value is now rounded the same as reported results,
    preventing paradoxical results, fixing issue 284_.
  • The XML report will now create the output directory if need be, fixing
    issue 285_. Thanks, Chris Rose.
  • HTML reports no longer raise UnicodeDecodeError if a Python file has
    undecodable characters, fixing issue 303_ and issue 331_.
  • The annotate command will now annotate all files, not just ones relative to
    the current directory, fixing issue 57_.
  • The coverage module no longer causes deprecation warnings on Python 3.4 by
    importing the imp module, fixing issue 305_.
  • Encoding declarations in source files are only considered if they are truly
    comments. Thanks, Anthony Sottile.

.. _issue 57: https://bitbucket.org/ned/coveragepy/issue/57/annotate-command-fails-to-annotate-many
.. _issue 94: https://bitbucket.org/ned/coveragepy/issue/94/coverage-xml-doesnt-produce-sources
.. _issue 149: https://bitbucket.org/ned/coveragepy/issue/149/coverage-gevent-looks-broken
.. _issue 230: https://bitbucket.org/ned/coveragepy/issue/230/show-line-no-for-missing-branches-in
.. _issue 284: https://bitbucket.org/ned/coveragepy/issue/284/fail-under-should-show-more-precision
.. _issue 285: https://bitbucket.org/ned/coveragepy/issue/285/xml-report-fails-if-output-file-directory
.. _issue 303: https://bitbucket.org/ned/coveragepy/issue/303/unicodedecodeerror
.. _issue 304: https://bitbucket.org/ned/coveragepy/issue/304/attempt-to-get-configuration-from-setupcfg
.. _issue 305: https://bitbucket.org/ned/coveragepy/issue/305/pendingdeprecationwarning-the-imp-module
.. _issue 331: https://bitbucket.org/ned/coveragepy/issue/331/failure-of-encoding-detection-on-python2

3.7.1


  • Improved the speed of HTML report generation by about 20%.
  • Fixed the mechanism for finding OS-installed static files for the HTML report
    so that it will actually find OS-installed static files.

3.7


  • Added the --debug switch to coverage run. It accepts a list of
    options indicating the type of internal activity to log to stderr.
  • Improved the branch coverage facility, fixing issue 92_ and issue 175_.
  • Running code with coverage run -m now behaves more like Python does,
    setting sys.path properly, which fixes issue 207_ and issue 242_.
  • Coverage.py can now run .pyc files directly, closing issue 264_.
  • Coverage.py properly supports .pyw files, fixing issue 261_.
  • Omitting files within a tree specified with the source option would
    cause them to be incorrectly marked as unexecuted, as described in
    issue 218_. This is now fixed.
  • When specifying paths to alias together during data combining, you can now
    specify relative paths, fixing issue 267_.
  • Most file paths can now be specified with username expansion (~/src, or
    ~build/src, for example), and with environment variable expansion
    (build/$BUILDNUM/src).
  • Trying to create an XML report with no files to report on, would cause a
    ZeroDivideError, but no longer does, fixing issue 250_.
  • When running a threaded program under the Python tracer, coverage.py no
    longer issues a spurious warning about the trace function changing: "Trace
    function changed, measurement is likely wrong: None." This fixes issue 164_.
  • Static files necessary for HTML reports are found in system-installed places,
    to ease OS-level packaging of coverage.py. Closes issue 259_.
  • Source files with encoding declarations, but a blank first line, were not
    decoded properly. Now they are. Thanks, Roger Hu.
  • The source kit now includes the __main__.py file in the root coverage
    directory, fixing issue 255_.

.. _issue 92: https://bitbucket.org/ned/coveragepy/issue/92/finally-clauses-arent-treated-properly-in
.. _issue 164: https://bitbucket.org/ned/coveragepy/issue/164/trace-function-changed-warning-when-using
.. _issue 175: https://bitbucket.org/ned/coveragepy/issue/175/branch-coverage-gets-confused-in-certain
.. _issue 207: https://bitbucket.org/ned/coveragepy/issue/207/run-m-cannot-find-module-or-package-in
.. _issue 242: https://bitbucket.org/ned/coveragepy/issue/242/running-a-two-level-package-doesnt-work
.. _issue 218: https://bitbucket.org/ned/coveragepy/issue/218/run-command-does-not-respect-the-omit-flag
.. _issue 250: https://bitbucket.org/ned/coveragepy/issue/250/uncaught-zerodivisionerror-when-generating
.. _issue 255: https://bitbucket.org/ned/coveragepy/issue/255/directory-level-__main__py-not-included-in
.. _issue 259: https://bitbucket.org/ned/coveragepy/issue/259/allow-use-of-system-installed-third-party
.. _issue 261: https://bitbucket.org/ned/coveragepy/issue/261/pyw-files-arent-reported-properly
.. _issue 264: https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files
.. _issue 267: https://bitbucket.org/ned/coveragepy/issue/267/relative-path-aliases-dont-work

3.6


  • Added a page to the docs about troublesome situations, closing issue 226,
    and added some info to the TODO file, closing issue 227
    .

.. _issue 226: https://bitbucket.org/ned/coveragepy/issue/226/make-readme-section-to-describe-when
.. _issue 227: https://bitbucket.org/ned/coveragepy/issue/227/update-todo

3.6b3


  • Beta 2 broke the nose plugin. It's fixed again, closing issue 224_.

.. _issue 224: https://bitbucket.org/ned/coveragepy/issue/224/36b2-breaks-nosexcover

3.6b2


  • Coverage.py runs on Python 2.3 and 2.4 again. It was broken in 3.6b1.
  • The C extension is optionally compiled using a different more widely-used
    technique, taking another stab at fixing issue 80_ once and for all.
  • Combining data files would create entries for phantom files if used with
    source and path aliases. It no longer does.
  • debug sys now shows the configuration file path that was read.
  • If an oddly-behaved package claims that code came from an empty-string
    file name, coverage.py no longer associates it with the directory name,
    fixing issue 221_.

.. _issue 221: https://bitbucket.org/ned/coveragepy/issue/221/coveragepy-incompatible-with-pyratemp

3.6b1


  • Wildcards in include= and omit= arguments were not handled properly
    in reporting functions, though they were when running. Now they are handled
    uniformly, closing issue 143_ and issue 163_. NOTE: it is possible
    that your configurations may now be incorrect. If you use include or
    omit during reporting, whether on the command line, through the API, or
    in a configuration file, please check carefully that you were not relying on
    the old broken behavior.
  • The report, html, and xml commands now accept a --fail-under
    switch that indicates in the exit status whether the coverage percentage was
    less than a particular value. Closes issue 139_.
  • The reporting functions coverage.report(), coverage.html_report(), and
    coverage.xml_report() now all return a float, the total percentage covered
    measurement.
  • The HTML report's title can now be set in the configuration file, with the
    --title switch on the command line, or via the API.
  • Configuration files now support substitution of environment variables, using
    syntax like ${WORD}. Closes issue 97_.
  • Embarrassingly, the [xml] output= setting in the .coveragerc file simply
    didn't work. Now it does.
  • The XML report now consistently uses file names for the file name attribute,
    rather than sometimes using module names. Fixes issue 67_.
    Thanks, Marcus Cobden.
  • Coverage percentage metrics are now computed slightly differently under
    branch coverage. This means that completely unexecuted files will now
    correctly have 0% coverage, fixing issue 156_. This also means that your
    total coverage numbers will generally now be lower if you are measuring
    branch coverage.
  • When installing, now in addition to creating a "coverage" command, two new
    aliases are also installed. A "coverage2" or "coverage3" command will be
    created, depending on whether you are installing in Python 2.x or 3.x.
    A "coverage-X.Y" command will also be created corresponding to your specific
    version of Python. Closes issue 111_.
  • The coverage.py installer no longer tries to bootstrap setuptools or
    Distribute. You must have one of them installed first, as issue 202_
    recommended.
  • The coverage.py kit now includes docs (closing issue 137_) and tests.
  • On Windows, files are now reported in their correct case, fixing issue 89_
    and issue 203_.
  • If a file is missing during reporting, the path shown in the error message
    is now correct, rather than an incorrect path in the current directory.
    Fixes issue 60_.
  • Running an HTML report in Python 3 in the same directory as an old Python 2
    HTML report would fail with a UnicodeDecodeError. This issue (issue 193_)
    is now fixed.
  • Fixed yet another error trying to parse non-Python files as Python, this
    time an IndentationError, closing issue 82_ for the fourth time...
  • If coverage xml fails because there is no data to report, it used to
    create a zero-length XML file. Now it doesn't, fixing issue 210_.
  • Jython files now work with the --source option, fixing issue 100_.
  • Running coverage.py under a debugger is unlikely to work, but it shouldn't
    fail with "TypeError: 'NoneType' object is not iterable". Fixes issue 201_.
  • On some Linux distributions, when installed with the OS package manager,
    coverage.py would report its own code as part of the results. Now it won't,
    fixing issue 214_, though this will take some time to be repackaged by the
    operating systems.
  • Docstrings for the legacy singleton methods are more helpful. Thanks Marius
    Gedminas. Closes issue 205_.
  • The pydoc tool can now show documentation for the class coverage.coverage.
    Closes issue 206_.
  • Added a page to the docs about contributing to coverage.py, closing
    issue 171_.
  • When coverage.py ended unsuccessfully, it may have reported odd errors like
    &#39;NoneType&#39; object has no attribute &#39;isabs&#39;. It no longer does,
    so kiss issue 153_ goodbye.

.. _issue 60: https://bitbucket.org/ned/coveragepy/issue/60/incorrect-path-to-orphaned-pyc-files
.. _issue 67: https://bitbucket.org/ned/coveragepy/issue/67/xml-report-filenames-may-be-generated
.. _issue 89: https://bitbucket.org/ned/coveragepy/issue/89/on-windows-all-packages-are-reported-in
.. _issue 97: https://bitbucket.org/ned/coveragepy/issue/97/allow-environment-variables-to-be
.. _issue 100: https://bitbucket.org/ned/coveragepy/issue/100/source-directive-doesnt-work-for-packages
.. _issue 111: https://bitbucket.org/ned/coveragepy/issue/111/when-installing-coverage-with-pip-not
.. _issue 137: https://bitbucket.org/ned/coveragepy/issue/137/provide-docs-with-source-distribution
.. _issue 139: https://bitbucket.org/ned/coveragepy/issue/139/easy-check-for-a-certain-coverage-in-tests
.. _issue 143: https://bitbucket.org/ned/coveragepy/issue/143/omit-doesnt-seem-to-work-in-coverage
.. _issue 153: https://bitbucket.org/ned/coveragepy/issue/153/non-existent-filename-triggers
.. _issue 156: https://bitbucket.org/ned/coveragepy/issue/156/a-completely-unexecuted-file-shows-14
.. _issue 163: https://bitbucket.org/ned/coveragepy/issue/163/problem-with-include-and-omit-filename
.. _issue 171: https://bitbucket.org/ned/coveragepy/issue/171/how-to-contribute-and-run-tests
.. _issue 193: https://bitbucket.org/ned/coveragepy/issue/193/unicodedecodeerror-on-htmlpy
.. _issue 201: https://bitbucket.org/ned/coveragepy/issue/201/coverage-using-django-14-with-pydb-on
.. _issue 202: https://bitbucket.org/ned/coveragepy/issue/202/get-rid-of-ez_setuppy-and
.. _issue 203: https://bitbucket.org/ned/coveragepy/issue/203/duplicate-filenames-reported-when-filename
.. _issue 205: https://bitbucket.org/ned/coveragepy/issue/205/make-pydoc-coverage-more-friendly
.. _issue 206: https://bitbucket.org/ned/coveragepy/issue/206/pydoc-coveragecoverage-fails-with-an-error
.. _issue 210: https://bitbucket.org/ned/coveragepy/issue/210/if-theres-no-coverage-data-coverage-xml
.. _issue 214: https://bitbucket.org/ned/coveragepy/issue/214/coveragepy-measures-itself-on-precise

3.5.3


  • Line numbers in the HTML report line up better with the source lines, fixing
    issue 197_, thanks Marius Gedminas.
  • When specifying a directory as the source= option, the directory itself no
    longer needs to have a __init__.py file, though its sub-directories do,
    to be considered as source files.
  • Files encoded as UTF-8 with a BOM are now properly handled, fixing
    issue 179_. Thanks, Pablo Carballo.
  • Fixed more cases of non-Python files being reported as Python source, and
    then not being able to parse them as Python. Closes issue 82_ (again).
    Thanks, Julian Berman.
  • Fixed memory leaks under Python 3, thanks, Brett Cannon. Closes issue 147_.
  • Optimized .pyo files may not have been handled correctly, issue 195_.
    Thanks, Marius Gedminas.
  • Certain unusually named file paths could have been mangled during reporting,
    issue 194_. Thanks, Marius Gedminas.
  • Try to do a better job of the impossible task of detecting when we can't
    build the C extension, fixing issue 183_.
  • Testing is now done with tox_, thanks, Marc Abramowitz.

.. _issue 147: https://bitbucket.org/ned/coveragepy/issue/147/massive-memory-usage-by-ctracer
.. _issue 179: https://bitbucket.org/ned/coveragepy/issue/179/htmlreporter-fails-when-source-file-is
.. _issue 183: https://bitbucket.org/ned/coveragepy/issue/183/install-fails-for-python-23
.. _issue 194: https://bitbucket.org/ned/coveragepy/issue/194/filelocatorrelative_filename-could-mangle
.. _issue 195: https://bitbucket.org/ned/coveragepy/issue/195/pyo-file-handling-in-codeunit
.. _issue 197: https://bitbucket.org/ned/coveragepy/issue/197/line-numbers-in-html-report-do-not-align
.. _tox: http://tox.readthedocs.org/

3.5.2


3.5.2b1


  • The HTML report has slightly tweaked controls: the buttons at the top of
    the page are color-coded to the source lines they affect.
  • Custom CSS can be applied to the HTML report by specifying a CSS file as
    the extra_css configuration value in the [html] section.
  • Source files with custom encodings declared in a comment at the top are now
    properly handled during reporting on Python 2. Python 3 always handled them
    properly. This fixes issue 157_.
  • Backup files left behind by editors are no longer collected by the source=
    option, fixing issue 168_.
  • If a file doesn't parse properly as Python, we don't report it as an error
    if the file name seems like maybe it wasn't meant to be Python. This is a
    pragmatic fix for issue 82_.
  • The -m switch on coverage report, which includes missing line numbers
    in the summary report, can now be specified as show_missing in the
    config file. Closes issue 173_.
  • When running a module with coverage run -m &lt;modulename&gt;, certain details
    of the execution environment weren't the same as for
    python -m &lt;modulename&gt;. This had the unfortunate side-effect of making
    coverage run -m unittest discover not work if you had tests in a
    directory named "test". This fixes issue 155_ and issue 142_.
  • Now the exit status of your product code is properly used as the process
    status when running python -m coverage run .... Thanks, JT Olds.
  • When installing into pypy, we no longer attempt (and fail) to compile
    the C tracer function, closing issue 166_.

.. _issue 142: https://bitbucket.org/ned/coveragepy/issue/142/executing-python-file-syspath-is-replaced
.. _issue 155: https://bitbucket.org/ned/coveragepy/issue/155/cant-use-coverage-run-m-unittest-discover
.. _issue 157: https://bitbucket.org/ned/coveragepy/issue/157/chokes-on-source-files-with-non-utf-8
.. _issue 166: https://bitbucket.org/ned/coveragepy/issue/166/dont-try-to-compile-c-extension-on-pypy
.. _issue 168: https://bitbucket.org/ned/coveragepy/issue/168/dont-be-alarmed-by-emacs-droppings
.. _issue 173: https://bitbucket.org/ned/coveragepy/issue/173/theres-no-way-to-specify-show-missing-in

3.5.2.b1

3.5.1


  • The [paths] feature unfortunately didn't work in real world situations
    where you wanted to, you know, report on the combined data. Now all paths
    stored in the combined file are canonicalized properly.

3.5.1b1


  • When combining data files from parallel runs, you can now instruct
    coverage.py about which directories are equivalent on different machines. A
    [paths] section in the configuration file lists paths that are to be
    considered equivalent. Finishes issue 17_.
  • for-else constructs are understood better, and don't cause erroneous partial
    branch warnings. Fixes issue 122_.
  • Branch coverage for with statements is improved, fixing issue 128_.
  • The number of partial branches reported on the HTML summary page was
    different than the number reported on the individual file pages. This is
    now fixed.
  • An explicit include directive to measure files in the Python installation
    wouldn't work because of the standard library exclusion. Now the include
    directive takes precedence, and the files will be measured. Fixes
    issue 138_.
  • The HTML report now handles Unicode characters in Python source files
    properly. This fixes issue 124_ and issue 144_. Thanks, Devin
    Jeanpierre.
  • In order to help the core developers measure the test coverage of the
    standard library, Brandon Rhodes devised an aggressive hack to trick Python
    into running some coverage.py code before anything else in the process.
    See the coverage/fullcoverage directory if you are interested.

.. _issue 17: http://bitbucket.org/ned/coveragepy/issue/17/support-combining-coverage-data-from
.. _issue 122: http://bitbucket.org/ned/coveragepy/issue/122/for-else-always-reports-missing-branch
.. _issue 124: http://bitbucket.org/ned/coveragepy/issue/124/no-arbitrary-unicode-in-html-reports-in
.. _issue 128: http://bitbucket.org/ned/coveragepy/issue/128/branch-coverage-of-with-statement-in-27
.. _issue 138: http://bitbucket.org/ned/coveragepy/issue/138/include-should-take-precedence-over-is
.. _issue 144: http://bitbucket.org/ned/coveragepy/issue/144/failure-generating-html-output-for

3.5


  • The HTML report hotkeys now behave slightly differently when the current
    chunk isn't visible at all: a chunk on the screen will be selected,
    instead of the old behavior of jumping to the literal next chunk.
    The hotkeys now work in Google Chrome. Thanks, Guido van Rossum.

3.5b1


  • The HTML report now has hotkeys. Try n, s, m, x, b,
    p, and c on the overview page to change the column sorting.
    On a file page, r, m, x, and p toggle the run, missing,
    excluded, and partial line markings. You can navigate the highlighted
    sections of code by using the j and k keys for next and previous.
    The 1 (one) key jumps to the first highlighted section in the file,
    and 0 (zero) scrolls to the top of the file.
  • The --omit and --include switches now interpret their values more
    usefully. If the value starts with a wildcard character, it is used as-is.
    If it does not, it is interpreted relative to the current directory.
    Closes issue 121_.
  • Partial branch warnings can now be pragma'd away. The configuration option
    partial_branches is a list of regular expressions. Lines matching any of
    those expressions will never be marked as a partial branch. In addition,
    there's a built-in list of regular expressions marking statements which should
    never be marked as partial. This list includes while True:, while 1:,
    if 1:, and if 0:.
  • The coverage() constructor accepts single strings for the omit= and
    include= arguments, adapting to a common error in programmatic use.
  • Modules can now be run directly using coverage run -m modulename, to
    mirror Python's -m flag. Closes issue 95_, thanks, Brandon Rhodes.
  • coverage run didn't emulate Python accurately in one small detail: the
    current directory inserted into sys.path was relative rather than
    absolute. This is now fixed.
  • HTML reporting is now incremental: a record is kept of the data that
    produced the HTML reports, and only files whose data has changed will
    be generated. This should make most HTML reporting faster.
  • Pathological code execution could disable the trace function behind our
    backs, leading to incorrect code measurement. Now if this happens,
    coverage.py will issue a warning, at least alerting you to the problem.
    Closes issue 93_. Thanks to Marius Gedminas for the idea.
  • The C-based trace function now behaves properly when saved and restored
    with sys.gettrace() and sys.settrace(). This fixes issue 125_
    and issue 123_. Thanks, Devin Jeanpierre.
  • Source files are now opened with Python 3.2's tokenize.open() where
    possible, to get the best handling of Python source files with encodings.
    Closes issue 107_, thanks, Brett Cannon.
  • Syntax errors in supposed Python files can now be ignored during reporting
    with the -i switch just like other source errors. Closes issue 115_.
  • Installation from source now succeeds on machines without a C compiler,
    closing issue 80_.
  • Coverage.py can now be run directly from a working tree by specifying
    the directory name to python: python coverage_py_working_dir run ....
    Thanks, Brett Cannon.
  • A little bit of Jython support: coverage run can now measure Jython
    execution by adapting when $py.class files are traced. Thanks, Adi Roiban.
    Jython still doesn't provide the Python libraries needed to make
    coverage reporting work, unfortunately.
  • Internally, files are now closed explicitly, fixing issue 104_. Thanks,
    Brett Cannon.

.. _issue 80: https://bitbucket.org/ned/coveragepy/issue/80/is-there-a-duck-typing-way-to-know-we-cant
.. _issue 93: http://bitbucket.org/ned/coveragepy/issue/93/copying-a-mock-object-breaks-coverage
.. _issue 95: https://bitbucket.org/ned/coveragepy/issue/95/run-subcommand-should-take-a-module-name
.. _issue 104: https://bitbucket.org/ned/coveragepy/issue/104/explicitly-close-files
.. _issue 107: https://bitbucket.org/ned/coveragepy/issue/107/codeparser-not-opening-source-files-with
.. _issue 115: https://bitbucket.org/ned/coveragepy/issue/115/fail-gracefully-when-reporting-on-file
.. _issue 121: https://bitbucket.org/ned/coveragepy/issue/121/filename-patterns-are-applied-stupidly
.. _issue 123: https://bitbucket.org/ned/coveragepy/issue/123/pyeval_settrace-used-in-way-that-breaks
.. _issue 125: https://bitbucket.org/ned/coveragepy/issue/125/coverage-removes-decoratortoolss-tracing

django-extensions 1.5.2 -> 1.6.7

1.6.7


Changes:

  • Fix: describe_form, fix No module named 'django.db.models.loading' error
  • Improvement: shell_plus, Add a setting to prefix all models in an application 887
  • Improvement: pipchecker, check for requirements-{dev,prod}.txt as well
  • Docs: pipchecker, update documentation

1.6.6


Changes:

  • Fix: admin_generator, fix for using all apps in Django <1.7
  • Fix: dump_script, fix for using all apps in Django <1.7
  • Fix: UniqueFieldMixin, resolve get_fields_with_model deprecation Django 1.10
  • Fix: runprofileserver, Fix call grind format to enable source code navigation in qcachegrind.
  • Docs: runserver_plus, add a little note about the debugger PIN.

1.6.5


Bumped version number since PyPi returns 500 errors while uploading packages :(

1.6.4


Changes:

  • Fix: jobs cache_cleanup, use caches instead of deprecated get_cache
  • Fix: ModificationDateTimeField, missing default value for update_modified
  • Fix: modelviz, use get_model_compat and look up missing app_label
  • Fix: modelviz, use get_models_for_app instead of get_models_compat
  • Fix: dumpscript, use list_app_labels instead of get_apps when no app_labels are given
  • Improvement: compat.py, move code from try to else block for Django 1.7+
  • Docstring: get_models_for_app, clearify argument

1.6.3


Bumped version number for incomplete PyPi uplaod

1.6.2


The long over due release :-)

Changes:

  • Fix: JsonFields, do not parse floats as decimals. This fixes bugs that causes
    them to be returned as strings after multiple saves. Note that this can
    be backwards incompatible !
  • Fix: use add_arguments() instead of option_list (Django 1.10)
  • Fix: create_command, Django 1.9 fixes
  • Fix: create_jobs, Django 1.9 fixes
  • Fix: RandomCharField, when not unique get the first value from the generator
  • Fix: graph_models, render() must be called with a dict
  • Fix: graph_models, use force_bytes fixes command for Python 3
  • Fix: graph_models, fix django 1.6 compatibility for strings defined relation
  • Fix: graph_models, fix settings.GRAPH_MODELS breaking the command
  • Fix: graph_models, add support for lazy relationships
  • Fix: ForeignKeyAutocompleteAdmin, url_patterns is just a list (Django 1.9+)
  • Fix: ForeignKeySearchInput, use url reversing instead of hardcoded paths
  • Fix: find_template, Fix for Django 1.8+
  • Fix: admin_generator, incompatible "default" identifier raising TypeError
  • Improvement: show_urls, add json and pretty-json formatting
  • Improvement: runserver_plus, add support for whitenoise
  • Improvement: ModificationDateTimeField, add parameter to preserve timestamps on save
  • Improvement: runprofileserver, raise command error when hotspot is not available
  • Improvement: reset_db, better parsing of mysql cnf file
  • Improvement: restored coverage for Python 3.2
  • Improvement: pep8 fixes, remove unused shims & imports & commented code
  • Improvement: graph_models, JSON output
  • Improvement: graph_models, add wildcard filters
  • Docs: removed text on donations, the hope was that we could generate some
    funds to have more consistent development and outreach.
  • Docs: runserver_plus, added some documentation about LOGGING
  • Docs: runscript, update documentation to match Django tutorial for Django 1.8+
  • Docs: runprofileserver, add documentation on profiler choices
  • Docs: update_permissions, add basic documentation for command

1.6.1


Changes:

  • Revert: JSONField, revert Django 1.9 fix as it breaks the field (ticket 781)

1.6.0


Changes:

  • Fix: Django 1.9 compatibility
  • New: runserver_plus, add --startup-messages to control when to show them
  • New: added support for Python 3.5
  • Improvement: show_template_tags, renamed from show_templatetags for consistancy
  • Removed: jquery library (after dropping support for Django 1.5)

1.5.9


Changes:

  • Fix: wheel still had the old migrations directory in the package

1.5.8


Changes:

  • Fix: migrations, fix BadMigrationError with Django 1.8+
  • Fix: reset_db, Django 1.8+ compatibility fix
  • Fix: runserver_plus, fix signature of null_technical_500_response for Django 1.8+
  • Fix: graph_models, use force_bytes instead of .decode('utf8')
  • Improvement: print_settings, add format option to only print values
  • Improvement: print_esttings, add format option for simple key = value text output
  • Improvement: email_export, documentation updates
  • Improvement: shell_plus, auto load conditional db expressions Case and When

1.5.7


Changes:

  • Fix: CreationDateTimeField, migration error
  • Fix: ModificationDateTimeField, migration error
  • Fix: shell_plus, options is not always in db config dictionary
  • Fix: admin filters, contrib.admin.util fallback code
  • Fix: graph_models, currectly support parsing lists for cli options
  • Improvement: sqldsn, support postfix
  • Improvement: utils, remove get_project_root function

1.5.6


Changes:

  • New: RandomCharField, prepopulates random character string
  • New: (Not)NullFieldListFilter, filters for admin
  • New: runserver_plus, integrate with django-pdb
  • New: runserver_plus, add check_migrations from Django
  • Improvement: show_urls, nested namespace support
  • Improvement: show_urls, allow to specify alternative urlconf
  • Improvement: show_urls, support i18n_patterns
  • Improvement: show_urls, use --language to filter on a particular language
  • Improvement: admin_generator, added docstrings to module
  • Improvement: shell_plus, allow cli arguments to be passed to ipython
  • Improvement: shell_plus, fixed PYTHONPATH bug when using django-admin shell_plus --notebook
  • Improvement: shell_plus, set application_name on PostgreSQL databases
  • Improvement: shell_plus, load user pypython config file
  • Improvement: CreationDateTimeField, use auto_now_add instead of default ModificationDateTimeField
  • Improvement: ModificationDateTimeField, use auto_now instead of pre_save method
  • Improvement: ForeignKeyAutocompleteAdmin, added ability to filter autocomplete query
  • Fix: shell_plus, support for pypython>=0.27
  • Fix: shell_plus, load apps and models directly through the apps interface when available
  • Fix: shell_plus, use ipython start_ipython instead of embed
  • Fix: shell_plus, fix swalling ImportErrors with IPython 3 and higher
  • Fix: dumpscript, fix missing imports in dumped script
  • Fix: admin_generator, fix issues with Django 1.9
  • Fix: template tags, move exception for import failure to inside of the template tags
  • Fix: reset_db, fix for Django 1.9
  • Fix: runserver_plus, fix for Django 1.9

1.5.5


Changes:

  • Fix: sqldiff, previous Django 1.8 fix was slightly broken

1.5.4


Changes:

  • Improvement: syncdata, add skip-remove option
  • Improvement: logging, report how often mail was ratelimited
  • Fix: admin, Django 1.8 compatibility module_name is now called model_name
  • Fix: notes, Python 3.x fix force output of filter into list
  • Fix: sqldiff, fix for Django 1.8

1.5.3


Changes:

  • New: ratelimiter, a simple ratelimiter filter for Python logging
  • Fix: various improvements for Django 1.8
  • Fix: sync_s3, use os.walk instead of os.path.walk (py3 fix)
  • Improvement: pipchecker, use name instead of url_name to fix casing mismatches
  • Improvement: pipchecker, use https
  • Improvement: pipchecker, fix issues with new(er) pip versions
  • Docs: fixed a few typos
  • Docs: added documentation about NOTEBOOK_ARGUMENTS settings

django-storages 1.1.3 -> 1.4.1

1.4.1


  • Files that have a guessable encoding (e.g. gzip or compress) will be uploaded with that Content-Encoding
    in the s3boto backend. Compressable types such as application/javascript will still be gzipped.
    PR 122_ thanks cambonf
  • Fix DropBoxStorage.exists check and add DropBoxStorage.url (127_) thanks zuck
  • Add GS_HOST setting (with a default of GSConnection.DefaultHost) to fix GSBotoStorage.
    Issue 124. Fixed in 125. Thanks patgmiller dcgoss.

.. _122: jschneier/django-storages#122
.. _127: jschneier/django-storages#127
.. _124: jschneier/django-storages#124
.. _125: jschneier/django-storages#125

1.4


  • This package is now released on PyPI as django-storages. Please update your requirements files to
    django-storages==1.4.

1.3.2


  • Fix memory leak from not closing underlying temp file in s3boto backend (106_) thanks kmmbvnr
  • Allow easily specifying a custom expiry time when generating a url for S3BotoStorage (96_) thanks mattbriancon
  • Check for bucket existence when the empty path ('') is passed to storage.exists in S3BotoStorage -
    this prevents a crash when running collecstatic -c on Django 1.9.1 (112) fixed in 116 thanks xblitz

.. _106: jschneier/django-storages#106
.. _96: jschneier/django-storages#96
.. _112: jschneier/django-storages#112
.. _116: jschneier/django-storages#116

1.3.1


  • A few Azure Storage fixes pass the content-type to Azure, handle chunked content, fix url thanks erlingbo
  • Add support for a Dropbox (dropbox) storage backend, thanks ZuluPro (76_)
  • Various fixes to the apache_libcloud backend [return the number of bytes asked for by .read, make .name non-private, don't
    initialize to an empty BytesIO object] thanks kaedroho (55_)
  • Fix multi-part uploads in s3boto backend not respecting AWS_S3_ENCRYPTION (94_) thanks andersontep
  • Automatically gzip svg files thanks comandrei (100_)

.. __: jschneier/django-storages#45
.. _76: jschneier/django-storages#76
.. _55: jschneier/django-storages#55
.. _94: jschneier/django-storages#94
.. _100: jschneier/django-storages#100

1.3


  • Drop Support for Django 1.5 and Python2.6
  • Remove previously deprecated mongodb backend
  • Remove previously deprecated parse_ts_extended from s3boto storage
  • Add support for Django 1.8+ (36__)
  • Add AWS_S3_PROXY_HOST and AWS_S3_PROXY_PORT settings for s3boto backend (41_)
  • Fix Python3K compat issue in apache_libcloud (52_)
  • Fix Google Storage backend not respecting GS_IS_GZIPPED setting (51__, 60_) thanks stmos
  • Rename FTP _name attribute to name which is what the Django File api is expecting (70_)
  • Put StorageMixin first in inheritance to maintain backwards compat with older versions of Django (63_)

.. __: jschneier/django-storages#36
.. _41: jschneier/django-storages#41
.. _52: jschneier/django-storages#52
.. __: jschneier/django-storages#51
.. _60: jschneier/django-storages#60
.. _70: jschneier/django-storages#70
.. _63: jschneier/django-storages#63

1.2.3


  • Variety of FTP backend fixes (fix exists, add modified_time, remove call to non-existent function) (26_)
  • Apparently the year changed to 2015

.. _26: jschneier/django-storages#26

1.2.2


  • Remove always show all warnings filter (21_)
  • Release package as a wheel
  • Avoid resource warning during install (20__)
  • Made S3BotoStorage deconstructible (previously only S3BotoStorageFile was deconstructible) (19_)

.. _21: jschneier/django-storages#21
.. __: jschneier/django-storages#20
.. _19: jschneier/django-storages#19

1.2.1


  • Fix storage.modified_time crashing on new files when AWS_PRELOAD_METADATA=True (11, 12__, 14)
  • Deprecate and issue warning about parse_ts_extended
  • Deprecate mongodb backend - django-mongodb-engine now ships its own storage backend

.. _11: jschneier/django-storages#11
__ jschneier/django-storages#12
.. _14: jschneier/django-storages#14

1.2


  • Add text/javascript mimetype to S3BotoStorage gzip allowed defaults
  • Add support for Django 1.7 migrations in S3BotoStorage and ApacheLibCloudStorage (5, 8)
  • Python3K (3.3+) now available for S3Boto backend (4_)
  • Remove legacy S3 storage (1_)
  • Remove mosso files backend (2_)

.. _8: jschneier/django-storages#8
.. _5: jschneier/django-storages#5
.. _4: jschneier/django-storages#4
.. _1: jschneier/django-storages#1
.. _2: jschneier/django-storages#2

NOTE: Version 1.1.9 is the first release of django-storages after the fork.
It represents the current (2014-12-08) state of the original django-storages in
master with no additional changes. This is the first release of the code base
since March 2013.

1.1.9


  • Fix syntax for Python3 with pull-request 91_
  • Support pushing content type from File object to GridFS with pull-request 90_
  • Support passing a region to the libcloud driver with pull-request 86_
  • Handle trailing slash paths fixes 188_ fixed by pull-request 85_
  • Use a SpooledTemporaryFile to conserve memory in S3BotoFile pull-request 69_
  • Guess content-type for S3BotoStorageFile the same way that _save() in S3BotoStorage does
  • Pass headers and response_headers through from url to generate_url in S3BotoStorage pull-request 65_
  • Added AWS_S3_HOST, AWS_S3_PORT and AWS_S3_USE_SSL settings to specify host, port and is_secure in pull-request 66_

.. _91: https://bitbucket.org/david/django-storages/pull-request/91/
.. _90: https://bitbucket.org/david/django-storages/pull-request/90/
.. _86: https://bitbucket.org/david/django-storages/pull-request/86/
.. _188: https://bitbucket.org/david/django-storages/issue/188/s3boto-_clean_name-is-broken-and-leads-to
.. _85: https://bitbucket.org/david/django-storages/pull-request/85/
.. _69: https://bitbucket.org/david/django-storages/pull-request/69/
.. _66: https://bitbucket.org/david/django-storages/pull-request/66/
.. _65: https://bitbucket.org/david/django-storages/pull-request/65/

Everything Below Here Was Previously Released on PyPi under django-storages

1.1.8


  • Fixes 156_ regarding date parsing, ValueError when running collectstatic
  • Proper handling of boto dev version parsing
  • Made SFTP URLs accessible, now uses settings.MEDIA_URL instead of sftp://

.. _156: https://bitbucket.org/david/django-storages/issue/156/s3boto-backend-valueerror-time-data-thu-07

1.1.7


  • Listing of huge buckets on S3 is now prevented by using the prefix argument to boto's list() method
  • Initial support for Windows Azure Storage
  • Switched to useing boto's parse_ts date parser getting last modified info when using S3boto backend
  • Fixed key handling in S3boto and Google Storage backends
  • Account for lack of multipart upload in Google Storage backend
  • Fixed seek() issue when using AWS_IS_GZIPPED by darkness51 with pull-request 50_
  • Improvements to S3BotoStorage and GSBotoStorage

.. _50: https://bitbucket.org/david/django-storages/pull-request/50/

1.1.6


  • Merged many changes from Jannis Leidel (mostly regarding gzipping)
  • Fixed tests by Ian Lewis
  • Added support for Google Cloud Storage backend by Jannis Leidel
  • Updated license file by Dan Loewenherz, fixes 133_ with pull-request 44_
  • Set Content-Type header for use in upload_part_from_file by Gerardo Curiel
  • Pass the rewind parameter to Boto's set_contents_from_file method by Jannis Leidel with pull-request 45_
  • Fix for FTPStorageFile close() method by Mathieu Comandon with pull-request 43_
  • Minor refactoring by Oktay Sancak with pull-request 48_
  • Ungzip on download based on Content-Encoding by Gavin Wahl with pull-request 46_
  • Add support for S3 server-side encryption by Tobias McNulty with pull-request 17_
  • Add an optional setting to the boto storage to produce protocol-relative URLs, fixes 105_

.. _133: https://bitbucket.org/david/django-storages/issue/133/license-file-refers-to-incorrect-project
.. _44: https://bitbucket.org/david/django-storages/pull-request/44/
.. _45: https://bitbucket.org/david/django-storages/pull-request/45/
.. _43: https://bitbucket.org/david/django-storages/pull-request/43/
.. _48: https://bitbucket.org/david/django-storages/pull-request/48/
.. _46: https://bitbucket.org/david/django-storages/pull-request/46/
.. _17: https://bitbucket.org/david/django-storages/pull-request/17/
.. _105: https://bitbucket.org/david/django-storages/issue/105/add-option-to-produce-protocol-relative

1.1.5


  • Merged pull request 36_ from freakboy3742 Keith-Magee, improvements to Apache Libcloud backend and docs
  • Merged pull request 35_ from atodorov, allows more granular S3 access settings
  • Add support for SSL in Rackspace Cloudfiles backend
  • Fixed the listdir() method in s3boto backend, fixes 57_
  • Added base url tests for safe_join in s3boto backend
  • Merged pull request 20_ from alanjds, fixed SuspiciousOperation warning if AWS_LOCATION ends with '/'
  • Added FILE_BUFFER_SIZE setting to s3boto backend
  • Merged pull request 30_ from pendletongp, resolves 108, 109 and 110_
  • Updated the modified_time() method so that it doesn't require dateutil. fixes 111_
  • Merged pull request 16_ from chamal, adds Apache Libcloud backend
  • When preloading the S3 metadata make sure we reset the files key during saving to prevent stale metadata
  • Merged pull request 24_ from tobias.mcnulty, fixes bug where s3boto backend returns modified_time in wrong time zone
  • Fixed HashPathStorage.location to no longer use settings.MEDIA_ROOT
  • Remove download_url from setup file so PyPI dist is used

.. _36: https://bitbucket.org/david/django-storages/pull-request/36/
.. _35: https://bitbucket.org/david/django-storages/pull-request/35/
.. _57: https://bitbucket.org/david/django-storages/issue/57
.. _20: https://bitbucket.org/david/django-storages/pull-request/20/
.. _30: https://bitbucket.org/david/django-storages/pull-request/30/
.. _108: https://bitbucket.org/david/django-storages/issue/108
.. _109: https://bitbucket.org/david/django-storages/issue/109
.. _110: https://bitbucket.org/david/django-storages/issue/110
.. _111: https://bitbucket.org/david/django-storages/issue/111
.. _16: https://bitbucket.org/david/django-storages/pull-request/16/
.. _24: https://bitbucket.org/david/django-storages/pull-request/24/

1.1.4


  • Added PendingDeprecationWarning for mosso backend
  • Merged pull request 13_ from marcoala, adds SFTP_KNOWN_HOST_FILE setting to SFTP storage backend
  • Merged pull request 12_ from ryankask, fixes HashPathStorage tests that delete remote media
  • Merged pull request 10_ from key, adds support for django-mongodb-engine 0.4.0 or later, fixes GridFS file deletion bug
  • Fixed S3BotoStorage performance problem calling modified_time()
  • Added deprecation warning for s3 backend, refs 40_
  • Fixed CLOUDFILES_CONNECTION_KWARGS import error, fixes 78_
  • Switched to sphinx documentation, set official docs up on http://django-storages.rtfd.org/
  • HashPathStorage uses self.exists now, fixes 83_

.. _13: https://bitbucket.org/david/django-storages/pull-request/13/a-version-of-sftp-storage-that-allows-you
.. _12: https://bitbucket.org/david/django-storages/pull-request/12/hashpathstorage-tests-deleted-my-projects
.. _10: https://bitbucket.org/david/django-storages/pull-request/10/support-django-mongodb-engine-040
.. _40: https://bitbucket.org/david/django-storages/issue/40/deprecate-s3py-backend
.. _78: https://bitbucket.org/david/django-storages/issue/78/import-error
.. _83: https://bitbucket.org/david/django-storages/issue/6/symlinkorcopystorage-new-custom-storage

django-crispy-forms 1.4.0 -> 1.6.0

1.6.0

  • Fixed compatibility with Django 1.9
  • Added Bootstrap 4 template pack
  • Other small fixes.

See 1.6.0 Milestone for full issue list.

1.5.2

  • Fix: KeyError: u'wrapper_class' when clearing template context. 511, 512
  • Fix: Alignment of stacked checkboxes and radio buttons in Bootstrap 3 358

See 1.5.2 Milestone for full issue list.

1.5.1

Special thanks in this release to Dmitry Dygalo Stranger6667 for a marathon effort updating the
test suite and code base.

  • Switched to py.test. Modernised test suite. Enabled tox, code coverage and Travis for all
    supported Python/Django versions. See list of Merged "Testing/Process" PRs here
  • Added compatibility with Python 3.2
  • Fix: Allow LayoutObject & BaseInputs to accept custom template 493

1.5.0

Special thanks in this release for all the <a href="http://flattr.com/thing/512037/django-crispy-forms&quot;&gt;supporters and donators</a>.

  • Fixed compatibility with: Python 3, Django 1.7, Django 1.8 and Django 1.4.16. Merged PR 417, but thanks to PRs 369, 368 and 310. Closes also 383.
  • Updated test suite for compatibility with all supported Django versions 1.4, 1.7, 1.8 and run CI against these and Django master. See 451, 455.
  • Bug fix for specifying template_pack in {% crispy %} tag, bootstrap3 couldn't be set that way.
  • New doc section for creating custom template packs.
  • Fixed Bootstrap3 checkbox alignment issues with label texts, see 275.
  • First AccordionGroup can now be set to active=False, see 246.
  • Fixed Bootstrap3 checkbox alignment issues for all device sizes, see 225 and 267.
  • All forms are now rendered with {{ form.media }}, this makes forms containing widgets with Media meta class work, see 263.
  • Adjusted {% specialspaceless %} to avoid breaking intended spaces and be less aggressive, see 250.
  • Fixed inputs rendering for bootstrap3 and redo FormActions layout object bootstrap3 template for correct alignment, see 279.
  • MultiField now obeys form_show_labels, see 278.
  • Added wrapper_class to bootstrap.InlineRadios, see 272.
  • Render label for checkboxes within table_inline_formset.html, see 262.
  • Removed deprecated layout object AppendedPrependedText, replaced by PrependedAppendedText.
  • Fixed PrependedAppendedText when rendering a select widget, in bootstrap and bootstrap3 template packs, see 258.
  • Added support to {% crispy_addon %} tag for form_show_labels, see 256.
  • Major cleanup and refactor of the template pack system thanks to tepez, see 217 and 237:
    • Template packs are now self contained/independent, removing dangerous cross references. If you have a custom template pack this can cause backwards incompatibility, but it will pay in the future to adjust to this changes.
    • MultiField cannot be used with bootstrap or bootstrap3 template packs.
    • Added template_pack FormHelper attribute, so that template packs can be specified at form helper level. This changes layout objects render behavior.
  • Default template pack is now bootstrap3.
  • Make CRISPY_TEMPLATE_PACK setting optional, see 237 and 244.

django-debug-toolbar 1.3.2 -> 1.5

1.5


This version is compatible with Django 1.10 and requires Django 1.8 or later.

Support for Python 3.2 is dropped.

Bugfixes


* Restore compatibility with sqlparse ≥ 0.2.0.
* Add compatibility with Bootstrap 4, Pure CSS, MDL, etc.
* Improve compatibility with RequireJS / AMD.
* Improve the UI slightly.
* Fix invalid (X)HTML.



### 1.4

---

This version is compatible with Django 1.9 and requires Django 1.7 or later.

New features
  • New panel method :meth:debug_toolbar.panels.Panel.generate_stats allows panels
    to only record stats when the toolbar is going to be inserted into the
    response.

Bugfixes


* Response time for requests of projects with numerous media files has
 been improved.






whitenoise 2.0.3 -> 3.2

3.2


  • Add support for the new-style middleware classes introduced in Django 1.10.
    The same WhiteNoiseMiddleware class can now be used in either the old
    MIDDLEWARE_CLASSES list or the new MIDDLEWARE list.
  • Fixed a bug where incorrect Content-Type headers were being sent on 304 Not
    Modified responses (thanks oppianmatt &lt;https://github.com/oppianmatt&gt;_).
  • Return Vary and Cache-Control headers on 304 responses, as specified by the
    RFC &lt;http://tools.ietf.org/html/rfc7232section-4.1&gt;_.

3.1


  • Add new :any:WHITENOISE_STATIC_PREFIX setting to give flexibility in
    supporting non-standard deployment configurations e.g. serving the
    application somewhere other than the domain root.
  • Fix bytes/unicode bug when running with Django 1.10 on Python 2.7

3.0


.. note:: The latest version of WhiteNoise contains some small breaking changes.
Most users will be able to upgrade without any problems, but some
less-used APIs have been modified:

  • The setting WHITENOISE_GZIP_EXCLUDE_EXTENSIONS has been renamed to
    WHITENOISE_SKIP_COMPRESS_EXTENSIONS.
  • The CLI :ref:compression utility &lt;cli-utility&gt; has moved from python -m whitenoise.gzip
    to python -m whitenoise.compress.
  • The now redundant gzipstatic management command has been removed.
  • WhiteNoise no longer uses the system mimetypes files, so if you are serving
    particularly obscure filetypes you may need to add their mimetypes explicitly
    using the new :any:mimetypes &lt;WHITENOISE_MIMETYPES&gt; setting.
  • Older versions of Django (1.4-1.7) and Python (2.6) are no longer supported.
    If you need support for these platforms you can continue to use WhiteNoise 2.x_.
  • The whitenoise.django.GzipManifestStaticFilesStorage storage backend
    has been moved to
    whitenoise.storage.CompressedManifestStaticFilesStorage. The old
    import path will continue to work for now, but users are encouraged
    to update their code to use the new path.

.. _WhiteNoise 2.x: http://whitenoise.evans.io/en/legacy-2.x/

Simpler, cleaner Django middleware integration
++++++++++++++++++++++++++++++++++++++++++++++

WhiteNoise can now integrate with Django by adding a single line to
MIDDLEWARE_CLASSES without any need to edit wsgi.py. This also means
that WhiteNoise plays nicely with other middleware classes such as
SecurityMiddleware, and that it is fully compatible with the new Channels_
system. See the :ref:updated documentation &lt;django-middleware&gt; for details.

.. _Channels: https://channels.readthedocs.org/en/latest/

Brotli compression support
++++++++++++++++++++++++++

Brotli_ is the modern, more efficient
alternative to gzip for HTTP compression. To benefit from smaller files and
faster page loads, just add the brotlipy_ library to your
requirements.txt and WhiteNoise will take care of the rest. See the
:ref:documentation &lt;brotli-compression&gt; for details.

.. _brotli: https://en.wikipedia.org/wiki/Brotli
.. _brotlipy: http://brotlipy.readthedocs.org/en/latest/

Simpler customisation
+++++++++++++++++++++

It's now possibe to add custom headers to WhiteNoise without needing to create
a subclass, using the new :any:add_headers_function &lt;WHITENOISE_ADD_HEADERS_FUNCTION&gt; setting.

Use WhiteNoise in development with Django
+++++++++++++++++++++++++++++++++++++++++

There's now an option to force Django to use WhiteNoise in development, rather
than its own static file handling. This results in more consistent behaviour
between development and production environments and fewer opportunities for
bugs and surprises. See the :ref:documentation &lt;runserver-nostatic&gt; for
details.

Improved mimetype handling
++++++++++++++++++++++++++

WhiteNoise now ships with its own mimetype definitions (based on those shipped
with nginx) instead of relying on the system ones, which can vary between
environments. There is a new :any:mimetypes &lt;WHITENOISE_MIMETYPES&gt;
configuration option which makes it easy to add additional type definitions if
needed.

Thanks
++++++

A big thank-you to Ed Morley &lt;https://github.com/edmorley&gt;_ and Tim Graham &lt;https://github.com/timgraham&gt;_ for their contributions to this release.

2.0.6


  • Rebuild with latest version of wheel to get extras_require support.

2.0.5


  • Add missing argparse dependency for Python 2.6 (thanks movermeyer)).

2.0.4


  • Report path on MissingFileError (thanks ezheidtmann).

python-dateutil 2.1 -> 2.5.3

2.5.2


  • Updated zoneinfo to 2016c
  • Fixed parser bug where yearfirst and dayfirst parameters were not being
    respected when no separator was present. (gh issue 81 and 217, pr 229)

2.5.1


  • Updated zoneinfo to 2016b
  • Changed MANIFEST.in to explicitly include test suite in source distributions,
    with help from koobs (gh issue 193, pr 194, 201, 221)
  • Explicitly set all line-endings to LF, except for the NEWS file, on a
    per-repository basis (gh pr 218)
  • Fix 6D40 ed an issue with improper caching behavior in rruleset objects (gh issue
    104, pr 207)
  • Changed to an explicit error when rrulestr strings contain a missing BYDAY
    (gh issue 162, pr 211)
  • tzfile now correctly handles files containing leapcnt (although the leapcnt
    information is not actually used). Contributed by hjoukl (gh issue 146, pr
    147)
  • Fixed recursive import issue with tz module (gh pr 204)
  • Added compatibility between tzwin objects and datetime.time objects (gh issue
    216, gh pr 219)
  • Refactored monolithic test suite by module (gh issue 61, pr 200 and 206)
  • Improved test coverage in the relativedelta module (gh pr 215)
  • Adjusted documentation to reflect possibly counter-intuitive properties of
    RFC-5545-compliant rrules, and other documentation improvements in the rrule
    module (gh issue 105, gh issue 149 - pointer to the solution by phep,
    pr 213).

2.5.0


  • Updated zoneinfo to 2016a
  • zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
    script will work with older zoneinfo_metadata.json files, but new metadata
    files will not work with older updatezinfo.py versions. Additionally, we have
    started hosting our own mirror of the Olson databases on a github pages
    site (https://dateutil.github.io/tzdata/) (gh pr 183)
  • dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
    to generate them. (gh issue 27, gh pr 85)
  • relativedelta can now be safely subclassed without derived objects reverting
    to base relativedelta objects as a result of arithmetic operations.
    (lp:1010199, gh issue 44, pr 49)
  • relativedelta 'weeks' parameter can now be set and retrieved as a property of
    relativedelta instances. (lp: 727525, gh issue 45, pr 49)
  • relativedelta now explicitly supports fractional relative weeks, days, hours,
    minutes and seconds. Fractional values in absolute parameters (year, day, etc)
    are now deprecated. (gh issue 40, pr 190)
  • relativedelta objects previously did not use microseconds to determine of two
    relativedelta objects were equal. This oversight has been corrected.
    Contributed by elprans (gh pr 113)
  • rrule now has an xafter() method for retrieving multiple recurrences after a
    specified date. (gh pr 38)
  • str(rrule) now returns an RFC2445-compliant rrule string, contributed by
    schinckel and armicron (lp:1406305, gh issue 47, prs 50, 62 and 160)
  • rrule performance under certain conditions has been significantly improved
    thanks to a patch contributed by dekoza, based on an article by Brian Beck
    (exogen) (gh pr 136)
  • The use of both the 'until' and 'count' parameters is now deprecated as
    inconsistent with RFC2445 (gh pr 62, 185)
  • Parsing an empty string will now raise a ValueError, rather than returning the
    datetime passed to the 'default' parameter. (gh issue 78, pr 187)
  • tzwinlocal objects now have a meaningful repr() and str() implementation
    (gh issue 148, prs 184 and 186)
  • Added equality logic for tzwin and tzwinlocal objects. (gh issue 151,
    pr 180, 184)
  • Added some flexibility in subclassing timelex, and switched the default
    behavior over to using string methods rather than comparing against a fixed
    list. (gh pr 122, 139)
  • An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
    gh issue 51, pr 55)
  • An issue with string encoding causing exceptions under certain circumstances
    when tzname() is called was fixed. (gh issue 60, 74, pr 75)
  • Parser issue where calling parse() on dates with no day specified when the
    day of the month in the default datetime (which is "today" if unspecified) is
    greater than the number of days in the parsed month was fixed (this issue
    tended to crop up between the 29th and 31st of the month, for obvious reasons)
    (canonical gh issue 25, pr 30, 191)
  • Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
    in certain circumstances. Contributed by MichaelAquilina (gh pr 91)
  • Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
    by Bachmann1234 (gh pr 130)
  • Fixed parser issue where commas were not a valid separator between seconds
    and microseconds, preventing parsing of ISO 8601 dates. Contributed by
    ryanss (gh issue 28, pr 106)
  • Fixed issue with tzwin encoding in locales with non-Latin alphabets
    (gh issue 92, pr 98)
  • Fixed an issue where tzwin was not being properly imported on Windows.
    Contributed by labrys. (gh pr 134)
  • Fixed a problem causing issues importing zoneinfo in certain circumstances.
    Issue and solution contributed by alexxv (gh issue 97, pr 99)
  • Fixed an issue where dateutil timezones were not compatible with basic time
    objects. One of many, many timezone related issues contributed and tested by
    labrys. (gh issue 132, pr 181)
  • Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue 135,
    pr 141, 142)
  • Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
    parsed from the registry. (gh issue 143, pr 178)
  • updatezinfo.py no longer suppresses certain OSErrors. Contributed by bjamesv
    (gh pr 164)
  • An issue that arose when timezone locale changes during runtime has been
    fixed by carlosxl and mjschultz (gh issue 100, prs 107, 109)
  • Python 3.5 was added to the supported platforms in the metadata (tacaswell
    gh pr 159) and the test suites (moreati gh pr 117).
  • An issue with tox failing without unittest2 installed in Python 2.6 was fixed
    by moreati (gh pr 115)
  • Several deprecated functions were replaced in the tests by moreati
    (gh pr 116)
  • Improved the logic in Travis and Appveyor to alleviate issues where builds
    were failing due to connection issues when downloading the IANA timezone
    files. In addition to adding our own mirror for the files (gh pr 183), the
    download is now retried a number of times (with a delay) (gh pr 177)
  • Many failing doctests were fixed by moreati. (gh pr 120)
  • Many fixes to the documentation (gh pr 103, gh pr 87 from radarhere,
    gh pr 154 from gpoesia, gh pr 156 from awsum, gh pr 168 from ja8zyjits)
  • Added a code coverage tool to the CI to help improve the library. (gh pr 182)
  • We now have a mailing list - dateutilpython.org, graciously hosted by
    Python.org.

2.4.2


  • Updated zoneinfo to 2015b.
  • Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
    if not a unicode type. gh 51 (lp:1331576), gh pr 55.
  • Fix a parser issue where AM and PM tokens were showing up in fuzzy date
    stamps, triggering inappropriate errors. gh 56 (lp: 1428895), gh pr 63.
  • Missing function "setcachesize" removed from zoneinfo all list by ryanss,
    fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr 66).
  • (PyPi only) Fix an issue with source distributions not including the test
    suite.

2.4.1


  • Added explicit check for valid hours if AM/PM is specified in parser.
    (gh pr 22, issue 21)
  • Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
    handled properly. (gh pr 35, issue 34)
  • Fix error where parser allowed some invalid dates, overwriting existing hours
    with the last 2-digit number in the string. (gh pr 32, issue 31)
  • Fix and add test for Python 2.x compatibility with boolean checking of
    relativedelta objects. Implemented by nimasmi (gh pr 43) and Cédric Krier
    (lp: 1035038)
  • Replaced parse() calls with explicit datetime objects in unit tests unrelated
    to parser. (gh pr 36)
  • Changed private _byxxx from sets to sorted tuples and fixed one currently
    unreachable bug in _construct_byset. (gh pr 54)
  • Additional documentation for parser (gh pr 29, 33, 41) and rrule.
  • Formatting fixes to documentation of rrule and README.rst.
  • Updated zoneinfo to 2015a.

2.4.0


  • Fix an issue with relativedelta and freezegun (lp:1374022)
  • Fix tzinfo in windows for timezones without dst (lp:1010050, gh 2)
  • Ignore missing timezones in windows like in POSIX
  • Fix minimal version requirement for six (gh 6)
  • Many rrule changes and fixes by pganssle (gh pull requests 13 14 17),
    including defusing some infinite loops (gh 4)

2.3


  • Cleanup directory structure, moved test.py to dateutil/tests/test.py
  • Changed many aspects of dealing with the zone info file. Instead of a cache,
    all the zones are loaded to memory, but symbolic links are loaded only once,
    so not much memory is used.
  • The package is now zip-safe, and universal-wheelable, thanks to changes in
    the handling of the zoneinfo file.
  • Fixed tzwin silently not imported on windows python2
  • New maintainer, together with new hosting: GitHub, Travis, Read-The-Docs

2.2


  • Updated zoneinfo to 2013h
  • fuzzy_with_tokens parse addon from Christopher Corley
  • Bug with LANG=C fixed by Mike Gilbert

django-reversion 1.8.5 -> 2.0.6

2.0.6


  • Fixed RevisionMiddleware always rolling back transactions in gunicorn (stebunovd, etianen).
  • Tweaks and minor bugfixes (SahilMak).

2.0.5


  • Fixed LookupError when running migration 0003 with stale content types (etianen).

2.0.4


  • Fixed LookupError when running migration 0003 (etianen).
  • Fixed duplicate versions using get_deleted() (etianen).
  • Fixed unexpected deletion of underflowing revisions when using --keep switch with deleterevisions (etianen).

2.0.3


  • Added support for m2m fields with a custom through model (etianen).

2.0.2


  • Fixing migration 0003 in MySQL (etianen).

2.0.1


  • Improved performance of migration 0003 (BertrandBordage).
  • De-duplicating Version table before applying migration 0004 (BertrandBordage, etianen).

2.0.0


django-reversion was first released in May 2008, and has been in active development ever since. Over this time it's developed a certain amount of cruft from legacy and unused features, resulting in needless complexity and multiple ways of achieving the same task.

This release substantially cleans and refactors the codebase. Much of the top-level functionality remains unchanged or is very similar. The release notes are divided into subsections to make it easier to find out where you need to update your code.

This release includes a migration for the Version model that may take some time to complete.

General improvements
^^^^^^^^^^^^^^^^^^^^

  • Dramatically improved performance of version lookup for models with a non-integer primary key (etianen, mshannon1123).
  • Documentation refactor (etianen).
  • Test refactor (etianen).
  • Minor tweaks and bugfixes (etianen, bmarika, ticosax).

Admin
^^^^^

  • Fixed issue with empty revisions being created in combination with RevisionMiddleware (etianen).

  • Breaking: Removed reversion_format property from VersionAdmin (etianen).

    Use VersionAdmin.reversion_register instead.

    .. code::

    class YourVersionAdmin(VersionAdmin):

       def reversion_register(self, model, **options):
           options[&quot;format&quot;] = &quot;yaml&quot;
           super(YourVersionAdmin, self).reversion_register(model, **options)
    
  • Breaking: Removed ignore_duplicate_revisions property from VersionAdmin (etianen).

    Use VersionAdmin.reversion_register instead.

    .. code::

    class YourVersionAdmin(VersionAdmin):

       def reversion_register(self, model, **options):
           options[&quot;ignore_duplicate_revisions&quot;] = True
           super(YourVersionAdmin, self).reversion_register(model, **options)
    

Management commands
^^^^^^^^^^^^^^^^^^^

  • Breaking: Refactored arguments to createinitialrevisions (etianen).

    All existing functionality should still be supported, but several parameter names have been updated to match Django coding conventions.

    Check the command --help for details.

  • Breaking: Refactored arguments to deleterevisions (etianen).

    All existing functionality should still be supported, but several parameter names have been updated to match Django coding conventions, and some duplicate parameters have been removed. The confirmation prompt has been removed entirely, and the command now always runs in the --force mode from the previous version.

    Check the command --help for details.

Middleware
^^^^^^^^^^

  • Added support for using RevisionMiddleware with new-style Django 1.10 MIDDLEWARE (etianen).
  • Middleware wraps entire request in transaction.atomic() to preserve transactional integrity of revision and models (etianen).

View helpers
^^^^^^^^^^^^

  • Added reversion.views.create_revision view decorator (etianen).
  • Added reversion.views.RevisionMixin class-based view mixin (etianen).

Low-level API
^^^^^^^^^^^^^

  • Restored many of the django-reversion API methods back to the top-level namespace (etianen).

  • Revision blocks are now automatically wrapped in transaction.atomic() (etianen).

  • Added for_concrete_model argument to reversion.register() (etianen).

  • Added Version.objects.get_for_model() lookup function (etianen).

  • Added reversion.add_to_revision() for manually adding model instances to an active revision (etianen).

  • Removed Version.object_id_int field, in favor of a unified Version.object_id field for all primary key types (etianen).

  • Breaking: reversion.get_for_object_reference() has been moved to Version.objects.get_for_object_reference() (etianen).

  • Breaking: reversion.get_for_object() has been moved to Version.objects.get_for_object() (etianen).

  • Breaking: reversion.get_deleted() has been moved to Version.objects.get_deleted() (etianen).

  • Breaking: Refactored multi-db support (etianen).

    django-reversion now supports restoring model instances to their original database automatically. Several parameter names have also be updated to match Django coding conventions.

    If you made use of the previous multi-db functionality, check the latest docs for details. Otherwise, everything should just work.

  • Breaking: Removed get_ignore_duplicates and set_ignore_duplicates (etianen).

    ignore_duplicates is now set in reversion.register() on a per-model basis.

  • Breaking: Removed get_for_date() function (etianen).

    Use get_for_object().filter(revision__date_created__lte=date) instead.

  • Breaking: Removed get_unique_for_object() function (etianen).

    Use get_for_object().get_unique() instead.

  • Breaking: Removed signal and eager_signals argument from reversion.register() (etianen).

    To create revisions on signals other than post_save and m2m_changed, call reversion.add_to_revision() in a signal handler for the appropriate signal.

    .. code:: python

    from django.dispatch import receiver
    import reversion
    from your_app import your_custom_signal

    reciever(your_custom_signal)
    def your_custom_signal_handler(instance, **kwargs):
    if reversion.is_active():
    reversion.add_to_revision(instance)

    This approach will work for both eager and non-eager signals.

  • Breaking: Removed adapter_cls argument from reversion.register() (etianen).

  • Breaking: Removed reversion.save_revision() (etianen).

    Use reversion.add_to_revision() instead.

    .. code:: python

    import reversion

    with reversion.create_revision():
    reversion.add_to_revision(your_obj)

Signals
^^^^^^^

  • Breaking: Removed pre_revision_commit signal (etianen).

    Use the Django standard pre_save signal for Revision instead.

  • Breaking: Removed post_revision_commit signal (etianen).

    Use the Django standard post_save signal for Revision instead.

Helpers
^^^^^^^

  • Breaking: Removed patch_admin function (etianen).

    Use VersionAdmin as a mixin to 3rd party ModelAdmins instead.

    .. code::

    admin.register(SomeModel)
    class YourModelAdmin(VersionAdmin, SomeModelAdmin):

       pass
    
  • Breaking: Removed generate_diffs function (etianen).

    django-reversion no supports an official diff helper. There are much better ways of achieving this now, such as django-reversion-compare &lt;https://github.com/jedie/django-reversion-compare&gt;_.

    The old implementation is available for reference from the previous release &lt;https://github.com/etianen/django-reversion/blob/release-1.10.2/src/reversion/helpers.py&gt;_.

  • Breaking: Removed generate_patch function (etianen).

    django-reversion no supports an official diff helper. There are much better ways of achieving this now, such as django-reversion-compare &lt;https://github.com/jedie/django-reversion-compare&gt;_.

    The old implementation is available for reference from the previous release &lt;https://github.com/etianen/django-reversion/blob/release-1.10.2/src/reversion/helpers.py&gt;_.

  • Breaking: Removed generate_patch_html function (etianen).

    django-reversion no supports an official diff helper. There are much better ways of achieving this now, such as django-reversion-compare &lt;https://github.com/jedie/django-reversion-compare&gt;_.

    The old implementation is available for reference from the previous release &lt;https://github.com/etianen/django-reversion/blob/release-1.10.2/src/reversion/helpers.py&gt;_.

1.10.2


  • Fixing deprecation warnings (claudep).
  • Minor tweaks and bug fixes (fladi, claudep, etianen).

1.10.1


  • Fixing some deprecation warnings (ticosax).
  • Minor tweaks (claudep, etianen).

1.10


  • Breaking: Updated the location of VersionAdmin.

    Prior to this change, you could access the VersionAdmin class using the following import:

    .. code:: python

    Old-style import for accessing the admin class.
    

    import reversion

    Access admin class from the reversion namespace.
    

    class YourModelAdmin(reversion.VersionAdmin):

       pass
    

    In order to support Django 1.9, the admin class has been moved to the following
    import:

    .. code:: python

    New-style import for accesssing admin class.
    

    from reversion.admin import VersionAdmin

    Use the admin class directly.
    

    class YourModelAdmin(VersionAdmin):

       pass
    
  • Breaking: Updated the location of low-level API methods.
    Prior to this change, you could access the low-level API using the following import:

    .. code:: python

    Old-style import for accessing the low-level API.
    

    import reversion

    Use low-level API methods from the reversion namespace.
    

    reversion.register
    class YourModel(models.Model):

       pass
    

    In order to support Django 1.9, the low-level API
    methods have been moved to the following import:

    .. code:: python

    New-style import for accesssing the low-level API.
    

    from reversion import revisions as reversion

    Use low-level API methods from the revisio
    9E88
    ns namespace.
    

    reversion.register
    class YourModel(models.Model):

       pass
    
  • Breaking: Updated the location of http://django-reversion.readthedocs.org/en/latest/signals.html.
    Prior to this change, you could access the reversion signals using the following import:

    .. code:: python

    Old-style import for accessing the reversion signals
    

    import reversion

    Use signals from the reversion namespace.
    

    reversion.post_revision_commit.connect(...)

    In order to support Django 1.9, the reversion signals have been moved to the following
    import:

    .. code:: python

    New-style import for accesssing the reversion signals.
    

    from reversion.signals import pre_revision_commit, post_revision_commit

    Use reversion signals directly.
    

    post_revision_commit.connect(...)

  • Django 1.9 compatibility (etianen).

  • Added spanish (argentina) translation (gonzalobustos).

  • Minor bugfixes and tweaks (Blitzstok, IanLee1521, lutoma, siamalekpour, etianen).

1.9.3


  • Fixing regression with admin redirects following save action (etianen).

1.9.2


  • Fixing regression with "delete", "save as new" and "save and continue" button being shown in recover and revision admin views (etianen).
  • Fixing regression where VersionAdmin.ignore_duplicate_revisions was ignored (etianen).

1.9.1


  • Fixing packaging error that rendered the 1.9.0 release unusable. No way to cover up the mistake, so here's a brand new bugfix release! (etianen).

1.9.0


  • Using database transactions do render consistent views of past revisions in database admin, fixing a lot of lingering minor issues (etianen).
  • Correct handling of readonly fields in admin (etianen).
  • Updates to Czech translation (cuchac).
  • Arabic translation (RamezIssac).
  • Fixing deleterevisions to work with Python2 (jmurty).
  • Fixing edge-cases where an object does not have a PK (johnfraney).
  • Tweaks, code cleanups and documentation fixes (claudep, johnfraney, podloucky-init, Drew Hubl, JanMalte, jmurty, etianen).

1.8.7


  • Fixing deleterevisions command on Python 3 (davidfsmith).
  • Fixing Django 1.6 compatibility (etianen).
  • Removing some Django 1.9 deprecation warnings (BATCOH, niknokseyer).
  • Minor tweaks (nikolas, etianen).

1.8.6


  • Support for MySQL utf8mb4 (alexhayes).
  • Fixing some Django deprecation warnings (Drew Hubl, khakulov, adonm).
  • Versions passed through by reversion.post_revision_commit now contain a primary key (joelarson).

Once you have closed this pull request, I'll create seperate pull requests for every update as soon as I find them.

That's it for now!

Happy merging! 🤖

@jayfk
Copy link
Contributor
jayfk commented Sep 16, 2016

Update is now green 👍 . We've probably missed a couple of updates in the last six weeks here. Once we merge this, the bot will tell us.

@pydanny could you check that everything works locally?

@jayfk jayfk merged commit a5c80d1 into master Nov 8, 2016
@jayfk jayfk deleted the pyup-initial-update branch November 8, 2016 15:45
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.

2 participants
0