
    ,hS                    2    d dl mZ d dlZdgZ G d d      Zy)    )annotationsNDeadlinec                  &    e Zd ZdZddZddddZy)	r   z
    Manage timeouts across multiple steps.

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

    c                T    |  |d | _         y t        j                         |z   | _         y )N)deadlinetime	monotonic)selftimeouts     W/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/websockets/sync/utils.py__init__zDeadline.__init__   s$    ? DM NN,w6DM    T)raise_if_elapsedc                   | j                   y| j                   t        j                         z
  }|r|dk  rt        d      |S )aL  
        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   zDeadline.timeout   s?     == --$.."221{++r   N)r   float | NonereturnNone)r   boolr   r   )__name__
__module____qualname____doc__r   r    r   r   r   r   	   s    7 37 r   )
__future__r   r   __all__r   r   r   r   <module>r      s    "  ,$ $r   