o
    i;                     @  s   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZ er8d dlmZ d dlmZ d dlmZ ed	ZG d
d dee ZG dd dee ee ZdS )    )annotations)	Awaitable)TYPE_CHECKINGAnyGenericTypeVar)_GEVENT_AVAILABLEwrap_df)Future)	Generator)PyDataFrameTc                   @  sV   e Zd ZdZdddZ		ddddZedddZdddZdddZ	d ddZ
dS )!_GeventDataFrameResult)_result_value_watcherreturnNonec                 C  sV   t sd}t|ddlm} ddlm} d | _| | _| j	 | _
| j
| j d S )Nzigevent is required for using LazyFrame.collect_async(gevent=True) orpolars.collect_all_async(gevent=True)r   )AsyncResult)get_hub)r   ImportErrorZgevent.eventr   Z
gevent.hubr   r   r   loopZasync_r   start_watcher_callback)selfmsgr   r    r   K/home/app/Keep/.python/lib/python3.10/site-packages/polars/_utils/async_.py__init__   s   z_GeventDataFrameResult.__init__TNblockbooltimeoutfloat | int | Noner   c                 C  s   | j j||dS )N)r    r"   )resultget)r   r    r"   r   r   r   r%   '   s   z_GeventDataFrameResult.getr   c                 C  s"   | j d ur| j s|   | jS N)r   r   readyr   r   r   r   r   r$   .   s   z_GeventDataFrameResult.resultc                 C  s8   t | jtr| j| j n| j| j | j  d S r&   )
isinstancer   	Exceptionr   set_exceptionsetr   closer(   r   r   r   r   6   s   z(_GeventDataFrameResult._watcher_callbackobjPyDataFrame | Exceptionc                 C  s&   t |ts	t|}|| _| j  d S r&   )r)   r*   r
   r   r   sendr   r.   r   r   r   	_callback=   s   
z _GeventDataFrameResult._callbacklist[PyDataFrame] | Exceptionc                 C  s,   t |tsdd |D }|| _| j  d S )Nc                 S     g | ]}t |qS r   r	   .0Zpydfr   r   r   
<listcomp>E       z8_GeventDataFrameResult._callback_all.<locals>.<listcomp>)r)   r*   r   r   r0   r1   r   r   r   _callback_allC   s   
z$_GeventDataFrameResult._callback_allr   r   )TN)r    r!   r"   r#   r   r   )r   r   r.   r/   r   r   r.   r3   r   r   )__name__
__module____qualname__	__slots__r   r%   propertyr$   r   r2   r9   r   r   r   r   r      s    


r   c                   @  s8   e Zd ZdZdddZdddZdddZdddZdS )_AioDataFrameResult)r   r$   r   r   c                 C  s$   ddl m} | | _| j | _d S )Nr   )get_event_loop)asynciorC   r   create_futurer$   )r   rC   r   r   r   r   M   s   z_AioDataFrameResult.__init__Generator[Any, None, T]c                 C  s
   | j  S r&   )r$   	__await__r(   r   r   r   rG   S   s   
z_AioDataFrameResult.__await__r.   r/   c                 C  s:   t |tr| j| jj| d S | j| jjt| d S r&   )r)   r*   r   call_soon_threadsafer$   r+   
set_resultr
   r1   r   r   r   r2   V   s   
z_AioDataFrameResult._callbackr3   c                 C  s@   t |tr| j| jj| d S | j| jjdd |D  d S )Nc                 S  r4   r   r	   r5   r   r   r   r7   e   r8   z5_AioDataFrameResult._callback_all.<locals>.<listcomp>)r)   r*   r   rH   r$   r+   rI   r1   r   r   r   r9   _   s   
z!_AioDataFrameResult._callback_allNr:   )r   rF   r;   r<   )r=   r>   r?   r@   r   rG   r2   r9   r   r   r   r   rB   J   s    


	rB   N)
__future__r   collections.abcr   typingr   r   r   r   Zpolars._dependenciesr   Zpolars._utils.wrapr
   Zasyncio.futuresr   r   Zpolars._plrr   r   r   rB   r   r   r   r   <module>   s    7