3.2.3 (2019-10-23)
------------------

* Added support and testing for Python 3.8.


3.2.2 (2019-08-29)
------------------

* WsgiToAsgi maps multi-part request bodies into a single WSGI input file
* WsgiToAsgi passes the `root_path` scope as SCRIPT_NAME
* WsgiToAsgi now checks the scope type to handle `lifespan` better
* WsgiToAsgi now passes the server port as a string, like WSGI
* SyncToAsync values are now identified as coroutine functions by asyncio
* SyncToAsync now handles __self__ correctly for methods


3.2.1 (2019-08-05)
------------------

* sys.exc_info() is now propagated across thread boundaries


3.2.0 (2019-07-29)
------------------

* New "thread_sensitive" argument to SyncToAsync allows for pinning of code into
  the same thread as other thread_sensitive code.
* Test collection on Python 3.7 fixed

3.1.4 (2019-07-07)
------------------

* Fixed an incompatibility with Python 3.5 introduced in the last release.


3.1.3 (2019-07-05)
------------------

* async_timeout has been removed as a dependency, so there are now no required
  dependencies.
* The WSGI adapter now sets ``REMOTE_ADDR`` from the ASGI ``client``.


3.1.2 (2019-04-17)
------------------

* New thread_critical argument to Local to tell it to not inherit contexts
  across threads/tasks.
* Local now inherits across any number of sync_to_async to async_to_sync calls
  nested inside each other


3.1.1 (2019-04-13)
------------------

* Local now cleans up storage of old threads and tasks to prevent a memory leak.


3.1.0 (2019-04-13)
------------------

* Added ``asgiref.local`` module to provide threading.local drop-in replacement.


3.0.0 (2019-03-20)
------------------

* Updated to match new ASGI 3.0 spec
* Compatibility library added that allows adapting ASGI 2 apps into ASGI 3 apps
  losslessly


2.3.2 (2018-05-23)
------------------

* Packaging fix to allow old async_timeout dependencies (2.0 as well as 3.0)


2.3.1 (2018-05-23)
------------------

* WSGI-to-ASGI adapter now works with empty bodies in responses
* Update async-timeout dependency


2.3.0 (2018-04-11)
------------------

* ApplicationCommunicator now has a receive_nothing() test available


2.2.0 (2018-03-06)
------------------

* Cancelled tasks now correctly cascade-cancel their children

* Communicator.wait() no longer re-raises CancelledError from inner coroutines


2.1.6 (2018-02-19)
------------------

* async_to_sync now works inside of threads (but is still not allowed in threads
  that have an active event loop)


2.1.5 (2018-02-14)
------------------

* Fixed issues with async_to_sync not setting the event loop correctly

* Stop async_to_sync being called from threads with an active event loop


2.1.4 (2018-02-07)
------------------

* Values are now correctly returned from sync_to_async and async_to_sync

* ASGI_THREADS environment variable now works correctly


2.1.3 (2018-02-04)
------------------

* Add an ApplicationCommunicator.wait() method to allow you to wait for an
  application instance to exit before seeing what it did.


2.1.2 (2018-02-03)
------------------

* Allow AsyncToSync to work if called from a non-async-wrapped sync context.


2.1.1 (2018-02-02)
------------------

* Allow AsyncToSync constructor to be called inside SyncToAsync.


2.1.0 (2018-01-19)
------------------

* Add `asgiref.testing` module with ApplicationCommunicator testing helper


2.0.1 (2017-11-28)
------------------

* Bugfix release to have HTTP response content message as the correct
  "http.response.content" not the older "http.response.chunk".


2.0.0 (2017-11-28)
------------------

* Complete rewrite for new async-based ASGI mechanisms and removal of
  channel layers.


1.1.2 (2017-05-16)
-----------------

* Conformance test suite now allows for retries and tests group_send's behaviour with capacity
* valid_channel_names now has a receive parameter


1.1.1 (2017-04-02)
------------------

* Error with sending to multi-process channels with the same message fixed


1.1.0 (2017-04-01)
------------------

* Process-specific channel behaviour has been changed, and the base layer
  and conformance suites updated to match.


1.0.1 (2017-03-19)
------------------

* Improved channel and group name validation
* Test rearrangements and improvements


1.0.0 (2016-04-11)
------------------

* `receive_many` is now `receive`
* In-memory layer deepcopies messages so they cannot be mutated post-send
* Better errors for bad channel/group names
