§
    Ð! hO  ã                  ó&  — U d Z ddlmZ ddlZddlmZ ddlZddlZddl	m
Z
 ddlmZ ddlmZ ddlmZ erddlZerdd	lmZ dad
ed<   g aded<   eadaded<   daded<   h d£h d£dœZdZd:d;d„Zd<d=d„Zd„ Zd>d„Z d„ Z!i ej"        d“ej#        d“ej$        d “ej%        d “ej&        d!“ej'        d!“ej(        d"“ej)        d"“ej*        d“ej+        d“ej,        d“ej-        d“ej.        d#“ej/        d#“ej0        d$“ej        d%“ej1        d&“ej2        d'ej3        d(ej4        d)ej5        d*ej6        d*ej7        d+ej8        d+ej9        d,ej:        d,e;dej<        di¥Z=d-„ Z>d.„ Z? e e
d/¦  «        ¦  «         d0„ Z@d+d*d,d1œZAd>d2„ZBd:d?d4„ZCd:d?d5„ZDd:d;d6„ZEd@d8„ZFdAd9„ZGdS )BzL
Expressions
-----------

Offer fast expression evaluation through numexpr

é    )ÚannotationsN)ÚTYPE_CHECKING)Ú
get_option)Úfind_stack_level)Ú	roperator)ÚNUMEXPR_INSTALLED)ÚFuncTypezbool | NoneÚ
_TEST_MODEú
list[bool]Ú_TEST_RESULTzFuncType | NoneÚ	_evaluateÚ_where>   ÚboolÚint32Úint64Úfloat32Úfloat64>   r   r   r   )ÚevaluateÚwherei@B TÚvr   ÚreturnÚNonec                ól   — t           r| at          rt          nt          at          rt
          nt          ad S ©N)r   ÚUSE_NUMEXPRÚ_evaluate_numexprÚ_evaluate_standardr   Ú_where_numexprÚ_where_standardr   ©r   s    ú]c:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/computation/expressions.pyÚset_use_numexprr"   -   s6   € õ ð Øˆõ
 &1ÐHÕ!Ð!Õ6H€IÝ*Ð?�^ˆ^µ€F€F€Fó    c                ó|   — t           r2t          r-| €t          j        ¦   «         } t          j        | ¦  «         d S d S d S r   )r   r   ÚneÚdetect_number_of_coresÚset_num_threads)Úns    r!   Úset_numexpr_threadsr)   :   sQ   € õ ð �[ð Øˆ9ÝÔ)Ñ+Ô+ˆAÝ
Ô˜1ÑÔÐÐÐðð ð ð r#   c                óF   — t           rt          d¦  «          | ||¦  «        S )z
    Standard evaluation.
    F)r
   Ú_store_test_result)ÚopÚop_strÚaÚbs       r!   r   r   C   s)   € õ ð "Ý˜5Ñ!Ô!Ð!Øˆ2ˆa�‰8Œ8€Or#   c                óØ   — |�g|j         t          k    rWt          ¦   «         }||fD ]"}t          |d¦  «        r||j        j        hz  }Œ#t          |¦  «        rt          |         |k    rdS dS )z,return a boolean if we WILL be using numexprNÚdtypeTF)ÚsizeÚ_MIN_ELEMENTSÚsetÚhasattrr1   ÚnameÚlenÚ_ALLOWED_DTYPES)r,   r-   r.   r/   Údtype_checkÚdtypesÚos          r!   Ú_can_use_numexprr<   L   s}   € àÐàŒ6•MÒ!Ð!å"™uœuˆFØ˜�Vð -ð -�å˜1˜gÑ&Ô&ð -Ø˜qœwœ|˜nÑ,�Føõ �v‘;”;ð ¥/°+Ô">À&Ò"HÐ"HØ�tàˆ5r#   c                óž  — d }t          | |||d¦  «        r‹| j                             d¦  «                             d¦  «        }|r||}}|}|}	 t	          j        d|› d�||dœd¬¦  «        }n.# t          $ r Y n"t          $ r t          |||¦  «        rn‚ Y nw xY w|r||}}t          rt          |d u¦  «         |€t          | |||¦  «        }|S )	Nr   Ú_Úrza_value z b_value)Úa_valueÚb_valueÚsafe©Ú
local_dictÚcasting)r<   Ú__name__ÚstripÚ
startswithr%   r   Ú	TypeErrorÚNotImplementedErrorÚ_bool_arith_fallbackr
   r+   r   )r,   r-   r.   r/   ÚresultÚis_reversedr@   rA   s           r!   r   r   _   s8  € Ø€Få˜˜F A q¨*Ñ5Ô5ð Ø”k×'Ò'¨Ñ,Ô,×7Ò7¸Ñ<Ô<ˆØð 	à�aˆqˆAàˆØˆð	Ý”[Ø+˜6Ð+Ð+Ð+Ø'.¸7ÐCÐCØðñ ô ˆFˆFøõ
 ð 	ð 	ð 	ð ˆDÝ"ð 	ð 	ð 	Ý# F¨A¨qÑ1Ô1ð Øàð �ð	øøøð ð 	à�aˆqˆAåð /Ý˜6¨Ð-Ñ.Ô.Ð.à€~Ý# B¨°°1Ñ5Ô5ˆà€Ms   ÁA- Á-
BÁ9BÂBú+Ú*ú-ú/z**z==z!=z<=ú<z>=ú>ú&ú|ú^c                ó.   — t          j        | ||¦  «        S r   )Únpr   )Úcondr.   r/   s      r!   r   r   ¬   s   € åŒ8�D˜!˜QÑÔÐr#   c                óŒ   — d }t          d d||d¦  «        rt          j        d| ||dœd¬¦  «        }|€t          | ||¦  «        }|S )Nr   z#where(cond_value, a_value, b_value))Ú
cond_valuer@   rA   rB   rC   )r<   r%   r   r   )rY   r.   r/   rL   s       r!   r   r   ±   se   € à€Få˜˜g q¨!¨WÑ5Ô5ð 
Ý”Ø1Ø&*°qÀQÐGÐGØð
ñ 
ô 
ˆð €~Ý   q¨!Ñ,Ô,ˆà€Mr#   zcompute.use_numexprc                ó†   — 	 | j         t          k    S # t          $ r$ t          | t          t          j        f¦  «        cY S w xY wr   )r1   r   ÚAttributeErrorÚ
isinstancerX   Úbool_)Úxs    r!   Ú_has_bool_dtypera   Æ   sK   € ð/ØŒw�$ŠÐøÝð /ð /ð /Ý˜!�d¥B¤HÐ-Ñ.Ô.Ð.Ð.Ð.ð/øøøs   ‚ ’+A ¿A )rN   rO   rP   c           	     óô   — t          |¦  «        rht          |¦  «        rY| t          v rPt          j        dt	          | ¦  «        › dt	          t          |          ¦  «        › d�t          ¦   «         ¬¦  «         dS dS )z¨
    Check if we should fallback to the python `_evaluate_standard` in case
    of an unsupported operation by numexpr, which is the case for some
    boolean ops.
    z'evaluating in Python space because the z> operator is not supported by numexpr for the bool dtype, use z	 instead.)Ú
stacklevelTF)ra   Ú_BOOL_OP_UNSUPPORTEDÚwarningsÚwarnÚreprr   )r-   r.   r/   s      r!   rK   rK   Ð   sœ   € õ �qÑÔð �o¨aÑ0Ô0ð ØÕ)Ð)Ð)ÝŒMðE½$¸v¹,¼,ð Eð EåÕ0°Ô8Ñ9Ô9ðEð Eð Eõ ,Ñ-Ô-ð	ñ ô ð ð �4Øˆ5r#   Úuse_numexprc                ól   — t           |          }|�|rt          | |||¦  «        S t          | |||¦  «        S )zô
    Evaluate and return the expression of the op on a and b.

    Parameters
    ----------
    op : the actual operand
    a : left operand
    b : right operand
    use_numexpr : bool, default True
        Whether to try to use numexpr.
    )Ú_op_str_mappingr   r   )r,   r.   r/   rh   r-   s        r!   r   r   â   sD   € õ ˜RÔ €FØÐØð 	/å˜R ¨¨AÑ.Ô.Ð.Ý˜b &¨!¨QÑ/Ô/Ð/r#   c                ó\   — t           €J ‚|rt          | ||¦  «        nt          | ||¦  «        S )zý
    Evaluate the where condition cond on a and b.

    Parameters
    ----------
    cond : np.ndarray[bool]
    a : return if cond is True
    b : return if cond is False
    use_numexpr : bool, default True
        Whether to try to use numexpr.
    )r   r   )rY   r.   r/   rh   s       r!   r   r   ö   s8   € õ ÐÐÐØ!,ÐM�6�$˜˜1ÑÔÐµ/À$ÈÈ1Ñ2MÔ2MÐMr#   c                ó   — | a g adS )z¯
    Keeps track of whether numexpr was used.

    Stores an additional ``True`` for every successful use of evaluate with
    numexpr since the last ``get_test_result``.
    N)r
   r   r    s    r!   Úset_test_moderm     s   € ð €JØ€L€L€Lr#   Úused_numexprc                óB   — | rt                                | ¦  «         d S d S r   )r   Úappend)rn   s    r!   r+   r+     s.   € Øð *Ý×Ò˜LÑ)Ô)Ð)Ð)Ð)ð*ð *r#   c                 ó   — t           } g a | S )z1
    Get test result and reset test_results.
    )r   )Úress    r!   Úget_test_resultrs     s   € õ
 €CØ€LØ€Jr#   )T)r   r   r   r   r   )r   r   )r   r   )rh   r   )rn   r   r   r   )r   r   )HÚ__doc__Ú
__future__r   ÚoperatorÚtypingr   re   ÚnumpyrX   Úpandas._configr   Úpandas.util._exceptionsr   Úpandas.corer   Úpandas.core.computation.checkr   Únumexprr%   Úpandas._typingr	   r
   Ú__annotations__r   r   r   r   r8   r3   r"   r)   r   r<   r   ÚaddÚraddÚmulÚrmulÚsubÚrsubÚtruedivÚrtruedivÚfloordivÚ	rfloordivÚmodÚrmodÚpowÚrpowÚeqÚleÚltÚgeÚgtÚand_Úrand_Úor_Úror_ÚxorÚrxorÚdivmodÚrdivmodrj   r   r   ra   rd   rK   r   r   rm   r+   rs   © r#   r!   ú<module>rœ      sê  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€à Ð Ð Ð à %Ð %Ð %Ð %Ð %Ð %à 4Ð 4Ð 4Ð 4Ð 4Ð 4à !Ð !Ð !Ð !Ð !Ð !Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;àð ØÐÐÐàð (Ø'Ð'Ð'Ð'Ð'Ð'à€
Ð Ð Ð Ñ Ø€Ð Ð Ð Ñ Ø€Ø!€	Ð !Ð !Ð !Ñ !Ø€Ð Ð Ð Ñ ð AÐ@Ð@Ø)Ð)Ð)ðð €ð €ð
@ð 
@ð 
@ð 
@ð 
@ðð ð ð ð ðð ð ðð ð ð ð&&ð &ð &ðR!Ø„L�#ð!à„N�Cð!ð „L�#ð!ð „N�Cð	!ð
 „L�#ð!ð „N�Cð!ð Ô�cð!ð Ô˜ð!ð Ô�tð!ð Ô˜ð!ð „L�$ð!ð  „N�Dð!!ð" „L�$ð#!ð$ „N�Dð%!ð& „K�ð'!ð( „K�ð)!ð* „K�ð+!ð, „K�Ø„K�Ø„K�Ø„M�3Ø„O�SØ„L�#Ø„N�CØ„L�#Ø„N�CØ
ˆDØÔ�tðA!ð !€ðH ð  ð  ð
ð ð ð$ €�
�
Ð0Ñ1Ô1Ñ 2Ô 2Ð 2ð/ð /ð /ð ! s°Ð5Ð5Ð ðð ð ð ð$0ð 0ð 0ð 0ð 0ð(Nð Nð Nð Nð Nð 	ð 	ð 	ð 	ð 	ð*ð *ð *ð *ð
ð ð ð ð ð r#   