Ë
    ìmxi`t  ã                   óø  — d dl Z 	 d dlZd dlZd dlmZ e j                  j                  Z
dddœZ	 d dlm	Z dId„Z G d„ de«      Z e j"                  d¬	«      d
„ «       Z e j"                  d¬	«      d„ «       Z e j"                  d¬	«      dJd„«       Z e j"                  d¬	«      dJd„«       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 e j"                  d¬	«      d„ «       Z e j"                  d¬	«      d„ «       Z e j"                  d¬	«      d„ «       Z dddœd„Z!d„ Z"d„ Z#d„ Z$d„ Z%d „ Z&d!„ Z'd"„ Z(d#„ Z)d$„ Z*d%„ Z+d&„ Z,d'„ Z-d(„ Z.d)„ Z/d*„ Z0d+„ Z1d,„ Z2d-„ Z3d.„ Z4d/„ Z5d0„ Z6d1„ Z7d2„ Z8d3„ Z9d4„ Z:d5„ Z;d6„ Z<d7„ Z=d8„ Z>d9„ Z?e j                  j                  d:„ «       Z@e j                  j                  d;„ «       ZAd<„ ZBd=„ ZCe j                  j                  d>„ «       ZDe j                  j                  d?„ «       ZEe j                  j                  d@„ «       ZFe j                  j                  dA„ «       ZGdB„ ZHdC„ ZIe j                  j                  dD„ «       ZJe j                  j                  dE„ «       ZKe j                  j˜                  dF„ «       ZMe j                  j˜                  dG„ «       ZNe j                  j˜                  dH„ «       ZOy# e$ r dZY �Œ`w xY w# e$ r dZY �ŒBw xY w)Ké    N)ÚcomputeÚ ©ÚsummaryÚdescriptionc                 óD   — ddl m}  |t        j                  «       | «      S )Nr   )Ú_get_udf_context)Úpyarrow._computer	   ÚpaÚdefault_memory_pool)Úbatch_lengthr	   s     úM/home/htdocs/ttos/venv/lib/python3.12/site-packages/pyarrow/tests/test_udf.pyÚmock_udf_contextr   )   s   € Ý1ÙœB×2Ñ2Ó4°lÓCÐCó    c                   ó   — e Zd Zy)ÚMyErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   r   r   .   s   „ Ør   r   Úsession)Úscopec                  óž   — d„ } d}t         }t        j                  | ||dt        j                  «       it        j                  «       «       | |fS )z4
    Register a unary aggregate function (mean)
    c                 óR   — t        j                  t        j                  |«      «      S ©N)r   ÚscalarÚnpÚnansum)ÚctxÚxÚargss      r   Úfuncz"sum_agg_func_fixture.<locals>.func7   s   € Ü�y‰yœŸ™ 1›Ó&Ð&r   Úsum_udfr    )Úempty_udf_docÚpcÚregister_aggregate_functionr   Úfloat64©r"   Ú	func_nameÚfunc_docs      r   Úsum_agg_func_fixturer+   2   sP   € ò
'ð €IÜ€Hä×"Ñ" 4Ø#,Ø#+à'*¬B¯J©J«Lð$%ô $&§:¡:£<ô%ð �ˆ?Ðr   c                  óž   — d„ } d}t         }t        j                  | ||dt        j                  «       it        j                  «       «       | |fS )Nc                 ó   — t        d«      ‚)NÚOops)ÚRuntimeErrorr   r   Úlen©r   r    s     r   r"   z(exception_agg_func_fixture.<locals>.funcJ   s   € Ü˜6Ó"Ð"r   úy=exception_len(x)r    ©r$   r%   r&   r   Úint64r(   s      r   Úexception_agg_func_fixturer5   H   sP   € ò!ð %€IÜ€Hä×"Ñ" 4Ø#,Ø#+à'*¬B¯H©H«Jð$%ô $&§8¡8£:ô%ð �ˆ?Ðr   c                 óž   — d„ }d}t         }t        j                  |||dt        j                  «       it        j                  «       «       ||fS )Nc                 ód   — t        j                  t        |«      t        j                  «       «      S r   )r   r   r0   Úint32r1   s     r   r"   z1wrong_output_dtype_agg_func_fixture.<locals>.func^   s   € Ü�y‰yœ˜Q›¤§¡£Ó,Ð,r   úy=wrong_output_dtype(x)r    r3   ©r   r"   r)   r*   s       r   Ú#wrong_output_dtype_agg_func_fixturer;   \   sP   € ò-ð *€IÜ€Hä×"Ñ" 4Ø#,Ø#+à'*¬B¯H©H«Jð$%ô $&§8¡8£:ô%ð �ˆ?Ðr   c                 óž   — d„ }d}t         }t        j                  |||dt        j                  «       it        j                  «       «       ||fS )Nc                 ó   — t        |«      S r   )r0   r1   s     r   r"   z0wrong_output_type_agg_func_fixture.<locals>.funcq   s   € Ü�1‹vˆr   úy=wrong_output_type(x)r    r3   r:   s       r   Ú"wrong_output_type_agg_func_fixturer?   o   sP   € òð )€IÜ€Hä×"Ñ" 4Ø#,Ø#+à'*¬B¯H©H«Jð$%ô $&§8¡8£:ô%ð �ˆ?Ðr   c                  óÂ   — d„ } d}dddœ}t        j                  | ||t        j                  «       t        j                  «       dœt        j                  «       «       | |fS )z,
    Register a binary scalar function.
    c                 óJ   — t        j                  d||g| j                  ¬«      S )NÚmultiply©Úmemory_pool©r%   Úcall_functionrD   )r   Úmr    s      r   Úbinary_functionz,binary_func_fixture.<locals>.binary_function‡   s$   € Ü×Ñ 
¨Q°¨FØ,/¯O©Oô=ð 	=r   zy=mxzfind y from y = mxr   )rG   r    ©r%   Úregister_scalar_functionr   r4   )rH   r)   Ú
binary_docs      r   Úbinary_func_fixturerL   ‚   s`   € ò
=ð €IØ#Ø!5ñ7€Jä×Ñ Ø )Ø *Ü&(§h¡h£jÜ&(§h¡h£jñ!#ô !#§¡£
ô,ð ˜IÐ%Ð%r   c            	      óè   — d„ } dddœ}d}t        j                  | ||t        j                  «       t        j                  «       t        j                  «       dœt        j                  «       «       | |fS )z-
    Register a ternary scalar function.
    c                 ó’   — t        j                  d||g| j                  ¬«      }t        j                  d||g| j                  ¬«      S )NrB   rC   ÚaddrE   )r   rG   r    ÚcÚmxs        r   Úternary_functionz.ternary_func_fixture.<locals>.ternary_functionœ   sC   € Ü×Ñ˜j¨1¨a¨&Ø*-¯/©/ô;ˆä×Ñ ¨¨A wØ,/¯O©Oô=ð 	=r   zy=mx+czfind y from y = mx + cr   )Úarray1Úarray2Úarray3rI   )rR   Úternary_docr)   s      r   Úternary_func_fixturerW   —   sj   € ò
=ð
 'Ø":ñ<€Kà€IÜ×ÑÐ 0Ø )Ø +ä.0¯h©h«jÜ.0¯h©h«jÜ.0¯h©h«jñ!"ô
 !#§¡£
ô,ð ˜YÐ&Ð&r   c                  óÂ   — d„ } d}dddœ}t        j                  | ||t        j                  «       t        j                  «       dœt        j                  «       «       | |fS )zI
    Register a varargs scalar function with at least two arguments.
    c                 ó`   — |}|D ]&  }t        j                  d||g| j                  ¬«      }Œ( |S )NrO   rC   rE   )r   ÚfirstÚvaluesÚaccÚvals        r   Úvarargs_functionz.varargs_func_fixture.<locals>.varargs_functionµ   s?   € ØˆØò 	@ˆCÜ×"Ñ" 5¨3°¨*Ø/2¯©ô@‰Cð	@ð ˆ
r   z	z=ax+by+czfind z from z = ax + by + cr   )rS   rT   rI   )r^   r)   Úvarargs_docs      r   Úvarargs_func_fixturer`   °   sc   € ò
ð €IØ)Ø"?ñ€Kô ×ÑÐ 0Ø )Ø +ä.0¯h©h«jÜ.0¯h©h«jñ!"ô !#§¡£
ô,ð ˜YÐ&Ð&r   c                  ót   — d„ } dddœ}d}t        j                  | ||i t        j                  «       «       | |fS )z-
    Register a nullary scalar function.
    c                 ó†   — t        j                  dg| j                  z  t        j                  «       | j                  ¬«      S ©Né*   ©ÚtyperD   ©r   Úarrayr   r4   rD   ©Úcontexts    r   Únullary_funcz*nullary_func_fixture.<locals>.nullary_funcÏ   ó3   € Ü�x‰x˜˜˜w×3Ñ3Ñ3¼"¿(¹(»*Ø$+×$7Ñ$7ô9ð 	9r   úrandom functionúgenerates a random valuer   Útest_nullary_funcrI   ©rk   r*   r)   s      r   Únullary_func_fixturerq   Ê   sL   € ò
9ð
 %Ø1ñ€Hð $€IÜ×Ñ Ø )Ø (Ø "Ü "§¡£
ô	,ð ˜Ð"Ð"r   c                  óp   — d„ } dddœ}d}t        j                  | ||i t        j                  «       «       |S )z¸
    Register a nullary scalar function with an ephemeral Python function.
    This stresses that the Python function object is properly kept alive by the
    registered function.
    c                 ó†   — t        j                  dg| j                  z  t        j                  «       | j                  ¬«      S rc   rg   ri   s    r   rk   z4ephemeral_nullary_func_fixture.<locals>.nullary_funcè   rl   r   rm   rn   r   Útest_ephemeral_nullary_funcrI   rp   s      r   Úephemeral_nullary_func_fixtureru   á   sG   € ò9ð
 %Ø1ñ€Hð .€IÜ×Ñ Ø )Ø (Ø "Ü "§¡£
ô	,ð Ðr   c                  ó|   — d„ } d}i }t        j                  «       }dddœ}t        j                  | ||||«       | |fS )zi
    Register a scalar function which returns something that is neither
    a Arrow scalar or array.
    c                  ó   — y)Nrd   r   ©r   s    r   Úwrong_output_typez9wrong_output_type_func_fixture.<locals>.wrong_output_type   s   € Ør   Útest_wrong_output_typezreturn wrong output typer   r   ©r   r4   r%   rJ   )ry   r)   Úin_typesÚout_typeÚdocs        r   Úwrong_output_type_func_fixturer   ú   sR   € òð )€IØ€HÜ�x‰x‹z€Hà-Øñ€Cô ×ÑÐ 1°9¸cØ (¨(ô4à˜iÐ'Ð'r   c                  ó¤   — d„ } d}dt        j                  «       i}t        j                  «       }dddœ}t        j                  | ||||«       | |fS )zq
    Register a scalar function whose actual output DataType doesn't
    match the declared output DataType.
    c                 ó2   — t        j                  d|dg«      S ©NrO   é   ©r%   rF   )r   rh   s     r   Úwrong_output_datatypezAwrong_output_datatype_func_fixture.<locals>.wrong_output_datatype  s   € Ü×Ñ ¨¨q zÓ2Ð2r   Útest_wrong_output_datatyperh   zreturn wrong output datatyper   r   )r   r4   Úint16r%   rJ   )r…   r)   r|   r}   r~   s        r   Ú"wrong_output_datatype_func_fixturerˆ     s[   € ò3à,€IØœŸ™›Ð$€Hä�x‰x‹z€Hà1Øñ€Cô ×ÑÐ 5°yÀ#Ø (¨(ô4à  )Ð+Ð+r   c                  ó|   — d„ } d}i }t        j                  «       }dddœ}t        j                  | ||||«       | |fS )z>
    Register a scalar function with the wrong signature.
    c                  óT   — t        j                  dt        j                  «       ¬«      S )Nrƒ   ©rf   )r   r   r4   r   r   r   Úwrong_signaturez5wrong_signature_func_fixture.<locals>.wrong_signature*  s   € Ü�y‰y˜¤§¡£Ô,Ð,r   Útest_wrong_signaturezUDF with wrong signaturer   r   r{   )rŒ   r)   r|   r}   r~   s        r   Úwrong_signature_func_fixturerŽ   $  sQ   € ò-ð '€IØ€HÜ�x‰x‹z€Hà-Øñ€Cô ×Ñ °¸CØ (¨(ô4à˜IÐ%Ð%r   c                  ót   — d„ } d}dddœ}t        j                  | ||i t        j                  «       «       | |fS )zE
    Register a scalar function which raises a custom exception.
    c                 ó   — t        d«      ‚)Núerror raised by scalar UDF)r   rx   s    r   Úraising_funcz*raising_func_fixture.<locals>.raising_func>  s   € ÜÐ2Ó3Ð3r   Ú
test_raisezraising functionr   r   rI   )r’   r)   r~   s      r   Úraising_func_fixturer”   9  sE   € ò
4à€Ià%Øñ€Cô ×Ñ ¨i¸Ø "¤B§H¡H£Jô0à˜Ð"Ð"r   c                  óž   — d„ } d}t         }t        j                  | ||dt        j                  «       it        j                  «       «       | |fS )z$
    Register a vector function
    c                 ó„   — t        j                  |j                  «       j                  «       j	                  d¬«      «      S )NT)Úpct)r   rh   Ú	to_pandasÚcopyÚrankr1   s     r   Úpct_rankz+unary_vector_func_fixture.<locals>.pct_rankO  s.   € ä�x‰x˜Ÿ™›×*Ñ*Ó,×1Ñ1°dÐ1Ó;Ó<Ð<r   úy=pct_rank(x)r    )r$   r%   Úregister_vector_functionr   r'   )r›   r)   r~   s      r   Úunary_vector_func_fixturerž   J  sN   € ò
=ð  €IÜ
€CÜ×Ñ ¨)°SØ #¤R§Z¡Z£\ð;3Ü46·J±J³LôBð �YÐÐr   c                  ój  — d„ } d}t         }t        j                  | ||t        j                  «       t        j
                  «       t        j                  «       dœt        j                  dt        j                  «       fdt        j
                  «       fdt        j
                  «       fg«      «       | |fS )z@
    Register a vector function that returns a struct array
    c                 ó  — t         j                  j                  |||gg d¢¬«      j                  «       }|j	                  ddd¬«      j                  «       }t         j                  j                  |«      j                  «       S )N©ÚkÚvrP   ©ÚnamesrP   r£   r¢   )Úcolumnsr[   Úindex)r   ÚRecordBatchÚfrom_arraysr˜   ÚpivotÚreset_indexÚfrom_pandasÚto_struct_array)r   r¢   r£   rP   ÚdfÚdf_pivots         r   rª   z)struct_vector_func_fixture.<locals>.pivot`  se   € Ü�^‰^×'Ñ'¨¨A¨q¨	ºÐ'ÓI×SÑSÓUˆØ—8‘8 C°¸3�8Ó?×KÑKÓMˆÜ�~‰~×)Ñ)¨(Ó3×CÑCÓEÐEr   ú
y=pivot(x)r¡   r¢   Úv1Úv2)r$   r%   r�   r   r4   r'   Úutf8Ústruct)rª   r)   r~   s      r   Ústruct_vector_func_fixturerµ   [  s†   € ò
Fð
 €IÜ
€CÜ×ÑØˆy˜#Ü�h‰h‹jœrŸz™z›|´"·'±'³)Ñ<Ü
�	‰	�CœŸ™›Ð$ t¬R¯Z©Z«\Ð&:¸TÄ2Ç:Á:Ã<Ð<PÐQÓRôð �)ÐÐr   T©Úrun_in_datasetr   c                óÖ  — | \  }}|€5d}|D ]*  }t        |t        j                  «      sŒd}t        |«      }Œ, |rd}t	        j
                  |«      }|j                  |k(  sJ ‚t	        j                  |||¬«      }	 |t        |«      g|¢­Ž }
|	|
k(  sJ ‚|rÉ|D ��cg c]
  \  }}d|› �‘Œ }}}t        j                  j                  ||«      }t        j                  |«      }|D �cg c]  }t        j                  |«      ‘Œ }}|j                  dt        j                  d«      j                  ||«      i¬«      }|j!                  d	«      j"                  d	   |
k(  sJ ‚y y c c}}w c c}w )
NTFrƒ   ©ÚlengthÚfieldÚresultr   )r¦   r   )Ú
isinstancer   ÚArrayr0   r%   Úget_functionÚnamerF   r   ÚTabler©   ÚdsÚdatasetr»   Úto_tableÚ_callÚcolumnÚchunks)Úfunc_fixtureÚinputsr·   r   ÚfunctionrÀ   Ú
all_scalarÚargr"   r¼   Úexpected_outputr§   Úin_arrÚfield_namesÚtablerÃ   Ú
field_nameÚ	func_argsÚresult_tables                      r   Úcheck_scalar_functionrÔ   p  sk  € ð "�N€HˆdØÐØˆ
Øò 	(ˆCÜ˜#œrŸx™xÕ(Ø"�
Ü" 3›x‘ð	(ñ ØˆLä�?‰?˜4Ó €DØ�9‰9˜ÒÐÐä×Ñ˜d F°<Ô@€FÙÔ/°Ó=ÐGÀÒG€OØ�_Ò$Ð$Ð$ñ Ø<B×C©=¨5°&˜˜u˜g’ÐCˆÑCÜ—‘×$Ñ$ V¨[Ó9ˆÜ—*‘*˜UÓ#ˆØ<GÖH¨j”R—X‘X˜jÕ)ÐHˆ	ÐHØ×'Ñ'ØœrŸx™x¨›|×1Ñ1°$¸	ÓBÐCð (ó Eˆà×"Ñ" 1Ó%×,Ñ,¨QÑ/°?ÒBÐBÑBð ùÛCùò Is   ÂE Ã&E&c                 ón   — t        | t        j                  ddgt        j                  «       «      g«       y )Né
   é   ©rÔ   r   rh   r4   )Úunary_func_fixtures    r   Útest_udf_array_unaryrÚ   �  s*   € ÜÐ,ä Ÿh™h¨¨B x´·±³Ó<ðõr   c           	      óÀ   — t        | t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      g«       y )NrÖ   r×   é   é   rØ   )rL   s    r   Útest_udf_array_binaryrÞ   ˜  sB   € ÜÐ-ä Ÿh™h¨¨B x´·±³Ó<Ü Ÿh™h¨¨1 v¬r¯x©x«zÓ:ðõr   c           
      ó  — t        | t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      g«       y )NrÖ   r×   rÜ   rÝ   é   rØ   )rW   s    r   Útest_udf_array_ternaryrá   ¡  sZ   € ÜÐ.ä Ÿh™h¨¨B x´·±³Ó<Ü Ÿh™h¨¨1 v¬r¯x©x«zÓ:Ü Ÿh™h¨¨2 w´·±³
Ó;ðõr   c                 ó¶  — t        | t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      t        j                  ddgt        j                  «       «      g«       y )NrÜ   é   rÖ   r×   é   é   rà   rØ   )r`   s    r   Útest_udf_array_varargsræ   «  sŠ   € ÜÐ.ä Ÿh™h¨¨1 v¬r¯x©x«zÓ:Ü Ÿh™h¨¨B x´·±³Ó<Ü Ÿh™h¨¨1 v¬r¯x©x«zÓ:Ü Ÿh™h¨¨B x´·±³Ó<Ü Ÿh™h¨¨2 w´·±³
Ó;ðõr   c                  ó~  — dddœ} dt        j                  «       i}t        j                  «       }d„ }t        j                  t        «      5  t        j                  |d | ||«       d d d «       t        j                  t        d¬«      5  t        j                  d d| ||«       d d d «       d	}t        j                  t        |¬«      5  t        j                  |d
| |d «       d d d «       d}t        j                  t        |¬«      5  t        j                  |d| d |«       d d d «       t        j                  |d| i |«       d}t        j                  t        |¬«      5  t        j                  |d| i |«       d d d «       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   Œ‡xY w# 1 sw Y   y xY w)Nztest udf inputzparameters are validatedr   r   c                 ó.   — t        j                  dg«      S )NrÖ   )r   rh   ri   s    r   Útest_reg_functionz3test_registration_errors.<locals>.test_reg_functionÀ  s   € Ü�x‰x˜˜‹~Ðr   zfunc must be a callable©ÚmatchÚtest_none_functionú)DataType expected, got <class 'NoneType'>Útest_output_functionz)in_types must be a dictionary of DataTypeÚtest_input_functionré   z?Already have a function registered with name: test_reg_function)r   r4   ÚpytestÚraisesÚ	TypeErrorr%   rJ   ÚKeyError)r~   r|   r}   ré   Úexpected_exprs        r   Útest_registration_errorsrõ   ·  s¥  € ð $Ø1ñ€Cð œ"Ÿ(™(›*Ð%€HÜ�x‰x‹z€Hòô 
�‰”yÓ	!ñ .Ü
×#Ñ#Ð$5Ø$(¨#¨xØ$,ô	.÷.ô 
�‰”yÐ(AÔ	Bñ .Ü
×#Ñ# DÐ*>ÀÀXØ$,ô	.÷.ð
 @€MÜ	�‰”y¨Ô	6ñ *Ü
×#Ñ#Ð$5Ø$:¸CÀØ$(ô	*÷*ð @€MÜ	�‰”y¨Ô	6ñ .Ü
×#Ñ#Ð$5Ø$9¸3ÀØ$,ô	.÷.ô ×ÑÐ 1Ø 3°S¸"Ø (ô*ð€Mä	�‰”x }Ô	5ñ .Ü
×#Ñ#Ð$5Ø$7¸¸bØ$,ô	.÷.ð .÷A.ñ .ú÷.ð .ú÷*ð *ú÷.ð .ú÷.ð .ús<   ÁFÂ	FÃFÄF'ÅF3ÆFÆFÆF$Æ'F0Æ3F<c                 ó    — | \  }}d}t        j                  t        |¬«      5  t        j                  |dg«       d d d «       y # 1 sw Y   y xY w)Nz9VarArgs function 'z=ax\+by\+c' needs at least 2 argumentsrê   rd   )rð   rñ   Ú
ValueErrorr%   rF   )r`   Ú_r)   Ú	error_msgs       r   Ú test_varargs_function_validationrú   é  sE   € Ø'�L€A€yàL€Iä	�‰”z¨Ô	3ñ *Ü
×Ñ˜ R DÔ)÷*÷ *ñ *ús   £AÁAc                  ó’  — dt        j                  «       i} t        j                  «       }ddi}d„ }t        j                  t        d¬«      5  t        j                  |d|| |«       d d d «       dd	i}t        j                  t        d
¬«      5  t        j                  |d|| |«       d d d «       y # 1 sw Y   ŒKxY w# 1 sw Y   y xY w)Nr   r   Údescc                 ó2   — t        j                  d|dg«      S r‚   r„   )r   r   s     r   Ú	add_constz/test_function_doc_validation.<locals>.add_constü  s   € Ü×Ñ ¨° {Ó3Ð3r   z#Function doc must contain a summaryrê   Útest_no_summaryr   ztest summaryz'Function doc must contain a descriptionÚtest_no_desc)r   r4   rð   rñ   r÷   r%   rJ   )r|   r}   r*   rþ   s       r   Útest_function_doc_validationr  ò  sÊ   € àœ"Ÿ(™(›*Ð%€HÜ�x‰x‹z€Hð 	�vð€Hò4ô 
�‰”zØBô
Dñ .ä
×#Ñ# IÐ/@Ø$,¨hØ$,ô	.÷.ð 	�>ð€Hô 
�‰”zØFô
Hñ .ä
×#Ñ# I¨~Ø$,¨hØ$,ô	.÷.ð .÷.ð .ú÷.ð .ús   ÁB1ÂB=Â1B:Â=Cc                 ó"   — t        | g dd¬«       y )NFrƒ   r¶   )rÔ   )rq   s    r   Útest_nullary_functionr    s   € ô Ð.°À5Ø'(ö*r   c                 ód   — | }t        j                  |g d¬«      }|j                  «       dgk(  sJ ‚y )Nrƒ   r¹   rd   )r%   rF   Ú	to_pylist)ru   rÀ   r¼   s      r   Útest_ephemeral_functionr    s4   € Ø)€DÜ×Ñ˜d B¨qÔ1€FØ×ÑÓ " Ò%Ð%Ñ%r   c                 óž   — | \  }}t        j                  t        d¬«      5  t        j                  |g d¬«       d d d «       y # 1 sw Y   y xY w)NzUnexpected output type: intrê   rƒ   r¹   ©rð   rñ   rò   r%   rF   )r   rø   r)   s      r   rz   rz     sC   € Ø1�L€A€yä	�‰”yØ:ô
<ñ 2ä
×Ñ˜ B¨qÕ1÷2÷ 2ñ 2úó   ¡AÁAc                 óÊ   — | \  }}d}t        j                  t        |¬«      5  t        j                  |t        j                  ddg«      g«       d d d «       y # 1 sw Y   y xY w)NzDExpected output datatype int16, but function returned datatype int64rê   r×   rå   )rð   rñ   rò   r%   rF   r   rh   )rˆ   rø   r)   rô   s       r   r†   r†   &  sW   € Ø5�L€A€yð<€Mô 
�‰”y¨Ô	6ñ :Ü
×Ñ˜¤R§X¡X¨r°2¨hÓ%7Ð$8Ô9÷:÷ :ñ :ús   £-AÁA"c                 ó¢   — | \  }}d}t        j                  t        |¬«      5  t        j                  |g d¬«       d d d «       y # 1 sw Y   y xY w)Nz@wrong_signature\(\) takes 0 positional arguments but 1 was givenrê   rƒ   r¹   r  )rŽ   rø   r)   rô   s       r   r�   r�   0  sI   € Ø/�L€A€yð'€Mô 
�‰”y¨Ô	6ñ 2Ü
×Ñ˜ B¨qÕ1÷2÷ 2ñ 2ús   £AÁAc                  óÚ   — d„ } d}dt        j                  «       i}i }dddœ}t        j                  t        d¬«      5  t        j                  | ||||«       d d d «       y # 1 sw Y   y xY w)	Nc                 ó   — |S r   r   ©r   r]   s     r   Úidentityz1test_wrong_datatype_declaration.<locals>.identity;  ó   € Øˆ
r   Útest_wrong_datatype_declarationrh   ztest output valueztest outputr   z%DataType expected, got <class 'dict'>rê   ©r   r4   rð   rñ   rò   r%   rJ   ©r  r)   r|   r}   r~   s        r   r  r  :  sr   € òð 2€IØœŸ™›Ð$€HØ€Hà&Ø$ñ€Cô 
�‰”yØDô
Fñ =ä
×#Ñ# H¨iØ$'¨°8ô	=÷=÷ =ñ =úó   ¾A!Á!A*c                  óÚ   — d„ } d}dd i}t        j                  «       }dddœ}t        j                  t        d¬«      5  t        j                  | ||||«       d d d «       y # 1 sw Y   y xY w)	Nc                 ó   — |S r   r   r  s     r   r  z3test_wrong_input_type_declaration.<locals>.identityL  r  r   Ú!test_wrong_input_type_declarationrh   ztest invalid input typezinvalid input functionr   rí   rê   r  r  s        r   r  r  K  sq   € òð 4€IØ˜ˆ€HÜ�x‰x‹z€Hà,Ø/ñ€Cô 
�‰”yØHô
Jñ 8ä
×#Ñ# H¨i¸Ø$,¨hô	8÷8÷ 8ñ 8úr  c                 ó   — t        j                  t        j                  «       «      }| \  }}t        j                  |t        j
                  dgdz  t        j                  «       ¬«      g|¬«      }|t        j
                  dgdz  t        j                  «       ¬«      k(  sJ ‚|j                  «       dk(  sJ ‚d }|j                  «       dk(  sJ ‚y )Nrƒ   éè  r‹   rC   rÜ   é@  r   )r   Úproxy_memory_poolr   r%   rF   rh   r4   Úbytes_allocated)rÙ   Ú
proxy_poolrø   r)   Úress        r   Útest_scalar_udf_contextr  \  s°   € ä×%Ñ%¤b×&<Ñ&<Ó&>Ó?€JØ%�L€A€yä
×
Ñ
˜9ÜŸH™H a S¨4¡Z´b·h±h³jÔAÐBØ'1ô3€Cð ”"—(‘(˜A˜3 ™:¬B¯H©H«JÔ7Ò7Ð7Ð7Ø×%Ñ%Ó'¨8Ò3Ð3Ð3à
€CØ×%Ñ%Ó'¨1Ò,Ð,Ñ,r   c                 óž   — | \  }}t        j                  t        d¬«      5  t        j                  |g d¬«       d d d «       y # 1 sw Y   y xY w)Nr‘   rê   rƒ   r¹   )rð   rñ   r   r%   rF   )r”   rø   r)   s      r   Útest_raising_funcr!  k  sA   € Ø'�L€A€yÜ	�‰”wÐ&BÔ	Cñ 2Ü
×Ñ˜ B¨qÕ1÷2÷ 2ñ 2úr	  c                 ó–   — | \  }}t        j                  |t        j                  d«      g«      }|t        j                  d«      k(  sJ ‚y )NrÖ   é   )r%   rF   r   r   )rÙ   rÊ   r)   r  s       r   Útest_scalar_inputr$  q  s>   € Ø,Ñ€HˆiÜ
×
Ñ
˜9¤r§y¡y°£} oÓ
6€CØ”"—)‘)˜B“-ÒÐÑr   c                 ó’  — | \  }}t        j                  t        j                  «       «      }|j                  «       dk(  sJ ‚t        j                  dgdz  t        j
                  «       |¬«      }|j                  «       dk(  sJ ‚t        j                  ||g«       |j                  «       dk(  sJ ‚d }|j                  «       dk(  sJ ‚y )Nr   rƒ   r  re   r  )r   r  r   r  rh   r4   r%   rF   )rÙ   rÊ   r)   r  r£   s        r   Útest_input_lifetimer&  w  s¶   € Ø,Ñ€Hˆiä×%Ñ%¤b×&<Ñ&<Ó&>Ó?€JØ×%Ñ%Ó'¨1Ò,Ð,Ð,ä
�‰�!��t‘¤"§(¡(£*¸*ÔE€AØ×%Ñ%Ó'¨8Ò3Ð3Ð3Ü×Ñ�Y  Ô$Ø×%Ñ%Ó'¨8Ò3Ð3Ð3à€AØ×%Ñ%Ó'¨1Ò,Ð,Ñ,r   c           	      óà   — t        |«      D ��cg c]2  \  }}t        j                  t        |«      | |   j                  ¬«      ‘Œ4 }}}t        j
                  j                  || ¬«      S c c}}w ©Nr‹   )ÚarraysÚschema)Ú	enumerater   rh   Úlistrf   r¨   r©   )r*  ÚitersÚir£   r)  s        r   Ú_record_batch_from_itersr/  †  s^   € ä# EÓ*÷,Ù�!�Qô �h‰h”t˜A“w V¨A¡Y§^¡^Ö4ð ,€Fñ ,ä�>‰>×%Ñ%¨V¸FÐ%ÓCÐCùó,s   �7A*c           	      óV   — t        | t        ||dz   «      t        |dz   |dz   «      «      S )NrÖ   rƒ   r#  )r/  Úrange)r*  Úns     r   Ú_record_batch_for_ranger3  Œ  s1   € Ü# FÜ$)¨!¨Q°©VÓ$4Ü$)¨!¨a©%°°R±Ó$8ó:ð :r   c                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 ó,   •—  G ˆˆfd„d«      } |«       S )Nc                   ó    •— e Zd Zd„ Zˆ ˆfd„Zy)ú,make_udt_func.<locals>.udf_func.<locals>.UDTc                 ó   — d | _         y r   )Úcaller©Úselfs    r   Ú__init__z5make_udt_func.<locals>.udf_func.<locals>.UDT.__init__•  s	   € Ø"�•r   c                 óz  •— 	 | j                   € ‰|«      j                  d c| _         }| j                  |«      }|j                  «       S # t        $ rg ‰D �cg c]#  }t        j                  g |j
                  ¬«      ‘Œ% nc c}w }}t        j                  j                  |‰¬«      }Y |j                  «       S w xY wr(  )	r9  ÚsendÚStopIterationr   rh   rf   r¨   r©   r­   )r;  r   Úbatchr»   r)  Ú	batch_genr*  s        €€r   Ú__call__z5make_udt_func.<locals>.udf_func.<locals>.UDT.__call__˜  s¸   ø€ ð6Ø—{‘{Ð*Ù+4°S«>×+>Ñ+>ÀÐ(˜œ SØ ŸK™K¨Ó,�Eð ×,Ñ,Ó.Ð.øô %ò 6à+1ö3Ø"'ô !Ÿh™h r°·
±
Ö;ñ 3ùò 3�Fð 3äŸN™N×6Ñ6Ø%¨fð 7ó 6‘Eà×,Ñ,Ó.Ð.ð6ús   ƒ7A
 Á
B:Á(B Á?)B:Â9B:N©r   r   r   r<  rB  ©rA  r*  s   €€r   ÚUDTr7  ”  s   ø„ ò#ö
/r   rE  r   )r   rE  rA  r*  s     €€r   Úudf_funczmake_udt_func.<locals>.udf_func“  s   ø€ ÷	/ô 	/ñ ‹uˆr   r   )r*  rA  rF  s   `` r   Úmake_udt_funcrG  ’  s   ù€ õð" €Or   c                  ó<   ‡ ‡— t        «       Š G ˆfd„d«      Š ˆ fd„S )zA short datasetc                   ó   •— e Zd Zd„ Zˆ fd„Zy)ú%datasource1_direct.<locals>.Generatorc                 ó   — d| _         y )Nrã   )r2  r:  s    r   r<  z.datasource1_direct.<locals>.Generator.__init__¬  s	   € ØˆD�Fr   c                 óÒ   •— | j                   dk(  rt        ‰g g «      }|j                  «       S | xj                   dz  c_         t        ‰| j                   «      }|j                  «       S )Nr   rƒ   )r2  r/  r3  r­   )r;  r   r@  r*  s      €r   rB  z.datasource1_direct.<locals>.Generator.__call__¯  s[   ø€ Ø�v‰v˜Š{Ü0°¸¸RÓ@�ð ×(Ñ(Ó*Ð*ð —’˜!‘•Ü/°¸¿¹Ó?�Ø×(Ñ(Ó*Ð*r   NrC  )r*  s   €r   Ú	GeneratorrJ  «  s   ø„ ò	õ	+r   rM  c                 ó   •—  ‰«       S r   r   )r   rM  s    €r   ú<lambda>z$datasource1_direct.<locals>.<lambda>¶  s	   ø€ ‘y“{€ r   )Údatasource1_schema)rM  r*  s   @@r   Údatasource1_directrQ  §  s   ù€ äÓ!€F÷
+ó 
+ó #Ð"r   c                  ó:   ‡— t        «       Šˆfd„} t        ‰| «      S )Nc              3   óT   •K  — t        ddd«      D ]  }t        ‰|dz
  «      –— Œ y ­w)Nrã   r   éÿÿÿÿrƒ   )r1  r3  ©r   r2  r*  s     €r   rA  z(datasource1_generator.<locals>.batch_gen¼  s/   øè ø€ Ü�q˜!˜R“ò 	9ˆAä)¨&°!°a±%Ó8Ó8ñ	9ùs   ƒ%(©rP  rG  rD  s    @r   Údatasource1_generatorrW  ¹  s   ø€ ÜÓ!€Fô9ô ˜ Ó+Ð+r   c                  ó:   ‡— t        «       Šˆfd„} t        ‰| «      S )Nc              3   óh   •K  — t        ddd«      D ]  }t        ‰|dz
  «      –— Œ t        d«      ‚­w)Nrã   r   rT  rƒ   Údatasource1_exception)r1  r3  r/   rU  s     €r   rA  z(datasource1_exception.<locals>.batch_genÆ  s=   øè ø€ Ü�q˜!˜R“ò 	9ˆAä)¨&°!°a±%Ó8Ó8ð	9ô Ð2Ó3Ð3ùs   ƒ/2rV  rD  s    @r   rZ  rZ  Ã  s   ø€ ÜÓ!€Fô4ô
 ˜ Ó+Ð+r   c                  ó€   — t        j                  dt        j                  «       fdt        j                  «       fg«      S )Nr   )r   r*  r8   r   r   r   rP  rP  Î  s,   € Ü�9‰9�rœ2Ÿ8™8›:Ð&¨¬R¯X©X«ZÐ(8Ð9Ó:Ð:r   c                 ó¢   — |› d�ddœ}i }t        j                  dt        j                  «       fdt        j                  «       fg«      }| ||||fS )Nz UDTztest {func_name} UDTr   r   )r   r´   r8   )r"   r)   r*   r|   r}   s        r   Údatasource1_argsr]  Ò  sU   € Ø'˜[¨Ð-Ø5ñ7€Hà€HÜ�y‰y˜2œrŸx™x›zÐ*¨R´·±³Ð,<Ð=Ó>€HØ�˜H h°Ð8Ð8r   c                 óÞ   — t        «       } | «       }| j                  }t        ||«      }t        j                  |Ž  d}t        j
                  |«      D ]  }|dz  }|t        ||«      k(  rŒJ ‚ y )Nrã   rƒ   )rP  r   r]  r%   Úregister_tabular_functionÚcall_tabular_functionr3  )Ú
func_makerr*  r"   r)   rÒ   r2  Úitems          r   Ú_test_datasource1_udtrc  Ú  st   € ÜÓ!€FÙ‹<€DØ×#Ñ#€IÜ   yÓ1€IÜ× Ñ  )Ñ,Ø	€AÜ×(Ñ(¨Ó3ò :ˆØ	ˆQ‰ˆØÔ.¨v°qÓ9Ó9Ð9Ð9ñ:r   c                  ó"   — t        t        «       y r   )rc  rQ  r   r   r   Útest_udt_datasource1_directre  æ  s   € ÜÔ,Õ-r   c                  ó"   — t        t        «       y r   )rc  rW  r   r   r   Útest_udt_datasource1_generatorrg  ê  s   € ÜÔ/Õ0r   c                  ó‚   — t        j                  t        d¬«      5  t        t        «       d d d «       y # 1 sw Y   y xY w)NrZ  rê   )rð   rñ   r/   rc  rZ  r   r   r   Útest_udt_datasource1_exceptionri  î  s/   € Ü	�‰”|Ð+BÔ	Cñ 5ÜÔ3Ô4÷5÷ 5ñ 5ús   œ5µ>c                 ó¾   — t        j                  g d¢t        j                  «       «      }t        j                  d|g«      }t        j
                  d«      }||k(  sJ ‚y )N©g      $@g      4@ç      >@g      D@g      I@Úmean_udfrl  )r   rh   r'   r%   rF   r   )Úunary_agg_func_fixtureÚarrr¼   Úexpecteds       r   Útest_scalar_agg_basicrq  ó  sH   € ä
�(‰(Ò1´2·:±:³<Ó
@€CÜ×Ñ˜j¨3¨%Ó0€FÜ�y‰y˜‹€HØ�XÒÐÑr   c                 óö   — t        j                  g t        j                  «       «      }t        j                  t         j
                  d¬«      5  t        j                  d|g«       d d d «       y # 1 sw Y   y xY w)Nzempty inputsrê   rm  )r   rh   r'   rð   rñ   ÚArrowInvalidr%   rF   )rn  Úemptys     r   Útest_scalar_agg_emptyru  û  sQ   € ä�H‰H�RœŸ™›Ó&€Eä	�‰”r—‘¨nÔ	=ñ .Ü
×Ñ˜ e WÔ-÷.÷ .ñ .ús   ÁA/Á/A8c                 óú   — t        j                  g d¢t        j                  «       «      }t        j                  t         j
                  d¬«      5  t        j                  d|g«       d d d «       y # 1 sw Y   y xY w)N©rÖ   r×   rå   é(   é2   úoutput datatyperê   r9   ©r   rh   r4   rð   rñ   ÚArrowTypeErrorr%   rF   )r;   ro  s     r   Ú"test_scalar_agg_wrong_output_dtyper}    sV   € Ü
�(‰(Ò'¬¯©«Ó
4€CÜ	�‰”r×(Ñ(Ð0AÔ	Bñ ;Ü
×ÑÐ2°S°EÔ:÷;÷ ;ñ ;úó   ÁA1Á1A:c                 óú   — t        j                  g d¢t        j                  «       «      }t        j                  t         j
                  d¬«      5  t        j                  d|g«       d d d «       y # 1 sw Y   y xY w)Nrw  úoutput typerê   r>   r{  )r?   ro  s     r   Ú!test_scalar_agg_wrong_output_typer�  	  sU   € Ü
�(‰(Ò'¬¯©«Ó
4€CÜ	�‰”r×(Ñ(°Ô	>ñ :Ü
×ÑÐ1°C°5Ô9÷:÷ :ñ :úr~  c                 ó  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t	        j
                  d||g«      }t        j                  d«      }||k(  sJ ‚y )Nrw  )ç      ð?ç       @ç      @ç      @g      @Úsum_meang     €@@)r   rh   r4   r'   r%   rF   r   )Úvarargs_agg_func_fixtureÚarr1Úarr2r¼   rp  s        r   Útest_scalar_agg_varargsr‹    sf   € ä�8‰8Ò(¬"¯(©(«*Ó5€DÜ�8‰8Ò-¬r¯z©z«|Ó<€Dä×ÑØ�T˜4�Ló€Fô �y‰y˜‹€HØ�XÒÐÑr   c                 óæ   — t        j                  g d¢t        j                  «       «      }t        j                  t
        d¬«      5  t        j                  d|g«       d d d «       y # 1 sw Y   y xY w)N)rÖ   r×   rå   rx  ry  é<   r.   rê   r2   )r   rh   r4   rð   rñ   r/   r%   rF   )r5   ro  s     r   Útest_scalar_agg_exceptionrŽ    sO   € ä
�(‰(Ò+¬R¯X©X«ZÓ
8€Cä	�‰”|¨6Ô	2ñ 6Ü
×ÑÐ-°¨uÔ5÷6÷ 6ñ 6ús   ÁA'Á'A0c                 óÞ  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  ||gddg¬«      }t        j                  ||gddg¬«      }t        j
                  ||g«      }|j                  d«      j                  dg«      }|j                  d«      j                  d	g«      j                  dd
g«      }	|j                  d«      |	j                  d«      k(  sJ ‚y )Nrk  ©rÝ   rÜ   rƒ   rÜ   rƒ   )g      N@g     €Q@g      T@g     €V@g      Y@)rà   rƒ   rƒ   rÝ   rƒ   ÚidÚvaluer¤   ©r’  rm  )r’  ÚmeanÚvalue_mean_udf)
r   rh   r'   r8   rÐ   Úconcat_tablesÚgroup_byÚ	aggregateÚrename_columnsÚsort_by)
rn  r‰  rŠ  Úarr3Úarr4Útable1Útable2rÐ   r¼   rp  s
             r   Útest_hash_agg_basicrŸ  #  s  € ä�8‰8Ò2´B·J±J³LÓA€DÜ�8‰8’O¤R§X¡X£ZÓ0€Dä�8‰8Ò3´R·Z±Z³\ÓB€DÜ�8‰8’O¤R§X¡X£ZÓ0€Dä�X‰X�t˜T�l¨4°¨/Ô:€FÜ�X‰X�t˜T�l¨4°¨/Ô:€FÜ×Ñ˜f fÐ-Ó.€Eà�^‰^˜DÓ!×+Ñ+Ð-BÐ,CÓD€FØ�~‰~˜dÓ#×-Ñ-Ø	Ðóß+™^¨TÐ3CÐ,DÓEð ð �>‰>˜$Ó 8×#3Ñ#3°DÓ#9Ò9Ð9Ñ9r   c                 óø  — t        j                  g t        j                  «       «      }t        j                  g t        j                  «       «      }t        j                  ||gddg¬«      }|j                  d«      j                  dg«      }t        j                  t        j                  g t        j                  «       «      t        j                  g t        j                  «       «      gddg¬«      }||k(  sJ ‚y )Nr‘  r’  r¤   r“  r•  )r   rh   r'   r8   rÐ   r—  r˜  )rn  r‰  rŠ  rÐ   r¼   rp  s         r   Útest_hash_agg_emptyr¡  6  s¸   € ä�8‰8�BœŸ
™
›Ó%€DÜ�8‰8�BœŸ™›
Ó#€DÜ�H‰H�d˜D�\¨$°¨Ô9€Eà�^‰^˜DÓ!×+Ñ+Ð-BÐ,CÓD€FÜ�x‰xœŸ™ "¤b§h¡h£jÓ1´2·8±8Ø
ŒB�J‰J‹Ló4ð Ø#'Ð)9Ð":ô<€Hð �XÒÐÑr   c                 ó˜  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  ||gddg¬«      }t        j                  t         j                  d¬«      5  |j                  d«      j                  dg«       d d d «       y # 1 sw Y   y xY w)	Nrw  r�  r‘  r’  r¤   rz  rê   )r’  r9   ©
r   rh   r4   r8   rÐ   rð   rñ   r|  r—  r˜  )r;   r‰  rŠ  rÐ   s       r   Ú test_hash_agg_wrong_output_dtyper¤  C  s�   € Ü�8‰8Ò(¬"¯(©(«*Ó5€DÜ�8‰8’O¤R§X¡X£ZÓ0€Dä�H‰H�d˜D�\¨$°¨Ô9€EÜ	�‰”r×(Ñ(Ð0AÔ	Bñ OØ�‰�tÓ×&Ñ&Ð(LÐ'MÔN÷O÷ Oñ Oúó   Â"C Ã C	c                 ó˜  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  ||gddg¬«      }t        j                  t         j                  d¬«      5  |j                  d«      j                  dg«       d d d «       y # 1 sw Y   y xY w)	Nrw  r�  r‘  r’  r¤   r€  rê   )r’  r>   r£  )r?   r‰  rŠ  rÐ   s       r   Útest_hash_agg_wrong_output_typer§  L  s�   € Ü�8‰8Ò(¬"¯(©(«*Ó5€DÜ�8‰8’O¤R§X¡X£ZÓ0€DÜ�H‰H�d˜D�\¨$°¨Ô9€Eä	�‰”r×(Ñ(°Ô	>ñ NØ�‰�tÓ×&Ñ&Ð(KÐ'LÔM÷N÷ Nñ Núr¥  c                 ó„  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  ||gddg¬«      }t        j                  t        d¬«      5  |j                  d«      j                  dg«       d d d «       y # 1 sw Y   y xY w)	Nrw  r�  r‘  r’  r¤   r.   rê   )r’  r2   )
r   rh   r4   r8   rÐ   rð   rñ   r/   r—  r˜  )r5   r‰  rŠ  rÐ   s       r   Útest_hash_agg_exceptionr©  U  s‰   € ä�8‰8Ò(¬"¯(©(«*Ó5€DÜ�8‰8’O¤R§X¡X£ZÓ0€DÜ�H‰H�d˜D�\¨$°¨Ô9€Eä	�‰”|¨6Ô	2ñ JØ�‰�tÓ×&Ñ&Ð(GÐ'HÔI÷J÷ Jñ Jús   Â"B6Â6B?c                 ó6  — d}d}t        j                  t        j                  d|«      t        j                  «       «      }t        j                  t        j
                  j                  ||«      t        j                  «       «      }t        j                  ||gddg¬«      }|j                  d«      j                  dg«      }|j                  d«      j                  dg«      j                  dd	g«      }|j                  d«      |j                  d«      k(  sJ ‚y
)z2Test hash aggregate udf with randomly sampled datai@B r  rƒ   r‘  r’  r¤   )r’  r#   )r’  ÚsumÚvalue_sum_udfN)r   rh   r   Úrepeatr'   ÚrandomÚchoicer8   rÐ   r—  r˜  r™  rš  )r+   Ú	value_numÚ	group_numr‰  rŠ  rÐ   r¼   rp  s           r   Útest_hash_agg_randomr²  _  sà   € ð €IØ€Iä�8‰8”B—I‘I˜a Ó+¬R¯Z©Z«\Ó:€DÜ�8‰8”B—I‘I×$Ñ$ Y°	Ó:¼B¿H¹H»JÓG€Dä�H‰H�d˜D�\¨$°¨Ô9€Eà�^‰^˜DÓ!×+Ñ+Ð-AÐ,BÓC€FØ�~‰~˜dÓ#×-Ñ-Ø	Ðóß*™N¨D°/Ð+BÓCð ð �>‰>˜$Ó 8×#3Ñ#3°DÓ#9Ò9Ð9Ñ9r   c                 ó¬   — t        j                  g d¢t        j                  «       «      }t        j                  d|g«      } | d   d |«      }||k(  sJ ‚y )Nrk  rœ   r   ©r   rh   r'   r%   rF   ©rž   ro  r¼   rp  s       r   Útest_vector_basicr¶  r  sO   € ä
�(‰(Ò1´2·:±:³<Ó
@€CÜ×Ñ˜o°¨uÓ5€FØ+Ð(¨Ñ+¨D°#Ó6€HØ�XÒÐÑr   c                 óª   — t        j                  dgt        j                  «       «      }t        j                  d|g«      } | d   d |«      }||k(  sJ ‚y )Nrƒ   rœ   r   r´  rµ  s       r   Útest_vector_emptyr¸  z  sP   € ä
�(‰(�A�3œŸ
™
›Ó
%€CÜ×Ñ˜o°¨uÓ5€FØ+Ð(¨Ñ+¨D°#Ó6€HØ�XÒÐÑr   c                 ó6  — t        j                  g d¢t        j                  «       «      }t        j                  g d¢t        j                  «       «      }t        j                  g d¢«      }t	        j
                  d|||g«      } | d   d |||«      }||k(  sJ ‚y )N)rƒ   rƒ   rÜ   rÜ   )rƒ  r„  r…  r†  )r±   r²   r±   r²   r°   r   )r   rh   r4   r'   r%   rF   )rµ   r¢   r£   rP   r¼   rp  s         r   Útest_vector_structrº  ‚  s‰   € ä
�‰Ú”b—h‘h“jó	€Aô 	�‰ÚœbŸj™j›ló	€Aô 	�‰Ú ó	€Aô ×Ñ˜l¨Q°°1¨IÓ6€FØ,Ð)¨!Ñ,¨T°1°a¸Ó;€HØ�XÒÐÑr   )rÖ   )r   )Prð   Únumpyr   ÚImportErrorÚpyarrowr   r   r%   ÚmarkrÃ   Ú
pytestmarkr$   Úpyarrow.datasetrÂ   r   r/   r   Úfixturer+   r5   r;   r?   rL   rW   r`   rq   ru   r   rˆ   rŽ   r”   rž   rµ   rÔ   rÚ   rÞ   rá   ræ   rõ   rú   r  r  r  rz   r†   r�   r  r  r  r!  r$  r&  r/  r3  rG  rQ  rW  rZ  rP  r]  rc  re  rg  ri  rq  ru  r}  r�  r‹  rŽ  rŸ  r¡  r¤  r§  r©  r²  Úpandasr¶  r¸  rº  r   r   r   ú<module>rÃ     sW  ðó& ðÛó Ý !ð �[‰[× Ñ €
ð ¨rÑ2€ðÝ ó
Dô
	ˆlô 	ð €‡��iÔ ñó !ðð* €‡��iÔ ñó !ðð& €‡��iÔ òó !ðð$ €‡��iÔ òó !ðð$ €‡��iÔ ñ&ó !ð&ð( €‡��iÔ ñ'ó !ð'ð0 €‡��iÔ ñ'ó !ð'ð2 €‡��iÔ ñ#ó !ð#ð, €‡��iÔ ñó !ðð0 €‡��iÔ ñ(ó !ð(ð( €‡��iÔ ñ,ó !ð,ð( €‡��iÔ ñ&ó !ð&ð( €‡��iÔ ñ#ó !ð#ð  €‡��iÔ ñó !ðð  €‡��iÔ ñó !ðð, *.Ø'+ôCò@òòò	ò/.òd*ò.ò>*ò&ò2ò:ò2ò=ò"8ò"-ò2ò ò-òDò:òò*#ò$,ò,ò;ò9ò	:ò.ò1ò5ð
 ‡�×Ññó ðð ‡�×Ññ.ó ð.ò;ò:ð ‡�×Ññó ðð ‡�×Ññ6ó ð6ð ‡�×Ññ:ó ð:ð$ ‡�×Ññ	ó ð	òOòNð ‡�×ÑñJó ðJð ‡�×Ññ:ó ð:ð$ ‡�×Ññó ðð ‡�×Ññó ðð ‡�×Ññó ñøðY ò Ø	ƒBðûð ò Ø	ƒBðús"   †M  °M. Í M+Í*M+Í.M9Í8M9