o
    ŀg(s                     @   sX  d dl Z d dlZd dlmZ d dlZd dlm  mZ d dl	Z
d dl	mZ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	ej$de%d&d'gej d(d)d*gd+d, Z&ej d-g d.g d/g d0gd1d2 Z'ej d3g d4d5fg d6d7fgd8d9 Z(ej d:d;g d4fd d<d=ej)gfgej*d>d?d@ Z+ej dAdBd;g dCfd dDdEej)gfgej*d>dFdG Z,dHdI Z-ej dJg d.dej!ifg d/i fg d0i fgdKdL Z.ej dMddNii gdOdP Z/ej dQdRdRdSggdTdU Z0ej dVe 1dWdDge 1dXdYgdWdDgdXdYgfe2e 1dWdDgdYgdWdDgdYgfgdZd[ Z3d\d] Z4ej*d>d^d_ Z5ej d`g dadbdc Z6ej*d>ddde Z7ej*d>dfdg Z8ej*d>dhdi Z9ej djdkd;dld fd dmd fgej*d>dndo Z:ej d-g dpdDej)dqej)ggdrds Z;ej dtg duej2g dpdvdwfg dxe2g dyfgdzd{ Z<d|d} Z=d~d Z>dd Z?ej ddd;eddgdDdgfd eej)dDej)gfgej*d>dd Z@dd ZAdd ZBej d-g dg dpej2g dddwgej di ej!fddiej!fddieCejDjEfddieCejFd d  fgdd ZGej dd!dgej d-g dg dpej2g dddwgdd ZHdd ZIdd ZJej*dej dg dej dg dej2g dejKdwfg dej2g dejKdwfgdd ZLej dd!ejMfdejMfdejNfgdd ZOej ddd!eej"jPeej"jQgfdd!eejMjPeejMjQgfdd!eejRjPeejRjQgfdvd!eej!jPeej!jQgfddeejSjPeejSjQgfddeejNjPeejNjQgfddeejTjPeejTjQgfddeejUjPeejUjQgfdd!eej"jPeej"jQd< gfdd!eejMjPeejMjQd< gfdvd!eejRjPeejRjQd< gfdd!eej"jPd< eejMjQgfdd!eejMjPd< eejRjQgfdvd!eejRjPd< eej!jQgfddeejSjPeejSjQd< gfddeejNjPeejNjQd< gfddeejTjPeejTjQd< gfgdd ZVdd ZWej ded dged dgejUdwfgdd ZXej dVg dddej)ej)dgfg dddej)gfgdd ZYej dAd;eg dfdgej*d>ddĄ ZZej dg dƢej dg dƢddɄ Z[dd˄ Z\ej dg d͢ddτ Z]ej dg dѢed<dej)gddwfg dueg dpddwfg dӢeg dpddwfg dԢeg dբddwfg dעed<ej)dgddwfg d٢eg dբddwfgddۄ Z^dd݄ Z_dd߄ Z`ej dd<d<gdd!dfdDe
jagdd!dfdDdgdd!dfd<e
jagdd!dfddgdd!dfd<d<gdd!dfeej!jQd< d<gdd!dfd<d<gdddfdDdDgdddfdDdgdddfd<e
jagdddfddgdddfeejUjQd< d<gdddfd<d<gdddfdDdDgdddfdDdgdddfd<e
jagdddfddgdddfddgdddfd<d<gdddfd<dgdddfd<d<gdddfd<dgdddffdd Zbdd Zcdd Zdej d`ddgdd Zeej dg ddd Zfej dg ddd Zgej dg ddd Zhej d ddgdd&ggdd Ziej dg ddd Zjdd	 Zkd
d Zldd ZmdS (      N)iinfo)
ArrowDtype	DataFrameIndexSeriesoption_context
to_numeric)Nignoreraisecoerce)paramsc                 C      | j S Nparamrequest r   V/var/www/html/myenv/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   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   0       c                 C   r!   )Nserr#   )r   r   r   r   r   r   1   r%   c                 C   s   t t| jS r   )nparrayr   valuesr   r   r   r   r   2   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)input_kwargsresult_kwargsr&   resultexpectedr   r   r   
test_empty9   s   	r9   infer_stringpyarrow)markslast_val7   c                 C   s\   t d| tdd| g}t|}W d    n1 sw   Y  tg d}t|| d S )Nzfuture.infer_string1-3.14   Q	r?   )r   r   r   r3   r4   )r=   r:   r&   r7   r8   r   r   r   test_seriesI   s   
rE   data)rC            )      ?      @      @g      @)TFTTc                 C   s*   t | tddd}t|}t|| d S )NABCDEFG)indexr$   )r   listr   r3   r4   )rF   r&   r7   r   r   r   test_series_numericV   s   
rQ   zdata,msgrC   rD   apple,Unable to parse string "apple" at position 2)orangerC   rD   rS   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   )rF   msgr&   r   r   r   
test_errorf   s   "r^   zerrors,exp_datar	   rC   rD   z2ignore:errors='ignore' is deprecated:FutureWarningc                 C   s0   t g d}t|| d}t |}t|| d S )NrR   rX   r   r   r3   r4   )r   exp_datar&   r7   r8   r   r   r   test_ignore_errorw   s   ra   z
errors,exp)r
   rT   TFrS   rJ   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 )Nrb   rV   rX   	r   
isinstancer   rZ   r[   r\   r   r3   r4   )r   expr&   r7   r8   r   r   r   test_bool_handling   s   
"rf   c                  C   s.   g d} t | }tg d}t|| d S )N)r@   rA   r>   rB   r   r'   r(   r3   assert_numpy_array_equal)r&   resr8   r   r   r   	test_list   s   rj   zdata,arr_kwargsc                 C   s*   t | }tj| fi |}t|| d S r   rg   )rF   
arr_kwargsr7   r8   r   r   r   test_list_numeric   s   
rl   kwargsOc                 C   s8   g d}t |fi | }t|}t |}t|| d S )NrB   r_   )rm   rF   r&   r7   r8   r   r   r   test_numeric   s
   ro   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)rJ   g       @rK   rL   rq   rr   皙?)
r   decimalDecimalr'   infcopyapplyr   r3   assert_frame_equal)rp   dfr8   df_copyr   r   r   test_numeric_df_columns   s   r   zdata,exp_datars   g?rv   c                 C   s:   t d| i}|d t|d< t d|i}t|| d S )Nrq   )r   r{   r   r3   r|   )rF   r`   r}   r8   r   r   r   test_numeric_embedded_arr_likes   s   r   c                  C   s<   t g d} t| dd}t tjtjtjg}t|| d S )N)rq   rr   cr   rX   )r   r   r'   nanr3   r4   )r&   r7   r8   r   r   r   test_all_nan   s   r   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 )NrB   )456ru   r   z	1-d arrayrV   )r   rZ   r[   	TypeErrorr   )r   r}   rm   r   r   r   test_type_check   s
   "r   val)rC   皙?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 0rV   r   )	rd   r   rZ   r[   r\   r   r   r3   assert_almost_equal)	r   r   r   r   rm   r   val_is_stringr]   r8   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}n|| 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 1rV   r0   )rd   r   rZ   r[   r\   r   r   appendr'   r   r2   intr3   r   r(   )r   r   r   r    r   rm   r   	extra_eltarrr   coercingr]   r7   exp_valr8   	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 rV   r   c                 S   s   g | ]}t |qS r   )r   ).0ir   r   r   
<listcomp>P  s    z7test_really_large_in_arr_consistent.<locals>.<listcomp>r0   )r   insertr   rZ   r[   r\   r   r   r2   r3   r   r'   r(   )r   r   r    r   rm   r   rO   r]   r7   r8   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   ]  s    c                 C   s
   t | S r   )r'   isnanr   r   r   r   r   ^  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   rV   rX   )rd   r   rZ   r[   r\   r   )r   checkerscalarr   r   r   test_scalar_failY  s   

"r   rC      rG   rG   c                 C   s&   |\}}|| } t | }|||  d S r   r   )rF   r*   r   assert_equalr7   r   r   r   test_numeric_dtypesl  s   r   zdata,exp)r@   23int64r0   )z1.5z2.7z3.4)      ?g@g333333@c                 C   s*   |\}}t || }||}||| d S r   r   )rF   re   r*   r   r   r7   r8   r   r   r   test_stru  s   r   c                 C   s<   |\}}t jdd| d}t||}||j}||| d S )N20130101rG   )periodstz)pd
date_ranger   asi8)tz_naive_fixturer*   r   r   r"   r7   r8   r   r   r   test_datetime_like  
   
r   c                 C   s<   | \}}t jdddd}t||}||j}||| d S )Nz1 daysrG   D)r   freq)r   timedelta_ranger   r   )r*   r   r   r"   r7   r8   r   r   r   test_timedelta  r   r   c                 C   s`   |\}}t jddddd}||}t|ts | tjjdd t|}||j	}||| d S )Nz2011-01rG   M )r   r   r$   z)Missing PeriodDtype support in to_numeric)reason)
r   period_rangerd   r   applymarkerrZ   markxfailr   r   )r   r*   r   r   r"   inpr7   r8   r   r   r   test_period  s   

r   zerrors,expected)r
   z!Invalid object type at position 0      $@r   rS   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   rJ   rS   rV   rX   )	r   rd   r   rZ   r[   r   r   r3   r4   )r   r8   r&   r7   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r@   r   rG   zunsigned-integerz#invalid downcasting method providedrV   r.   rZ   r[   r\   r   )rF   invalid_downcastr]   r   r   r   test_downcast_invalid_cast     "r   c                  C   r   )Nr   invalidzinvalid error value specifiedrV   rX   r   )rF   invalid_error_valuer]   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   unsignedUnsignedIntegerc                 C   s2   t | fi |}tjg d|d}t|| d S )Nr   r0   rg   )rF   rm   r   r7   r8   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   r0   r   )r'   r+   	typecodesr(   r   r3   rh   )rF   r   smallest_int_dtyper8   ri   r   r   r   test_signed_downcast  s   r   c                  C   sf   g d} t j| td}d}tjt|d t| ddd}W d    n1 s&w   Y  t|| d S )N)foor   rG   r0   errors='ignore' is deprecatedrV   r	   r   r-   )r'   r(   r2   r3   assert_produces_warningFutureWarningr   rh   )rF   r8   r]   ri   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   rG   )r   rG   r0   r   r   )r'   r(   r   r   r3   rh   )rF   r8   ri   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   rG   )r   r   rG   )g     @i N  i  gR@iP  g     j@c                 C   s   t | |d}t|| d S Nr   )r   r3   rh   )rF   r8   r.   ri   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   r0   r   )r'   r(   r   r3   rh   )r.   expected_dtyperF   r8   ri   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.   min_maxseriesr   r   r   test_downcast_limits5  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     pAr0   r   r   )r   r'   finfofloat64maxr   r   r+   )r   r7   r   r   r    test_downcast_float64_to_float32Q  s    r   zser,expectedl            c                 C   s   t | dd}t|| d S )Nr   r   )r   r3   r4   )r&   r8   r7   r   r   r   test_downcast_uint64Y  s   r   )   ,  r   NaN     p;6$ r   r   r   12345678901234567890
1234567890ITEMl   
>V3&Z
 iIc                 C   s,   t t| dd}t|td}t|| d S )Nr   rX   r0   )r   r   r   r3   r4   )rF   r`   r7   r8   r   r   r   test_coerce_uint64_conflictk  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   rV   rX   rc   )r   re   r&   r7   r   r   r   test_non_coerce_uint64_conflict  s   
"r  dc1)r,   r   r   dc2c                 C   s$   t jtg | dtg |ddd d S )Nr   F)check_dtype)r3   rh   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   rX       @   )3264r   )r   r'   r   r   r   r3   r4   )r7   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  r7   r   r   r   test_precision_float_conversion  s   5r  zvalues, expected)r@   r   NInt64)r@   r   rG   )r@   r         @)rC   r   r  Float64)r@   Nr  r  )r@   r   z3.5c                 C   s$   t | |d}t|}t|| d S r/   r_   )r)   nullable_string_dtyper8   sr7   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 )Nrq   r@   r0   r   rX   rC   r  )r   r   r   NAr3   r4   )r  r)   r&   r7   r8   r   r   r   +test_to_numeric_from_nullable_string_coerce  s
   r  c                 C   sj   ddg}t || d}| }d}tjt|d t|dd}W d    n1 s(w   Y  t|| d S )Nrq   r@   r0   r   rV   r	   rX   )r   rz   r3   r   r   r   r4   )r  r)   r&   r8   r]   r7   r   r   r   +test_to_numeric_from_nullable_string_ignore  s   r  z+data, input_dtype, downcast, expected_dtypeInt8r   i  Int16Float32iUInt64UInt8r   Int32c                 C   s8   t j| |d}t||d}t j| |d}t|| d S )Nr0   r   )r   r(   r   r3   assert_extension_array_equal)rF   input_dtyper.   r   r   r7   r8   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 )NrC   r   r  r0   r,   r   r  )r   r(   r  r   r3   r  )r   r7   r8   r   r   r   %test_downcast_nullable_mask_is_copied1  s   
r   c                  C   s"   t d} td}| |ksJ d S )Nz1.7e+308gv;w0B)r   r'   r   )r7   r8   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   r8   r7   r   r   r   4test_to_numeric_large_float_not_downcast_to_float_32E  s   
r"  z
val, dtype)rC   r  r   r  Tbooleanc                 C   s8   t | gtd}t|dd}t | g|d}t|| d S )Nr0   numpy_nullabledtype_backendr1   )r   r+   r&   r7   r8   r   r   r   test_to_numeric_dtype_backendM  s   r*  )r#  r$  r%  )rC   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 )Nr;   r'  r0   r(  	rZ   importorskipr   r2   r   r   r  r3   r4   )r   r+   r)  r&   r7   r8   r   r   r    test_to_numeric_dtype_backend_naX  s   
r0  zval, dtype, downcast))rC   r  r,   )r   r  r   )rC   r  r   )rC   int8[pyarrow]r,   )r   zfloat[pyarrow]r   )rC   r1  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'  r0   r)  r.   r.  )r   r+   r.   r)  r&   r7   r8   r   r   r   )test_to_numeric_dtype_backend_downcastingp  s   
r3  zsmaller, dtype_backendr'  zuint8[pyarrow]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;   rC   r  r0   r   r2  rZ   r/  r   r   r  r   r3   r4   )smallerr)  r&   r7   r8   r   r   r   .test_to_numeric_dtype_backend_downcasting_uint  s   
r6  )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;   rC   r0   r'  r(  r4  )r+   r&   r7   r8   r   r   r   .test_to_numeric_dtype_backend_already_nullable  s   
r7  c                 C   s   t g d}| }tjtdd t|| d W d    n1 s"w   Y  d}tjt|d t|| dd}W d    n1 sBw   Y  t	|| t|| dd}| d	kr[d
}nd}t t
jt
jt
jg|d}t	|| d S )N)rq   rr   r   r  rV   r(  r   r	   )r)  r   r   r;   zdouble[pyarrow]r  r0   )r   rz   rZ   r[   r\   r   r3   r   r   r4   r'   r   )r)  r&   r8   r]   r7   r+   r   r   r   #test_to_numeric_dtype_backend_error  s    r8  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.rV   numpyr(  rY   )r&   r]   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;   12xr0   r   )r   r)  )rC   r   N)
rZ   r/  r   rP   r   r   r   r   r3   r4   )par&   r7   r8   r   r   r   test_coerce_pyarrow_backend  s
   
r=  )nrw   r9  r'   r   rZ   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r   r   pandas._testing_testingr3   fixturer   r   r   r   r   r    assert_index_equalr4   rh   r*   r   parametrizer   r   r9   r   
skip_if_norE   rQ   r^   r   filterwarningsra   rf   rj   rl   ro   r   rx   r(   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   float32charr   r   r   r   r   r   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*  r0  r3  r6  r7  r8  r:  r=  r   r   r   r   <module>   st    






		
	


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

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

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