
    iju                     z    d dl Z d dlZd dlmZmZmZ d dlZd dlmZm	Z	 d dl
mZmZ  G d de      Z G d d      Zy)	    N)	AwaitableCallableDict)ChannelOwner_capture_stack_trace)Erroris_target_closed_errorc            
       P     e Zd Zdededededdf
 fdZddZdd	Zdefd
Z	 xZ
S )
DisposableparenttypeguidinitializerreturnNc                 *    t         |   ||||       y N)super__init__)selfr   r   r   r   	__class__s        O/root/.hermes/venv/lib/python3.12/site-packages/playwright/_impl/_disposable.pyr   zDisposable.__init__   s     	t[9    c                    K   	 | j                   j                  dd        d {    y 7 # t        $ r}t        |      s|Y d }~y d }~ww xY ww)Ndispose)_channelsend	Exceptionr	   )r   es     r   r   zDisposable.dispose   sP     	--$$    	)!, -	s6   A+ )+ A+ 	AAAAAc                 @   K   | j                          d {    y 7 wr   r   r   s    r   closezDisposable.close)        lln   c                      yNz<Disposable> r!   s    r   __repr__zDisposable.__repr__,       r   r   N)__name__
__module____qualname__r   strr   r   r   r"   r(   __classcell__)r   s   @r   r   r      sF    :":*-:58:GK:	:
# r   r   c                       e Zd Zdeg ed   f   deddfdZddZddZde	ddfd	Z
dd
Zde	ddfdZde	de	fdZddZdefdZy)DisposableStub
dispose_fnNr   r   c                 V    || _         |j                  | _        |j                  | _        y r   )_dispose_fn_loop_dispatcher_fiber)r   r2   r   s      r   r   zDisposableStub.__init__1   s%    
 &\\
!'!9!9r   c                 @   K   | j                          d {    y 7 wr   )r4   r!   s    r   r   zDisposableStub.dispose:   s        r$   c                    K   | S wr   r'   r!   s    r   
__aenter__zDisposableStub.__aenter__=   s     s   argsc                 @   K   | j                          d {    y 7 wr   r    r   r:   s     r   	__aexit__zDisposableStub.__aexit__@   r#   r$   c                     | S r   r'   r!   s    r   	__enter__zDisposableStub.__enter__C   s    r   c                 B    | j                  | j                                y r   )_syncr   r<   s     r   __exit__zDisposableStub.__exit__F   s    

4<<>"r   coroc                 8   d}| j                   j                         r|j                          t        d      t	        j
                         | j                   j                  |      }t        |dt                      t        |dt        j                  d             |j                  fd       |j                         s+| j                  j                          |j                         s+t        j                   | j                          |j#                         S )NTz4Event loop is closed! Is Playwright already stopped?__pw_stack____pw_stack_trace__
   )limitc                 $    j                         S r   )switch)_g_selfs    r   <lambda>z&DisposableStub._sync.<locals>.<lambda>V   s     r   )r5   	is_closedr"   r   greenlet
getcurrentcreate_tasksetattrr   	tracebackextract_stackadd_done_callbackdoner6   rJ   asyncio_set_running_loopresult)r   rC   __tracebackhide__taskrL   s       @r   rA   zDisposableStub._syncI   s     ::!JJLNOO$$&zz%%d+ "	

 	*I,C,C",MN89))+""))+ ))+!!$**-{{}r   c                 @   K   | j                          d {    y 7 wr   r    r!   s    r   r"   zDisposableStub.close\   r#   r$   c                      yr&   r'   r!   s    r   r(   zDisposableStub.__repr___   r)   r   r*   )r   r1   )r+   r,   r-   r   r   r   r   r   r9   objectr=   r?   rB   rA   r"   r.   r(   r'   r   r   r1   r1   0   s    :R401: : 
	:!V  #f # #& V &# r   r1   )rW   rS   typingr   r   r   rO   playwright._impl._connectionr   r   playwright._impl._errorsr   r	   r   r1   r'   r   r   <module>rb      s2      , ,  K B .0 0r   