Ë
    AúYj¾,  ã                   ó>  — d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ ej                   j"                  gZ ej&                  d«      Zej+                  ej                   j-                   eej.                  «       ed«      k(  xr  e«       dej.                  › �¬	«      «       d
„ Zd„ Zej                   j5                  d«      ej                   j7                  dddg«      d„ «       «       Zej                   j5                  d«      ej                   j7                  dddg«      d„ «       «       Zd„ Zej                   j7                  dddgdddgddœg«      d„ «       Zd„ Z d„ Z!d„ Z"d„ Z#ej                   j5                  d«      d„ «       Z$d„ Z%d„ Z&d „ Z'y)!é    N)Úis_platform_arm)ÚNumbaUtilError)Ú	DataFrameÚSeriesÚoption_context)ÚVersionÚnumbaz0.61z&Segfaults on ARM platforms with numba )Úreasonc                  ó®  — t        j                  d«       d„ } t        g d¢g d¢dœddg¬«      }t        j                  t        d	¬
«      5  |j                  d«      j                  | d¬«       d d d «       t        j                  t        d	¬
«      5  |j                  d«      d   j                  | d¬«       d d d «       y # 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nr	   c                 ó   — | dz   S ©Né   © ©Úxs    út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/pandas/tests/groupby/transform/test_numba.pyÚincorrect_functionz;test_correct_function_signature.<locals>.incorrect_function   s   € Ø�1‰uˆó    ©Úar   Úbr   r   ©ç      ð?ç       @ç      @g      @g      @©ÚkeyÚdatar   r   ©ÚcolumnszThe first 2©Úmatch©Úengine)ÚpytestÚimportorskipr   Úraisesr   ÚgroupbyÚ	transform)r   r   s     r   Útest_correct_function_signaturer*      sÈ   € Ü
×Ñ˜Ô òô Ú)Ò3LÑMØ˜�ô€Dô 
�‰”~¨]Ô	;ñ JØ�‰�UÓ×%Ñ%Ð&8ÀÐ%ÔI÷Jô 
�‰”~¨]Ô	;ñ RØ�‰�UÓ˜FÑ#×-Ñ-Ð.@ÈÐ-ÔQ÷Rð R÷Jð Jú÷Rð Rús   Á
#B?Â&CÂ?CÃCc                  ój  — t        j                  d«       d„ } d„ }t        g d¢g d¢dœddg¬	«      }t        j                  t        d
¬«      5  |j                  d«      j                  | dd¬«       d d d «       t        j                  t        d¬«      5  |j                  d«      j                  |dd¬«       d d d «       t        j                  t        d
¬«      5  |j                  d«      d   j                  | dd¬«       d d d «       t        j                  t        d¬«      5  |j                  d«      d   j                  |dd¬«       d d d «       t        j                  t        d¬«      5  |j                  d«      j                  | dd¬«       d d d «       |j                  d«      j                  |dd¬«      }t        j                  |dg   dz   |«       t        j                  t        d¬«      5  |j                  d«      d   j                  | dd¬«       d d d «       |j                  d«      d   j                  |dd¬«      }t        j                  |d   dz   |«       y # 1 sw Y   �ŒùxY w# 1 sw Y   �Œ¿xY w# 1 sw Y   �Œ‚xY w# 1 sw Y   �ŒExY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ�xY w)Nr	   c                ó   — | |z   S ©Nr   ©ÚvaluesÚindexr   s      r   r   z6test_check_nopython_kwargs.<locals>.incorrect_function.   ó   € Ø˜‰zÐr   c                 ó   — | |z   S r-   r   r.   s      r   Úcorrect_functionz4test_check_nopython_kwargs.<locals>.correct_function1   r1   r   r   r   r   r   r   r   z8missing a required (keyword-only argument|argument): 'a'r!   r   )r$   r   z missing a required argument: 'a'znumba does not support)r$   r   )r%   r&   r   r'   Ú	TypeErrorr(   r)   r   ÚtmÚassert_frame_equalÚassert_series_equal)r   r3   r   Úactuals       r   Útest_check_nopython_kwargsr9   +   s‡  € Ü
×Ñ˜Ô òòô Ú)Ò3LÑMØ˜�ô€Dô
 
�‰ÜÐSô
ñ Oð 	�‰�UÓ×%Ñ%Ð&8ÀÈAÐ%ÔN÷Oô 
�‰”yÐ(JÔ	Kñ MØ�‰�UÓ×%Ñ%Ð&6¸wÈ!Ð%ÔL÷Mô 
�‰ÜÐSô
ñ Wð 	�‰�UÓ˜FÑ#×-Ñ-Ð.@ÈÐTUÐ-ÔV÷Wô 
�‰”yÐ(JÔ	Kñ UØ�‰�UÓ˜FÑ#×-Ñ-Ð.>ÀwÐRSÐ-ÔT÷Uô 
�‰”~Ð-EÔ	Fñ OØ�‰�UÓ×%Ñ%Ð&8ÀÈAÐ%ÔN÷Oà�\‰\˜%Ó ×*Ñ*Ð+;ÀGÈqÐ*ÓQ€FÜ×Ñ˜$ ˜x™.¨1Ñ,¨fÔ5ä	�‰”~Ð-EÔ	Fñ WØ�‰�UÓ˜FÑ#×-Ñ-Ð.@ÈÐTUÐ-ÔV÷Wà�\‰\˜%Ó  Ñ(×2Ñ2Ø ¨Að 3ó €Fô ×Ñ˜4 ™<¨!Ñ+¨VÕ4÷3Oñ Oú÷Mñ Mú÷Wñ Wú÷Uñ Uú÷Oñ Oú÷
Wð WúsH   Á$I(Â$I5Ã'JÄ%'JÅ/$JÇ6'J)É(I2É5I?ÊJÊJÊJ&Ê)J2ÚignoreÚjitTFc                 óV  — t        j                  d«       d„ }| rdd l}|j                  |«      }t	        g d¢g d¢dœddg¬«      }|||d	œ}	|j                  d|¬
«      }
|t        u r|
d   }
|
j                  |d|	¬«      }|
j                  d„ d¬«      }t        j                  ||«       y )Nr	   c                 ó   — | dz   S r   r   ©r/   r0   s     r   Úfuncz"test_numba_vs_cython.<locals>.func[   r1   r   r   r   r   ©r   r   r   r   ©ÚnogilÚparallelÚnopython)Úas_index©r$   Úengine_kwargsc                 ó   — | dz   S r   r   r   s    r   ú<lambda>z&test_numba_vs_cython.<locals>.<lambda>m   ó
   € ¨1¨q©5€ r   Úcythonr#   ©
r%   r&   r	   r;   r   r(   r   r)   r5   Úassert_equal)r;   Úframe_or_seriesrB   rC   rD   rE   r?   r	   r   rG   ÚgroupedÚresultÚexpecteds                r   Útest_numba_vs_cythonrR   U   s±   € ô ×Ñ˜Ô òñ ãà�y‰y˜‹ˆäÚ%Ò*CÑDÈqÐRSÈfô€Dð $°ÀxÑP€MØ�l‰l˜1 xˆlÓ0€GØœ&Ñ Ø˜!‘*ˆà×Ñ˜t¨GÀ=ÐÓQ€FØ× Ñ ¡¸Ð ÓB€Hä‡O�O�F˜HÕ%r   c                 ór  — t        j                  d«       d„ }d„ }| r&dd l}|j                  |«      }|j                  |«      }t	        g d¢g d¢dœddg¬	«      }|||d
œ}	|j                  d«      }
|t        u r|
d   }
|
j                  |d|	¬«      }|
j                  d„ d¬«      }t        j                  ||«       |
j                  |d|	¬«      }|
j                  d„ d¬«      }t        j                  ||«       |
j                  |d|	¬«      }|
j                  d„ d¬«      }t        j                  ||«       y )Nr	   c                 ó   — | dz   S r   r   r>   s     r   Úfunc_1ztest_cache.<locals>.func_1y   r1   r   c                 ó   — | dz  S ©Né   r   r>   s     r   Úfunc_2ztest_cache.<locals>.func_2|   r1   r   r   r   r   r@   r   r   rA   rF   c                 ó   — | dz   S r   r   r   s    r   rI   ztest_cache.<locals>.<lambda>Ž   rJ   r   rK   r#   c                 ó   — | dz  S rW   r   r   s    r   rI   ztest_cache.<locals>.<lambda>’   rJ   r   c                 ó   — | dz   S r   r   r   s    r   rI   ztest_cache.<locals>.<lambda>—   rJ   r   rL   )r;   rN   rB   rC   rD   rU   rY   r	   r   rG   rO   rP   rQ   s                r   Ú
test_cacher]   r   s6  € ô
 ×Ñ˜Ô òòñ Ûà—‘˜6Ó"ˆØ—‘˜6Ó"ˆäÚ%Ò*CÑDÈqÐRSÈfô€Dð $°ÀxÑP€MØ�l‰l˜1‹o€GØœ&Ñ Ø˜!‘*ˆà×Ñ˜v¨gÀ]ÐÓS€FØ× Ñ ¡¸Ð ÓB€HÜ‡O�O�F˜HÔ%à×Ñ˜v¨gÀ]ÐÓS€FØ× Ñ ¡¸Ð ÓB€HÜ‡O�O�F˜HÔ%ð ×Ñ˜v¨gÀ]ÐÓS€FØ× Ñ ¡¸Ð ÓB€HÜ‡O�O�F˜HÕ%r   c                  ó<  — t        j                  d«       d„ } t        g d¢g d¢dœddg¬«      }|j                  d«      }|j	                  | d¬	«      }t        d
d«      5  |j	                  | d ¬	«      }d d d «       t        j                  |«       y # 1 sw Y   Œ xY w)Nr	   c                 ó   — | dz   S r   r   r>   s     r   rU   z&test_use_global_config.<locals>.func_1ž   r1   r   r   r   r@   r   r   r   r#   zcompute.use_numbaT)r%   r&   r   r(   r)   r   r5   r6   )rU   r   rO   rQ   rP   s        r   Útest_use_global_configr`   ›   sš   € Ü
×Ñ˜Ô òô Ú%Ò*CÑDÈqÐRSÈfô€Dð �l‰l˜1‹o€GØ× Ñ  °Ð Ó8€HÜ	Ð+¨TÓ	2ñ 8Ø×"Ñ" 6°$Ð"Ó7ˆ÷8ä×Ñ˜( FÕ+÷8ð 8ús   ÁBÂBÚagg_funcÚminÚmaxÚsum)ÚBÚCc                 ó’  — t        j                  d«       |\  } }t        g d¢g d¢dœddg¬«      }|j                  d«      } |j                  | fddi|¤Ž} |j                  | fdd	i|¤Ž}t        j                  ||«        |d   j                  | fddi|¤Ž} |d   j                  | fdd	i|¤Ž}t        j                  ||«       y )
Nr	   r   r   r@   r   r   r   r$   rK   )r%   r&   r   r(   r)   r5   r6   r7   )ra   Únumba_supported_reductionsÚkwargsr   rO   rP   rQ   s          r   Útest_string_cython_vs_numbarj   ¬   sÝ   € ô ×Ñ˜Ô Ø1Ñ€HˆfÜÚ%Ò*CÑDÈqÐRSÈfô€Dð �l‰l˜1‹o€GàˆW×Ñ˜xÑB°ÐB¸6ÑB€FØ ˆw× Ñ  ÑE°(ÐE¸fÑE€HÜ×Ñ˜& (Ô+à!ˆW�Q‰Z×!Ñ! (ÑE°7ÐE¸fÑE€FØ#ˆw�q‰z×#Ñ# HÑH°XÐHÀÑH€HÜ×Ñ˜6 8Õ,r   c                  ól  — t        j                  d«       d„ } t        g d¢g d¢dœ«      }|j                  d«      d   }|j	                  | dd¬	«      }t        d
gdz  d¬«      }t        j                  ||«       |j	                  | dd¬	«      }t        dgdz  d¬«      }t        j                  ||«       y )Nr	   c                 ó*   — | | d  j                  «       S r-   )rd   )r/   r0   Úns      r   Úsum_lastz&test_args_not_cached.<locals>.sum_lastÄ   s   € Ø�q�b�cˆ{�‰Ó Ð r   )r   r   r   r   )r   r   r   r   )Úidr   ro   r   r   r#   r   é   )Únameé   r   )r%   r&   r   r(   r)   r   r5   r7   )rn   ÚdfÚ	grouped_xrP   rQ   s        r   Útest_args_not_cachedru   À   s«   € ä
×Ñ˜Ô ò!ô 
š,ª\Ñ:Ó	;€BØ—
‘
˜4Ó  Ñ%€IØ× Ñ  ¨1°WÐ Ó=€FÜ�s�e˜a‘i cÔ*€HÜ×Ñ˜6 8Ô,à× Ñ  ¨1°WÐ Ó=€FÜ�s�e˜a‘i cÔ*€HÜ×Ñ˜6 8Õ,r   c                  óö   — t        j                  d«       d„ } t        g d¢g d¢dœg d¢¬«      }|j                  d«      j	                  | d¬	«      }t        g d
¢dgg d¢¬«      }t        j                  ||«       y )Nr	   c                 ó   — |dz
  S r   r   r>   s     r   Úfz+test_index_data_correctly_passed.<locals>.fÖ   s   € Ø�q‰yÐr   )ÚAry   re   )rp   rX   é   )ÚgroupÚv)éÿÿÿÿéþÿÿÿéýÿÿÿ©r0   r{   r#   )g       Àg      Àg      Àr|   )r    r0   ©r%   r&   r   r(   r)   r5   r6   ©rx   rs   rP   rQ   s       r   Ú test_index_data_correctly_passedrƒ   Ò   sg   € ä
×Ñ˜Ô òô 
š_²9Ñ=Â\Ô	R€BØ�Z‰Z˜Ó ×*Ñ*¨1°WÐ*Ó=€FÜÒ+°c°UÂ,ÔO€HÜ×Ñ˜& (Õ+r   c                  ó  — t        j                  d«       d„ } t        g d¢g d¢dœt        ddd«      ¬«      }|j	                  d	«      d
   j                  | d¬«      }t        g d¢t        ddd«      d
¬«      }t        j                  ||«       y )Nr	   c                 ó   — | S r-   r   r>   s     r   rx   z1test_index_order_consistency_preserved.<locals>.fã   s   € Øˆr   )g        r   r   r   )r   r   r   r   )Úvalsr{   é   r}   r€   r{   r†   r#   )r0   rq   )	r%   r&   r   Úranger(   r)   r   r5   r7   r‚   s       r   Ú&test_index_order_consistency_preservedr‰   ß   s‚   € ä
×Ñ˜Ô òô 
Ú%²Ñ=ÄUÈ1ÈbÐRTÓEUô
€Bð �Z‰Z˜Ó  Ñ(×2Ñ2°1¸WÐ2ÓE€FÜÒ*´%¸¸2¸rÓ2BÈÔP€HÜ×Ñ˜6 8Õ,r   c                  ó¬  ‡‡‡— t        j                  d«       dŠdŠdŠˆˆˆfd„} ‰‰‰dœ}t        dg d¢i«      }|j                  d¬	«      j	                  | d|¬
«      }t        dg d¢i«      }t        j                  ||«       dŠ‰‰‰dœ}|j                  d¬	«      j	                  | d|¬
«      }t        dg d¢i«      }t        j                  ||«       y )Nr	   TFc                 ó   •— ‰‰z   ‰z   S r-   r   )r/   r0   rB   rD   rC   s     €€€r   Úfunc_kwargsz2test_engine_kwargs_not_cached.<locals>.func_kwargsö   s   ø€ Ø�xÑ (Ñ*Ð*r   ©rD   rB   rC   Úvalue)r   r   r   r   )ÚlevelrF   )r   r   r   )r   r   r   r�   )rŒ   rG   rs   rP   rQ   rB   rD   rC   s        @@@r   Útest_engine_kwargs_not_cachedr�   î   så   ú€ ô ×Ñ˜Ô Ø€EØ€HØ€Hö+ð "*°EÀxÑP€MÜ	�GšYÐ'Ó	(€BØ�Z‰Z˜aˆZÓ ×*Ñ*Ø˜G°=ð +ó €Fô ˜'¢?Ð3Ó4€HÜ×Ñ˜& (Ô+à€EØ!)°EÀxÑP€MØ�Z‰Z˜aˆZÓ ×*Ñ*Ø˜G°=ð +ó €Fô ˜'¢?Ð3Ó4€HÜ×Ñ˜& (Õ+r   c                 ó6  — t        j                  d«       d„ }t        ddddœg«      j                  ddg«      }|| |d	œ}|j	                  d«      j                  |d|¬
«      }t        ddddœg«      j                  ddg«      }t        j                  ||«       y )Nr	   c                  ó   — yr   r   r>   s     r   Ú
numba_funcz+test_multiindex_one_key.<locals>.numba_func  ó   € Ør   r   rr   r‡   ©ry   re   rf   ry   re   r�   rF   r   )r%   r&   r   Ú	set_indexr(   r)   r5   r6   )rB   rC   rD   r“   rs   rG   rP   rQ   s           r   Útest_multiindex_one_keyr—   
  sŸ   € ä
×Ñ˜Ô òô 
˜! !¨!Ñ,Ð-Ó	.×	8Ñ	8¸#¸s¸Ó	D€BØ!)°EÀxÑP€MØ�Z‰Z˜‹_×&Ñ&Ø˜7°-ð 'ó €Fô  ¨°Ñ4Ð5Ó6×@Ñ@À#ÀsÀÓL€HÜ×Ñ˜& (Õ+r   c                 ó,  — t        j                  d«       d„ }t        ddddœg«      j                  ddg«      }|| |d	œ}t        j                  t
        d
¬«      5  |j                  ddg«      j                  |d|¬«       d d d «       y # 1 sw Y   y xY w)Nr	   c                  ó   — yr   r   r>   s     r   r“   z;test_multiindex_multi_key_not_supported.<locals>.numba_func  r”   r   r   rr   r‡   r•   ry   re   r�   zmore than 1 grouping labelsr!   rF   )r%   r&   r   r–   r'   ÚNotImplementedErrorr(   r)   )rB   rC   rD   r“   rs   rG   s         r   Ú'test_multiindex_multi_key_not_supportedr›     s’   € Ü
×Ñ˜Ô òô 
˜! !¨!Ñ,Ð-Ó	.×	8Ñ	8¸#¸s¸Ó	D€BØ!)°EÀxÑP€MÜ	�‰Ô*Ð2OÔ	Pñ 
Ø
�
‰
�C˜�:Ó×(Ñ(Ø˜w°mð 	)ô 	
÷
÷ 
ñ 
ús   Á&B
Â
Bc                 ó¶  — t        j                  d«       | \  }}t        g d¢g d¢t        j                  j                  d«      j                  d«      t        j                  j                  d«      j                  d«      dœ«      }|j                  ddg«      } |j                  |fd	di|¤Ž} |j                  |fd	d
i|¤Ž}t        j                  ||«       y )Nr	   ©ÚfooÚbarrž   rŸ   rž   rŸ   rž   rž   ©Úoner¡   ÚtwoÚthreer¢   r¢   r¡   r£   rr   é   ©ry   re   rf   ÚDry   re   r$   rK   ©r%   r&   r   ÚnpÚrandomÚdefault_rngÚstandard_normalr(   r)   r5   r6   )rh   Ú	reductionri   rs   ÚgbÚres_aggÚexpected_aggs          r   Útest_multilabel_numba_vs_cythonr°   (  sÁ   € Ü
×Ñ˜Ô Ø2Ñ€IˆvÜ	âIÚMÜ—‘×&Ñ& qÓ)×9Ñ9¸!Ó<Ü—‘×&Ñ& qÓ)×9Ñ9¸!Ó<ñ		
ó
€Bð 
�‰�S˜#�JÓ	€BØˆb�l‰l˜9Ñ?¨WÐ?¸Ñ?€GØ�2—<‘< 	ÑE°(ÐE¸fÑE€LÜ×Ñ˜' <Õ0r   c                  ó¨  — t        j                  d«       t        g d¢g d¢t        j                  j                  d«      j                  d«      t        j                  j                  d«      j                  d«      dœ«      } | j                  ddg«      }|j                  d	„ d¬
«      }|j                  d„ d¬
«      }t        j                  ||«       y )Nr	   r�   r    rr   r¤   r¥   ry   re   c                 ól   — | | j                  «       z
  | j                  «       | j                  «       z
  z  S r-   ©rb   rc   r>   s     r   rI   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>E  s'   € ˜v¨¯
©
«Ñ4¸¿¹»ÈÏ
É
ËÑ9TÑU€ r   r#   c                 ól   — | | j                  «       z
  | j                  «       | j                  «       z
  z  S r-   r³   r   s    r   rI   z5test_multilabel_udf_numba_vs_cython.<locals>.<lambda>I  s&   € �1�q—u‘u“w‘; 1§5¡5£7¨Q¯U©U«WÑ#4Ñ5€ r   rK   r§   )rs   r­   rP   rQ   s       r   Ú#test_multilabel_udf_numba_vs_cythonrµ   9  s¸   € Ü
×Ñ˜Ô Ü	âIÚMÜ—‘×&Ñ& qÓ)×9Ñ9¸!Ó<Ü—‘×&Ñ& qÓ)×9Ñ9¸!Ó<ñ		
ó
€Bð 
�‰�S˜#�JÓ	€BØ�\‰\ÙUØð ó €Fð �|‰|Ù5¸hð ó €Hô ×Ñ˜& (Õ+r   )(Únumpyr¨   r%   Úpandas.compatr   Úpandas.errorsr   Úpandasr   r   r   Úpandas._testingÚ_testingr5   Úpandas.util.versionr   ÚmarkÚ
single_cpuÚ
pytestmarkr&   r	   ÚappendÚskipifÚ__version__r*   r9   ÚfilterwarningsÚparametrizerR   r]   r`   rj   ru   rƒ   r‰   r�   r—   r›   r°   rµ   r   r   r   ú<module>rÅ      s°  ðÛ Û å )Ý (÷ñ õ
 Ý 'à�k‰k×$Ñ$Ð%€
àˆ×Ñ˜GÓ$€Ø 
× Ñ Ø
‡K�K×ÑÙ�×!Ñ!Ó"¡g¨f£oÑ5ÒK¹/Ó:KØ7¸×8IÑ8IÐ7JÐKð ó ôòRò"'5ðT ‡�×Ñ˜HÓ%à‡�×Ñ˜  u Ó.ñ&ó /ó &ð&ð4 ‡�×Ñ˜HÓ%à‡�×Ñ˜  u Ó.ñ#&ó /ó &ð#&òL,ð" ‡�×ÑØ�%˜� ¨u°e¨nÀ5Ñ(IÐJóñ-óð-ò"-ò$
,ò-ò,ð8 ‡�×Ñ˜HÓ%ñ,ó &ð,ò
ò1ó",r   