o
    Eh:+                     @   s   d dl Z 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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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   :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   )Zdaysr#   c                       g | ]} | qS r   r   r'   r!   Ztdr   r   
<listcomp>9       z?TestMisc.test_fast_multiget_timedelta_resos.<locals>.<listcomp>r   iP: Dmsusc                    r4   r   r   r5   r6   r   r   r7   F   r8   )r   Zas_unitr   rangeZ_valuesr   r	   r   Zfast_multigetr,   r-   r   Ztimedelta64hash)r   Zmapping1Zmapping2Zoindexr0   resultr   r6   r   "test_fast_multiget_timedelta_resos0   s    
""z+TestMisc.test_fast_multiget_timedelta_resosN)__name__
__module____qualname__r   r2   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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_edgeN   s
   
z2TestIndexing.test_maybe_indices_to_slice_left_edgeend)r3            c   step)r3   rR      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 )NrE   r   r
   
r   rG   rH   r   rI   rJ   rK   rL   r,   r-   )r   rQ   rV   rM   rN   rO   r   r   r   9test_maybe_indices_to_slice_left_edge_not_slice_end_stepsX   s   
zFTestIndexing.test_maybe_indices_to_slice_left_edge_not_slice_end_stepscase)rR   r3   rR   r   )rR   rR   r3   r   )r   r3   rR   r3   )r   rR   )rR   r   r\   c                 C   \   t d}t j|t jd}t|t|}t|trJ t	
|| t	
|| ||  d S rD   rF   r   r[   rM   rN   rO   r   r   r   /test_maybe_indices_to_slice_left_edge_not_slicei      
z<TestIndexing.test_maybe_indices_to_slice_left_edge_not_slicestart)r   rR   rS   rT   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 )NrE   rU   r
   rX   rY   )r   ra   rV   rM   rN   rO   r   r   r   &test_maybe_indices_to_slice_right_edgev      
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 )NrE   )rb   rc   rU   rE   r
   z7index 100 is out of bounds for axis (0|1) with size 100r   )rE   rU   rc   rb   )r   rG   r   rH   r   rI   rJ   rK   rL   r,   r-   r   r   
IndexError)r   rM   rN   rO   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)rU   rb   rU   `   )rU   rU   rc   rb   )rc   rc   rb   rh   c                 C   r]   rD   rF   r^   r   r   r   ,test_maybe_indices_to_slice_right_edge_cases   s   
z9TestIndexing.test_maybe_indices_to_slice_right_edge_cases)r3   rR   rW   rS      	   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   rk   r
   rX   rY   )r   rV   rM   rN   rO   r   r   r   &test_maybe_indices_to_slice_both_edges   s   
z3TestIndexing.test_maybe_indices_to_slice_both_edges)rW   rR   r   r\   c                 C   r]   )Nrl   r
   rF   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))rR   rl   )rS      )A   rb   )r3   rR   rW   rT   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 )NrE   r
   rX   rY   )r   ra   rQ   rV   rM   rN   rO   r   r   r   "test_maybe_indices_to_slice_middle   re   z/TestIndexing.test_maybe_indices_to_slice_middle)      rl   rs   )rs   rs      rl   )rl   rt   rs   rt   c                 C   r]   rD   rF   r^   r   r   r   ,test_maybe_indices_to_slice_middle_not_slice   r`   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   r3   r3   r3   r   r3   r
   r   )r   r   Zuint8r   Zmaybe_booleans_to_slicer   Zbool_rL   )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)rX   rX   r3   rR   r   rX   r   rW   r
   rS   )rW   rR   r         )r   r   rH   r   Zget_reverse_indexerr,   r-   )r   Zindexerr>   r0   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   rE   r
   r   rG   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   rE   r
   l        rz   r|   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 )Nr3   rR   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   r3   rR   r
   rR   r   r|   r   r   r   %test_is_range_indexer_not_equal_shape  r   z2TestIndexing.test_is_range_indexer_not_equal_shapeN)r@   rA   rB   rP   r   ZmarkZparametrizerZ   r_   rd   rg   ri   rm   rn   rq   ru   rv   ry   r~   Zskipifr   r   r   r   r   r   r   r   rC   M   sT    
"


	

	



rC   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   c                  C   sf   t jdd gtd} tt| } tj| dd}t | |r J | d d u s(J |d t j	u s1J d S )Nr   r
   F)copyr3   )
r   r   r	   pickleloadsdumpsr   Zensure_string_arrayZshares_memoryr   )r   r>   r   r   r   test_ensure_string_array_copy"  s   r   )r   Znumpyr   r   Zpandas._libsr   r   r   r   Zpandas.compatr   Zpandasr   Zpandas._testingZ_testingr,   r   rC   r   r   r   r   r   r   r   <module>   s    < K