Changelog

Unreleased

Started using features in Python 3.11. As a result, dropped support for Python 3.10 and lower.

Removed aiter() and anext() from aitertools because they are now built-in.

v0.3.1

Added support for Python 3.8.

Added aiterclose() that tries to close an async iterator.

v0.3.0

Backwards incompatible change: Added new return value aiter_exc to staggered_race(). It contains the exception raised by the async iterator, if any.

Added new argument detailed_exceptions to create_connected_sock(). When set to True, when the connection fails, a HappyEyeballsConnectError is raised, containing all the exceptions raised by the connect / resolution tasks.

Added debug logging features.

v0.2.1

Added support for asynchronous address resolution: IPv6 and IPv4 addresses for a hostname can be resolved in parallel, and connection attempts may start as soon as either address family is resolved. This reduces time needed for connection establishment in cases where resolution for a certain address family is slow.

v0.2.0

Backwards incompatible change: staggered_race() now takes an async iterable instead of a regular iterable for its coro_fns argument.

A new module aitertools is added, containing tools for working with async iterators. Among other things, implementations for aiter() and anext() are provided, analogous to the built-in functions iter() and next().

Implementation detail: Code for resolving host names to IP addresses are moved to their own module and made to yield results as async iterables.

v0.1.3

Added support for multiple local addresses.

v0.1.2

Fixed several bugs.

v0.1.1

The first real release. Implements stateless Happy Eyeballs.