U
    )3g                     @   s   d dl Zd dlZzd dlmZ W n ek
r8   dZY nX d dlm	Z	 G dd de
ZdddZddd	ZG d
d de
ZG dd de
ZdS )    Nrandsc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ParquetWriteBinaryc                    s   d}d d}d}t j fddt|D dd}|t jjd	||d
 tjfddt|D dd t|D d| _| j | _d S )N順 2   i@B 
   c                    s   g | ]}t  qS  r   .0i)
value_sizer   6/tmp/pip-unpacked-wheel-0fuzq0j6/benchmarks/parquet.py
<listcomp>$   s   z,ParquetWriteBinary.setup.<locals>.<listcomp>OZdtyper   sizec                    s   g | ]}t  qS r   )paarrayr	   )valuesr   r   r   '   s     c                 S   s   g | ]}d  |qS zf{}formatr	   r   r   r   r   (   s     names)	npr   rangerandomrandintr   tableZ	to_pandastable_df)selfZnuniqueslengthnum_colsZunique_valuesr   )r   r   r   setup   s    zParquetWriteBinary.setupc                 C   s   t  }t| j| d S Nr   BufferOutputStreampqwrite_tabler   r!   outr   r   r   time_write_binary_table+   s    z*ParquetWriteBinary.time_write_binary_tablec                 C   s   t  }tj| j|dd d S )Nnone)compressionr&   r*   r   r   r   $time_write_binary_table_uncompressed/   s    z7ParquetWriteBinary.time_write_binary_table_uncompressedc                 C   s   t  }tj| j|dd d S )NF)Zuse_dictionaryr&   r*   r   r   r   %time_write_binary_table_no_dictionary3   s    z8ParquetWriteBinary.time_write_binary_table_no_dictionaryc                 C   s    t  }tt | j| d S r%   )r   r'   r(   r)   r   r    r*   r   r   r   *time_convert_pandas_and_write_binary_table7   s    z=ParquetWriteBinary.time_convert_pandas_and_write_binary_tableN)__name__
__module____qualname__r$   r,   r/   r0   r1   r   r   r   r   r      s
   r   Tc                    sf   t j fddt|D dd}|r>t jjd||dd}nt |d|| }tj	
||S )Nc                    s   g | ]}t  qS r   r   r	   string_sizer   r   r   =   s     z)generate_dict_strings.<locals>.<listcomp>r   r   r   r   i4)r   r   r   r   r   ZastypeZarangerepeatr   ZDictionaryArrayZfrom_arrays)r6   nuniquer"   random_orderZuniquesindicesr   r5   r   generate_dict_strings<   s
     r<   c                    s>   t ||||d tj fddt| D dd t| D dS )Nr:   c                    s   g | ]} qS r   r   r	   datar   r   r   I   s    z'generate_dict_table.<locals>.<listcomp>c                 S   s   g | ]}d  |qS r   r   r	   r   r   r   r   K   s     r   )r<   r   r   r   )r#   r6   r9   r"   r:   r   r>   r   generate_dict_tableE   s    r@   c                   @   s0   e Zd ZdZddgZdd Zdd Zdd	 Zd
S )ParquetWriteDictionaries)r9     r   c                 C   sP   d| _ d| _|| _d| _t| j | j| j| j| _t| j | j| j| jdd| _d S )Nr       逖 Fr=   )r#   r   r9   r"   r@   r   table_sequentialr!   r9   r   r   r   r$   S   s    
  zParquetWriteDictionaries.setupc                 C   s   t | jt  d S r%   )r(   r)   r   r   r'   rF   r   r   r   time_write_random_order`   s    z0ParquetWriteDictionaries.time_write_random_orderc                 C   s   t | jt  d S r%   )r(   r)   rE   r   r'   rF   r   r   r   time_write_sequentialc   s    z.ParquetWriteDictionaries.time_write_sequentialN)r2   r3   r4   param_namesparamsr$   rG   rH   r   r   r   r   rA   N   s
   rA   c                   @   s6   e Zd ZdZdZdddgZdd Zdd	 Zd
d ZdS )ParquetManyColumnsrD   )r#   d   rB   i'  c                    sL   | j |  t fddt|D | _t }t| j| | | _d S )Nc                    s"   i | ]}d t | tj qS )c)strr   r   Zrandnr	   Znum_rowsr   r   
<dictcomp>o   s   
 z,ParquetManyColumns.setup.<locals>.<dictcomp>)	total_cellsr   r   r   r'   r(   r)   getvaluebufr!   r#   r+   r   rO   r   r$   m   s    

zParquetManyColumns.setupc                 C   s   t  }t| j| d S r%   r&   rT   r   r   r   
time_writev   s    zParquetManyColumns.time_writec                 C   s   t | j d S r%   )r(   Z
read_tablerS   )r!   r#   r   r   r   	time_readz   s    zParquetManyColumns.time_readN)	r2   r3   r4   rQ   rI   rJ   r$   rU   rV   r   r   r   r   rK   g   s   
	rK   )T)T)Znumpyr   Zpyarrowr   Zpyarrow.parquetZparquetr(   ImportErrorZpyarrow.tests.utilr   objectr   r<   r@   rA   rK   r   r   r   r   <module>   s   
 

 
	