o
    EDi                     @   sz   d dl Z d dlZd dlmZmZmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZ e eZG dd deZdS )	    N)	GeneratorSequenceTuple)	empty_genStreamContext)StreamClosedError)Closable)nppdc                   @   s   e Zd Z					ddeeddf dedededef
dd	Zd
efddZd
efddZ	dd Z
dd Zedd Zedd Zed
efddZed
efddZdd ZdS )NumpyResultN 	block_gencolumn_namescolumn_typesd_typessourcec                 C   s@   || _ || _|| _|| _d| _i | _|pt | _d | _d | _	d S )N )
r   r   np_typesr   query_idsummaryr   
_block_gen_numpy_result
_df_result)selfr   r   r   r   r   r   r   Z/var/www/Datamplify/venv/lib/python3.10/site-packages/clickhouse_connect/driver/npquery.py__init__   s   
zNumpyResult.__init__returnc                    s   j d u rtj  d _ js S j}|d tjkr6tfdd|D r6_ fdd}| S tdd |D rItjgtj _tt	t
j|_ fdd}| S )Nr   c                 3   s    | ]
}t | kV  qd S N)r	   dtype).0np_type)
first_typer   r   	<genexpr>*   s    z)NumpyResult._np_stream.<locals>.<genexpr>c                  3   s"     D ]} t |  V  qd S r   )r	   array	transposeblock)r   r!   r   r   numpy_blocks-   s   z,NumpyResult._np_stream.<locals>.numpy_blocksc                 s   s    | ]}|t jkV  qd S r   )r	   object_)r   xr   r   r   r"   1   s    c                  3   sL     D ] } t jt| d jd}tj| D ]\}}|||< q|V  qd S )Nr   r   )r	   emptylenr   zipr   )r&   np_arraycol_namedatar   r   r   r   r'   5   s   
)r   r   r   r	   r(   allanyr,   r   listr-   r   )r   r   r'   r   )r   r!   r   r   
_np_stream   s"   
 zNumpyResult._np_streamc                    s.   j d u rtj   fdd}d _ | S )Nc                  3   s(     D ]} t ttj| V  qd S r   )r
   	DataFramedictr-   r   r%   r1   r   r   	pd_blocksC   s   z)NumpyResult._df_stream.<locals>.pd_blocks)r   r   )r   r8   r   r1   r   
_df_stream>   s   
zNumpyResult._df_streamc                 C   s   | j std}g }g }|  D ]}|| t||kr-|tj|| jd |d9 }g }q|| t|dkrCtj|| jd| _	nt|dkrO|d | _	nt
d| _	|   | S )N   r*         r   )r   )r   r   r5   appendr,   r	   concatenater   extendr   r+   close)r   
chunk_sizepiecesblocksr&   r   r   r   close_numpyJ   s(   

zNumpyResult.close_numpyc                    s   | j d u rt| j }tj  fddt| D }g }|D ]}dd |D }t|dkr6|tj|ddd qt	t
t| j|| _|   | S )Nc                    s   g | ]} |qS r   r   )r   bchainr   r   
<listcomp>e   s    z(NumpyResult.close_df.<locals>.<listcomp>c                 S   s&   g | ]}t |d krtj|ddqS )r   F)copy)r,   r
   Series)r   piecer   r   r   rH   h   s   & r   FT)rI   ignore_index)r   r   	itertoolsrG   r-   r,   r=   r
   concatr6   r7   r   r   r@   )r   bgchainsnew_df_seriescseriesr   rF   r   close_df`   s   
zNumpyResult.close_dfc                 C      | j d u r	|   | j S r   )r   rD   r   r   r   r   	np_resulto      
zNumpyResult.np_resultc                 C   rU   r   )r   rT   rV   r   r   r   	df_resultu   rX   zNumpyResult.df_resultc                 C      t | |  S r   )r   r5   rV   r   r   r   	np_stream{      zNumpyResult.np_streamc                 C   rZ   r   )r   r9   rV   r   r   r   	df_stream   r\   zNumpyResult.df_streamc                 C   s8   | j d ur| j   d | _ | jr| j  d | _d S d S r   )r   r@   r   rV   r   r   r   r@      s   



zNumpyResult.close)Nr   r   r   N)__name__
__module____qualname__r   r   r   r   r   r5   r9   rD   rT   propertyrW   rY   r   r[   r]   r@   r   r   r   r   r      s<    


r   )loggingrM   typingr   r   r    clickhouse_connect.driver.commonr   r   $clickhouse_connect.driver.exceptionsr   clickhouse_connect.driver.typesr   !clickhouse_connect.driver.optionsr	   r
   	getLoggerr^   loggerr   r   r   r   r   <module>   s    
