Ë
    ž…j²1  ã                   ó¤  — d Z ddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZ ddlZddlmZ ddlmZ ddlmZmZ ddlmZmZmZmZmZmZmZmZ dd	l m!Z!  e«       xr e xs e Z"ejF                  jI                  d
«      ejF                  jI                  d«      ejF                  jI                  d«      gZ%d„ Z&d„ Z'd„ Z( ejR                  eeeeeeeeeeeg¬«      d„ «       Z*ejR                  d„ «       Z+ejR                  d„ «       Z,ejR                  d„ «       Z-ejR                  d„ «       Z.ejR                  d„ «       Z/ejR                  d„ «       Z0ejR                  d„ «       Z1 G d„ de!jd                  «      Z3ejF                  ji                  d ejj                  ddg«       ejj                  ddg«       ejj                  d d!g«      g«      d"„ «       Z6y)#aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

é    N)ÚIS64Úis_platform_windows)Únp_version_gt2)Úis_float_dtypeÚis_signed_integer_dtypeÚis_unsigned_integer_dtype)ÚBooleanDtype)ÚFloat32DtypeÚFloat64Dtype)Ú	Int8DtypeÚ
Int16DtypeÚ
Int32DtypeÚ
Int64DtypeÚ
UInt8DtypeÚUInt16DtypeÚUInt32DtypeÚUInt64Dtype)Úbasez9ignore:invalid value encountered in divide:RuntimeWarningz)ignore:Mean of empty slice:RuntimeWarningz4ignore:overflow encountered in reduce:RuntimeWarningc            
      óR   — ddddt         j                  ddt         j                  ddg
S )	Né   é   é   é   é
   é   éc   éd   ©ÚpdÚNA© ó    úc/root/aria/tools/markitdown-venv/lib/python3.12/site-packages/pandas/tests/extension/test_masked.pyÚ	make_datar$   ?   s%   € Øˆq�!�QœŸ™˜r 2¤r§u¡u¨b°#Ð6Ð6r"   c            
      óR   — ddddt         j                  ddt         j                  ddg
S )	Nçš™™™™™¹?çš™™™™™É?g333333Ó?gš™™™™™Ù?ç      ð?gš™™™™™ñ?gÍÌÌÌÌÌ#@g      $@r   r!   r"   r#   Úmake_float_datar)   C   s%   € Ø��c˜3¤§¡ s¨C´·±¸¸TÐBÐBr"   c                  ól   — ddgdz  t         j                  gz   ddgz   t         j                  gz   ddgz   S )NTFr   )ÚnpÚnanr!   r"   r#   Úmake_bool_datar-   G   s9   € Ø�%ˆ=˜1Ñ¤§¡˜xÑ'¨4°¨-Ñ7¼2¿6¹6¸(ÑBÀdÈEÀ]ÑRÐRr"   )Úparamsc                 ó"   — | j                  «       S ©N)Úparam)Úrequests    r#   Údtyper3   K   s   € ð  �=‰=‹?Ðr"   c                 ó¬   — | j                   dk(  rt        «       }n$| j                   dk(  rt        «       }n
t        «       }t	        j
                  || ¬«      S )NÚfÚb©r3   )Úkindr)   r-   r$   r   Úarray)r3   Údatas     r#   r:   r:   ^   sB   € à‡z�z�SÒÜÓ ‰Ø	�‰�sÒ	ÜÓ‰ä‹{ˆÜ�8‰8�D Ô&Ð&r"   c                 óÎ   — | j                   dk(  r*t        j                  t        j                  d«      | ¬«      S t        j                  t        j                  d«      dz  | ¬«      S )Nr6   r   r7   r   )r8   r   r9   r+   Úonesr7   s    r#   Údata_for_twosr=   i   sD   € à‡z�z�SÒÜ�x‰xœŸ™ ›¨5Ô1Ð1Ü�8‰8”B—G‘G˜B“K !‘O¨5Ô1Ð1r"   c                 ó(  — | j                   dk(  r't        j                  t        j                  dg| ¬«      S | j                   dk(  r't        j                  t        j
                  dg| ¬«      S t        j                  t        j                  dg| ¬«      S )Nr5   r&   r7   r6   Tr   ©r8   r   r9   r    r+   r,   r7   s    r#   Údata_missingr@   p   se   € à‡z�z�SÒÜ�x‰xœŸ™ ˜¨EÔ2Ð2Ø	�‰�sÒ	Ü�x‰xœŸ™ ˜¨eÔ4Ð4Ü�8‰8”R—U‘U˜A�J eÔ,Ð,r"   c                 óÔ   — | j                   dk(  rt        j                  g d¢| ¬«      S | j                   dk(  rt        j                  g d¢| ¬«      S t        j                  g d¢| ¬«      S )Nr5   )r&   r'   ç        r7   r6   )TTF)r   r   r   )r8   r   r9   r7   s    r#   Údata_for_sortingrC   y   sN   € à‡z�z�SÒÜ�x‰xš¨uÔ5Ð5Ø	�‰�sÒ	Ü�x‰xÒ+°5Ô9Ð9Ü�8‰8’I UÔ+Ð+r"   c                 ó.  — | j                   dk(  r(t        j                  dt        j                  dg| ¬«      S | j                   dk(  r(t        j                  dt        j
                  dg| ¬«      S t        j                  dt        j                  d	g| ¬«      S )
Nr5   r&   rB   r7   r6   TFr   r   r?   r7   s    r#   Údata_missing_for_sortingrE   ‚   sm   € à‡z�z�SÒÜ�x‰x˜œbŸe™e SÐ)°Ô7Ð7Ø	�‰�sÒ	Ü�x‰x˜œrŸv™v uÐ-°UÔ;Ð;Ü�8‰8�QœŸ™˜q�M¨Ô/Ð/r"   c                  ó   — d„ S )Nc                 óN   — | t         j                  u xr |t         j                  u S r0   r   )ÚxÚys     r#   ú<lambda>zna_cmp.<locals>.<lambda>Ž   s   € ˜œRŸU™U˜
Ò1 q¬B¯E©E z€ r"   r!   r!   r"   r#   Úna_cmprK   ‹   s
   € ñ 2Ð1r"   c           
      óÄ   — | j                   dk(  rd}d}d}n| j                   dk(  rd}d}|}nd}d	}d
}t        j                  }t        j                  ||||||||g| ¬«      S )Nr5   r&   rB   r'   r6   TFr   r   r   r7   )r8   r   r    r9   )r3   r6   ÚaÚcÚnas        r#   Údata_for_groupingrP   ‘   sr   € à‡z�z�SÒØˆØˆØ‰Ø	�‰�sÒ	ØˆØˆØ‰àˆØˆØˆä	�‰€BÜ�8‰8�Q˜˜2˜r 1 a¨¨AÐ.°eÔ<Ð<r"   c                   ón  ‡ — e Zd ZdZ ej
                  d¬«      d„ «       Zej                  j                  dddg«      d„ «       Z	d	„ Z
d
„ Zdefd„Zˆ fd„Zdej                   dedefd„Zdej                   dedefd„Zdedefd„Zdej                   dedefd„Zdej                   dedefd„Zˆ fd„Zˆ xZS )ÚTestMaskedArraysÚbooleanT)Úautousec                 ó    — |j                   rJ ‚y r0   )Ú_supports_2d)Úselfr3   r2   s      r#   Úskip_if_doesnt_support_2dz*TestMaskedArrays.skip_if_doesnt_support_2d§   s   € ð ×%Ò%Ð%Ð%Ð%r"   Ú	na_actionNÚignorec                 óî   — |j                  d„ |¬«      }|j                  t        «       k(  r$|r"|j                  dt        j
                  ¬«      }n|j                  «       }t        j                  ||«       y )Nc                 ó   — | S r0   r!   )rH   s    r#   rJ   z+TestMaskedArrays.test_map.<locals>.<lambda>°   s   € ¨A€ r"   ©rY   Úfloat64)r3   Úna_value)Úmapr3   r
   Úto_numpyr+   r,   ÚtmÚassert_numpy_array_equal)rW   r@   rY   Úusing_nan_is_naÚresultÚexpecteds         r#   Útest_mapzTestMaskedArrays.test_map®   s`   € à×!Ñ!¡+¸Ð!ÓCˆØ×Ñ¤£Ò/±Oà#×,Ñ,°9ÄrÇvÁvÐ,ÓN‰Hà#×,Ñ,Ó.ˆHÜ
×#Ñ# F¨HÕ5r"   c                 óž  ‡— |d   Š|j                  ˆfd„d¬«      }|j                  j                  dk(  r-t        j                  dt
        j                  dgt        ¬«      }nU|s-t        j                  ‰t
        j                  ‰gt        ¬«      }n&t        j                  ‰t        j                  ‰g«      }t        j                  ||«       y )Nr   c                 ó   •— ‰S r0   r!   )rH   Úzeros    €r#   rJ   z<TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>º   s   ø€ ¸€ r"   rZ   r]   r6   Fr7   )r`   r3   r8   r+   r9   r   r    Úobjectr,   rb   rc   )rW   rE   rd   re   rf   rj   s        @r#   Útest_map_na_action_ignorez*TestMaskedArrays.test_map_na_action_ignore¸   s˜   ø€ Ø'¨Ñ*ˆØ)×-Ñ-«nÈÐ-ÓQˆØ#×)Ñ)×.Ñ.°#Ò5Ü—x‘x ¬¯©¨uÐ 5¼VÔD‰HÙ ä—x‘x ¤r§u¡u¨dÐ 3¼6ÔB‰Hä—x‘x ¤r§v¡v¨tÐ 4Ó5ˆHÜ
×#Ñ# F¨HÕ5r"   c                 óü   — 	 t        j                  |«      }|j                  dk(  r3|j	                  d«      j                  d«      dv rt        S |dv rt        S y y # t        $ r t        j                  |«      }Y Œcw xY w)Nr6   Ú_Úr)ÚpowÚtruedivÚfloordiv)Ú__sub__Ú__rsub__)rb   Ú	get_dtypeÚAttributeErrorr8   ÚstripÚlstripÚNotImplementedErrorÚ	TypeError)rW   Úop_nameÚobjÚotherr3   s        r#   Ú_get_expected_exceptionz(TestMaskedArrays._get_expected_exceptionÄ   sz   € ð	(Ü—L‘L Ó%ˆEð
 �:‰:˜ÒØ�}‰}˜SÓ!×(Ñ(¨Ó-Ð1OÑOä*Ð*ØÐ3Ñ3ä Ð ØØøô ò 	(ä—L‘L Ó'ŠEð	(ús   ‚A ÁA;Á:A;r{   c                 ó|   — t        j                  |«      }|}|j                  dk(  r|dv r|j                  d«      }|S )Nr6   )Ú__mod__Ú__rmod__ÚInt8)rb   ru   r8   Úastype)rW   r{   r|   r}   Úpointwise_resultÚsdtyperf   s          r#   Ú_cast_pointwise_resultz'TestMaskedArrays._cast_pointwise_resultÕ   sC   € Ü—‘˜cÓ"ˆØ#ˆà�;‰;˜#ÒØð ñ ð
 $Ÿ?™?¨6Ó2�àˆr"   c                 óº   •— |j                   j                  dk(  r1t        j                  j	                  d¬«      }|j                  |«       t        ‰| �  ||«       y )Nr6   z‡Inconsistency between floordiv and divmod; we raise for floordiv but not for divmod. This matches what we do for non-masked bool dtype.©Úreason)r3   r8   ÚpytestÚmarkÚxfailÚapplymarkerÚsuperÚtest_divmod_series_array)rW   r:   r=   r2   r‹   Ú	__class__s        €r#   r�   z)TestMaskedArrays.test_divmod_series_arrayã   sP   ø€ Ø�:‰:�?‰?˜cÒ!Ü—;‘;×$Ñ$ð)ð %ó ˆDð
 ×Ñ Ô%Ü‰Ñ(¨¨}Õ=r"   ÚserÚreturnc                 ój   — |dv r/|j                   j                  dk7  rt        j                  d¬«       y)N©ÚanyÚallr6   z-Tested in tests/reductions/test_reductions.pyrˆ   T)r3   r8   rŠ   Úskip©rW   r‘   r{   s      r#   Ú_supports_reductionz$TestMaskedArrays._supports_reductioní   s)   € Ø�nÑ$¨¯©¯©¸3Ò)>Ü�K‰KÐNÕOØr"   Úskipnac                 ó  — d}|j                   j                  dk(  r|j                   j                  }n|j                   j                  dk(  r|dv rd}|j                  «       j	                  |«      }|dk(  r# t        ||«      «       } t        ||«      «       }nZ t        ||«      |¬«      } t        ||«      |¬«      }|s2|j                  «       j                  «       r|dvrt        j                  }t        j                  ||«       y )	NÚint64r5   r6   ©ÚminÚmaxÚboolÚcount©rš   r”   )r3   r8   Únumpy_dtypeÚdropnarƒ   ÚgetattrÚisnar•   r   r    rb   Úassert_almost_equal)rW   r‘   r{   rš   Ú	cmp_dtypeÚaltre   rf   s           r#   Úcheck_reducezTestMaskedArrays.check_reduceò   sá   € ð ˆ	Ø�9‰9�>‰>˜SÒ ð Ÿ	™	×-Ñ-‰IØ�Y‰Y�^‰^˜sÒ"Ø˜.Ñ(Ø"�	ð
 �j‰j‹l×!Ñ! )Ó,ˆØ�gÒØ*”W˜S 'Ó*Ó,ˆFØ,”w˜s GÓ,Ó.‰Hà*”W˜S 'Ó*°&Ô9ˆFØ,”w˜s GÓ,°FÔ;ˆHÙ˜cŸh™h›jŸn™nÔ.°7À.Ñ3PÜŸ5™5�Ü
×Ñ˜v xÕ0r"   c                 óv  — t        |j                  «      r|j                  j                  }|S |dv rd}|S |dv r|j                  j                  }|S |j                  dv r|j                  j                  }|S t        |j                  «      r t	        «       rt
        r|rt        sd}|S d}|S t        |j                  «      r t	        «       rt
        r|rt        sd}|S d}|S |j                  j                  d	k(  r5|d
v rd}|S |dv rt	        «       rt
        r|rt        sdnd}|S t        d«      ‚t        d«      ‚)N)ÚmeanÚmedianÚvarÚstdÚskewÚkurtÚsemÚFloat64)rŸ   rž   )ÚInt64ÚUInt64ÚInt32r´   ÚUInt32rµ   r6   r�   rS   )ÚsumÚprodznot supposed to reach this)
r   r3   Únamer   r   r   r   r   r8   rz   )rW   Úarrr{   rš   r¨   s        r#   Ú_get_expected_reduction_dtypez.TestMaskedArrays._get_expected_reduction_dtype  sv  € Ü˜#Ÿ)™)Ô$ØŸ	™	Ÿ™ˆIðH ÐðG ÐOÑOØ!ˆIðD ÐðC ˜Ñ&ØŸ	™	Ÿ™ˆIð@ Ðð? �Y‰YÐ-Ñ-ØŸ	™	Ÿ™ˆIð< Ðô; % S§Y¡YÔ/ô (Ô)µ>ÉÝð ð ð6 Ðð/ ð	 ð6 Ðô+ ' s§y¡yÔ1ô (Ô)µ>ÉÝð ð ð( Ðð! ð	 ð( Ðð �Y‰Y�^‰^˜sÒ"Ø˜.Ñ(Ø%�	ð Ðð ˜OÑ+ô ,Ô-µ~ÉVÝñ ð !ð	 ð Ðô  Ð <Ó=Ð=äÐ8Ó9Ð9r"   c                  ó   — y)NTr!   r˜   s      r#   Ú_supports_accumulationz'TestMaskedArrays._supports_accumulation5  s   € Ør"   c           
      ó¦  — d}t         r|j                  j                  dk(  sd}|j                  j                  j	                  d«      rd|› �}n‚|j                  j                  j	                  d«      rd|› �}nW|j                  j                  j	                  d«      r|j                  }n%|j                  j
                  d	k(  r|d
v rd}nd|› �}dk(  r"|dk(  r|rt        j                  d|› d|› �«       |dk(  rn*|dv r|j                  }n|dk(  r|d d }nt        |› d�«      ‚ t        ||«      |¬«      }t        j                  t        j                   t        |j                  d«      |«      |¬«      d¬«      «      }t        j                  |t        j                   |«      <   |j                  |«      }t#        j$                  ||«       y )Né@   é   é    ÚUÚUIntÚIÚIntÚFr6   )ÚcumminÚcummaxrS   ÚFloat32Úcumprodz4Float32 precision lead to large differences with op z and skipna=Úcumsum)rÉ   rÈ   é   z not supportedr¢   r^   r³   r7   )Úis_windows_or_32bitr3   Úitemsizerº   Ú
startswithr8   rŠ   r—   ry   r¥   r   ÚSeriesr9   rƒ   r    r+   Úisnanrb   Úassert_series_equal)rW   r‘   r{   rš   ÚlengthÚexpected_dtypere   rf   s           r#   Úcheck_accumulatez!TestMaskedArrays.check_accumulate8  sª  € ð ˆÝð —9‘9×%Ñ%¨Ò*Ø�à�9‰9�>‰>×$Ñ$ SÔ)Ø# F 8˜_‰NØ�Y‰Y�^‰^×&Ñ& sÔ+Ø" 6 (˜^‰NØ�Y‰Y�^‰^×&Ñ& sÔ+ð !ŸY™Y‰NØ�Y‰Y�^‰^˜sÒ"ØÐ.Ñ.Ø!*‘à#& v h �à˜YÒ&¨7°iÒ+?ÁFä�K‰KØFÀwÀið PØ$˜Xð'ôð
 �hÒØØÐ,Ñ,Ø ŸY™Y‰NØ˜	Ò!Ø�c�r�(‰Cä%¨¨	°Ð&@ÓAÐAà&”˜˜gÓ&¨fÔ5ˆÜ—9‘9Ü�H‰HØ7”˜Ÿ
™
 9Ó-¨wÓ7¸vÔFØôó
ˆô (*§u¡uˆ”—‘˜(Ó#Ñ$Ø—?‘? >Ó2ˆÜ
×Ñ˜v xÕ0r"   c                 ó$   •— t         ‰| �  |«       y r0   )rŽ   Ú8test_loc_setitem_with_expansion_preserves_ea_index_dtype)rW   r:   r2   r�   s      €r#   rØ   zITestMaskedArrays.test_loc_setitem_with_expansion_preserves_ea_index_dtypek  s   ø€ Ü‰ÑHÈÕNr"   )Ú__name__Ú
__module__Ú__qualname__Ú_combine_le_expected_dtyperŠ   ÚfixturerX   r‹   Úparametrizerg   rl   r~   Ústrr†   r�   r   rÑ   r    r™   rª   r¼   r¾   rÖ   rØ   Ú__classcell__)r�   s   @r#   rR   rR   ¤   s  ø„ Ø!*Ðà€V‡^�^˜DÔ!ñ&ó "ð&ð ‡[�[×Ñ˜[¨4°Ð*:Ó;ñ6ó <ð6ò
6òð"¨có ô>ð r§y¡yð ¸3ð À4ó ð
1 §	¡	ð 1°Cð 1Àó 1ð6&¸#ð &Àtó &ðP¨"¯)©)ð ¸cð Àdó ð11 B§I¡Ið 11¸ð 11ÀTó 11÷fOð Or"   rR   r»   TFr   r   r(   g       @c                 óÄ   — t         j                  t         j                  g}| j                  |«      }|j                  | j                  k(  sJ ‚t	        d„ |D «       «      sJ ‚y )Nc              3   ó@   K  — | ]  }|t         j                  u –— Œ y ­wr0   r   )Ú.0rH   s     r#   ú	<genexpr>zLtest_cast_pointwise_result_all_na_respects_original_dtype.<locals>.<genexpr>w  s   è ø€ Ò*˜aˆq”B—E‘EŒzÑ*ùs   ‚)r   r    r†   r3   r–   )r»   Úvaluesre   s      r#   Ú9test_cast_pointwise_result_all_na_respects_original_dtyperæ   o  sO   € ô
 �e‰e”R—U‘Uˆ^€FØ×'Ñ'¨Ó/€FØ�<‰<˜3Ÿ9™9Ò$Ð$Ð$ÜÑ* 6Ô*Ô*Ð*Ñ*r"   )7Ú__doc__Únumpyr+   rŠ   Úpandas.compatr   r   Úpandas.compat.numpyr   Úpandas.core.dtypes.commonr   r   r   Úpandasr   Úpandas._testingÚ_testingrb   Úpandas.core.arrays.booleanr	   Úpandas.core.arrays.floatingr
   r   Úpandas.core.arrays.integerr   r   r   r   r   r   r   r   Úpandas.tests.extensionr   rÎ   r‹   ÚfilterwarningsÚ
pytestmarkr$   r)   r-   rÝ   r3   r:   r=   r@   rC   rE   rK   rP   ÚExtensionTestsrR   rÞ   r9   ræ   r!   r"   r#   ú<module>rö      s  ðñó  Û ÷õ /÷ñ ó Ý Ý 3÷÷	÷ 	ó 	õ (á*Ó,ÒC°^Ð1CÒPÈDÈÐ ð ‡K�K×ÑØCóð ‡K�K×ÑÐJÓKà
‡K�K×ÑÐUÓVð€
ò7òCòSð €‡�àØØØØØØØØØØðôñóðð ‡�ñ'ó ð'ð ‡�ñ2ó ð2ð ‡�ñ-ó ð-ð ‡�ñ,ó ð,ð ‡�ñ0ó ð0ð ‡�ñ2ó ð2ð
 ‡�ñ=ó ð=ô$HO�t×*Ñ*ô HOðV ‡�×ÑØ	ˆHˆB�H‰H�d˜E�]Ó# X R§X¡X¨q°!¨fÓ%5°x°r·x±xÀÀcÀ
Ó7KÐLóñ+óñ+r"   