./devel/py-anyio, High level compatibility layer for multiple asynchronous event loops

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 4.7.0, Package name: py312-anyio-4.7.0, Maintainer: pkgsrc-users

AnyIO is a asynchronous compatibility API that allows applications and
libraries written against it to run unmodified on asyncio, curio and trio.

It bridges the following functionality:
* Task groups
* Cancellation
* Threads
* Signal handling
* Asynchronous file I/O
* Synchronization primitives (locks, conditions, events, semaphores, queues)
* High level networking (TCP, UDP and UNIX sockets)


Master sites:

Filesize: 172.926 KB

Version history: (Expand)


CVS history: (Expand)


   2024-12-06 09:07:13 by Adam Ciarcinski | Files touched by this commit (3) | Package updated
Log message:
py-anyio: updated to 4.7.0

4.7.0

- Updated ``TaskGroup`` to work with asyncio's eager task factories
- Added the ``wait_readable()`` and ``wait_writable()`` functions which will accept
  an object with a ``.fileno()`` method or an integer handle, and deprecated
  their now obsolete versions (``wait_socket_readable()`` and
  ``wait_socket_writable()``)
- Changed ``EventAdapter`` (an ``Event`` with no bound async backend) to allow \ 
``set()``
  to work even before an async backend is bound to it
- Added support for ``wait_readable()`` and ``wait_writable()`` on \ 
``ProactorEventLoop``
  (used on asyncio + Windows by default)
- Fixed a misleading ``ValueError`` in the context of DNS failures
- Fixed the return type annotations of ``readinto()`` and ``readinto1()`` \ 
methods in the
  ``anyio.AsyncFile`` class
- Fixed ``TaskInfo.has_pending_cancellation()`` on asyncio returning false \ 
positives in
  cleanup code on Python >= 3.11
- Fixed cancelled cancel scopes on asyncio calling ``asyncio.Task.uncancel`` when
  propagating a ``CancelledError`` on exit to a cancelled parent scope
   2024-11-11 08:29:31 by Thomas Klausner | Files touched by this commit (862)
Log message:
py-*: remove unused tool dependency

py-setuptools includes the py-wheel functionality nowadays
   2024-10-22 09:52:55 by Thomas Klausner | Files touched by this commit (2) | Package updated
Log message:
py-anyio: update to 4.6.2.post1.

- Fixed regression caused by (`#807 \ 
<https://github.com/agronholm/anyio/pull/807>`_)
  that prevented the use of parametrized async fixtures
   2024-10-14 07:05:50 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-anyio: updated to 4.6.2

4.6.2

- Fixed regression caused by
  that prevented the use of parametrized async fixtures

4.6.1

This release contains all the changes from both v4.5.1 and v4.6.0, plus:

- Fixed TaskGroup and CancelScope producing cyclic references in tracebacks
  when raising exceptions
   2024-09-22 17:37:54 by Thomas Klausner | Files touched by this commit (2) | Package updated
Log message:
py-anyio: update to 4.6.0.

Dropped support for Python 3.8 (as #698 cannot be resolved without cancel \ 
message support)
Fixed 100% CPU use on asyncio while waiting for an exiting task group to finish \ 
while said task group is within a cancelled cancel scope (#695)
Fixed cancel scopes on asyncio not propagating CancelledError on exit when the \ 
enclosing cancel scope has been effectively cancelled (#698)
Fixed asyncio task groups not yielding control to the event loop at exit if \ 
there were no child tasks to wait on
Fixed inconsistent task uncancellation with asyncio cancel scopes belonging to a \ 
task group when said task group has child tasks running
   2024-05-27 16:46:28 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-anyio: updated to 4.4.0

**4.4.0**

- Added the ``BlockingPortalProvider`` class to aid with constructing synchronous
  counterparts to asynchronous interfaces that would otherwise require multiple \ 
blocking
  portals
- Added ``__slots__`` to ``AsyncResource`` so that child classes can use \ 
``__slots__``
- Added the ``TaskInfo.has_pending_cancellation()`` method
- Fixed erroneous ``RuntimeError: called 'started' twice on the same task status``
  when cancelling a task in a TaskGroup created with the ``start()`` method before
  the first checkpoint is reached after calling ``task_status.started()``
- Fixed two bugs with ``TaskGroup.start()`` on asyncio:

  * Fixed erroneous ``RuntimeError: called 'started' twice on the same task status``
    when cancelling a task in a TaskGroup created with the ``start()`` method before
    the first checkpoint is reached after calling ``task_status.started()``
  * Fixed the entire task group being cancelled if a ``TaskGroup.start()`` call gets
    cancelled
- Fixed a race condition that caused crashes when multiple event loops of the same
  backend were running in separate threads and simultaneously attempted to use \ 
AnyIO for
  their first time
- Fixed cancellation delivery on asyncio incrementing the wrong cancel scope's
  cancellation counter when cascading a cancel operation to a child scope, thus \ 
failing
  to uncancel the host task
- Fixed erroneous ``TypedAttributeLookupError`` if a typed attribute getter raises
  ``KeyError``
- Fixed the asyncio backend not respecting the ``PYTHONASYNCIODEBUG`` environment
  variable when setting the ``debug`` flag in ``anyio.run()``
- Fixed ``SocketStream.receive()`` not detecting EOF on asyncio if there is also \ 
data in
  the read buffer
- Fixed ``MemoryObjectStream`` dropping an item if the item is delivered to a \ 
recipient
  that is waiting to receive an item but has a cancellation pending
- Emit a ``ResourceWarning`` for ``MemoryObjectReceiveStream`` and
  ``MemoryObjectSendStream`` that were garbage collected without being closed
- Fixed ``MemoryObjectSendStream.send()`` not raising ``BrokenResourceError`` \ 
when the
  last corresponding ``MemoryObjectReceiveStream`` is closed while waiting to send a
  falsey item
   2024-02-19 12:25:24 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-anyio: updated to 4.3.0

4.3.0

Added support for the Python 3.12 walk_up keyword argument in \ 
anyio.Path.relative_to()

Fixed passing total_tokens to anyio.CapacityLimiter() as a keyword argument not \ 
working on the trio backend

Fixed Process.aclose() not performing the minimum level of necessary cleanup \ 
when cancelled. Previously:

Cancellation of Process.aclose() could leak an orphan process
Cancellation of run_process() could very briefly leak an orphan process.
Cancellation of Process.aclose() or run_process() on Trio could leave standard \ 
streams unclosed

Fixed Process.stdin.aclose(), Process.stdout.aclose(), and \ 
Process.stderr.aclose() not including a checkpoint on asyncio

Fixed documentation on how to provide your own typed attributes
   2024-01-01 18:01:58 by Adam Ciarcinski | Files touched by this commit (2) | Package updated
Log message:
py-anyio: updated to 4.2.0

4.2.0

- Add support for ``byte``-based paths in ``connect_unix``, \ 
``create_unix_listeners``,
  ``create_unix_datagram_socket``, and \ 
``create_connected_unix_datagram_socket``. (PR by
  Lura Skye)
- Enabled the ``Event`` and ``CapacityLimiter`` classes to be instantiated outside an
  event loop thread
- Broadly improved/fixed the type annotations. Among other things, many functions and
  methods that take variadic positional arguments now make use of PEP 646
  ``TypeVarTuple`` to allow the positional arguments to be validated by static type
  checkers. These changes affected numerous methods and functions, including:

  * ``anyio.run()``
  * ``TaskGroup.start_soon()``
  * ``anyio.from_thread.run()``
  * ``anyio.from_thread.run_sync()``
  * ``anyio.to_thread.run_sync()``
  * ``anyio.to_process.run_sync()``
  * ``BlockingPortal.call()``
  * ``BlockingPortal.start_task_soon()``
  * ``BlockingPortal.start_task()``

- Fixed various type annotations of ``anyio.Path`` to match Typeshed:

  * ``anyio.Path.__lt__()``
  * ``anyio.Path.__le__()``
  * ``anyio.Path.__gt__()``
  * ``anyio.Path.__ge__()``
  * ``anyio.Path.__truediv__()``
  * ``anyio.Path.__rtruediv__()``
  * ``anyio.Path.hardlink_to()``
  * ``anyio.Path.samefile()``
  * ``anyio.Path.symlink_to()``
  * ``anyio.Path.with_segments()``

- Fixed adjusting the total number of tokens in a ``CapacityLimiter`` on asyncio \ 
failing
  to wake up tasks waiting to acquire the limiter in certain edge cases (fixed \ 
with help
  from Egor Blagov)
- Fixed ``loop_factory`` and ``use_uvloop`` options not being used on the asyncio
  backend
- Fixed cancellation propagating on asyncio from a task group to child tasks if \ 
the task
  hosting the task group is in a shielded cancel scope