Ë
    ômxi^  ã                   ó¼  — d dl Zd dlZd dlmZ d dlmc mZ d dl	Z
d dl	mZmZ d dlmZ d dlmZ  ej$                  d«      ej&                  j(                  ej&                  j+                  «       gZ ej.                  d«      Zej3                  ej&                  j+                   eej4                  «       ed«      k(  xr  e«       dej4                  › �¬«      «        ej6                  d d	g¬
«      d„ «       Zd„ Zd„ Zd„ Zej&                  jA                  dd„ d„ d„ d„ g«      d„ «       Z!ej&                  jA                  dg d¢g d¢g«      d„ «       Z"d„ Z#d„ Z$d„ Z%y)é    N)Úis_platform_arm)Ú	DataFrameÚIndex)ÚVersionÚnumbaz0.61z&Segfaults on ARM platforms with numba )Úreasoné   )Úparamsc                 ó   — | j                   S ©N)Úparam)Úrequests    úT/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/tests/apply/test_numba.pyÚ
apply_axisr      s   € à�=‰=Ðó    c                 ó†   — d„ }| j                  |d|¬«      }| j                  |d|¬«      }t        j                  ||«       y )Nc                 ó   — | S r   © ©Úxs    r   ú<lambda>z+test_numba_vs_python_noop.<locals>.<lambda>    ó   € �Q€ r   r   ©ÚengineÚaxisÚpython)ÚapplyÚtmÚassert_frame_equal)Úfloat_framer   ÚfuncÚresultÚexpecteds        r   Útest_numba_vs_python_noopr$      sE   € Ù€DØ×Ñ˜t¨G¸*ÐÓE€FØ× Ñ  ¨h¸ZÐ ÓH€HÜ×Ñ˜& (Õ+r   c            
      ód  — t        dt        ddgt        j                  t        j
                  ¬«      ¬«      t        ddgt        j                  t        j
                  ¬«      ¬«      ¬«      } d	„ }| j                  |d
d¬«      }| j                  |dd¬«      }t        j                  ||dd¬«       y )Nr	   ÚaÚb)Úna_value©Údtyper   Úy)ÚindexÚcolumnsc                 ó   — | S r   r   r   s    r   r   z3test_numba_vs_python_string_index.<locals>.<lambda>-   r   r   r   r   r   r   F)Úcheck_column_typeÚcheck_index_type)	r   r   ÚpdÚStringDtypeÚnpÚnanr   r   r   )Údfr!   r"   r#   s       r   Ú!test_numba_vs_python_string_indexr6   &   s‹   € ä	Ø	Ü�S˜#�J¤b§n¡n¼b¿f¹fÔ&EÔFÜ�s˜C�j¬¯©ÄÇÁÔ(GÔHô
€Bñ
 €DØ�X‰X�d 7°ˆXÓ3€FØ�x‰x˜ X°AˆxÓ6€HÜ×ÑØ�¨EÀEör   c                  óL  — t        g d¢g d¢g d¢dœt        g d¢«      ¬«      } d„ }| j                  |dd	¬
«      }| j                  |dd	¬
«      }t        j                  ||«       d„ }| j                  |dd¬
«      }| j                  |dd¬
«      }t        j                  ||«       y )N©r	   é   é   ©é   é   é   )g      @g       @g      "@©r&   r'   Úc)ÚAÚBÚC©r,   c                 ó   — | d   S )Nr@   r   r   s    r   r   z/test_numba_vs_python_indexing.<locals>.<lambda>:   ó
   € ˜˜3™€ r   r   r	   r   r   c                 ó   — | d   S )NrA   r   r   s    r   r   z/test_numba_vs_python_indexing.<locals>.<lambda>?   rF   r   r   )r   r   r   r   Úassert_series_equal)ÚframeÚrow_funcr"   r#   Úcol_funcs        r   Útest_numba_vs_python_indexingrL   5   sš   € ÜÚšiªoÑ>Ü’OÓ$ô€Eñ  €HØ�[‰[˜¨'¸ˆ[Ó:€FØ�{‰{˜8¨H¸1ˆ{Ó=€HÜ×Ñ˜6 8Ô,á€HØ�[‰[˜¨'¸ˆ[Ó:€FØ�{‰{˜8¨H¸1ˆ{Ó=€HÜ×Ñ˜6 8Õ,r   Ú	reductionc                 ó"   — | j                  «       S r   )Úmeanr   s    r   r   r   G   s   € ˆq�v‰v‹x€ r   c                 ó"   — | j                  «       S r   )Úminr   s    r   r   r   G   s   €  1§5¡5£7€ r   c                 ó"   — | j                  «       S r   )Úmaxr   s    r   r   r   G   s   € °a·e±e³g€ r   c                 ó"   — | j                  «       S r   )Úsumr   s    r   r   r   G   s   € ÈÏÉË€ r   c                 óÜ   — t        t        j                  dt        j                  ¬«      «      }|j	                  | d|¬«      }|j	                  | d|¬«      }t        j                  ||«       y )N)r<   r<   r)   r   r   r   )r   r3   ÚonesÚfloat64r   r   rH   )rM   r   r5   r"   r#   s        r   Útest_numba_vs_python_reductionsrY   E   sU   € ô
 
”2—7‘7˜6¬¯©Ô4Ó	5€BØ�X‰X�i¨°jˆXÓA€FØ�x‰x˜	¨(¸ˆxÓD€HÜ×Ñ˜6 8Õ,r   Úcolnamesr8   )g      ð?g       @g      @c                 ó  ‡— t        t        j                  g d¢g d¢g d¢gt        j                  ¬«      | ¬«      }| d   Šˆfd„}|j	                  |dd	¬
«      }|j	                  |dd	¬
«      }t        j                  ||«       y )Nr8   r;   )é   é   é	   r)   )r-   r   c                 ó   •— | ‰   S r   r   )r   Ú	first_cols    €r   r   z-test_numba_numeric_colnames.<locals>.<lambda>W   s   ø€ �!�I‘,€ r   r   r	   r   r   )r   r3   ÚarrayÚint64r   r   rH   )rZ   r5   Úfr"   r#   r`   s        @r   Útest_numba_numeric_colnamesrd   P   sr   ø€ ô 
Ü
�‰’)šYª	Ð2¼"¿(¹(ÔCÈXô
€Bð ˜‘€IÛ€AØ�X‰X�a ¨aˆXÓ0€FØ�x‰x˜ (°ˆxÓ3€HÜ×Ñ˜6 8Õ,r   c                 ó–   — d„ }t        j                  t        d¬«      5  | j                  |dddi¬«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — | S r   r   r   s    r   r   z1test_numba_parallel_unsupported.<locals>.<lambda>^   ó   € �!€ r   zAParallel apply is not supported when raw=False and engine='numba'©Úmatchr   ÚparallelT)r   Úengine_kwargs)ÚpytestÚraisesÚNotImplementedErrorr   )r    rc   s     r   Útest_numba_parallel_unsupportedro   ]   sN   € Ù€AÜ	�‰ÜØQô
ñ Oð 	×Ñ˜! G¸JÈÐ;MÐÔN÷	O÷ Oñ Oús	   Ÿ?¿Ac                 óÊ   — d„ }t        dddgit        ddg«      ¬«      }t        j                  t        d¬«      5  |j                  |d| ¬	«       d d d «       y # 1 sw Y   y xY w)
Nc                 ó   — | S r   r   r   s    r   r   z2test_numba_nonunique_unsupported.<locals>.<lambda>g   rg   r   r&   r	   r9   rD   zBThe index/columns must be unique when raw=False and engine='numba'rh   r   r   )r   r   rl   rm   rn   r   ©r   rc   r5   s      r   Ú test_numba_nonunique_unsupportedrs   f   s_   € Ù€AÜ	�C˜!˜Q˜�=¬¨s°C¨jÓ(9Ô	:€BÜ	�‰ÜØRô
ñ 5ð 	�‰�˜7¨ˆÔ4÷	5÷ 5ñ 5ús   »AÁA"c                 ó¾  — t        j                  d«       d„ }t        ddgddgddgd	œ«      }|d
   j                  d«      |d
<   t        j                  t
        d¬«      5  |j                  |d| ¬«       d d d «       t        j                  t
        d¬«      5  |d
   j                  «       j                  |d| ¬«       d d d «       y # 1 sw Y   ŒSxY w# 1 sw Y   y xY w)NÚpyarrowc                 ó   — | S r   r   r   s    r   r   z/test_numba_unsupported_dtypes.<locals>.<lambda>r   rg   r   r	   r9   r&   r'   r<   r=   r?   r@   zdouble[pyarrow]z>Column b must have a numeric dtype. Found 'object|str' insteadrh   r   r   zUColumn c is backed by an extension array, which is not supported by the numba engine.)rl   Úimportorskipr   Úastyperm   Ú
ValueErrorr   Úto_framerr   s      r   Útest_numba_unsupported_dtypesr{   p   sÝ   € Ü
×Ñ˜	Ô"Ù€AÜ	˜!˜Q˜ s¨C j¸¸1°vÑ>Ó	?€BØ�‰g�n‰nÐ.Ó/€B€s�Gä	�‰ÜØNô
ñ 5ð 	�‰�˜7¨ˆÔ4÷	5ô 
�‰Üð6ô
ñ Eð
 	ˆ3‰×ÑÓ× Ñ  ¨7¸Ð ÔD÷Eð E÷5ð 5ú÷Eð Eús   Á CÂ&CÃCÃC)&Únumpyr3   rl   Úpandas.compatr   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsÚtdÚpandasr1   r   r   Úpandas._testingÚ_testingr   Úpandas.util.versionr   Ú
skip_if_noÚmarkÚ
single_cpuÚskipifÚ
pytestmarkrw   r   ÚappendÚ__version__Úfixturer   r$   r6   rL   ÚparametrizerY   rd   ro   rs   r{   r   r   r   ú<module>r�      s\  ðÛ Û å )ß )Ð )ã ÷õ Ý 'àˆb�m‰m˜GÓ$ f§k¡k×&<Ñ&<¸f¿k¹k×>PÑ>PÓ>RÐS€
àˆ×Ñ˜GÓ$€Ø 
× Ñ Ø
‡K�K×ÑÙ�×!Ñ!Ó"¡g¨f£oÑ5ÒK¹/Ó:KØ7¸×8IÑ8IÐ7JÐKð ó ôð €‡�˜˜1�vÔñó ðò,òò-ð  ‡�×ÑØÙÑ*Ñ,=Ñ?PÐQóñ-ó	ð-ð ‡�×Ñ˜¢i²Ð%AÓBñ	-ó Cð	-òOò5óEr   