Ë
    ¤eh8  ã                   ó   — d Z ddl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jH                  jK                  d
«      ejH                  jK                  d«      ejH                  jK                  d«      gZ&d„ Z'd„ Z(d„ Z) ejT                  eeeeeeee eeeg¬«      d„ «       Z+ejT                  d„ «       Z,ejT                  d„ «       Z-ejT                  d„ «       Z.ejT                  d„ «       Z/ejT                  d„ «       Z0ejT                  d„ «       Z1ejT                  d„ «       Z2 G d„ de"jf                  «      Z4 G d„ de"jj                  «      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                  óª   — t        t        dd«      «      t        j                  gz   t        t        dd«      «      z   t        j                  gz   ddgz   S )Né   é	   é
   éb   éc   éd   )ÚlistÚrangeÚpdÚNA© ó    ú`/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/tests/extension/test_masked.pyÚ	make_datar#   @   sB   € Ü”�a˜“Ó¤§¡˜wÑ&¬¬e°B¸«mÓ)<Ñ<ÄÇÁ¸wÑFÈ"ÈcÈÑRÐRr!   c                  óÖ   — t        t        j                  ddd«      «      t        j                  gz   t        t        j                  ddd«      «      z   t        j                  gz   ddgz   S )Nçš™™™™™¹?gÍÌÌÌÌÌì?r   gš™™™™™#@gÍÌÌÌÌÌ#@g      $@)r   ÚnpÚaranger   r   r    r!   r"   Úmake_float_datar(   D   sb   € äŒR�Y‰Y�s˜C Ó%Ó&Ü�5‰5ˆ'ñ	ä
Œr�y‰y˜˜C Ó%Ó
&ñ	'ô �5‰5ˆ'ñ	ð �ˆ+ñ		ðr!   c                  ór   — ddgdz  t         j                  gz   ddgdz  z   t         j                  gz   ddgz   S )NTFé   é,   )r&   Únanr    r!   r"   Úmake_bool_datar-   N   s?   € Ø�%ˆ=˜1Ñ¤§¡˜xÑ'¨4°¨-¸"Ñ*<Ñ<ÄÇÁ¸xÑGÈ4ÐQVÈ-ÑWÐWr!   )Úparamsc                 ó"   — | j                  «       S ©N)Úparam)Úrequests    r"   Údtyper3   R   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:   e   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   é   )r8   r   r9   r&   Úonesr7   s    r"   Údata_for_twosr>   p   sE   € à‡z�z�SÒÜ�x‰xœŸ™ ›¨EÔ2Ð2Ü�8‰8”B—G‘G˜C“L 1Ñ$¨EÔ2Ð2r!   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_missingrA   w   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%   çš™™™™™É?ç        r7   r6   )TTF)r   r<   r   )r8   r   r9   r7   s    r"   Údata_for_sortingrE   €   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%   rD   r7   r6   TFr   r   r@   r7   s    r"   Údata_missing_for_sortingrG   ‰   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   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_cmprM   ’   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%   rD   rC   r6   TFr   r   r<   r7   )r8   r   r   r9   )r3   r6   ÚaÚcÚnas        r"   Údata_for_groupingrR   ˜   sr   € à‡z�z�SÒØˆØˆØ‰Ø	�‰�sÒ	ØˆØˆØ‰àˆØˆØˆä	�‰€BÜ�8‰8�Q˜˜2˜r 1 a¨¨AÐ.°eÔ<Ð<r!   c                   ó8  ‡ — e Zd Zej                  j                  dddg«      d„ «       Zd„ Zd„ Zde	fd„Z
ˆ 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ˆ xZS )ÚTestMaskedArraysÚ	na_actionNÚignorec                 óê   — |j                  d„ |¬«      }|j                  t        «       k(  r"|j                  dt        j
                  ¬«      }n|j                  «       }t        j                  ||«       y )Nc                 ó   — | S r0   r    )rJ   s    r"   rL   z+TestMaskedArrays.test_map.<locals>.<lambda>®   s   € ¨A€ r!   ©rU   Úfloat64)r3   Úna_value)Úmapr3   r
   Úto_numpyr&   r,   ÚtmÚassert_numpy_array_equal)ÚselfrA   rU   ÚresultÚexpecteds        r"   Útest_mapzTestMaskedArrays.test_map¬   s^   € à×!Ñ!¡+¸Ð!ÓCˆØ×Ñ¤£Ò/à#×,Ñ,°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        ¬«      }n&t        j                  ‰t        j                  ‰g«      }t        j                  ||«       y )Nr<   c                 ó   •— ‰S r0   r    )rJ   Úzeros    €r"   rL   z<TestMaskedArrays.test_map_na_action_ignore.<locals>.<lambda>¸   s   ø€ ¸€ r!   rV   rY   r6   Fr7   )r\   r3   r8   r&   r9   r   r   Úobjectr,   r^   r_   )r`   rG   ra   rb   rf   s       @r"   Útest_map_na_action_ignorez*TestMaskedArrays.test_map_na_action_ignore¶   sz   ø€ Ø'¨Ñ*ˆØ)×-Ñ-«nÈÐ-ÓQˆØ#×)Ñ)×.Ñ.°#Ò5Ü—x‘x ¬¯©¨uÐ 5¼VÔD‰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__)r^   Ú	get_dtypeÚAttributeErrorr8   ÚstripÚlstripÚNotImplementedErrorÚ	TypeError)r`   Ú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;rw   c                 ó  — t        j                  |«      }|}|dv r|j                  d«      S |j                  dv r‚|dv rkt	        j
                  «       5  t	        j                  ddt        ¬«       |j                  t        j                  «      }d d d «       j                  d«      }|S |j                  |«      }|S |j                  d	k(  rœ|d
v r|j                  d«      }nL|dv rH| j                  |«      }| j                  |j                  t        «      ||«      }|j                  d«      }|dk(  r3 t        ||«      |«      }	t        j                  ||	j                  «       <   |S |j                  |«      }|S # 1 sw Y   ŒíxY w)N)ÚeqÚneÚleÚgeÚltÚgtÚbooleanÚiu)Ú__rtruediv__Ú__truediv__Ú__div__rV   zDowncasting object dtype arrays)ÚcategoryÚFloat64r6   )Ú__floordiv__Ú__rfloordiv__Ú__pow__Ú__rpow__Ú__mod__Ú__rmod__ÚInt8)r…   r„   rŒ   )r^   rq   Úastyper8   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningÚfillnar&   r,   Úget_op_from_nameÚ_combineÚfloatÚgetattrÚisna)
r`   rw   rx   ry   Úpointwise_resultÚsdtyperb   ÚfilledÚopra   s
             r"   Ú_cast_pointwise_resultz'TestMaskedArrays._cast_pointwise_resultÐ   sw  € Ü—‘˜cÓ"ˆØ#ˆàÐ:Ñ:Ø—?‘? 9Ó-Ð-à�;‰;˜$ÑØÐDÑDÜ×,Ñ,Ó.ñ 5Ü×+Ñ+Ø Ø9Ü!.õð
 &Ÿ_™_¬R¯V©VÓ4�F÷5ð "Ÿ=™=¨Ó3�ð< ˆð7 $Ÿ?™?¨6Ó2�ð6 ˆð5 �[‰[˜CÒØð ñ ð $Ÿ?™?¨6Ó2‘àÐ;Ñ;ð ×*Ñ*¨7Ó3�ØŸ=™=¨¯©´EÓ):¸EÀ2ÓF�Ø#Ÿ?™?¨9Ó5�à˜*Ò$à.œ  gÓ.¨uÓ5�Ü*,¯&©&�˜Ÿ™›Ñ'ð ˆð  —‘ vÓ.ˆHØˆ÷K5ð 5ús   Á<E;Å;F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)r`   r:   r>   r2   r¤   Ú	__class__s        €r"   r¨   z)TestMaskedArrays.test_divmod_series_array   sP   ø€ Ø�:‰:�?‰?˜cÒ!Ü—;‘;×$Ñ$ð)ð %ó ˆDð
 ×Ñ Ô%Ü‰Ñ(¨¨}Õ=r!   c                 ó’   •—  |d«      \  }}|j                   j                  dk(  rd| _        nt        | _        t        ‰| �  |«       y )Nr<   r6   r‚   )r3   r8   Ú_combine_le_expected_dtyperg   r§   Útest_combine_le)r`   Údata_repeatedÚ
orig_data1Ú
orig_data2r©   s       €r"   r¬   z TestMaskedArrays.test_combine_le
  sE   ø€ á!.¨qÓ!1Ñˆ
�JØ×Ñ× Ñ  CÒ'Ø.7ˆDÕ+ô /5ˆ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©r`   r°   rw   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�   r™   rš   r´   r   r   r^   Úassert_almost_equal)r`   r°   rw   r¹   Ú	cmp_dtypeÚaltra   rb   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                 ó†  — 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(  r=|dv rd}|S |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Úskewrˆ   )r¾   r½   )ÚInt64ÚUInt64ÚInt32rÎ   ÚUInt32rÏ   r6   r¼   r‚   )ÚsumÚprodznot supposed to reach this)
r   r3   Únamer   r   r   r   r   r8   rv   )r`   Úarrrw   r¹   rÅ   s        r"   Ú_get_expected_reduction_dtypez.TestMaskedArrays._get_expected_reduction_dtype4  s�  € Ü˜#Ÿ)™)Ô$ØŸ	™	Ÿ™ˆIðL ÐðK Ð@Ñ@Ø!ˆIðH ÐðG ˜Ñ&ØŸ	™	Ÿ™ˆIðD ÐðC �Y‰YÐ-Ñ-ØŸ	™	Ÿ™ˆIð@ Ðô? % S§Y¡YÔ/ô (Ô)µ>ÉÝð ð ð: Ðð3 ð	 ð: Ðô/ ' s§y¡yÔ1ô (Ô)µ>ÉÝð ð ð, Ðð% ð	 ð, Ðð! �Y‰Y�^‰^˜sÒ"ØÐBÑBØ%�	ð Ðð ˜NÑ*Ø%�	ð Ðð ˜OÑ+ô ,Ô-µ~ÉVÝñ ð !ð	 ð Ðô  Ð <Ó=Ð=äÐ8Ó9Ð9r!   c                  ó   — y)NTr    r·   s      r"   Ú_supports_accumulationz'TestMaskedArrays._supports_accumulation^  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(  rt t        ||«      |¬«      }t        j                  t        j                   t        |j                  d«      |«      |¬«      |¬«      «      }t        j                  ||«       y |dv r~ t        ||«      |¬«      }t        j                  t        j                   t        |j                  d«      |«      |¬«      |j                  ¬«      «      }t        j                  ||«       y |dk(  rz t        |d d |«      |¬«      }t        j                  t        j                   t        |d d j                  d«      |«      |¬«      |¬«      «      }t        j                  ||«       y t        |› d�«      ‚)Né@   é   é    ÚUÚUIntÚIÚIntÚFr6   )ÚcumminÚcummaxr‚   ÚFloat32Úcumprodz4Float32 precision lead to large differences with op z and skipna=ÚcumsumrÁ   rZ   r7   )rã   râ   é   z not supported)Úis_windows_or_32bitr3   ÚitemsizerÔ   Ú
startswithr8   r£   r¶   r™   r   ÚSeriesr9   r�   r^   Úassert_series_equalru   )r`   r°   rw   r¹   ÚlengthÚexpected_dtypera   rb   s           r"   Úcheck_accumulatez!TestMaskedArrays.check_accumulatea  s8  € ð ˆÝð —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ÒØ*”W˜S 'Ó*°&Ô9ˆFÜ—y‘yÜ—‘Ø;”G˜CŸJ™J yÓ1°7Ó;À6ÔJØ(ôóˆHô ×"Ñ" 6¨8Õ4ØÐ,Ñ,Ø*”W˜S 'Ó*°&Ô9ˆFÜ—y‘yÜ—‘Ø;”G˜CŸJ™J yÓ1°7Ó;À6ÔJØŸ)™)ôóˆHô ×"Ñ" 6¨8Õ4Ø˜	Ò!Ø/”W˜S  "˜X wÓ/°vÔ>ˆFÜ—y‘yÜ—‘Ø@”G˜C  ˜HŸO™O¨IÓ6¸Ó@ÈÔOØ(ôóˆHô ×"Ñ" 6¨8Õ4ô &¨¨	°Ð&@ÓAÐAr!   )Ú__name__Ú
__module__Ú__qualname__r£   r¤   Úparametrizerc   rh   rz   ÚstrrŸ   r¨   r¬   r   rë   r¿   r¸   rÇ   rÖ   rØ   rï   Ú__classcell__)r©   s   @r"   rT   rT   «   sÜ   ø„ Ø‡[�[×Ñ˜[¨4°Ð*:Ó;ñ6ó <ð6ò6òð".¨có .ô`>ô/ð r§y¡yð ¸3ð À4ó ð
1 §	¡	ð 1°Cð 1Àó 1ð6(¸#ð (Àtó (ðT¨"¯)©)ð ¸cð Àdó ð<B B§I¡Ið <B¸ð <BÀT÷ <Br!   rT   c                   ó   — e Zd Zy)ÚTest2DCompatN)rð   rñ   rò   r    r!   r"   r÷   r÷      s   „ Ør!   r÷   )7Ú__doc__r‘   Únumpyr&   r£   Úpandas.compatr   r   Úpandas.compat.numpyr   Úpandas.core.dtypes.commonr   r   r   Úpandasr   Úpandas._testingÚ_testingr^   Ú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¤   r“   Ú
pytestmarkr#   r(   r-   Úfixturer3   r:   r>   rA   rE   rG   rM   rR   ÚExtensionTestsrT   ÚDim2CompatTestsr÷   r    r!   r"   ú<module>r     sÒ  ðñó ã Û ÷õ /÷ñ ó Ý Ý 3÷÷	÷ 	ó 	õ (á*Ó,ÒC°^Ð1CÒPÈDÈÐ ð ‡K�K×ÑØCóð ‡K�K×ÑÐJÓKà
‡K�K×ÑÐUÓVð€
òSòòXð €‡�àØØØØØØØØØØðôñóðð ‡�ñ'ó ð'ð ‡�ñ3ó ð3ð ‡�ñ-ó ð-ð ‡�ñ,ó ð,ð ‡�ñ0ó ð0ð ‡�ñ2ó ð2ð
 ‡�ñ=ó ð=ô$rB�t×*Ñ*ô rBôj	�4×'Ñ'õ 	r!   