a
    Pf`)                     @   sx   d dl Zd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dlmZ G dd dZG dd dZd	d
 Zdd ZdS )    N)	Timedeltalibwriters)IS64)Indexc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestMiscc                 C   s   t jddt jgdd }}t|dks,J |dt}t|dksNJ |dt}t|dkspJ d}tjt	|d	  t|d W d    n1 s0    Y  d S )
NZfoobobjectdtype   USzNo matching signature foundmatch)
nparraynan
libwritersZmax_len_string_arrayastyper	   pytestraises	TypeError)selfarramsg r   S/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/libs/test_lib.pytest_max_len_string_array   s    z"TestMisc.test_max_len_string_arrayc                 C   s   ddgddgddgg}dd |D }t g d}tj|d	d
}tt || dd |D }t g d}tj|dd
}tt || d S )Npr   ndsc                 s   s   | ]
}|V  qd S Nr   .0keyr   r   r   	<genexpr>$       zCTestMisc.test_fast_unique_multiple_list_gen_sort.<locals>.<genexpr>)r   r"   r!   r    r#   T)sortc                 s   s   | ]
}|V  qd S r$   r   r%   r   r   r   r(   )   r)   )r    r   r!   r"   r#   F)r   r   r   Zfast_unique_multiple_list_gentmassert_numpy_array_equal)r   keysgenexpectedoutr   r   r   'test_fast_unique_multiple_list_gen_sort!   s    z0TestMisc.test_fast_unique_multiple_list_gen_sortc                    s
  t dd  di} ddi}t fddtdD jt}t||}t||}t	
|| t tdd t t d	ksJ t t d
ksJ  di} d	di}t fddtdD jt}t||}t||}t	
|| d S )N   )daysr#   c                    s   g | ]} | qS r   r   r&   r!   tdr   r   
<listcomp>7   r)   z?TestMisc.test_fast_multiget_timedelta_resos.<locals>.<listcomp>r   iP: Dmsusc                    s   g | ]} | qS r   r   r4   r5   r   r   r7   D   r)   )r   Zas_unitr   rangeZ_valuesr   r	   r   Zfast_multigetr+   r,   r   Ztimedelta64hash)r   Zmapping1Zmapping2Zoindexr/   resultr   r5   r   "test_fast_multiget_timedelta_resos.   s     
""z+TestMisc.test_fast_multiget_timedelta_resosN)__name__
__module____qualname__r   r1   r>   r   r   r   r   r      s   r   c                	   @   s  e Zd Zdd Zejdg dejdg ddd Zejd	g d
g dg dg dg dgdd Zejdg dejdg ddd Z	dd Z
ejd	g dg dg dgdd Zejdg ddd Zejd	g dg dg dgd d! Zejd"g d#ejdg d$d%d& Zejd	g d'g d(g d)gd*d+ Zd,d- Zd.d/ Zejd0d1d2gd3d4 Zejje d5d6ejd0d1d2gd7d8 Zejd0d1d2gd9d: Zejd0d1d2gd;d< Zd=S )>TestIndexingc                 C   sP   t d}t jg t jd}t|t|}t|ts8J t	
|| ||  d S Nd   r
   r   aranger   intpr   maybe_indices_to_slicelen
isinstanceslicer+   r,   )r   targetindicesmaybe_slicer   r   r   %test_maybe_indices_to_slice_left_edgeL   s
    
z2TestIndexing.test_maybe_indices_to_slice_left_edgeend)r2            c   step)r2   rQ      c                 C   s   t d}t jd||t jd}t|t|}t|ts<J t	|| ||  |d d d }t|t|}t|ts|J t	|| ||  d S )NrD   r   r
   
r   rF   rG   r   rH   rI   rJ   rK   r+   r,   )r   rP   rU   rL   rM   rN   r   r   r   9test_maybe_indices_to_slice_left_edge_not_slice_end_stepsV   s    
zFTestIndexing.test_maybe_indices_to_slice_left_edge_not_slice_end_stepscase)rQ   r2   rQ   r   )rQ   rQ   r2   r   )r   r2   rQ   r2   )r   rQ   )rQ   r   r[   c                 C   s\   t d}t j|t jd}t|t|}t|tr8J t	
|| t	
|| ||  d S rC   rE   r   rZ   rL   rM   rN   r   r   r   /test_maybe_indices_to_slice_left_edge_not_sliceg   s    
z<TestIndexing.test_maybe_indices_to_slice_left_edge_not_slicestart)r   rQ   rR   rS   a   b   c                 C   s   t d}t j|d|t jd}t|t|}t|ts<J t	|| ||  |d d d }t|t|}t|ts|J t	|| ||  d S )NrD   rT   r
   rW   rX   )r   r^   rU   rL   rM   rN   r   r   r   &test_maybe_indices_to_slice_right_edget   s    
z3TestIndexing.test_maybe_indices_to_slice_right_edgec                 C   sj  t d}t jg dt jd}t|t|}t|tr<J t	
|| d}tjt|d ||  W d    n1 sx0    Y  tjt|d ||  W d    n1 s0    Y  t jg dt jd}t|t|}t|trJ t	
|| tjt|d ||  W d    n1 s$0    Y  tjt|d ||  W d    n1 s\0    Y  d S )NrD   )r_   r`   rT   rD   r
   z7index 100 is out of bounds for axis (0|1) with size 100r   )rD   rT   r`   r_   )r   rF   r   rG   r   rH   rI   rJ   rK   r+   r,   r   r   
IndexError)r   rL   rM   rN   r   r   r   r   0test_maybe_indices_to_slice_right_edge_not_slice   s$    
&&(z=TestIndexing.test_maybe_indices_to_slice_right_edge_not_slice)rT   r_   rT   `   )rT   rT   r`   r_   )r`   r`   r_   rd   c                 C   s\   t d}t j|t jd}t|t|}t|tr8J t	
|| t	
|| ||  d S rC   rE   r\   r   r   r   ,test_maybe_indices_to_slice_right_edge_cases   s    
z9TestIndexing.test_maybe_indices_to_slice_right_edge_cases)r2   rQ   rV   rR      	   c                 C   s   t d}t jdd|t jd}t|t|}t|ts<J t	|| ||  |d d d }t|t|}t|ts|J t	|| ||  d S )N
   r   rg   r
   rW   rX   )r   rU   rL   rM   rN   r   r   r   &test_maybe_indices_to_slice_both_edges   s    
z3TestIndexing.test_maybe_indices_to_slice_both_edges)rV   rQ   r   r[   c                 C   s\   t d}t j|t jd}t|t|}t|tr8J t	
|| t	
|| ||  d S )Nrh   r
   rE   r\   r   r   r   0test_maybe_indices_to_slice_both_edges_not_slice   s    
z=TestIndexing.test_maybe_indices_to_slice_both_edges_not_slicez
start, end))rQ   rh   )rR      )A   r_   )r2   rQ   rV   rS   c                 C   s   t d}t j|||t jd}t|t|}t|ts<J t	|| ||  |d d d }t|t|}t|ts|J t	|| ||  d S )NrD   r
   rW   rX   )r   r^   rP   rU   rL   rM   rN   r   r   r   "test_maybe_indices_to_slice_middle   s    
z/TestIndexing.test_maybe_indices_to_slice_middle)      rh   ro   )ro   ro      rh   )rh   rp   ro   rp   c                 C   s\   t d}t j|t jd}t|t|}t|tr8J t	
|| t	
|| ||  d S rC   rE   r\   r   r   r   ,test_maybe_indices_to_slice_middle_not_slice   s    
z9TestIndexing.test_maybe_indices_to_slice_middle_not_slicec                 C   sV   t jg dt jd}t|}|jt jks.J t|d d }|tddksRJ d S )N)r   r   r2   r2   r2   r   r2   r
   r   )r   r   Zuint8r   Zmaybe_booleans_to_slicer   Zbool_rK   )r   r   r=   r   r   r   test_maybe_booleans_to_slice   s
    
z)TestIndexing.test_maybe_booleans_to_slicec                 C   sD   t jg dt jd}t|d}t jg dt jd}t|| d S )N)rW   rW   r2   rQ   r   rW   r   rV   r
   rR   )rV   rQ   r         )r   r   rG   r   Zget_reverse_indexerr+   r,   )r   Zindexerr=   r/   r   r   r   test_get_reverse_indexer   s    z%TestIndexing.test_get_reverse_indexerr   Zint64Zint32c                 C   s$   t jdd|d}t|ds J d S )Nr   rD   r
   r   rF   r   is_range_indexerr   r   leftr   r   r   test_is_range_indexer   s    z"TestIndexing.test_is_range_indexerzx2**31 is too big for Py_ssize_t on 32-bit. It doesn't matter though since you cannot create an array that long on 32-bit)reasonc                 C   s$   t jdd|d}t|dr J d S )Nr   rD   r
   l        rv   rx   r   r   r   test_is_range_indexer_big_n   s    z(TestIndexing.test_is_range_indexer_big_nc                 C   s&   t jddg|d}t|dr"J d S )Nr2   rQ   r
   r   r   r   rw   rx   r   r   r   test_is_range_indexer_not_equal  s    z,TestIndexing.test_is_range_indexer_not_equalc                 C   s&   t jg d|d}t|dr"J d S )N)r   r2   rQ   r
   rQ   r}   rx   r   r   r   %test_is_range_indexer_not_equal_shape  s    z2TestIndexing.test_is_range_indexer_not_equal_shapeN)r?   r@   rA   rO   r   markZparametrizerY   r]   ra   rc   re   ri   rj   rm   rq   rr   ru   rz   Zskipifr   r|   r~   r   r   r   r   r   rB   K   sR   
"


	

	



rB   c                   C   s   t jjd usJ d S r$   )r   Zhasnans__doc__r   r   r   r   'test_cache_readonly_preserve_docstrings  s    r   c                  C   s   t tj} | tju sJ d S r$   )r+   Zround_trip_pickler   Z
no_default)objr   r   r   test_no_default_pickle  s    r   )numpyr   r   Zpandas._libsr   r   r   r   Zpandas.compatr   Zpandasr   Zpandas._testingZ_testingr+   r   rB   r   r   r   r   r   r   <module>   s   < K