o
    Pj9                     @   sr   d dl 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	 d dl
mZmZ G dd de	ZG dd dZdS )	    N)	AwaitableCallableDict)ChannelOwner)Erroris_target_closed_errorc                
       sT   e Zd Zdededededdf
 fddZdd	d
ZdddZdefddZ	  Z
S )
DisposableparenttypeguidinitializerreturnNc                    s   t  |||| d S N)super__init__)selfr	   r
   r   r   	__class__ Q/home/thesage/.local/lib/python3.10/site-packages/playwright/_impl/_disposable.pyr      s   zDisposable.__init__c              
      sP   z| j dd I d H  W d S  ty' } zt|s|W Y d }~d S d }~ww )Ndispose)_channelsend	Exceptionr   )r   er   r   r   r       s   zDisposable.disposec                       |   I d H  d S r   r   r   r   r   r   close*      zDisposable.closec                 C      dS Nz<Disposable>r   r   r   r   r   __repr__-      zDisposable.__repr__r   N)__name__
__module____qualname__r   strr   r   r   r   r"   __classcell__r   r   r   r   r      s    


r   c                   @   s   e Zd Zdeg ed f deddfddZdddZdd	d
Zde	ddfddZ
dddZde	ddfddZde	de	fddZdddZdefddZdS )DisposableStub
dispose_fnNr	   r   c                 C   s   || _ |j| _|j| _d S r   )_dispose_fn_loop_dispatcher_fiber)r   r+   r	   r   r   r   r   2   s   zDisposableStub.__init__c                    r   r   )r,   r   r   r   r   r   ;   r   zDisposableStub.disposec                    s   | S r   r   r   r   r   r   
__aenter__>   s   zDisposableStub.__aenter__argsc                    r   r   r   r   r0   r   r   r   	__aexit__A   r   zDisposableStub.__aexit__c                 C   s   | S r   r   r   r   r   r   	__enter__D   r#   zDisposableStub.__enter__c                 G   s   |  |   d S r   )_syncr   r1   r   r   r   __exit__G   s   zDisposableStub.__exit__coroc                    s   d}| j  r|  tdt  | j |}t|dt	d t|dt
jdd | fdd	 | sB| j  | r9t| j  | S )
NTz4Event loop is closed! Is Playwright already stopped?__pw_stack__r   __pw_stack_trace__
   )limitc                    s      S r   )switch)_g_selfr   r   <lambda>S   s    z&DisposableStub._sync.<locals>.<lambda>)r-   	is_closedr   r   greenlet
getcurrentcreate_tasksetattrinspectstack	tracebackextract_stackadd_done_callbackdoner.   r;   asyncio_set_running_loopresult)r   r6   __tracebackhide__taskr   r=   r   r4   J   s   

zDisposableStub._syncc                    r   r   r   r   r   r   r   r   Y   r   zDisposableStub.closec                 C   r    r!   r   r   r   r   r   r"   \   r#   zDisposableStub.__repr__r$   )r   r*   )r%   r&   r'   r   r   r   r   r   r/   objectr2   r3   r5   r4   r   r(   r"   r   r   r   r   r*   1   s     

	


r*   )rK   rE   rG   typingr   r   r   rA   playwright._impl._connectionr   playwright._impl._errorsr   r   r   r*   r   r   r   r   <module>   s   