U
    bY                  1   @   s   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Zd dlm	Z	m
Z
mZmZ d dlmZ ejddddg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,d-d.d/d0gd1d2d3d4gddddggd5d6 Z!ejd7d-d8d9gd:fd;d-d8d9gd<fgd=d> Z"ejd?dd-d8d9gfdd-d8ej#gfgd@dA Z$ejdBdCdddd9gfdd1dDej#gfgdEdF Z%dGdH Z&ejdId-d.d/d0gd"ejifd1d2d3d4gi fddddgi fgdJdK Z'ejdLd"dMii gdNdO Z(ejdPdQdQdRggdSdT Z)ejdUe *dVd1ge *dWdXgdVd1gdWdXgfe+e *dVd1gdXgdVd1gdXgfgdYdZ Z,d[d\ Z-d]d^ Z.ejd_d-d`dagdbdc Z/ddde Z0dfdg Z1dhdi Z2ejdjdkddld fddmd fgdndo Z3ejd,d-dpd.gd1ej#d.ej#ggdqdr Z4ejdsdtdudvgej+d-dpd.gdwdxfdydzd{ge+d|d}d~gfgdd Z5dd Z6dd Z7dd Z8ejdddeddpgd1d9gfdeej#d1ej#gfgdd Z9dd Z:dd Z;ejd,dtdpd.gd-dpd.gej+dddgddx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,dtdpd.gd-dpd.gej+dddgddxgdd ZAdd ZBdd ZCejdd#ddgejdddpd.gej+d`dpd.gejDdxfddddddgej+ddddddgejDdx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dwd#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jJd- gfdd#eejFjIeejFjJd- gfdwd#eejKjIeejKjJd- gfdd#eejjId- eejFjJgfdd#eejFjId- eejKjJgfdwd#eejKjId- eejjJgfddeejLjIeejLjJd- gfddeejGjIeejGjJd- gfddeejMjIeejMjJd- gfgdd ZOejded dged dgejNdxfgdd ZPejdUdddddgddej#ej#dgfdddgddej#gfgddȄ ZQejdBdedddgfdgdd˄ ZRejdd#ddgejdd#ddgddτ ZSddф ZTejddddddddddddddddddddddddddddddddddddddddddddddd g.dd ZUejddtdudged-dpej#gfdtdudvged-dpd.gfdtdud.ged-dpd.gfdtdudged-dpdgfdtddged-ej#dgfdtdudged-dpdgfgdd ZVejdd-d-gd	d#d
fd1ejWgdd#d
fd1d`gdd#dfd-ejWgd	d#d
fddgd	d#dfd-d-gdd#d
feejjJd- d-gd	d#d	fd-d-gd	dd
fd1d1gddd
fd1d`gdddfd-ejWgd	dd
fddgd	ddfejXeejNjJd- d-gdddejjYe  dddd-d-gd	ddfd1d1gdddfd1d`gdddfd-ejWgd	ddfddgd	dd	fddgdddfd-d-gdddfd-d`gdddffdd ZZdd Z[dd Z\dS (      N)iinfo)is_platform_arm)	DataFrameIndexSeries
to_numericignoreraisecoerce)paramsc                 C   s   | j S Nparamrequest r   F/tmp/pip-unpacked-wheel-xg7vt6ln/pandas/tests/tools/test_to_numeric.pyerrors   s    r   TFc                 C   s   | j S r   r   r   r   r   r   signed   s    r   c                 C   s   | S r   r   xr   r   r   <lambda>       r   identitystr)r   idsc                 C   s   | j S r   r   r   r   r   r   	transform   s    r   l   N"2) l      Fx:^V c                 C   s   | j S r   r   r   r   r   r   	large_val"   s    r   c                 C   s   | j S r   r   r   r   r   r   multiple_elts'   s    r   c                 C   s   t | ddS )Nidxname)r   r   r   r   r   r   .   r   c                 C   s   t | ddS )Nserr    )r   r   r   r   r   r   /   r   c                 C   s   t t| jS r   )nparrayr   valuesr   r   r   r   r   0   r   c                 C   s   | j S r   r   r   r   r   r   transform_assert_equal,   s    r&   zinput_kwargs,result_kwargsdtypeintegerr   downcastc                 C   s4   t g td}t|f| }t g f|}t|| d S Nr'   )r   objectr   tmassert_series_equal)Zinput_kwargsZresult_kwargsr"   resultexpectedr   r   r   
test_empty7   s    	r2   last_val7   c                 C   s4   t dd| g}t|}t dddg}t|| d S )N1-3.14   Q	r5   r   r   r.   r/   )r3   r"   r0   r1   r   r   r   test_seriesG   s    r;   datar8                  ?      @      @g      @c                 C   s*   t | tddd}t|}t|| d S )NABCDZEFG)indexr!   )r   listr   r.   r/   )r<   r"   r0   r   r   r   test_series_numericP   s    
rF   zdata,msgr9   apple,Unable to parse string "apple" at position 2Zorangez-Unable to parse string "orange" at position 0c              	   C   s2   t | }tjt|d t|dd W 5 Q R X d S )Nmatchr	   r   )r   pytestraises
ValueErrorr   )r<   msgr"   r   r   r   
test_error`   s    rP   zerrors,exp_datac                 C   s2   t dddg}t|| d}t |}t|| d S )Nr8   r9   rG   rK   r:   )r   exp_datar"   r0   r1   r   r   r   test_ignore_errorq   s    rR   z
errors,exp)r	   rH   g        c              	   C   sd   t dddg}t|tr@tjt|d t|| d W 5 Q R X n t|| d}t |}t|| d S )NTFrG   rI   rK   	r   
isinstancer   rL   rM   rN   r   r.   r/   )r   expr"   r0   r1   r   r   r   test_bool_handling|   s    

rV   c                  C   s2   dddg} t | }tdddg}t|| d S )Nr6   r7   r4   r8   r9   r5   r   r#   r$   r.   assert_numpy_array_equal)r"   resr1   r   r   r   	test_list   s    
rZ   zdata,arr_kwargsc                 C   s&   t | }tj| f|}t|| d S r   rW   )r<   Z
arr_kwargsr0   r1   r   r   r   test_list_numeric   s    
r[   kwargsOc                 C   s6   dddg}t |f| }t|}t |}t|| d S )Nr8   r9   r5   r:   )r\   r<   r"   r0   r1   r   r   r   test_numeric   s
    
r^   columnsabc                 C   st   t dtdtddgddddgd	}t ddtjd
gddddgd	}| }||  t|| < t	|| d S )Ng333333?Q	@Zinfinityz0.1r@   g       @rA   rB   r`   ra   皙?)
r   decimalDecimalr#   infcopyapplyr   r.   assert_frame_equal)r_   dfr1   Zdf_copyr   r   r   test_numeric_df_columns   s    
 rl   zdata,exp_datarb   g?rd   c                 C   s:   t d| i}|d t|d< t d|i}t|| d S )Nr`   )r   ri   r   r.   rj   )r<   rQ   rk   r1   r   r   r   test_numeric_embedded_arr_likes   s    rm   c                  C   s>   t dddg} t| dd}t tjtjtjg}t|| d S )Nr`   ra   cr
   rK   )r   r   r#   nanr.   r/   )r"   r0   r1   r   r   r   test_all_nan   s    rp   c              	   C   sX   t dddgdddgd}| d k	r*d| ini }tjtd	d
 t|f| W 5 Q R X d S )Nr8   r9   r5   456rc   r   z	1-d arrayrI   )r   rL   rM   	TypeErrorr   )r   rk   r\   r   r   r   test_type_check   s    ru   valg?i!N  c                 C   s*   |r
|  n| } t || t| ks&td S r   r   floatAssertionError)rv   r   r   r   r   r   test_scalar   s    rz   c           	   	   C   s   |d k	rd|ini }|r|  n| }||}t |t}|rl|dkrld}tjt|d t|f| W 5 Q R X n,|dkr|rt|n|}tt|f|| d S )Nr   Nr	   #Integer out of range. at position 0rI   r
   )	rT   r   rL   rM   rN   r   rx   r.   assert_almost_equal)	r   r   r   r   r\   rv   val_is_stringrO   r1   r   r   r   test_really_large_scalar   s    
r   c              	   C   s  |d k	rd|ini }|r|  n| }||}d}|g||g  }t |t}	|dk}
|dkr|	s`|r|	rjd}nd}tjt|d t|f| W 5 Q R X n|t|f|}|
r|	rt|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 1rI   r,   )rT   r   rL   rM   rN   r   rx   appendr#   ro   r-   intr.   r}   r$   )r   r   r   r   r   r\   rv   Z	extra_eltarrr~   ZcoercingrO   r0   Zexp_valr1   	exp_dtyper   r   r   test_really_large_in_arr  s0    

r   c              	   C   s   |d k	rd|ini }t |r |  n| g}|r8|d|  |dkrzt|}d| }tjt|d t|f| W 5 Q R X nFt|f|}|dkrdd |D }	t}
n|}	t}
t	
|tj|	|
d	 d S )
Nr   r   r{   z"Integer out of range. at position rI   r
   c                 S   s   g | ]}t |qS r   )rx   ).0ir   r   r   
<listcomp>D  s     z7test_really_large_in_arr_consistent.<locals>.<listcomp>r,   )r   insertr   rL   rM   rN   r   rx   r-   r.   r}   r#   r$   )r   r   r   r   r\   r   rD   rO   r0   r1   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   Q  r   c                 C   s
   t | S r   )r#   isnanr   r   r   r   r   R  r   c              	   C   sN   d}t |tr6tjt|d t|| d W 5 Q R X n|t|| dsJtd S )Nr   rI   rK   )rT   r   rL   rM   rN   r   ry   )r   checkerZscalarr   r   r   test_scalar_failM  s
    	
r      c                 C   s&   |\}}|| } t | }|||  d S r   r   )r<   r&   r   assert_equalr0   r   r   r   test_numeric_dtypes_  s    r   zdata,expr6   23int64r,   z1.5z2.7z3.4g      ?g@g333333@c                 C   s*   |\}}t || }||}||| d S r   r   )r<   rU   r&   r   r   r0   r1   r   r   r   test_strh  s    r   c                 C   s<   |\}}t jdd| d}t||}||j}||| d S )NZ20130101r=   )periodstz)pdZ
date_ranger   asi8)Ztz_naive_fixturer&   r   r   r   r0   r1   r   r   r   test_datetime_likew  s
    
r   c                 C   s<   | \}}t jdddd}t||}||j}||| d S )Nz1 daysr=   D)r   freq)r   Ztimedelta_ranger   r   )r&   r   r   r   r0   r1   r   r   r   test_timedelta  s
    
r   c                 C   sX   | \}}t jddddd}||}t|trJt|}||j}||| n
td d S )Nz2011-01r=   M )r   r   r!   z)Missing PeriodDtype support in to_numeric)r   Zperiod_rangerT   r   r   r   rL   skip)r&   r   r   r   inpr0   r1   r   r   r   test_period  s    

r   zerrors,expected)r	   z!Invalid object type at position 0      $@c              	   C   s`   t ddgddg}t|trDtjt|d t|| d W 5 Q R X nt|| d}t|| d S )Nr   r   r@   rG   rI   rK   )	r   rT   r   rL   rM   rt   r   r.   r/   )r   r1   r"   r0   r   r   r   test_non_hashable  s    

r   c               	   C   s<   dddg} d}d}t jt|d t| |d W 5 Q R X d S )Nr6   r   r=   zunsigned-integerz#invalid downcasting method providedrI   r*   rL   rM   rN   r   )r<   Zinvalid_downcastrO   r   r   r   test_downcast_invalid_cast  s
    
r   c               	   C   s<   dddg} d}d}t jt|d t| |d W 5 Q R X d S )Nr6   r   r=   invalidzinvalid error value specifiedrI   rK   r   )r<   Zinvalid_error_valuerO   r   r   r   test_errors_invalid_value  s
    
r   z
1970-01-02z
1970-01-03z
1970-01-04zdatetime64[D]zkwargs,exp_dtyper*   rx   unsignedZUnsignedIntegerc                 C   s0   t | f|}tjdddg|d}t|| d S )Nr8   r   r=   r,   rW   )r<   r\   r   r0   r1   r   r   r   test_downcast_basic  s    r   signed_downcastc                 C   sD   t t jd d }t jdddg|d}t| |d}t|| d S )NZIntegerr   r8   r   r=   r,   r   )r#   r'   	typecodesr$   r   r.   rX   )r<   r   Zsmallest_int_dtyper1   rY   r   r   r   test_signed_downcast  s    r   c                  C   s6   dddg} t j| td}t| ddd}t|| d S )NZfoor   r=   r,   r   r   r)   )r#   r$   r-   r   r.   rX   r<   r1   rY   r   r   r   !test_ignore_downcast_invalid_data  s    
r   c                  C   s<   dddg} t jdddgt jd}t| dd}t|| d S )Nz-1r   r=   r,   r   r   )r#   r$   r   r   r.   rX   r   r   r   r   $test_ignore_downcast_neg_to_unsigned  s    
r   zdata,expectedz1.1g     @i N  i  gR@iP  g     j@c                 C   s   t | |d}t|| d S Nr   )r   r.   rX   )r<   r1   r*   rY   r   r   r   )test_ignore_downcast_cannot_convert_float  s    r   zdowncast,expected_dtypec                 C   s:   dddg}t jdddg|d}t|| d}t|| d S )NZ256i  i     r,   r   )r#   r$   r   r.   rX   )r*   expected_dtyper<   r1   rY   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td S r   )r   r   r'   ry   )r'   r*   Zmin_maxZseriesr   r   r   test_downcast_limits#  s    r   zser,expectedl            c                 C   s   t | dd}t|| d S )Nr   r   )r   r.   r/   )r"   r1   r0   r   r   r   test_downcast_uint64?  s    r      i,  r   NaNl     p;6$ 12345678901234567890
1234567890ITEMl   
>V3&Z
 iIc                 C   s,   t t| dd}t|td}t|| d S )Nr
   rK   r,   )r   r   rx   r.   r/   )r<   rQ   r0   r1   r   r   r   test_coerce_uint64_conflictQ  s    r   )r	   zUnable to parse stringc              	   C   s\   t dddg}t|tr@tjt|d t|| d W 5 Q R X nt|| d}t|| d S )Nr   r   r   rI   rK   rS   )r   rU   r"   r0   r   r   r   test_non_coerce_uint64_conflicth  s    
r   dc1dc2c                 C   s$   t jtg | dtg |ddd d S )Nr   F)Zcheck_dtype)r.   rX   r   )r   r   r   r   r   test_downcast_empty}  s
    

r   c                  C   sP   t ddd} t| sttddtjg}t tdddgdd} t| | d S )Nr   r
   rK       @   Z32Z64)r   r#   r   ry   r   ro   r.   r/   )r0   r"   r   r   r   ,test_failure_to_convert_uint64_string_to_NaN  s
    r   strrepz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td S r   rw   )r   r0   r   r   r   test_precision_float_conversion  s    5r   zvalues, expectedg      @z3.5c                 C   s$   t | |d}t|}t|| d S r+   r:   )r%   Znullable_string_dtyper1   sr0   r   r   r   $test_to_numeric_from_nullable_string  s    r   z+data, input_dtype, downcast, expected_dtypeInt64Int8ZFloat64i  ZInt16ZFloat32iZUInt64ZGH38798)reason)ZmarksZUInt8r   ZInt32c                 C   s8   t j| |d}t||d}t j| |d}t|| d S )Nr,   r   )r   r$   r   r.   assert_extension_array_equal)r<   Zinput_dtyper*   r   r   r0   r1   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 )Nr8   r   r   r,   r(   r   r   )r   r$   NAr   r.   r   )r   r0   r1   r   r   r   %test_downcast_nullable_mask_is_copied  s    
r   c                  C   s"   t d} td}| |kstd S )Nz1.7e+308gv;w0B)r   r#   float64ry   )r0   r1   r   r   r   #test_to_numeric_scientific_notation  s    
r   )]re   Znumpyr#   r   rL   Zpandas.compatr   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr.   Zfixturer   r   r   r   r   r   Zassert_index_equalr/   rX   r&   markZparametrizer   r   r2   r;   rF   rP   ro   rR   rV   rZ   r[   r^   rl   rf   r$   rm   rp   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r'   Zfloat32charr   r   r   r   r   r   r   r   r   r   minmaxr   r   r   r   r   r   r   r   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   <module>   s  






	



	



 
	
	


	
"

	
'



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




3  