o
    �¨Êh<"  ã                   @   sþ  d Z ddlZddlZddlmZ ddlZddlm	Z
 ddlmZ ejejddged�ejddged�ejddged�ejdd	ged�ejd
dged�ejddgdd�ejddgdd�gd�dd„ ƒZej dg d¢¡dd„ ƒZej dg d¢¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z d(d)„ Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d0d1„ Z%d2d3„ Z&d4d5„ Z'd6d7„ Z(ej d8ej)ej*ej+g¡d9d:„ ƒZ,d;d<„ Z-d=d>„ Z.ej d?deg¡d@dA„ ƒZ/dBdC„ Z0dDdE„ Z1ej d?ej2ej3g¡dFdG„ ƒZ4dHdI„ Z5dS )JzV
Additional tests for NumpyExtensionArray that aren't covered by
the interface tests.
é    N©ÚNumpyEADtype)ÚNumpyExtensionArrayÚaÚb©Údtypeé   y      ð?       @TFúdatetime64[ns]ztimedelta64[ns])Úparamsc                 C   s   | j S )zk
    Parametrized fixture for NumPy arrays with different dtypes.

    This excludes string and bytes.
    )Úparam)Úrequest© r   úW/var/www/html/env/lib/python3.10/site-packages/pandas/tests/arrays/numpy_/test_numpy.pyÚany_numpy_array   s   r   zdtype, expected)
©ÚboolT)ÚintT)ÚuintT)ÚfloatT)ÚcomplexT©ÚstrF©ÚbytesF©r
   F©ÚobjectF©ÚvoidFc                 C   ó   t | ƒ} | j|u sJ ‚d S ©N)r   Ú_is_numeric©r   Úexpectedr   r   r   Útest_is_numeric'   ó   r%   )
r   )r   F)r   F)r   F)r   Fr   r   r   r   r   c                 C   r    r!   )r   Ú_is_booleanr#   r   r   r   Útest_is_boolean;   r&   r(   c                  C   s"   t t d¡ƒ} t| ƒdksJ ‚d S )NÚint64zNumpyEADtype('int64'))r   Únpr   Úreprr   r   r   r   Ú	test_reprO   s   r,   c                  C   s(   t  d¡} t t d¡ƒ}| |ksJ ‚d S )Nr)   )r   Úconstruct_from_stringr*   r   )Úresultr$   r   r   r   Útest_constructor_from_stringT   s   
r/   c                 C   s    t | ƒ}t |ƒ}||ksJ ‚d S r!   r   )Úany_numpy_dtyper   r.   r   r   r   Útest_dtype_idempotentZ   s   r1   c                   C   s@   t jtdd�� tg d¢ƒ W d   ƒ d S 1 sw   Y  d S )NzNumPy array©Úmatch©r	   é   é   )ÚpytestÚraisesÚ
ValueErrorr   r   r   r   r   Útest_constructor_no_coercione   s   "ÿr:   c                  C   s2   t  g d¢¡} tjt| ƒdd�}|j| usJ ‚d S )Nr4   T©Úcopy)r*   ÚarrayÚpdÚSeriesr   Úvalues)ÚndarrayÚserr   r   r   Ú!test_series_constructor_with_copyj   s   rC   c                  C   sB   t  g d¢¡} tjt| ƒdd�}tjg d¢dd�}t ||¡ d S )Nr4   Úfloat64r   )ç      ð?g       @g      @)r*   r=   r>   r?   r   ÚtmÚassert_series_equal)rA   r.   r$   r   r   r   Ú#test_series_constructor_with_astypeq   s   rH   c                  C   sF   t jg d¢dd�} tj| dd�}tt jg d¢dd�ƒ}t ||¡ d S )Nr4   r)   r   Úuint64)r*   r=   r   Ú_from_sequencerF   Úassert_extension_array_equal©Úarrr.   r$   r   r   r   Útest_from_sequence_dtypex   s   rN   c                  C   s.   t  ddg¡} t| dd�}t || ¡rJ ‚d S )Nr   r	   Tr;   )r*   r=   r   rF   Úshares_memory)rM   r.   r   r   r   Útest_constructor_copy   s   rP   c                 C   s"   | }t |ƒ}|jj|jksJ ‚d S r!   )r   r   Únumpy_dtype©r   ÚnparrrM   r   r   r   Útest_constructor_with_data†   s   rT   c                  C   sp   t t g d¢¡ƒ} |  ¡ }|| ju sJ ‚| jdd�}|| jus!J ‚| jdd�}tjg d¢dd�}t ||¡ d S )Nr4   Tr;   Úf8r   )r   r*   r=   Úto_numpyÚ_ndarrayrF   Úassert_numpy_array_equalrL   r   r   r   Útest_to_numpy�   s   rY   c                  C   s6   t  g d¢¡} d| jd< t  g d¢¡}t | |¡ d S )Nr4   é
   r   )rZ   r5   r6   )r>   r?   r=   rF   rG   )rB   r$   r   r   r   Útest_setitem_series¡   s   
r[   c                 C   s<   | }t |dd�}|d |d< |d |d< t | ¡ |¡ d S )NTr;   r	   r   )r   rF   rX   rV   rR   r   r   r   Útest_setitem¨   s
   r\   c                  C   s\   t jg d¢dd�} t| ƒ} d}tjt|d�� |  |¡ W d   ƒ d S 1 s'w   Y  d S )Nr4   r)   r   z)cannot perform not_a_method with type intr2   )r*   r=   r   r7   r8   Ú	TypeErrorÚ_reduce©rM   Úmsgr   r   r   Útest_bad_reduce_raises¶   s   "ÿra   c                  C   sV   t t g d¢¡ƒ} d}tjt|d�� | jdd� W d   ƒ d S 1 s$w   Y  d S )Nr4   z/the 'keepdims' parameter is not supported .*allr2   T)Úkeepdims)r   r*   r=   r7   r8   r9   Úallr_   r   r   r   Ú$test_validate_reduction_keyword_args¾   s
   "ÿrd   c                  C   s|   g d¢} t  | ¡}|j}| ¡ |d u sJ ‚| ¡ |d u s J ‚tj |¡}||d ks.J ‚tj |¡}||d ks<J ‚d S )N))©ÚjÚk©ÚlÚm)rh   ©ÚoÚp)rk   re   r5   )r>   r?   r=   Úmaxr*   ÚmaximumÚreduce)ÚvalsrB   rM   r.   r   r   r   Útest_np_max_nested_tuplesÅ   s   
rr   c                  C   sZ   t  d¡ dd¡} t| ƒ}t jj|dd�}t ||d ¡ |jdd�}t ||d ¡ d S )Né   é   r6   r   )Úaxiséÿÿÿÿ)	r*   ÚarangeÚreshaper   ro   rp   rF   rK   rn   )ÚrawrM   ÚresÚaltr   r   r   Útest_np_reduce_2dÚ   s   r|   Úufuncc                 C   sb   t t g d¢¡ƒ}| |ƒ}t | |jƒƒ}t ||¡ t t g d¢¡ƒ}| ||d� t ||¡ d S )N©g      ð¿ç        rE   )ç      "Àr€   r€   )Úout)r   r*   r=   rW   rF   rK   )r}   rM   r.   r$   r�   r   r   r   Útest_ufunc_unaryé   s   r‚   c                  C   sr   t t g d¢¡ƒ} t | t | d¡¡\}}t | jt | jd¡¡\}}t |ƒ}t |ƒ}t ||¡ t ||¡ d S )Nr~   r5   )r   r*   r=   ÚdivmodÚaddrW   rF   rK   )rM   Úr1Úr2Úe1Úe2r   r   r   Ú
test_ufuncö   s   r‰   c                  C   s<   t t g d¢¡ƒ} | |  }t t g d¢¡ƒ}t ||¡ d S )Nr4   )r5   rt   é   ©r   r*   r=   rF   rK   )Úxr.   r$   r   r   r   Útest_basic_binop  s   r�   r   c                 C   sD   t tjg d¢| d�ƒ}d|d< t tjg d¢| d�ƒ}t ||¡ d S )N)r   r   Úcr   Útr   )r�   r   rŽ   r‹   )r   rM   r$   r   r   r   Útest_setitem_object_typecode
  s   r�   c                  C   sx   t t g d¢¡ƒ} tjtdd�� d| d< W d   ƒ n1 sw   Y  d| d< t| d ttjfƒs:J t	| d ƒƒ‚d S )Nr4   r   r2   r   r   ç      @)
r   r*   r=   r7   r8   r9   Ú
isinstancer   ÚintegerÚtype)rM   r   r   r   Útest_setitem_no_coercion  s   
ÿ(r•   c                  C   sŒ   t t g d¢¡ƒ} |  ¡ }| d d … }t | ¡}d| d< |d dks$J ‚|d dks,J ‚|d dks4J ‚d| d< d|d< | d dksDJ ‚d S )Nr4   é	   r   r‘   rv   é   )r   r*   r=   ÚviewÚasarray)rM   Úview1Úview2Úview3r   r   r   Útest_setitem_preserves_views  s   
r�   c                 C   sT   t tjg | d�ƒ}t ddg¡}|j|dd�}t t tjtjg¡ƒ}t ||¡ d S )Nr   r   g      à?Úlinear)Úinterpolation)	r   r*   r=   r>   ÚIndexÚ	_quantileÚnanrF   rK   )r   rM   Úidxr.   r$   r   r   r   Útest_quantile_empty/  s
   r¤   c                  C   sV   t jg d¢t jd�} t| ƒ}| ¡ \}}t | ¡\}}t ||¡ t |t|ƒ¡ d S )Nr4   r   )	r*   r=   rI   r   Ú	factorizer>   rF   rX   rK   )rM   ÚobjÚ	res_codesÚ
res_uniqueÚ	exp_codesÚ
exp_uniquer   r   r   Útest_factorize_unsigned:  s   r«   )6Ú__doc__Únumpyr*   r7   Úpandas.core.dtypes.dtypesr   Úpandasr>   Úpandas._testingÚ_testingrF   Úpandas.arraysr   Úfixturer=   r   r   r   r   r   r   ÚmarkÚparametrizer%   r(   r,   r/   r1   r:   rC   rH   rN   rP   rT   rY   r[   r\   ra   rd   rr   r|   ÚabsÚnegativeÚpositiver‚   r‰   r�   r�   r•   r�   r)   rI   r¤   r«   r   r   r   r   Ú<module>   sn    ùÿ
þ
þ


	


