o
    $jO                     @  s   d dl mZ d dlZd dl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 d dlmZmZmZmZ ejdd Zejdd	 Zejd
d Zejdd Zejdd Zejdd Zejdd Zejdd ZG dd dejZdd Z dd Z!dd Z"dd Z#ej$%d d!d"gd#d$ Z&G d%d& d&eZ'G d'd( d(e'Z(e()  d)d* Z*ej$%d+e'e(gd,d- Z+ej$%d.d"g d/g d0fd!g d1g d2fgd3d4 Z,d5d6 Z-d7d8 Z.d9d: Z/d;d< Z0d=d> Z1d?d@ Z2dAdB Z3dCdD Z4dEdF Z5dGdH Z6dS )I    )annotationsN)np_version_gt2)base)DecimalArrayDecimalDtype	make_data
to_decimalc                   C  s   t  S N)r    r
   r
   l/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/extension/decimal/test_decimal.pydtype   s   r   c                   C  s
   t t S r	   )r   r   r
   r
   r
   r   data   s   
r   c                   C  s   t dd tdD S )Nc                 S  s   g | ]}t d qS )   )decimalDecimal).0_r
   r
   r   
<listcomp>"   s    z!data_for_twos.<locals>.<listcomp>d   )r   ranger
   r
   r
   r   data_for_twos    s   r   c                   C  s   t tdtdgS )NNaN   r   r   r   r
   r
   r
   r   data_missing%   s   r   c                   C      t tdtdtdgS )N120r   r
   r
   r
   r   data_for_sorting*      r   c                   C  r   )Nr   r   r   r   r
   r
   r
   r   data_missing_for_sorting1   r    r!   c                   C  s   dd S )Nc                 S  s   |   o|  S r	   )is_nan)xyr
   r
   r   <lambda>:   s    zna_cmp.<locals>.<lambda>r
   r
   r
   r
   r   na_cmp8      r&   c               	   C  s@   t d} t d}t d}t d}t| | ||||| |gS )N1.0z0.02.0r   )r   r   r   )bacnar
   r
   r   data_for_grouping=   s
   



r.   c                      s  e Zd ZdCddZdDd
dZdE fddZ fddZ fddZdd Zdd Z	dd Z
 fddZ fddZejddg dg dfdg d g d fdg d!g d"fdg d#g d$fd%g dg d&fd%g d g d&fd%g d!g d!fd%g d#g d!fg fd'd(Z fd)d*Z fd+d,Z fd-d.Z fd/d0Z fd1d2Z fd3d4Zejd5d6d7gd8d9 Zd:d; Zejjd<d=ejd>ejejejg fd?d@ZdAdB Z  Z S )FTestDecimalArrayop_namestrreturn4type[Exception] | tuple[type[Exception], ...] | Nonec                 C  s   d S r	   r
   )selfr0   objotherr
   r
   r   _get_expected_exceptionG   s   z(TestDecimalArray._get_expected_exceptionser	pd.Seriesboolc                 C  s   dS )NTr
   )r4   r8   r0   r
   r
   r   _supports_reductionL   s   z$TestDecimalArray._supports_reductionskipnac                   sJ   |dkrt  |||S t|||d}tt|| }t|| d S )Ncount)r<   )supercheck_reducegetattrnpZasarraytmZassert_almost_equal)r4   r8   r0   r<   resultexpected	__class__r
   r   r?   O   s
   zTestDecimalArray.check_reducec                   s4   |dv rt jjtd}|| t ||| d S )N)ZkurtskewZsemmedianraises)pytestmarkxfailNotImplementedErrorapplymarkerr>   test_reduce_series_numeric)r4   r   all_numeric_reductionsr<   requestrL   rE   r
   r   rP   W   s   
z+TestDecimalArray.test_reduce_series_numericc                   s4   |}|dv rt jjtd}|| t |||S )N)rG   rH   rI   )rK   rL   rM   rN   rO   r>   test_reduce_frame)r4   r   rQ   r<   rR   r0   rL   rE   r
   r   rS   ]   s
   
z"TestDecimalArray.test_reduce_framec                 C  s   t |}| |||d d S )N      ?)pdSeries_compare_other)r4   r   comparison_opr8   r
   r
   r   test_compare_scalare   s   
z$TestDecimalArray.test_compare_scalarc                 C  sR   t |}tjdg dt|}t |dd |D  }| |||| d S )Nr   )r   r   c                 S  s   g | ]
}t td |qS )g       @)r   r   pow)r   ir
   r
   r   r   n   s    z7TestDecimalArray.test_compare_array.<locals>.<listcomp>)rU   rV   rA   randomZdefault_rngchoicelenrW   )r4   r   rX   r8   Zalterr6   r
   r
   r   test_compare_arrayi   s   
z#TestDecimalArray.test_compare_arrayc           	      C  s   |}t |}t }|jtj }|jtj }d|jtj< d|jtj< t dd |D }| ||| d|vrA| |||d  | ||d | ||d ||jtj< ||jtj< d S )Nr   c                 S  s   g | ]}t |d  qS )r   )int)r   dr
   r
   r   r   |   s    zATestDecimalArray.test_arith_series_with_array.<locals>.<listcomp>modr      )rU   rV   r   
getcontexttrapsDivisionByZeroInvalidOperationZcheck_opname)	r4   r   Zall_arithmetic_operatorsr0   r8   contextZdivbyzerotrapZinvalidoptrapr6   r
   r
   r   test_arith_series_with_arrayq   s   
z-TestDecimalArray.test_arith_series_with_arrayc                   F   d}t jt|dd t | W d    d S 1 sw   Y  d S Nz,ExtensionArray.fillna added a 'copy' keywordFmatchcheck_stacklevel)rB   assert_produces_warningDeprecationWarningr>   test_fillna_framer4   r   msgrE   r
   r   rr         "z"TestDecimalArray.test_fillna_framec                   s   d}t jt|ddd t | W d    n1 sw   Y  d}t jt|ddd t | W d    d S 1 s>w   Y  d S )N4ExtensionArray.fillna 'method' keyword is deprecatedFrn   ro   Zraise_on_extra_warnings9The 'method' keyword in DecimalArray.fillna is deprecated)rB   rp   rq   r>   test_fillna_limit_padFutureWarningrs   rE   r
   r   ry      s$   "z&TestDecimalArray.test_fillna_limit_padz'limit_area, input_ilocs, expected_ilocsZoutside)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   Zinside)r   r   r   r   r   c              	     s   d}t jt|ddd3 d}tjt|d t |||| W d    n1 s)w   Y  W d    d S W d    d S 1 sAw   Y  d S )Nrv   Frw   z*DecimalArray does not implement limit_area)rn   )rB   rp   rq   rK   rJ   rN   r>   test_ffill_limit_area)r4   r   Z
limit_areaZinput_ilocsZexpected_ilocsrt   rE   r
   r   r|      s    "z&TestDecimalArray.test_ffill_limit_areac                   s   d}t jt|ddd t | W d    n1 sw   Y  d}t jt|ddd t | W d    n1 s=w   Y  d}t jt|ddd t | W d    d S 1 s_w   Y  d S )Nz)Series.fillna with 'method' is deprecatedFrw   rv   rx   )rB   rp   rz   r>   test_fillna_limit_backfillrq   rs   rE   r
   r   r}      s6   "z+TestDecimalArray.test_fillna_limit_backfillc                   sT   d ddg}tjttf|dd t | W d    d S 1 s#w   Y  d S N|rv   rx   Frm   )joinrB   rp   rz   rq   r>   test_fillna_no_op_returns_copy)r4   r   rt   rE   r
   r   r      s   
"z/TestDecimalArray.test_fillna_no_op_returns_copyc                   rk   rl   )rB   rp   rq   r>   test_fillna_seriesrs   rE   r
   r   r      ru   z#TestDecimalArray.test_fillna_seriesc                   sV   d ddg}tjttf|dd t || W d    d S 1 s$w   Y  d S r~   )r   rB   rp   rz   rq   r>   test_fillna_series_method)r4   r   Zfillna_methodrt   rE   r
   r   r      s   
"z*TestDecimalArray.test_fillna_series_methodc                   R   |st nd }d}tj||dd t | W d    d S 1 s"w   Y  d S rl   )rq   rB   rp   r>   test_fillna_copy_framer4   r   using_copy_on_writewarnrt   rE   r
   r   r      
   "z'TestDecimalArray.test_fillna_copy_framec                   r   rl   )rq   rB   rp   r>   test_fillna_copy_seriesr   rE   r
   r   r      r   z(TestDecimalArray.test_fillna_copy_seriesdropnaTFc           
      C  s   |d d }|rt ||   }n|}t|j|d}t|j|d}t }d|jtj	< |
 }|
 }	W d    n1 sDw   Y  t||	 d S )N
   )r   F)rA   arrayZisnarU   rV   Zvalue_countsr   localcontextrf   rh   Z
sort_indexrB   assert_series_equal)
r4   Zall_datar   rR   r6   vcsZvcs_exctxrC   rD   r
   r
   r   test_value_counts  s   

z"TestDecimalArray.test_value_countsc                 C  s2   t |}|jjt|v sJ dt|v sJ d S )Nz	Decimal: )rU   rV   r   namerepr)r4   r   r8   r
   r
   r   test_series_repr  s   
z!TestDecimalArray.test_series_reprz%Inconsistent array-vs-scalar behavior)reasonufuncc                   s   t  || d S r	   )r>   #test_unary_ufunc_dunder_equivalence)r4   r   r   rE   r
   r   r   !  s   z4TestDecimalArray.test_unary_ufunc_dunder_equivalencec                 C  s~   t j|dd}t j|dd}t ||rJ tsd S z	t j|dd}W n
 ty-   Y d S w t j|dd}t ||s=J d S )NT)copyF)rA   r   Zmay_share_memoryr   
ValueError)r4   r   Zresult_copy1Zresult_copy2Zresult_nocopy1Zresult_nocopy2r
   r
   r   test_array_interface_copy&  s   z*TestDecimalArray.test_array_interface_copy)r0   r1   r2   r3   )r8   r9   r0   r1   r2   r:   )r8   r9   r0   r1   r<   r:   )!__name__
__module____qualname__r7   r;   r?   rP   rS   rY   r`   rj   rr   ry   rK   rL   parametrizer|   r}   r   r   r   r   r   r   r   rM   rA   Zpositivenegativeabsr   r   __classcell__r
   r
   rE   r   r/   F   sJ    


r/   c                  C  sZ   t tdtdg} | jddgdtdd}t tdtdg}t|| d S )Nr(   r)   r   rZ   Tz-1.0)Z
allow_fillZ
fill_value)r   r   r   ZtakerB   assert_extension_array_equalarrrC   rD   r
   r
   r    test_take_na_value_other_decimal9  s   r   c                  C  sV   t  } tjg d| d}ttdtdtdg| d}t|}t|| d S )N)r   r   r   r   r   r   r   )r   rU   rV   r   r   r   rB   r   )r   r8   r   expr
   r
   r   6test_series_constructor_coerce_data_to_extension_dtype@  s   
r   c                  C  s`   t tdg} tj| t d}t| }t|| tj| dd}tdg}t|| d S )N10.0r   int64r   )r   r   r   rU   rV   r   rB   r   r   r
   r
   r   "test_series_constructor_with_dtypeL  s   
r   c                  C  s   t tdg} tjd| it d}td| i}t|| t tdg} tjd| idd}tddgi}t|| d S )Nr   Ar   r   r   )r   r   r   rU   	DataFramer   rB   assert_frame_equalr   r
   r
   r   %test_dataframe_constructor_with_dtypeW  s   r   frameTFc                 C  sf   t jttdgdd}t }d|_| r| }|t	|}| r'|d }|j
jj|jks1J d S )Nr   r+   )r   rd   )rU   rV   r   r   r   ContextprecZto_frameastyper   r   ri   )r   r   r   rC   r
   r
   r   test_astype_dispatchesd  s   r   c                   @  s$   e Zd ZdZedddddZdS )DecimalArrayWithoutFromSequencez:Helper class for testing error handling in _from_sequence.NF)r   r   c                C     t d)NzFor the test)KeyError)clsZscalarsr   r   r
   r
   r   _from_sequence|  r'   z.DecimalArrayWithoutFromSequence._from_sequence)r   r   r   __doc__classmethodr   r
   r
   r
   r   r   y  s    r   c                   @  s   e Zd Zedd ZdS )DecimalArrayWithoutCoercionc                 C  s   | j |ddS )NF)Zcoerce_to_dtype)Z_create_method)r   opr
   r
   r   _create_arithmetic_method  s   z5DecimalArrayWithoutCoercion._create_arithmetic_methodN)r   r   r   r   r   r
   r
   r
   r   r     s    r   c                 C  s|   t }tdd }| td| |tdtdg}t|}||t	j
}tjtdtdgdd}t|| d S )	Nc                 S  s   t S r	   )r   )r   r
   r
   r   construct_array_type  s   z?test_combine_from_sequence_raises.<locals>.construct_array_typer   r(   r)   4.0objectr   )r   r   setattrr   r   r   rU   rV   combineoperatoraddrB   r   )monkeypatchr   r   r   r8   rC   rD   r
   r
   r   !test_combine_from_sequence_raises  s   

r   class_c                 C  sN   | t dt dg}|| }tjt dt dgdd}t|| d S )Nr(   r)   r   r   r   )r   r   rA   r   rB   assert_numpy_array_equal)r   r   rC   rD   r
   r
   r   $test_scalar_ops_from_sequence_raises  s   r   z#reverse, expected_div, expected_mod)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 C  sZ   t g d}| rtd|\}}nt|d\}}t |}t |}t|| t|| d S )N)r   r         r   )r   divmodrB   r   )reverseZexpected_divZexpected_modr   divrc   r
   r
   r   test_divmod_array  s   r   c                 C  sT   | d d }t j|tddd}t|}t jt|tddd}t|| d S )Nrd   r      index)rU   rV   r   rA   r   rB   r   )r   r+   srC   rD   r
   r
   r   test_ufunc_fallback  s
   
r   c                  C  s6   t g d} t| }t t| j}t|| d S Nr   r   r   )r   rA   r   _datarB   r   )r+   rC   rD   r
   r
   r   test_array_ufunc  s   
r   c                  C  sF   t g d} t| }t|}tt t| j}t|| d S r   )r   rU   rV   rA   r   r   rB   r   r+   r   rC   rD   r
   r
   r   test_array_ufunc_series  s
   

r   c                  C  sP   t g d} t| }t|td}tt| td}t|| d S )Nr   r   )	r   rU   rV   rA   r   r   r   rB   r   r   r
   r
   r   $test_array_ufunc_series_scalar_other  s
   
r   c                  C  s\   t g d} t| }tt g d}t|| }t| |}t|| t|| d S )Nr   )r   r      )r   rU   rV   rA   r   rB   r   )r+   r   rD   r1r2r
   r
   r   test_array_ufunc_series_defer  s   
r   c                  C  sv  t  d d } tg dg dt| d}tt| d | d g}|dd d	d
 }tj	||dd |d |d dd
 }tj	||dd tjt| d | d | d gtj
g dd}|ddgd dd
 }tj	||dd |d |d |d gdd
 }tj	||dd tddgt| d | d gd}|ddd
 }tj||dd d S )Nrd   r   r   r   r   r   r{   )id1id2decimalsr   r   r   r   c                 S  
   | j d S Nr   ilocr#   r
   r
   r   r%        
 z"test_groupby_agg.<locals>.<lambda>FZcheck_namesc                 S  r   r   r   r   r
   r
   r   r%     r   r   )r   r   )r   r   )r   r   r   r   c                 S  r   r   r   r   r
   r
   r   r%      r   c                 S  r   r   r   r   r
   r
   r   r%     r   )r   r   c                 S  r   r   r   r   r
   r
   r   r%     r   )r   rU   r   r   rV   r   groupbyaggrB   r   Z
MultiIndexfrom_tuplesr   )r   dfrD   rC   r
   r
   r   test_groupby_agg  s(   $$r   c                 C  s   dd }| j td|dd t d d }tg dt|d}tt|d	 |d
  |d  |d |d  g}|dd dd }t	j
||dd tt|}tjg dtjd}||dd }t	j
||dd d S )Nc                 S  s   t t | S r	   )rA   sumr   )r4   r
   r
   r   DecimalArray__my_sum  s   z8test_groupby_agg_ea_method.<locals>.DecimalArray__my_summy_sumFZraisingrd   r   )idr   r   r   r   r   r   r   r   c                 S  
   | j  S r	   valuesr   r   r
   r
   r   r%     r   z,test_groupby_agg_ea_method.<locals>.<lambda>r   r   c                 S  r   r	   r   r   r
   r
   r   r%     r   )r   r   r   rU   r   rV   r   r   r   rB   r   rA   r   r   )r   r   r   r   rD   rC   r   Zgrouperr
   r
   r   test_groupby_agg_ea_method  s   2r   c                 C  sx   d
dd}| j td|dd t }tt|}t|tt|d}||dk  ||dk  |jd  |jd	  d S )Nc                 S  r   )Nz0tried to convert a DecimalArray to a numpy array)	Exception)r4   r   r
   r
   r   DecimalArray__array__%  s   z;test_indexing_no_materialize.<locals>.DecimalArray__array__Z	__array__Fr   )r+   r*   rT   r   )r   r+   r	   )	r   r   r   rU   rV   r   r   r_   at)r   r   r   r   r   r
   r
   r   test_indexing_no_materialize   s   

r   c                  C  sz   t dt dg} tjt dt dgdd}tj| dd}|jdd	}t|| t|jdd	}t|| d S )
Nz1.1111z2.2222z1.11z2.22r   r   r   r   )r   )	r   r   rA   r   rU   Zto_numpyrB   r   rV   )r   rD   r+   rC   r
   r
   r   test_to_numpy_keyword5  s   r   c                 C  sx   t jdtdtdgidd}|t }d|jd< | r:t jdtdtdgit d}t|j	|j	 d S d S )Nr+   r   r   r   r   r   r   )
rU   r   r   r   r   r   r   rB   Zassert_equalr   )r   r   Zdf2rD   r
   r
   r   test_array_copy_on_writeC  s   "
r  )7
__future__r   r   r   numpyrA   rK   Zpandas.compat.numpyr   ZpandasrU   Zpandas._testingZ_testingrB   Zpandas.tests.extensionr   Z$pandas.tests.extension.decimal.arrayr   r   r   r   Zfixturer   r   r   r   r   r!   r&   r.   ZExtensionTestsr/   r   r   r   r   rL   r   r   r   r   Z_add_arithmetic_opsr   r   r   r   r   r   r   r   r   r   r   r   r  r
   r
   r
   r   <module>   sr    







 t

"
	 