- **BACKWARD INCOMPATIBLE** Upped the minimum Python version to 3.5.2 from 3.5.0
- **BACKWARD INCOMPATIBLE** Renamed the ``asphalt.core.util`` module to ``asphalt.core.utils``
- The ``asphalt.core.event`` module was overhauled:
- **BACKWARD INCOMPATIBLE** Removed the ``monotime`` attribute from the ``Event`` class
- **BACKWARD INCOMPATIBLE** Dropped the ``return_future`` argument from ``Signal.dispatch()``
and ``Signal.dispatch_event()`` – they now always return an awaitable that resolves to a
boolean, indicating whether all callbacks were successful or not
- **BACKWARD INCOMPATIBLE** Made the ``max_queue_size`` argument in ``Signal.stream_events`` and
``stream_events()`` into a keyword-only argument
- **BACKWARD INCOMPATIBLE** ``Signal.dispatch_event()`` was renamed to ``Signal.dispatch_raw()``
- Added the ``filter`` argument to ``Signal.stream_events()`` and ``stream_events()`` which can
restrict the events that are yielded by them
- Added the ``time`` constructor argument to the ``Event`` class
- The ``asphalt.core.context`` module was overhauled:
- "lazy resources" are now called "resource factories"
- ``Context.get_resources()`` now returns a set of ``ResourceContainer`` (instead of a list)
- **BACKWARD INCOMPATIBLE** The ``default_timeout`` parameter was removed from the ``Context``
constructor
- **BACKWARD INCOMPATIBLE** The ``timeout`` parameter of ``Context.request_resource()`` was
removed
- **BACKWARD INCOMPATIBLE** The ``alias`` parameter of ``Context.request_resource()`` was
renamed to ``name``
- **BACKWARD INCOMPATIBLE** Removed the ``Context.finished`` signal in favor of the new
``add_teardown_callback()`` method which has different semantics (callbacks are called in LIFO
order and awaited for one at a time)
- **BACKWARD INCOMPATIBLE** Removed the ability to remove resources from a ``Context``
- Added several new methods to the ``Context`` class: ``close()``, ``get_resource()``,
``require_resource()``
- **BACKWARD INCOMPATIBLE** ``Context.publish_resource()`` was renamed to
``Context.add_resource()``
- **BACKWARD INCOMPATIBLE** ``Context.publish_lazy_resource()`` was renamed to
``Context.add_resource_factory()``
- **BACKWARD INCOMPATIBLE** The ``Context.get_resources()`` method was removed until
it can be replaced with a better thought out API
- **BACKWARD INCOMPATIBLE** The ``Resource`` class was removed from the public API
- Three new methods were added to the ``Context`` class to bridge ``asyncio_extras`` and
``Executor`` resources: ``call_async()``, ``call_in_executor()`` and ``threadpool()``
- Added a new decorator, ``executor`` to help run code in specific ``Executor`` resources
- The application runner (``asphalt.core.runner``) got some changes too:
- **BACKWARD INCOMPATIBLE** The runner no longer cancels all active tasks on exit
- **BACKWARD INCOMPATIBLE** There is now a (configurable, defaults to 5 seconds) timeout for
waiting for the root component to start
- Asynchronous generators are now closed after the context has been closed (on Python 3.6+)
- The SIGTERM signal now cleanly shuts down the application
- Switched from ``asyncio_extras`` to ``async_generator`` as the async generator compatibility
library
- Made the current event loop accessible (from any thread) as the ``loop`` property from any
``asphalt.core.context.Context`` instance to make it easier to schedule execution of async code
from worker threads
- The ``asphalt.core.utils.merge_config()`` function now accepts ``None`` as either argument
(or both)