+
    ÏÜ³j°   ã                  óÈ  a € 0 t $ R t^ RIHt ^ RIt^ RIHt ^ RIt^ RIt	^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ]'       d    ^ RIt]! ]P0                  4      ]! R
4      8¬  t]'       d   ^ RIHt RsR]R&   . sR]R&   ]sRs R]R&   Rs!R]R&   R0 R<mR0 R=m/t"Rt#R>R R llt$R?R R llt%R t&R R lt'R t(/ ]PR                  Rb]PT                  Rb]PV                  Rb]PX                  Rb]PZ                  R b]P\                  R b]P^                  R!b]P`                  R!b]Pb                  Rb]Pd                  Rb]Pf                  Rb]Ph                  Rb]Pj                  R"b]Pl                  R"b]Pn                  R#b]P.                  R$b]Pp                  R%b]Pr                  R&]Pt                  R']Pv                  R(]Px                  R)]Pz                  R)]P|                  R*]P~                  R*]P€                  R+]P‚                  R+]BR]P†                  R/CtDR, tER- tF]$! ]! R.4      4       R/ tGRR*RR)R R+/tHR0 R1 ltIR>R2 R3 lltJR>R4 R5 lltKR>R6 R7 lltLR8 R9 ltMR: R; ltNR# )@zL
Expressions
-----------

Offer fast expression evaluation through numexpr

)ÚannotationsN)ÚTYPE_CHECKING)Ú
get_option)Únp_version_gt2_3)Úfind_stack_level)Ú	roperator)ÚNUMEXPR_INSTALLED)ÚVersionz2.11.0)ÚFuncTypezbool | NoneÚ
_TEST_MODEú
list[bool]Ú_TEST_RESULTzFuncType | NoneÚ	_evaluateÚ_whereÚevaluateÚwherei@B c               ó    € V ^8„  d   QhRRRR/# ©é   ÚvÚboolÚreturnÚNone© )Úformats   "Úd/home/luca/screen-checking/.venv/lib/python3.14/site-packages/pandas/core/computation/expressions.pyÚ__annotate__r   2   s   € ÷ @ñ @�tð @ tñ @ó    c                ó¼   € \         '       d   \        '       d   \        '       g   R sMV s\        '       d   \        M\
        s\        '       d	   \        s	R# \        s	R# )FN)
r   r   Ú	ne_gt_211ÚUSE_NUMEXPRÚ_evaluate_numexprÚ_evaluate_standardr   Ú_where_numexprÚ_where_standardr   ©r   s   &r   Úset_use_numexprr&   2   s<   € ÷ ÓßÓ§I£Ið  ‰KàˆK÷
 &1£[Õ!Ô6H€Iß*›{Œ^‚F´‚Fr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   D   s   € ÷ ñ  4ñ r   c                óœ   € \         '       d@   \        '       d2   V f   \        P                  ! 4       p \        P                  ! V 4       R # R # R # ©N)r   r    ÚneÚdetect_number_of_coresÚset_num_threads)Úns   &r   Úset_numexpr_threadsr.   D   s7   € ÷ ÓŸ[›[ØŠ9Ü×)Ò)Ó+ˆAÜ
×Ò˜1Öñ )Ñr   c                ó@   € \         '       d   \        R4       V ! W#4      # )z
Standard evaluation.
F)r   Ú_store_test_result)ÚopÚop_strÚleft_opÚright_ops   &&&&r   r"   r"   M   s   € ÷ ƒzÜ˜5Ô!ÙˆgÓ Ð r   c               ó   € V ^8„  d   QhRR/# ©r   r   r   r   )r   s   "r   r   r   V   s   € ÷ ñ ÀDñ r   c                ó  € Ve€   VP                   \        8”  dk   \        4       pW#3 F4  p\        VR4      '       g   K  WVP                  P
                  0,          pK6  	  \        V4      '       d   \        V,          V8¼  d   R# R# )z2return left_op boolean if we WILL be using numexprÚdtypeTF)ÚsizeÚ_MIN_ELEMENTSÚsetÚhasattrr8   ÚnameÚlenÚ_ALLOWED_DTYPES)r1   r2   r3   r4   Údtype_checkÚdtypesÚos   &&&&&  r   Ú_can_use_numexprrC   V   sd   € àÒà�<‰<œ-Ô'ä"›uˆFØÓ(�ä˜1˜g×&Ô&ØŸw™wŸ|™|˜nÕ,’Fñ )ô �v—;’;¤/°+Õ">À&Ô"HÙár   c                óª  € R p\        WW#R4      '       de   V P                  P                  R4      P                  R4      pV'       d   Y2r2TpTp \        P
                  ! RV R2RVRV/RR	7      pT'       d   Y2r2\        '       d   \        VR J4       Vf   \        WW#4      pV#   \         d     LB\         d    \        YT4      '       d    L`h i ; i)
Nr   Ú_Úrzleft_value z right_valueÚ
left_valueÚright_valueÚsafe©Ú
local_dictÚcasting)rC   Ú__name__ÚstripÚ
startswithr*   r   Ú	TypeErrorÚNotImplementedErrorÚ_bool_arith_fallbackr   r0   r"   )r1   r2   r3   r4   ÚresultÚis_reversedrG   rH   s   &&&&    r   r!   r!   i   sØ   € Ø€Fä˜ G°z×BÒBØ—k‘k×'Ñ'¨Ó,×7Ñ7¸Ó<ˆßà (�Xàˆ
Øˆð	Ü—[’[Ø˜f˜X \Ð2Ø(¨*°mÀ[ÐQØôˆF÷ à (�XçƒzÜ˜6¨Ð-Ô.à‚~Ü# B°ÓBˆà€Møô) ô 	ñ Ü"ô 	Ü# F°X×>Ò>Ùàð		ús   Á!B% Â%CÂ2CÂ;CÃCÚ+Ú*Ú-Ú/z**z==z!=z<=Ú<z>=Ú>Ú&Ú|Ú^c                ó0   € \         P                  ! WV4      # r)   )Únpr   )Úcondr3   r4   s   &&&r   r$   r$   ¶   s   € ä�8Š8�D 8Ó,Ð,r   c           	     ó�   € R p\        R RWR4      '       d    \        P                  ! RRV RVRV/RR7      pVf   \        WV4      pV# )Nr   z#where(cond_value, a_value, b_value)Ú
cond_valueÚa_valueÚb_valuerI   rJ   )rC   r*   r   r$   )r`   r3   r4   rS   s   &&& r   r#   r#   »   sT   € à€Fä˜˜g w¸'×BÒBÜ—’Ø1Ø$ d¨I°wÀ	È8ÐTØô
ˆð ‚~Ü  °Ó9ˆà€Mr   zcompute.use_numexprc                óŒ   €  V P                   \        8H  #   \         d$    \        T \        \        P
                  34      u # i ; ir)   )r8   r   ÚAttributeErrorÚ
isinstancer_   Úbool_)Úxs   &r   Ú_has_bool_dtyperj   Ð   s:   € ð/Ø�w‰wœ$‰ÐøÜô /Ü˜!œd¤B§H¡HÐ-Ó.Ò.ð/ús   ‚ •+AÁAc               ó   € V ^8„  d   QhRR/# r6   r   )r   s   "r   r   r   Ú   s   € ÷ ñ °tñ r   c                óÌ   € \        V4      '       dS   \        V4      '       dB   V \        9   d7   \        P                  ! RV : R\        V ,          : R2\	        4       R7       R# R# )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)rj   Ú_BOOL_OP_UNSUPPORTEDÚwarningsÚwarnr   )r2   r3   r4   s   &&&r   rR   rR   Ú   s^   € ô �w×Ò¤O°H×$=Ò$=ØÔ)Ô)Ü�MŠMØ9¸&¹ð Dä+¨FÕ3Ñ6°iðAô ,Ó-õ	ñ Ùr   c               ó   € V ^8„  d   QhRR/# ©r   Úuse_numexprr   r   )r   s   "r   r   r   ì   s   € ÷ =ñ =°ñ =r   c                ód   € \         V ,          pVe   V'       d   \        WW4      # \        WW4      # )zê
Evaluate and return the expression of the op on left_op and right_op.

Parameters
----------
op : the actual operand
left_op : left operand
right_op : right operand
use_numexpr : bool, default True
    Whether to try to use numexpr.
)Ú_op_str_mappingr   r"   )r1   r3   r4   rs   r2   s   &&&& r   r   r   ì   s1   € ô ˜RÕ €FØÒßä˜R¨Ó;Ð;Ü˜b¨'Ó<Ð<r   c               ó   € V ^8„  d   QhRR/# rr   r   )r   s   "r   r   r      s   € ÷ 8ñ 8°ñ 8r   c                óV   € \         f   Q hV'       d   \        WV4      # \        WV4      # )zó
Evaluate the where condition cond on left_op and right_op.

Parameters
----------
cond : np.ndarray[bool]
left_op : return if cond is True
right_op : return if cond is False
use_numexpr : bool, default True
    Whether to try to use numexpr.
)r   r$   )r`   r3   r4   rs   s   &&&&r   r   r      s-   € ô ÒÐÐßÜ�d XÓ.Ð.ä˜t¨hÓ7Ð7r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r     s   € ÷ 	ñ 	�Tð 	 Tñ 	r   c                ó   € V s . sR# )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_moderz     s   € ð €JØ‚Lr   c               ó    € V ^8„  d   QhRRRR/# )r   Úused_numexprr   r   r   r   )r   s   "r   r   r     s   € ÷ *ñ * Tð *¨dñ *r   c                óD   € V '       d   \         P                  V 4       R # R # r)   )r   Úappend)r|   s   &r   r0   r0     s   € ßÜ×Ñ˜LÖ)ñ r   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   $  s   € ÷ ñ ˜ñ r   c                 ó   € \         p . s V # )z)
Get test result and reset test_results.
)r   )Úress    r   Úget_test_resultr‚   $  s   € ô
 €CØ€LØ€Jr   >   r   Úint32Úint64Úfloat32Úfloat64>   r   r„   r†   )Tr)   )OÚ__conditional_annotations__Ú__doc__Ú
__future__r   ÚoperatorÚtypingr   ro   Únumpyr_   Úpandas._configr   Úpandas.compat.numpyr   Úpandas.util._exceptionsr   Úpandas.corer   Úpandas.core.computation.checkr   Úpandas.util.versionr	   Únumexprr*   Ú__version__r   Úpandas._typingr
   r   Ú__annotations__r   r    r   r   r?   r:   r&   r.   r"   rC   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Úrdivmodru   r$   r#   rj   rn   rR   r   r   rz   r0   r‚   )r‡   s   @r   Ú<module>r²      s�  øðôõ #ã Ý  Û ã å %å 0Ý 4å !Ý ;Ý 'çÛá˜Ÿ™Ó'©7°8Ó+<Ñ<€IçÝ'à€
ˆKÓ Ø€ˆjÓ Ø€Ø!€	ˆ?Ó !Ø€ˆÓ ð Ò@ØÒ)ð€ð €÷@÷$ò!õò&&ðR!Ø‡L�L�#ð!à‡N�N�Cð!ð ‡L�L�#ð!ð ‡N�N�Cð	!ð
 ‡L�L�#ð!ð ‡N�N�Cð!ð ×Ñ�cð!ð ×Ñ˜ð!ð ×Ñ�tð!ð ×Ñ˜ð!ð ‡L�L�$ð!ð  ‡N�N�Dð!!ð" ‡L�L�$ð#!ð$ ‡N�N�Dð%!ð& ‡K�K�ð'!ð( ‡K�K�ð)!ð* ‡K�K�ð+!ð, ‡K�K�Ø‡K�K�Ø‡K�K�Ø‡M�M�3Ø‡O�O�SØ‡L�L�#Ø‡N�N�CØ‡L�L�#Ø‡N�N�CØ
ˆDØ×Ñ�tñA!€òH-ò
ñ$ ‘
Ð0Ó1Ô 2ò/ð ˜S # s¨C°Ð5Ð õ÷$=÷(8÷&	õ*÷
r   