o
    7?en                     @   s  d dl Z d dlZd dlmZ d dlZd dlZd dlmZmZm	Z	m
Z
mZ d dlmZ ejg dddd Zejdd	gdd
d Zejdd egddgddd Zejddgddd Zejdd	gddd Zejdd ejfdd ejfdd ejfgddd Zejdi dejifd d!d"dejifgd#d$ Zejd%d&d'gd(d) Zejd*g d+g d,g d-gd.d/ Z ejd0g d1d2fg d3d4fgd5d6 Z!ejd7d8g d1fd d9d:ej"gfgd;d< Z#ejd=d>d8g d?fd d@dAej"gfgdBdC Z$dDdE Z%ejdFg d+dejifg d,i fg d-i fgdGdH Z&ejdIddJii gdKdL Z'ejdMdNdNdOggdPdQ Z(ejdRe )dSd@ge )dTdUgdSd@gdTdUgfe*e )dSd@gdUgdSd@gdUgfgdVdW Z+dXdY Z,dZd[ Z-ejd\g d]d^d_ Z.d`da Z/dbdc Z0ddde Z1ejdfdgd8dhd fd did fgdjdk Z2ejd*g dld@ej"dmej"ggdndo Z3ejdpg dqej*g dldrdsfg dte*g dufgdvdw Z4dxdy Z5dzd{ Z6d|d} Z7ejd~dd8e
ddgd@dgfd e
ej"d@ej"gfgdd Z8dd Z9dd Z:ejd*g dg dlej*g dddsgejdi ejfddiejfddie;ej<j=fddie;ej>d d  fgdd Z?ejdd!dgejd*g dg dlej*g dddsgdd Z@dd ZAdd ZBejCdejdg dejdg dej*g dejDdsfg dej*g dejDdsfgdd ZEejdd!ejFfdejFfdejGfgdd ZHejddd!eejjIeejjJgfdd!eejFjIeejFjJgfdd!eejKjIeejKjJgfdrd!eejjIeejjJgfddeejLjIeejLjJgfddeejGjIeejGjJgfddeejMjIeejMjJgfddeejNjIeejNjJgfdd!eejjIeejjJd9 gfdd!eejFjIeejFjJd9 gfdrd!eejKjIeejKjJd9 gfdd!eejjId9 eejFjJgfdd!eejFjId9 eejKjJgfdrd!eejKjId9 eejjJgfddeejLjIeejLjJd9 gfddeejGjIeejGjJd9 gfddeejMjIeejMjJd9 gfgdd ZOdd ZPejde
d dge
d dgejNdsfgdd ZQejdRg dddej"ej"dgfg dddej"gfgdd ZRejd=d8e
g dfdgdd ZSejdg d¢ejdg d¢ddń ZTddǄ ZUejdg dɢdd˄ ZVejdg d͢e
d9dej"gddsfg dqe
g dlddsfg dϢe
g dlddsfg dТe
g dѢddsfg dӢe
d9ej"dgddsfg dբe
g dѢddsfgddׄ ZWddل ZXddۄ ZYejdd9d9gdd!dfd@ejZgdd!dfd@dgdd!dfd9ejZgdd!dfddgdd!dfd9d9gdd!dfeejjJd9 d9gdd!dfd9d9gdddfd@d@gdddfd@dgdddfd9ejZgdddfddgdddfeejNjJd9 d9gdddfd9d9gdddfd@d@gdddfd@dgdddfd9ejZgdddfddgdddfddgdddfd9d9gdddfd9dgdddfd9d9gdddfd9dgdddffdd Z[dd Z\dd Z]ejd\ddgdd Z^ejdg ddd Z_ejdg ddd Z`ejdg ddd Zaejdddgddggd d Zbejdg ddd Zcdd Zddd Zed	d
 ZfdS (      N)iinfo)
ArrowDtype	DataFrameIndexSeries
to_numeric)Nignoreraisecoerce)paramsc                 C      | j S Nparamrequest r   c/home/www/facesmatcher.com/pyenv/lib/python3.10/site-packages/pandas/tests/tools/test_to_numeric.pyerrors      r   TFc                 C   r   r   r   r   r   r   r   signed   r   r   c                 C   s   | S r   r   xr   r   r   <lambda>   s    r   identitystr)r   Zidsc                 C   r   r   r   r   r   r   r   	transform   r   r   l   N"2) l      Fx:^V c                 C   r   r   r   r   r   r   r   	large_val!   r   r   c                 C   r   r   r   r   r   r   r   multiple_elts&   r   r   c                 C      t | ddS )Nidxname)r   r   r   r   r   r   -       c                 C   r   )Nserr!   )r   r   r   r   r   r   .   r#   c                 C   s   t t| jS r   )nparrayr   valuesr   r   r   r   r   /   s    c                 C   r   r   r   r   r   r   r   transform_assert_equal+   s   r(   zinput_kwargs,result_kwargsdtyper
   integerr   downcastc                 C   s<   t g td}t|fi | }t g fi |}t|| d S Nr)   r   objectr   tmassert_series_equal)Zinput_kwargsZresult_kwargsr$   resultexpectedr   r   r   
test_empty6   s   	r5   last_val7   c                 C   s2   t dd| g}t|}t g d}t|| d S )N1-3.14   Q	r8   r   r   r1   r2   )r6   r$   r3   r4   r   r   r   test_seriesF   s   r?   data)r<            )      ?      @      @g      @)TFTTc                 C   s*   t | tddd}t|}t|| d S )NZABCDZEFG)indexr"   )r   listr   r1   r2   )r@   r$   r3   r   r   r   test_series_numericO   s   
rI   zdata,msgr<   r=   apple,Unable to parse string "apple" at position 2)Zoranger<   r=   rK   z-Unable to parse string "orange" at position 0c                 C   sH   t | }tjt|d t|dd W d    d S 1 sw   Y  d S )Nmatchr	   r   r   pytestraises
ValueErrorr   )r@   msgr$   r   r   r   
test_error_   s   "rU   zerrors,exp_datar   r<   r=   c                 C   s0   t g d}t|| d}t |}t|| d S )NrJ   rO   r>   )r   exp_datar$   r3   r4   r   r   r   test_ignore_errorp   s   rW   z
errors,exp)r	   rL   TFrK   rD   g        c                 C   sz   t g d}t|tr+tjt|d t|| d W d    d S 1 s$w   Y  d S t|| d}t |}t|| d S )NrX   rM   rO   	r   
isinstancer   rQ   rR   rS   r   r1   r2   )r   expr$   r3   r4   r   r   r   test_bool_handling{   s   

"r\   c                  C   s.   g d} t | }tg d}t|| d S )N)r9   r:   r7   r;   r   r%   r&   r1   assert_numpy_array_equal)r$   resr4   r   r   r   	test_list   s   r`   zdata,arr_kwargsc                 C   s*   t | }tj| fi |}t|| d S r   r]   )r@   Z
arr_kwargsr3   r4   r   r   r   test_list_numeric   s   
ra   kwargsOc                 C   s8   g d}t |fi | }t|}t |}t|| d S )Nr;   r>   )rb   r@   r$   r3   r4   r   r   r   test_numeric   s
   rd   columnsabc                 C   sl   t dtdtddgg dd}t ddtjdgg dd}| }||  t|| < t	|| d S )Ng333333?Q	@infinityz0.1)rD   g       @rE   rF   rf   rg   皙?)
r   decimalDecimalr%   infcopyapplyr   r1   assert_frame_equal)re   dfr4   Zdf_copyr   r   r   test_numeric_df_columns   s   rs   zdata,exp_datarh   g?rk   c                 C   s:   t d| i}|d t|d< t d|i}t|| d S )Nrf   )r   rp   r   r1   rq   )r@   rV   rr   r4   r   r   r   test_numeric_embedded_arr_likes   s   rt   c                  C   s<   t g d} t| dd}t tjtjtjg}t|| d S )N)rf   rg   cr
   rO   )r   r   r%   nanr1   r2   )r$   r3   r4   r   r   r   test_all_nan   s   rw   c                 C   sn   t g dg dd}| d urd| ini }tjtdd t|fi | W d    d S 1 s0w   Y  d S )Nr;   )456rj   r   z	1-d arrayrM   )r   rQ   rR   	TypeErrorr   )r   rr   rb   r   r   r   test_type_check   s
   "r|   val)r<   皙?i!N  c                 C   s*   |r|  n| } t || t| ksJ d S r   r   float)r}   r   r   r   r   r   test_scalar   s   r   c           	      C   s   |d urd|ini }|r|  n| }||}t |t}|rD|dv rDd}tjt|d t|fi | W d    d S 1 s=w   Y  d S |dkrN|rNt|n|}tt|fi || d S )Nr   Nr	   #Integer out of range. at position 0rM   r
   )	rZ   r   rQ   rR   rS   r   r   r1   assert_almost_equal)	r   r   r   r   rb   r}   val_is_stringrT   r4   r   r   r   test_really_large_scalar   s   
"r   c                 C   s6  |d urd|ini }|r|  n| }||}d}|g||g  }t |t}	|dk}
|dv rY|	s0|rY|	r5d}nd}tjt|d t|fi | W d    d S 1 sRw   Y  d S t|fi |}|
ri|	rit|n|}|g}|r|
r{|tj	 t}q|| t
}nt |ttfrtnt
}t|tj||d d S )	Nr   stringr
   r   r   z-Unable to parse string "string" at position 1rM   r.   )rZ   r   rQ   rR   rS   r   r   appendr%   rv   r0   intr1   r   r&   )r   r   r   r   r   rb   r}   Z	extra_eltarrr   ZcoercingrT   r3   Zexp_valr4   	exp_dtyper   r   r   test_really_large_in_arr  s2   
"
r   c                 C   s   |d urd|ini }t |r|  n| g}|r|d|  |dv rKt|}d| }tjt|d t|fi | W d    d S 1 sDw   Y  d S t|fi |}|dkradd |D }	t}
n|}	t}
t	
|tj|	|
d	 d S )
Nr   r   r   z"Integer out of range. at position rM   r
   c                 S   s   g | ]}t |qS r   )r   ).0ir   r   r   
<listcomp>C  s    z7test_really_large_in_arr_consistent.<locals>.<listcomp>r.   )r   insertr   rQ   rR   rS   r   r   r0   r1   r   r%   r&   )r   r   r   r   rb   r   rG   rT   r3   r4   r   r   r   r   #test_really_large_in_arr_consistent.  s"   
"r   zerrors,checker)r	   z+Unable to parse string "fail" at position 0c                 C   s   | dkS )Nfailr   r   r   r   r   r   P  s    c                 C   s
   t | S r   )r%   isnanr   r   r   r   r   Q  s   
 c                 C   sf   d}t |tr'tjt|d t|| d W d    d S 1 s w   Y  d S |t|| ds1J d S )Nr   rM   rO   )rZ   r   rQ   rR   rS   r   )r   checkerZscalarr   r   r   test_scalar_failL  s   	
"r   r<      rA   rA   c                 C   s&   |\}}|| } t | }|||  d S r   r   )r@   r(   r   assert_equalr3   r   r   r   test_numeric_dtypes^  s   r   zdata,exp)r9   23int64r.   )z1.5z2.7z3.4)      ?g@g333333@c                 C   s*   |\}}t || }||}||| d S r   r   )r@   r[   r(   r   r   r3   r4   r   r   r   test_strg  s   r   c                 C   s<   |\}}t jdd| d}t||}||j}||| d S )NZ20130101rA   )periodstz)pdZ
date_ranger   asi8)Ztz_naive_fixturer(   r   r   r    r3   r4   r   r   r   test_datetime_likev  
   
r   c                 C   s<   | \}}t jdddd}t||}||j}||| d S )Nz1 daysrA   D)r   freq)r   Ztimedelta_ranger   r   )r(   r   r   r    r3   r4   r   r   r   test_timedelta  r   r   c                 C   sb   |\}}t jddddd}||}t|ts!| jtjjdd t	|}||j
}||| d S )Nz2011-01rA   M )r   r   r"   z)Missing PeriodDtype support in to_numeric)reason)r   Zperiod_rangerZ   r   nodeZ
add_markerrQ   markZxfailr   r   )r   r(   r   r   r    inpr3   r4   r   r   r   test_period  s   

r   zerrors,expected)r	   z!Invalid object type at position 0      $@r   rK   c                 C   sx   t ddgddg}t|tr.tjt|d t|| d W d    d S 1 s'w   Y  d S t|| d}t|| d S )Nr   r   rD   rK   rM   rO   )	r   rZ   r   rQ   rR   r{   r   r1   r2   )r   r4   r$   r3   r   r   r   test_non_hashable  s   

"r   c                  C   P   g d} d}d}t jt|d t| |d W d    d S 1 s!w   Y  d S )Nr9   r   rA   zunsigned-integerz#invalid downcasting method providedrM   r,   rQ   rR   rS   r   )r@   Zinvalid_downcastrT   r   r   r   test_downcast_invalid_cast     "r   c                  C   r   )Nr   invalidzinvalid error value specifiedrM   rO   r   )r@   Zinvalid_error_valuerT   r   r   r   test_errors_invalid_value  r   r   r   )z
1970-01-02z
1970-01-03z
1970-01-04zdatetime64[D]zkwargs,exp_dtyper,   r   unsignedZUnsignedIntegerc                 C   s2   t | fi |}tjg d|d}t|| d S )Nr   r.   r]   )r@   rb   r   r3   r4   r   r   r   test_downcast_basic  s   r   signed_downcastc                 C   sB   t t jd d }t jg d|d}t| |d}t|| d S )NIntegerr   r   r.   r   )r%   r)   	typecodesr&   r   r1   r^   )r@   r   Zsmallest_int_dtyper4   r_   r   r   r   test_signed_downcast  s   r   c                  C   s4   g d} t j| td}t| ddd}t|| d S )N)Zfoor   rA   r.   r   r   r+   )r%   r&   r0   r   r1   r^   r@   r4   r_   r   r   r   !test_ignore_downcast_invalid_data  s   r   c                  C   s8   g d} t jg dt jd}t| dd}t|| d S )N)z-1r   rA   )r   rA   r.   r   r   )r%   r&   r   r   r1   r^   r   r   r   r   $test_ignore_downcast_neg_to_unsigned  s   r   z7ignore:invalid value encountered in cast:RuntimeWarning)r*   r   r   zdata,expected)z1.1r   rA   )r~   r   rA   )g     @i N  i  gR@iP  g     j@c                 C   s   t | |d}t|| d S Nr   )r   r1   r^   )r@   r4   r,   r_   r   r   r   )test_ignore_downcast_cannot_convert_float  s   r   zdowncast,expected_dtypec                 C   s6   g d}t jg d|d}t|| d}t|| d S )N)256    )   r   r   r.   r   )r%   r&   r   r1   r^   )r,   expected_dtyper@   r4   r_   r   r   r   test_downcast_not8bit  s   r   zdtype,downcast,min_maxint8int16int32uint8uint16uint32uint64c                 C   s"   t t||d}|j| ksJ d S r   )r   r   r)   )r)   r,   Zmin_maxseriesr   r   r   test_downcast_limits$  s   r   c                  C   s@   t dttjjtjgtjd} t| dd}| j|jksJ d S )Ng     pAr.   r   r   )r   r%   Zfinfofloat64maxrv   r   r)   )r   r3   r   r   r    test_downcast_float64_to_float32@  s    r   zser,expectedl            c                 C   s   t | dd}t|| d S )Nr   r   )r   r1   r2   )r$   r4   r3   r   r   r   test_downcast_uint64H  s   r   )   ,  r   NaN     p;6$ r   r   r   Z12345678901234567890
1234567890ZITEMl   
>V3&Z
 iIc                 C   s,   t t| dd}t|td}t|| d S )Nr
   rO   r.   )r   r   r   r1   r2   )r@   rV   r3   r4   r   r   r   test_coerce_uint64_conflictZ  s   r   )r	   Unable to parse stringc                 C   sr   t g d}t|tr+tjt|d t|| d W d    d S 1 s$w   Y  d S t|| d}t|| d S )Nr   rM   rO   rY   )r   r[   r$   r3   r   r   r   test_non_coerce_uint64_conflictq  s   
"r   dc1)r*   r   r   dc2c                 C   s$   t jtg | dtg |ddd d S )Nr   F)Zcheck_dtype)r1   r^   r   )r   r   r   r   r   test_downcast_empty  s
   


r   c                  C   sN   t ddd} t| sJ tddtjg}t tg ddd} t| | d S )Nr   r
   rO       @   )Z32Z64r   )r   r%   r   r   rv   r1   r2   )r3   r$   r   r   r   ,test_failure_to_convert_uint64_string_to_NaN  s
   r   strrep).z243.164z245.968z249.585z259.745z265.742z272.567z279.196z280.366z275.034z271.351z272.889z270.627z280.828z290.383z308.153z319.945z336.0z344.09z351.385z356.178z359.82z361.03z367.701z380.812z387.98z391.749z391.171z385.97z385.345z386.121z390.996z399.734z413.073z421.532z430.221z437.092z439.746z446.01z451.191z460.463z469.779z472.025z479.49z474.864z467.54z471.978c                 C   s   t | }|t| ksJ d S r   r   )r   r3   r   r   r   test_precision_float_conversion  s   5r   zvalues, expected)r9   r   NInt64)r9   r   rA   )r9   r         @)r<   r   r   Float64)r9   Nr   r   )r9   r   z3.5c                 C   s$   t | |d}t|}t|| d S r-   r>   )r'   nullable_string_dtyper4   sr3   r   r   r   $test_to_numeric_from_nullable_string  s   r   c                 C   sB   ddg}t || d}t|dd}t tjdgdd}t|| d S )Nrf   r9   r.   r
   rO   r<   r   )r   r   r   NAr1   r2   )r   r'   r$   r3   r4   r   r   r   +test_to_numeric_from_nullable_string_coerce  s
   r   c                 C   s8   ddg}t || d}| }t|dd}t|| d S )Nrf   r9   r.   r   rO   )r   ro   r   r1   r2   )r   r'   r$   r4   r3   r   r   r   +test_to_numeric_from_nullable_string_ignore  s
   r   z+data, input_dtype, downcast, expected_dtypeInt8r~   i  ZInt16Float32iUInt64ZUInt8r   ZInt32c                 C   s8   t j| |d}t||d}t j| |d}t|| d S )Nr.   r   )r   r&   r   r1   assert_extension_array_equal)r@   Zinput_dtyper,   r   r   r3   r4   r   r   r   test_downcast_nullable_numeric  s   r   c                  C   s^   t jddt jgdd} t| dd}t jddt jgdd}t|| t j| d< t|| d S )Nr<   r   r   r.   r*   r   r   )r   r&   r   r   r1   r   )r   r3   r4   r   r   r   %test_downcast_nullable_mask_is_copied  s   
r   c                  C   s"   t d} td}| |ksJ d S )Nz1.7e+308gv;w0B)r   r%   r   )r3   r4   r   r   r   #test_to_numeric_scientific_notation*  s   
r   g  PeBg      Gc                 C   s&   t | g}t|dd}t|| d S )Nr   r   r>   )r}   r4   r3   r   r   r   4test_to_numeric_large_float_not_downcast_to_float_321  s   
r   z
val, dtype)r<   r   r   r   Tbooleanc                 C   s8   t | gtd}t|dd}t | g|d}t|| d S )Nr.   numpy_nullabledtype_backendr/   )r}   r)   r$   r3   r4   r   r   r   test_to_numeric_dtype_backend9  s   r  )r   r   r   )r<   int64[pyarrow])r   float64[pyarrow])Tbool[pyarrow]c                 C   sZ   d|v rt d d}nd}t| d gtd}t||d}t| tjg|d}t|| d S )Npyarrowr   r.   r   	rQ   importorskipr   r0   r   r   r   r1   r2   )r}   r)   r  r$   r3   r4   r   r   r    test_to_numeric_dtype_backend_naD  s   
r	  zval, dtype, downcast))r<   r   r*   )r   r   r   )r<   r   r   )r<   int8[pyarrow]r*   )r   zfloat[pyarrow]r   )r<   r
  r   c                 C   s\   d|v rt d d}nd}t| d gtd}t|||d}t| tjg|d}t|| d S )Nr  r   r.   r  r,   r  )r}   r)   r,   r  r$   r3   r4   r   r   r   )test_to_numeric_dtype_backend_downcasting\  s   
r  zsmaller, dtype_backendr   zuint8[pyarrow]r  c                 C   sT   |dkr	t d tdtjgdd}t||dd}tdtjg| d}t|| d S )Nr  r<   r   r.   r   r  rQ   r  r   r   r   r   r1   r2   )Zsmallerr  r$   r3   r4   r   r   r   .test_to_numeric_dtype_backend_downcasting_uintt  s   
r  )r   r   r   r   r  zuint64[pyarrow]r  r  c                 C   sR   d| v r	t d tdtjg| d}t|dd}tdtjg| d}t|| d S )Nr  r<   r.   r   r   r  )r)   r$   r3   r4   r   r   r   .test_to_numeric_dtype_backend_already_nullable  s   
r  c                 C   s   t g d}| }tjtdd t|| d W d    n1 s"w   Y  t|| dd}t|| t|| dd}| dkrBd	}nd
}t tj	tj	tj	g|d}t|| d S )N)rf   rg   r   r   rM   r   r   )r  r   r
   r  zdouble[pyarrow]r   r.   )
r   ro   rQ   rR   rS   r   r1   r2   r%   rv   )r  r$   r4   r3   r)   r   r   r   #test_to_numeric_dtype_backend_error  s   r  c                  C   sP   t g d} d}tjt|d t| dd W d    d S 1 s!w   Y  d S )Nr   zPdtype_backend numpy is invalid, only 'numpy_nullable' and 'pyarrow' are allowed.rM   numpyr   rP   )r$   rT   r   r   r   test_invalid_dtype_backend  s   "r  c                  C   sX   t d} ttdt|  d}t|ddd}tg dt|  d}t	|| d S )Nr  Z12xr.   r
   )r   r  )r<   r   N)
rQ   r  r   rH   r   r   r   r   r1   r2   )par$   r3   r4   r   r   r   test_coerce_pyarrow_backend  s
   
r  )grl   r  r%   r   rQ   Zpandasr   r   r   r   r   r   Zpandas._testingZ_testingr1   Zfixturer   r   r   r   r   r   Zassert_index_equalr2   r^   r(   r   Zparametrizer   r   r5   r?   rI   rU   rv   rW   r\   r`   ra   rd   rs   rm   r&   rt   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   Zfloat32charr   r   r   r   r   filterwarningsr   r   r   r   r   minr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r  r  r  r   r   r   r   <module>   sZ   






	

	





	


	


	"

	
'


 


		


	


	         


		






3
		







