Ë
    #)fW  ã                  ój   — d dl mZ d dlmZmZ d dlmZ ddlmZ erd dl	m
Z
 edd„«       Zdd„Zdd	„Zy
)é    )Úannotations)ÚAbstractContextManagerÚcontextmanager)ÚTYPE_CHECKINGé   )Ú_core)Ú	Generatorc              #  ó‚  K  — d}t        j                  «       }|j                  }|j                  }	 d–— | r)|j                  |k(  s|j                  |k(  rt	        d«      ‚| s*|j                  |k7  s|j                  |k7  rt	        d«      ‚yy# | s*|j                  |k7  s|j                  |k7  rt	        d«      ‚w w xY w­w)z5Check if checkpoints are executed in a block of code.TNz'assert_checkpoints block did not yield!z$assert_no_checkpoints block yielded!)r   Úcurrent_taskÚ_cancel_pointsÚ_schedule_pointsÚAssertionError)ÚexpectedÚ__tracebackhide__ÚtaskÚorig_cancelÚorig_schedules        úV/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/testing/_checkpoints.pyÚ_assert_yields_or_notr      sÏ   è ø€ ð ÐÜ×ÑÓ€DØ×%Ñ%€KØ×)Ñ)€Mð
IÛÙØ×Ñ ;Ò.°$×2GÑ2GÈ=Ò2Xä Ð!JÓKÐKáØ×Ñ ;Ò.°$×2GÑ2GÈ=Ò2Xä Ð!GÓHÐHð 3Yð ø‰xØ×Ñ ;Ò.°$×2GÑ2GÈ=Ò2Xä Ð!GÓHÐHð 3Yð üs   ‚/B?²/B Á!-B?Â.B<Â<B?c                 ó   — d} t        d«      S )a©  Use as a context manager to check that the code inside the ``with``
    block either exits with an exception or executes at least one
    :ref:`checkpoint <checkpoints>`.

    Raises:
      AssertionError: if no checkpoint was executed.

    Example:
      Check that :func:`trio.sleep` is a checkpoint, even if it doesn't
      block::

         with trio.testing.assert_checkpoints():
             await trio.sleep(0)

    T©r   ©r   s    r   Úassert_checkpointsr       s   € ð  ÐÜ  Ó&Ð&ó    c                 ó   — d} t        d«      S )aÜ  Use as a context manager to check that the code inside the ``with``
    block does not execute any :ref:`checkpoints <checkpoints>`.

    Raises:
      AssertionError: if a checkpoint was executed.

    Example:
      Synchronous code never contains any checkpoints, but we can double-check
      that::

         send_channel, receive_channel = trio.open_memory_channel(10)
         with trio.testing.assert_no_checkpoints():
             send_channel.send_nowait(None)

    TFr   r   s    r   Úassert_no_checkpointsr   4   s   € ð  ÐÜ  Ó'Ð'r   N)r   ÚboolÚreturnzGenerator[None, None, None])r   zAbstractContextManager[None])Ú
__future__r   Ú
contextlibr   r   Útypingr   Ú r   Úcollections.abcr	   r   r   r   © r   r   ú<module>r%      s7   ðÝ "ç =Ý  å áÝ)ð òIó ðIó&'ô((r   