o
    d'                     @   sl   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 G dd dZG dd dZdd	 Zd
d ZdS )    N)	Timedeltalibwriters)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s'J |dt}t|dks8J d}tjt	|d	 t|d W d    d S 1 sUw   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   N/app/.heroku/python/lib/python3.10/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       | ]}|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   r#   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sHJ t t d
ksUJ  di} d	di}t fddtdD jt}t||}t||}t	
|| d S )N   )daysr"   c                       g | ]} | qS r   r   r&   r    tdr   r   
<listcomp>6       z?TestMisc.test_fast_multiget_timedelta_resos.<locals>.<listcomp>r   i  Ymsusc                    r4   r   r   r5   r6   r   r   r8   C   r9   )r   Zas_unitr   rangeZ_valuesr   r   r   Zfast_multigetr+   r,   r   Ztimedelta64hash)r   Zmapping1Zmapping2Zoindexr/   resultr   r6   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d0d1d2gd5d6 Zejd0d1d2gd7d8 Zd9S ):TestIndexingc                 C   sP   t d}t jg t jd}t|t|}t|tsJ 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_edgeK   s
   
z2TestIndexing.test_maybe_indices_to_slice_left_edgeend)r2            c   step)r2   rS      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 )NrF   r   r	   
r   rH   rI   r   rJ   rK   rL   rM   r+   r,   )r   rR   rW   rN   rO   rP   r   r   r   9test_maybe_indices_to_slice_left_edge_not_slice_end_stepsU   s   
zFTestIndexing.test_maybe_indices_to_slice_left_edge_not_slice_end_stepscase)rS   r2   rS   r   )rS   rS   r2   r   )r   r2   rS   r2   )r   rS   )rS   r   r]   c                 C   \   t d}t j|t jd}t|t|}t|trJ t	
|| t	
|| ||  d S rE   rG   r   r\   rN   rO   rP   r   r   r   /test_maybe_indices_to_slice_left_edge_not_slicef      
z<TestIndexing.test_maybe_indices_to_slice_left_edge_not_slicestart)r   rS   rT   rU   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 )NrF   rV   r	   rY   rZ   )r   rb   rW   rN   rO   rP   r   r   r   &test_maybe_indices_to_slice_right_edges      
z3TestIndexing.test_maybe_indices_to_slice_right_edgec                 C   sh  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 s<w   Y  tjt|d ||  W d    n1 sWw   Y  t jg dt jd}t|t|}t|truJ t	
|| tjt|d ||  W d    n1 sw   Y  tjt|d ||  W d    d S 1 sw   Y  d S )NrF   )rc   rd   rV   rF   r	   z7index 100 is out of bounds for axis (0|1) with size 100r   )rF   rV   rd   rc   )r   rH   r   rI   r   rJ   rK   rL   rM   r+   r,   r   r   
IndexError)r   rN   rO   rP   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)rV   rc   rV   `   )rV   rV   rd   rc   )rd   rd   rc   ri   c                 C   r^   rE   rG   r_   r   r   r   ,test_maybe_indices_to_slice_right_edge_cases   s   
z9TestIndexing.test_maybe_indices_to_slice_right_edge_cases)r2   rS   rX   rT      	   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   rl   r	   rY   rZ   )r   rW   rN   rO   rP   r   r   r   &test_maybe_indices_to_slice_both_edges   s   
z3TestIndexing.test_maybe_indices_to_slice_both_edges)rX   rS   r   r]   c                 C   r^   )Nrm   r	   rG   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))rS   rm   )rT      )A   rc   )r2   rS   rX   rU   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 )NrF   r	   rY   rZ   )r   rb   rR   rW   rN   rO   rP   r   r   r   "test_maybe_indices_to_slice_middle   rf   z/TestIndexing.test_maybe_indices_to_slice_middle)      rm   rt   )rt   rt      rm   )rm   ru   rt   ru   c                 C   r^   rE   rG   r_   r   r   r   ,test_maybe_indices_to_slice_middle_not_slice   ra   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s)J d S )N)r   r   r2   r2   r2   r   r2   r	   r   )r   r   Zuint8r   Zmaybe_booleans_to_slicer
   Zbool_rM   )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)rY   rY   r2   rS   r   rY   r   rX   r	   rT   )rX   rS   r         )r   r   rI   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   rF   r	   )r   rH   r   is_range_indexerr   r
   leftr   r   r   test_is_range_indexer   s   z"TestIndexing.test_is_range_indexerc                 C   s&   t jddg|d}t|drJ d S )Nr2   rS   r	   r   r   r   r{   r|   r   r   r   test_is_range_indexer_not_equal      z,TestIndexing.test_is_range_indexer_not_equalc                 C   s&   t jg d|d}t|drJ d S )N)r   r2   rS   r	   rS   r   r|   r   r   r   %test_is_range_indexer_not_equal_shape  r   z2TestIndexing.test_is_range_indexer_not_equal_shapeN)rA   rB   rC   rQ   r   markZparametrizer[   r`   re   rh   rj   rn   ro   rr   rv   rw   rz   r~   r   r   r   r   r   r   rD   J   sH    
"


	

	



rD   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pandasr   Zpandas._testingZ_testingr+   r   rD   r   r   r   r   r   r   <module>   s    < ?