ó
    öÞ jS  ã                  ó2   • S SK Jr  S SKrS/r " S S5      rg)é    )ÚannotationsNÚDeadlinec                  ó4   • \ rS rSrSrS	S jrSS.S
S jjrSrg)r   é	   z|
Manage timeouts across multiple steps.

Args:
    timeout: Time available in seconds or :obj:`None` if there is no limit.

c                óX   • U   Uc  S U l         g [        R                  " 5       U-   U l         g )N)ÚdeadlineÚtimeÚ	monotonic)ÚselfÚtimeouts     ÚO/var/www/html/gaurav/venv/lib/python3.13/site-packages/websockets/sync/utils.pyÚ__init__ÚDeadline.__init__   s$   € ÙØ‰?Ø ˆD�Mä ŸNšNÓ,¨wÑ6ˆD�Mó    T)Úraise_if_elapsedc               ó–   • U R                   c  gU R                   [        R                  " 5       -
  nU(       a  US::  a  [        S5      eU$ )a  
Calculate a timeout from a deadline.

Args:
    raise_if_elapsed: Whether to raise :exc:`TimeoutError`
        if the deadline lapsed.

Raises:
    TimeoutError: If the deadline lapsed.

Returns:
    Time left in seconds or :obj:`None` if there is no limit.

Nr   z	timed out)r   r	   r
   ÚTimeoutError)r   r   r   s      r   r   ÚDeadline.timeout   s?   € ð �=‰=Ñ ØØ—-‘-¤$§.¢.Ó"2Ñ2ˆÞ ¨1£Ü˜{Ó+Ð+Øˆr   )r   N)r   úfloat | NoneÚreturnÚNone)r   Úboolr   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__© r   r   r   r   	   s   † ñô7ð 37÷ ò r   )Ú
__future__r   r	   Ú__all__r   r   r   r   Ú<module>r"      s   ðÝ "ã ð ˆ,€÷$ò $r   