U
    NZf6                     @   s  d dl mZmZmZ d dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlZd dlmZ dd Zdd Zd	d
 Zdd Zdd Zejjde	ddddedejgeddd Zejde	ddddedejeded edddedejgdd Zejdd dd ddeded e d ed e d g
ejd ddgd!d" Z!ejddddedede dgejd ddgd#d$ Z"ejdd%d&ed%e d%gejd ddgd'd( Z#d)d* Z$d+d, Z%d-d. Z&d/d0 Z'd1d2 Z(ejd3d4d5d6gd7d8 Z)d9d: Z*d;d< Z+d=d> Z,d?d@ Z-dAdB Z.dCdD Z/dEdF Z0dGdH Z1dIdJ Z2dKdL Z3dMdN Z4ejdOdde	gdPfdQdRe	gdSfgejdTddgdUdV Z5dS )W    )datetime	timedeltaNNA)	is_scalarc                  C   s&   t t ksttt  } | t ks"td S N)r   AssertionErrortype)Znew_NA r   F/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/scalar/test_na_scalar.pytest_singleton   s    
r   c                   C   s$   t tdkstttdks td S )N<NA>)reprr   r	   strr   r   r   r   	test_repr   s    r   c                   C   sf   t tdkstt tddks"tt tddks4tt dksBttddksRttddksbtd S )Nr   z>10z
      <NA>Zxxx)formatr   r	   r   r   r   r   test_format   s    r   c               	   C   sJ   d} t jt| d tt W 5 Q R X t jt| d t  W 5 Q R X d S )Nz boolean value of NA is ambiguousmatch)pytestraises	TypeErrorboolr   msgr   r   r   test_truthiness)   s
    r   c                  C   s0   t tt tksttdi} | t dks,td S )Ntest)hashr   r	   )dr   r   r   test_hashable3   s    r    other   g      ?a   a)idsc                 C   s   | }|j dkr6t|ttfr6tj|j  d| dd |j dkrX|t|ttfks|tn$|j dkrj|d7 }|t|tks|td S )N)powrpowZrmodz with NA and z not defined.)reason)divmodZrdivmodr'   r"   )__name__
isinstancer   bytesr   skipr   r	   )all_arithmetic_functionsr!   opr   r   r   test_arithmetic_ops9   s    

r0   T      c                 C   s(   | t |t kst| |t t ks$td S r   r   r	   )Zcomparison_opr!   r   r   r   test_comparison_opsJ   s    r4   valueg        g       Fasarrayc                 C   sH   |rt | g} t|  }|r&|d }nt|t| s8t|dksDtd S )Nr   r"   )nparrayr   r+   r
   r	   r5   r6   resultr   r   r   test_pow_special`   s    
r;   c                 C   s^   |rt | g} | t }|r&|d }n(t| t jt jt jfsNt|t| sNt|| ksZtd S Nr   )	r7   r8   r   r+   float_bool_int_r
   r	   r9   r   r   r   test_rpow_special}   s    
r@   g      c                 C   s6   |rt | g} | t }|r$|d }t|s2td S r<   )r7   r8   r   pdisnar	   r9   r   r   r   test_rpow_minus_one   s    rD   c                   C   s>   t 
 t kstt  t ksttt t ks,tt  t ks:td S r   )r   r	   absr   r   r   r   test_unary_ops   s    rF   c               	   C   sz   t d@ t kstdt @ t ks tt d@ dks0tdt @ dks@tt t @ t ksPtd} tjt| d t d@  W 5 Q R X d S NTFzunsupported operand typer      r   r	   r   r   r   r   r   r   r   test_logical_and   s    rJ   c               	   C   sz   t dB dkstdt B dks tt dB t ks0tdt B t ks@tt t B t ksPtd} tjt| d t dB  W 5 Q R X d S rG   rI   r   r   r   r   test_logical_or   s    rK   c               	   C   sz   t dA t kstdt A t ks tt dA t ks0tdt A t ks@tt t A t ksPtd} tjt| d t dA  W 5 Q R X d S rG   rI   r   r   r   r   test_logical_xor   s    rL   c                   C   s   t  t kstd S r   r3   r   r   r   r   test_logical_not   s    rM   shape)r2   )r2   r2   )r"   r1   r2   c                 C   sL   |}t | }|jdkr |d7 }|t|}t j|jttd}t|| d S )Nr&   rH   dtype)	r7   zerosr*   r   fullrN   objecttmassert_numpy_array_equal)rN   r.   r/   r#   r:   expectedr   r   r   test_arithmetic_ndarray   s    


rW   c                   C   s   t tdkstd S )NT)r   r   r	   r   r   r   r   test_is_scalar   s    rX   c                   C   s(   t tdkstt tdks$td S )NTF)rB   rC   r   r	   Znotnar   r   r   r   	test_isna   s    rY   c                  C   s4   t jdtgtd} t ddg}t|  | d S )Nr"   rO   FT)rB   Seriesr   rS   rT   Zassert_series_equalrC   )srV   r   r   r   test_series_isna   s    r\   c                  C   sx   t ttkstt tdtks&tt td} | d tkrJ| d tksNtt t} | d tkrp| d tksttd S )Nr"   r   )r7   logr   r	   addr)   frexpr:   r   r   r   
test_ufunc   s    
ra   c               	   C   s0   d} t jt| d tjtd W 5 Q R X d S )Nzufunc method 'at'r   r   )r   r   
ValueErrorr7   r]   atr   r   r   r   r   test_ufunc_raises   s    rd   c                  C   s   t dddg} t jtttgtd}t | t}t|| t t| }t|| t tttkshtt tt}t	|dkstt
dd |D std S )Nr"   r1   r2   rO   c                 s   s   | ]}|t kV  qd S r   r   ).0xr   r   r   	<genexpr>  s     z/test_binary_input_not_dunder.<locals>.<genexpr>)r7   r8   r   rS   Z	logaddexprT   rU   r	   modflenall)r#   rV   r:   r   r   r   test_binary_input_not_dunder   s    rk   c                  C   s   t dddg} t jtttgtd}t | t}t|ts>t|D ]}t	|| t	|| qBt t| }|D ]}t	|| t	|| qpd S )Nr"   r1   r2   rO   )
r7   r8   r   rS   r)   r+   tupler	   rT   rU   )r#   rV   r:   Zarrr   r   r   test_divmod_ufunc  s    rm   c                  C   s8   t dtt di} | t  dks t| tt  dks4td S )NZfoobar)r   r   r	   r`   r   r   r    test_integer_hash_collision_dict  s    ro   c                  C   s<   t tt h} t| dkstt | ks(ttt | ks8td S )Nr1   )r   r   ri   r	   r`   r   r   r   test_integer_hash_collision_set  s    rp   c                  C   s    t t t} | tkstd S r   )pickleloadsdumpsr   r	   r`   r   r   r   test_pickle_roundtrip(  s    rt   c                  C   s   t t} | tkstd S r   )rT   round_trip_pickler   r	   r`   r   r   r   test_pickle_roundtrip_pandas.  s    
rv   zvalues, dtypeZInt64ABstringas_framec                 C   s>   t t j||d}| r$|jdd}t|}t|| d S )NrO   rw   )name)rB   rZ   r8   Zto_framerT   ru   Zassert_equal)rz   valuesrP   r[   r:   r   r   r    test_pickle_roundtrip_containers3  s
    
r}   )6datetimer   r   r   rq   Znumpyr7   r   Zpandas._libs.missingr   Zpandas.core.dtypes.commonr   ZpandasrB   Zpandas._testingZ_testingrT   r   r   r   r   r    markZparametrizeZint64nanr   r0   r>   ZNaTr4   r?   r=   r;   r@   rD   rF   rJ   rK   rL   rM   rW   rX   rY   r\   ra   rd   rk   rm   ro   rp   rt   rv   r}   r   r   r   r   <module>   s   
  


   


	 