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
   úh/var/www/html/CropPilot/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Úreturnú4type[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ÚnpÚasarrayÚtmÚ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)ÚkurtÚskewÚsemÚmedian©Úraises)ÚpytestÚmarkÚxfailÚNotImplementedErrorÚapplymarkerr>   Útest_reduce_series_numeric)r4   r   Úall_numeric_reductionsr<   ÚrequestrP   rG   r
   r   rT   W   s   
z+TestDecimalArray.test_reduce_series_numericc                   s4   |}|dv rt jjtd�}| |¡ tƒ  |||¡S )N)rJ   rL   rM   )rO   rP   rQ   rR   rS   r>   Útest_reduce_frame)r4   r   rU   r<   rV   r0   rP   rG   r
   r   rW   ]   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>)rY   rZ   rA   ÚrandomÚdefault_rngÚchoiceÚlenr[   )r4   r   r\   r8   Ú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   é   )rY   rZ   r   Ú
getcontextÚtrapsÚDivisionByZeroÚInvalidOperationÚcheck_opname)	r4   r   Úall_arithmetic_operatorsr0   r8   ÚcontextÚdivbyzerotrapÚ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)rC   Úassert_produces_warningÚDeprecationWarningr>   Útest_fillna_frame©r4   r   ÚmsgrG   r
   r   r|   ‡   ó   ÿ"ý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 )Nú4ExtensionArray.fillna 'method' keyword is deprecatedF©rx   ry   Úraise_on_extra_warningsú9The 'method' keyword in DecimalArray.fillna is deprecated)rC   rz   r{   r>   Útest_fillna_limit_padÚFutureWarningr}   rG   r
   r   r„   Ž   s$   üúü"úz&TestDecimalArray.test_fillna_limit_padz'limit_area, input_ilocs, expected_ilocsÚ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   Ú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 )Nr€   Fr�   z*DecimalArray does not implement limit_area)rx   )rC   rz   r{   rO   rN   rR   r>   Útest_ffill_limit_area)r4   r   Ú
limit_areaÚinput_ilocsÚexpected_ilocsr~   rG   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 deprecatedFr�   r€   rƒ   )rC   rz   r…   r>   Útest_fillna_limit_backfillr{   r}   rG   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ú|r€   rƒ   Frw   )ÚjoinrC   rz   r…   r{   r>   Útest_fillna_no_op_returns_copy)r4   r   r~   rG   r
   r   r‘   Û   s   þÿ
ÿ"ýz/TestDecimalArray.test_fillna_no_op_returns_copyc                   ru   rv   )rC   rz   r{   r>   Útest_fillna_seriesr}   rG   r
   r   r’   ç   r   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�   rC   rz   r…   r{   r>   Útest_fillna_series_method)r4   r   Úfillna_methodr~   rG   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 rv   )r{   rC   rz   r>   Útest_fillna_copy_frame©r4   r   Úusing_copy_on_writeÚwarnr~   rG   r
   r   r–   ú   ó
   "ÿz'TestDecimalArray.test_fillna_copy_framec                   r•   rv   )r{   rC   rz   r>   Útest_fillna_copy_seriesr—   rG   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   ÚarrayÚisnarY   rZ   Úvalue_countsr   Úlocalcontextrl   rn   Ú
sort_indexrC   Úassert_series_equal)
r4   Úall_datarœ   rV   r6   ÚvcsÚvcs_exÚctxrE   rF   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: )rY   rZ   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­   rG   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ž   Úmay_share_memoryr   Ú
ValueError)r4   r   Úresult_copy1Úresult_copy2Úresult_nocopy1Ú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?   rT   rW   r]   rf   rt   r|   r„   rO   rP   Úparametrizer‰   r�   r‘   r’   r“   r–   r›   r¨   r«   rQ   rA   ÚpositiveÚnegativeÚabsr®   r¶   Ú__classcell__r
   r
   rG   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   r^   Tz-1.0)Ú
allow_fillÚ
fill_value)r   r   r   ÚtakerC   Úassert_extension_array_equal©ÚarrrE   rF   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   rY   rZ   r   r   r   rC   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   rY   rZ   r   rC   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   rY   Ú	DataFramer   rC   Ú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©   rj   )rY   rZ   r   r   r   ÚContextÚprecÚto_frameÚastyper   r   rq   )rÐ   r   r§   rE   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)ÚclsÚ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)Úcoerce_to_dtype)Ú_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   rY   rZ   ÚcombineÚoperatorÚaddrC   r£   )ÚmonkeypatchrÙ   rã   rÄ   r8   rE   rF   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ž   rC   Úassert_numpy_array_equal)rì   rÄ   rE   rF   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   ÚdivmodrC   rÂ   )ÚreverseÚexpected_divÚexpected_modrÄ   Údivri   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 )Nrj   rï   é   ©Úindex)rY   rZ   r   rA   r½   rC   r£   )r   r+   ÚsrE   rF   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Ç   Ú_datarC   rÂ   )r+   rE   rF   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   rY   rZ   rA   rÇ   rþ   rC   r£   ©r+   rú   rE   rF   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   rY   rZ   rA   ré   r   r   rC   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   rY   rZ   rA   ré   rC   r£   )r+   rú   rF   Ú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 )Nrj   ©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©Ú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   rY   rÍ   r   rZ   r   ÚgroupbyÚaggrC   r£   Ú
MultiIndexÚfrom_tuplesrÎ   )r   ÚdfrF   rE   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©Úraisingrj   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   rY   rÍ   rZ   r   r  r  rC   r£   rA   rž   rÊ   )rê   r  r   r  rF   rE   rú   Ú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__Ú	__array__Fr  )r+   r*   rX   r   )r   r+   r	   )	ræ   r   r   rY   rZ   rÍ   r   rd   Ú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ž   rY   Úto_numpyrC   rí   rZ   )r"  rF   r+   rE   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  )
rY   rÍ   r   r   rÔ   r   r  rC   Úassert_equalr"  )r˜   r  Údf2rF   r
   r
   r   Útest_array_copy_on_writeC  s   "
ÿür.  )7Ú
__future__r   r   rè   ÚnumpyrA   rO   Úpandas.compat.numpyr   ÚpandasrY   Úpandas._testingÚ_testingrC   Úpandas.tests.extensionr   Ú$pandas.tests.extension.decimal.arrayr   r   r   r   Úfixturer   r   r   r   r   r!   r&   r.   ÚExtensionTestsr/   rÅ   rÈ   rË   rÏ   rP   rº   rÕ   rÖ   rÞ   Ú_add_arithmetic_opsrë   rî   rö   rû   rÿ   r  r  r  r  r$  r)  r+  r.  r
   r
   r
   r   Ú<module>   sr    







 t
ÿ
"þ
	 