ó
    Š*£h8«  ã                  óv  • % S r SSKJr  SSKJrJrJrJrJrJ	r	J
r
JrJrJr  SSKJr  SSKrSSKrSSKJr  SSKrSSKrSSKJrJr  SSKJr  SS	KJr  SS
KJr  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&J'r'  Sr(\)\*\+4   r,\-\+\4   r.\\/\,   \.\./\/\,   4   r0S8S jr1S9S:S jjr2S;S jr3 " S S\/\,   5      r4 " S S5      r5S<S jr6S=S jr7S>S jr8S?S jr9S?S jr:S@S jr;SAS jr<\<" \15      r=    SBS jr>    SBS jr?    SCS  jr@S@S! jrAS@S" jrBS@S# jrCS@S$ jrDS@S% jrES@S& jrFS@S' jrGS@S( jrH    SBS) jrI\B\A\E\F\C4rJS*\KS+'       SDS, jrLSES- jrMS\JSS.4   SFS/ jjrNSGS0 jrO " S1 S2\R                   5      rQ\B\A\E\F\C\@\D\?\>\I\;\GS3.rRS4R§                  S5 \RR©                  5        5       5      rU " S6 S75      rV\V" 5       rWg)HzGTransform a string with Python-like source code into SymPy expression. é    )Úannotations)
Úgenerate_tokensÚ
untokenizeÚ
TokenErrorÚNUMBERÚSTRINGÚNAMEÚOPÚ	ENDMARKERÚ
ERRORTOKENÚNEWLINE)Ú	iskeywordN)ÚStringIO)ÚAnyÚCallable)Úreduce)ÚAssumptionKeys)ÚBasic)ÚSymbol)ÚFunction©Ú	func_name)ÚMaxÚMinÚ c                óŠ   • SU ;   a  g [         R                  " SU -   5      (       + $ ! [         a    [        U 5      S:„  s $ f = f)zÿ
Predicate for whether a token name can be split into multiple tokens.

A token is splittable if it does not contain an underscore character and
it is not the name of a Greek letter. This is used to implicitly convert
expressions like 'xyz' into 'x*y*z'.
Ú_FzGREEK SMALL LETTER é   )ÚunicodedataÚlookupÚKeyErrorÚlen)Ú
token_names    ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/parsing/sympy_parser.pyÚ_token_splittabler%      sL   € ð ˆjÓØð#Ü×%Ò%Ð&;¸jÑ&HÓIÔIÐIøÜó #Ü�:‹ Ñ"Ò"ð#ús   ‰' §AÁAc                ó®   • UR                  U S   5      nU(       d  UR                  U S   5      n[        U5      =(       a    [        U[        5      (       + $ )zœ
Predicate for whether a token name represents a callable function.

Essentially wraps ``callable``, but looks up the token name in the
locals and globals.
r   )ÚgetÚcallableÚ
isinstancer   )ÚtokenÚ
local_dictÚglobal_dictÚ	nextTokenÚfuncs        r$   Ú_token_callabler/   -   sD   € ð �>‰>˜% ™(Ó#€DÞØ�‰˜u Q™xÓ(ˆÜ�D‹>×:¤*¨T´6Ó":Ô:Ð:ó    c                ó˜  • U/ :X  d  US   S   S:X  a
  [        5       e[        U 4[        S4/n[        S4/nSn[        U5      n[	        US S S2   5       Hr  u  pgUu  p‰XV-
  S-
  n
U	S:X  a  US-  nOU	S:X  a  US-  nUS:X  d  M/  U
S-
  S:¼  a*  XS-
     S   [        :X  a  US U
S-
   U-   XS-
  S  -   U-   s  $ US U
 U-   XS  -   U-   s  $    U$ )Néÿÿÿÿr   Ú(Ú)r   )r   r	   r
   r"   Ú	enumerate)ÚnameÚresultÚ	beginningÚendÚdiffÚlengthÚindexr*   ÚtoknumÚtokvalÚis              r$   Ú_add_factorial_tokensr@   :   s  € Ø�ƒ|�v˜b‘z !‘}¨Ó+Ü‹lÐä˜�¤ C˜yÐ)€IÜ�ˆ9ˆ+€Cà€DÜ�‹[€Fä! &©¨2¨¡,Ö/‰ˆØ‰ˆØ‰N˜QÑˆà�S‹=Ø�A‰I‰DØ�s‹]Ø�A‰IˆDà�1�9Ø�1‰u˜‹z˜f¨¡U™m¨AÑ.´$Ó6Ø˜f˜q 1™u�~¨	Ñ1°F¸q¹5¸6°NÑBÀSÑHÒHà˜b˜q�z IÑ-°°r°
Ñ:¸SÑ@Ò@ñ 0ð €Mr0   c                  ó   • \ rS rSrSrSrg)ÚParenthesisGroupéV   z9List of tokens representing an expression in parentheses.© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__rD   r0   r$   rB   rB   V   s   † ÙCÚr0   rB   c                  ó<   • \ rS rSrSrS	S
S jjrSS jrS rS rSr	g)ÚAppliedFunctioné[   zz
A group of tokens representing a function and its arguments.

`exponent` is for handling the shorthand sin^2, ln^2, etc.
Nc                óD   • Uc  / nXl         X l        X0l        / SQU l        g )N©ÚfunctionÚargsÚexponent)rP   rQ   rR   Úitems)ÚselfrP   rQ   rR   s       r$   Ú__init__ÚAppliedFunction.__init__a   s#   € ØÑØˆHØ ŒØŒ	Ø ŒÚ5ˆ�
r0   c                ó4   • U R                   /U R                  Q$ )z1Return a list of tokens representing the function)rP   rQ   ©rT   s    r$   ÚexpandÚAppliedFunction.expandi   s   € à—‘Ð* §	¡	Ð*Ð*r0   c                ó2   • [        X R                  U   5      $ ©N)ÚgetattrrS   )rT   r<   s     r$   Ú__getitem__ÚAppliedFunction.__getitem__m   s   € Ü�tŸZ™Z¨Ñ.Ó/Ð/r0   c                ó\   • SU R                   < SU R                  < SU R                  < S3$ )NzAppliedFunction(z, r4   rO   rX   s    r$   Ú__repr__ÚAppliedFunction.__repr__p   s    � Ø04·´¸t¿y¼yØ04·´ð?ð 	?r0   )rQ   rR   rP   rS   r\   )rP   ÚTOKENrQ   rB   )Úreturnúlist[TOKEN])
rE   rF   rG   rH   rI   rU   rY   r^   ra   rJ   rD   r0   r$   rL   rL   [   s   † ñö
6ô+ò0õ?r0   rL   c                óª   • / nU  HJ  n[        U[        5      (       a!  UR                  UR                  5       5        M9  UR	                  U5        ML     U$ r\   )r)   rL   ÚextendrY   Úappend)r7   Úresult2Útoks      r$   Ú_flattenrk   u   sC   € Ø€GÛˆÜ�cœ?×+Ñ+Ø�N‰N˜3Ÿ:™:›<Ö(à�N‰N˜3Öñ	 ð
 €Nr0   c                ó   ^ • SU 4S jjnU$ )Nc                ó4  >• / n/ nSnU  Hø  nUS   [         :X  aº  US   S:X  a   UR                  [        / 5      5        US-  nO‘US   S:X  aˆ  US   R                  U5        UR                  5       n[	        U5      S:”  a  US   R                  U5        O9USS nT
" UUU5      nUS   /U-   US   /-   n	UR                  [        U	5      5        US-  nMÊ  U(       a  US   R                  U5        Mç  UR                  U5        Mú     U(       a  [        S5      eU$ )zcGroup tokens between parentheses with ParenthesisGroup.

Also processes those tokens recursively.

r   r   r3   r4   r2   zMismatched parentheses)r
   rh   rB   Úpopr"   rg   r   )Útokensr+   r,   r7   ÚstacksÚ
stacklevelr*   ÚstackÚinnerÚ
parenGroupÚrecursors             €r$   Ú_innerÚ"_group_parentheses.<locals>._inner€   s'  ø€ ð 24ˆØ)+ˆØˆ
ÛˆEØ�Q‰xœ2‹~Ø˜‘8˜s“?Ø—M‘MÔ"2°2Ó"6Ô7Ø !‘O‘JØ˜1‘X “_Ø˜2‘J×%Ñ% eÔ,Ø"ŸJ™J›L�Eä˜6“{ Q“ð ˜r™
×)Ñ)¨%Õ0ð !& a¨ ˜Ù (¨Ø)3Ø)4ó!6˜ð ',¨A¡h Z°%Ñ%7¸5À¹9¸+Ñ%E˜
ØŸ™Ô&6°zÓ&BÔCØ !‘O�JÙÞØ�r‘
×!Ñ! %Ö(à—‘˜eÖ$ñ7 ö8 ÜÐ5Ó6Ð6Øˆr0   ©ro   re   r+   ÚDICTr,   ry   rD   )ru   rv   s   ` r$   Ú_group_parenthesesrz      s   ø€ ÷'ðP €Mr0   c                ó.  • / nSnU  HŠ  n[        U[        5      (       a=  U(       a#  [        XAU5      (       a  [        XE5      US'   SnMB  UR	                  U5        MU  US   [
        :X  a  UnUR                  U5        Mw  SnUR                  U5        MŒ     U$ )z©Convert a NAME token + ParenthesisGroup into an AppliedFunction.

Note that ParenthesisGroups, if not applied to any function, are
converted back into lists of tokens.

Nr2   r   )r)   rB   r/   rL   rg   r	   rh   )ro   r+   r,   r7   Úsymbolrj   s         r$   Ú_apply_functionsr}   «   sˆ   € ð -/€FØ€FÛˆÜ�cÔ+×,Ñ,Þœ/¨&¸k×JÑJÜ,¨VÓ9��r‘
Ø’à—‘˜cÖ"Ø�‰V”t‹^ØˆFØ�M‰M˜#ÖàˆFØ�M‰M˜#Öñ ð €Mr0   c                ó  • / nSn[        X SS 5       GHM  u  pVUR                  U5        U(       a  SnM"  US   [        :X  a  US   S:X  a  US   [        :X  a  SnMI  [	        U[
        5      (       a¦  [	        U[
        5      (       a  UR                  [        S45        MŒ  U[        S4:X  aB  UR                  S   S	:X  a  UR                  S   S
4Ul        UR                  [        S45        MÚ  US   [        :X  a  UR                  [        S45        GM  GM  U[        S4:X  a  [	        U[
        5      (       a  UR                  [        S45        GM?  US   [        :X  a  UR                  [        S45        GMf  U[        S4:X  a  UR                  [        S45        GMŒ  GM�  US   [        :X  d  GMŸ  [        XQU5      (       a  GM³  [	        U[
        5      (       d  US   [        :X  a+  [        XaU5      (       a  UR                  [        S45        GM   U[        S4:X  a  UR                  [        S45        GM&  US   [        :X  d  GM6  UR                  [        S45        GMP     U (       a  UR                  U S   5        U$ )ar  Implicitly adds '*' tokens.

Cases:

- Two AppliedFunctions next to each other ("sin(x)cos(x)")

- AppliedFunction next to an open parenthesis ("sin x (cos x + 1)")

- A close parenthesis next to an AppliedFunction ("(x+2)sin x")
- A close parenthesis next to an open parenthesis ("(x+2)(x+3)")

- AppliedFunction next to an implicitly applied function ("sin(x)cos x")

Fr   Nr   Ú.TÚ*r3   r   r   r4   r2   )Úziprh   r
   r	   r)   rL   rP   r/   )ro   r+   r,   r7   Úskiprj   ÚnextToks          r$   Ú_implicit_multiplicationr„   Ä   sú  € ð  -/€FØ€DÜ˜F¨1¨2 J×/‰ˆØ�‰�cÔÞØˆDÙØˆq‰6”R‹<˜C ™F c›M¨g°a©j¼DÓ.@àˆDÙÜ�cœ?×+Ñ+Ü˜'¤?×3Ñ3Ø—‘œr 3˜iÖ(ØœR ˜IÓ%à—<‘< ‘? jÓ0Ø$'§L¡L°¡O°XÐ#>�C”LØ—‘œr 3˜iÖ(Ø˜‘œtÓ#à—‘œr 3˜i×(ò $ð ”r˜3�iÓÜ˜g¤×7Ñ7à—M‘M¤2 s )×,Ø˜Q‘Z¤4Ó'à—M‘M¤2 s )×,Ø¤ S 	Ó)à—M‘M¤2 s )×,ò *ð �Q‘œ4–¬¸È×(UÔ(UÜ˜g¤×7Ñ7Ø˜Q‘Z¤4Ó'¬O¸GÐQ\×,]Ñ,]à—M‘M¤2 s )×,Ø¤ S 	Ó)à—M‘M¤2 s )×,Ø˜Q‘Z¤4Ö'à—M‘M¤2 s )×,ñS 0öT Ø�‰�f˜R‘jÔ!Ø€Mr0   c                ó´  • / nSnSnSn[        X SS 5       GH  u  pxUR                  U5        US   [        :X  aI  US   [        [        [
        4;  a1  [        XqX(5      (       a  UR                  [        S45        US-  nMk  Mm  US   [        :X  a-  US   [        :X  a   US   S:X  a  [        XqU5      (       a  SnM¥  M§  U(       a�  [        U[        5      (       d  US   [        :X  a\  US   S:X  aP  US   [        :X  a	  US   S:X  d7  US   [        :X  a	  US   S:X  d  UR                  [        S45        US-  nSnGM&  GM)  GM,  GM/  U(       d  GM9  US   [        :X  a  US   S	;   a  SnGMT  U(       a  US-  nGMc  UR                  [        S
45        US-  nGM‚     U (       a  UR                  U S   5        U(       a  UR                  [        S
4/U-  5        U$ )z+Adds parentheses as needed after functions.r   Fr   Nr3   ú**Tr€   )Ú^r†   r€   r4   r2   )
r�   rh   r	   r
   r   r   r/   r)   rL   rg   )	ro   r+   r,   r7   ÚappendParenr‚   ÚexponentSkiprj   rƒ   s	            r$   Ú_implicit_applicationrŠ     sÅ  € à,.€FØ€KØ€Dà€Lä˜F¨1¨2 J×/‰ˆØ�‰�cÔØ�‰F”d‹N˜w q™z´"´iÄÐ1IÓIÜ˜s°×EÑEØ—‘œr 3˜iÔ(Ø˜qÑ ’ñ Fð �!‰fœ‹n ¨¡¬rÓ!1°g¸a±jÀDÓ6HÜ˜s°×<Ñ<Ø#’ñ =æô
 ˜3¤×0Ñ0Ø˜‘Fœb“L S¨¡V¨s£]ð   ™
¤bÓ(¨W°Q©Z¸3Ó->Ø" 1™:¬Ó+°¸±
¸cÓ0AØŸ™¤r¨3 iÔ0Ø# qÑ(˜Ø#(“Lò	 .?ò	 &3’L÷ ‰[Ø�q‰zœRÓ G¨A¡JÐ2BÓ$BØ�ÚÞØ˜‘	�ÚØ�M‰Mœ2˜s˜)Ô$Ø˜1Ñ‹KñC 0öF Ø�‰�f˜R‘jÔ!æØ�‰œ˜C�y�k KÑ/Ô0Ø€Mr0   c                ó6  • / n/ nSnSn[        X SS 5       GHJ  u  pxUS   [        :X  a*  US   [        :X  a  US   S:X  a  [        XqU5      (       a  SnOüU(       a�  US   [        :X  a  US   S:X  a  [        S4nUR	                  U5        US   US   s=:X  a
  [        :X  a  O  OUS   S	:X  a  US   S
:X  a  SnUS   US   s=:X  a
  [        :X  a  O  OUS   S:X  a  US   S
:X  a  SnUS	 MÔ  U(       a^  U(       dW  US   [        :X  a  US   S
:X  a  US-  nOUS   S	:X  a  US-  nUS:X  a'  UR	                  U5        UR                  U5        / nGM9  UR	                  U5        GMM     U (       a  UR	                  U S   5        U(       a  UR                  U5        U$ )aP  Allows functions to be exponentiated, e.g. ``cos**2(x)``.

Examples
========

>>> from sympy.parsing.sympy_parser import (parse_expr,
... standard_transformations, function_exponentiation)
>>> transformations = standard_transformations + (function_exponentiation,)
>>> parse_expr('sin**4(x)', transformations=transformations)
sin(x)**4
Fr   r   Nr†   Tr   r   r4   r3   r€   r2   )r�   r	   r
   r/   rh   rg   )	ro   r+   r,   r7   rR   Úconsuming_exponentÚlevelrj   rƒ   s	            r$   Úfunction_exponentiationrŽ   8  s•  € ð €FØ€HØÐØ€EÜ˜F¨1¨2 J×/‰ˆØˆq‰6”T‹>˜g a™j¬BÓ.°7¸1±:ÀÓ3EÜ˜s°×<Ñ<Ø%)Ð"øÞØ�1‰vœ‹~ # a¡&¨JÓ"6Ü˜XÐ&�Ø�O‰O˜CÔ ð �1‰v˜ ™Õ)¤rÖ)¨c°!©f¸«mÀÈÁ
ÈcÓ@QØ%*Ð"à�1‰v˜ ™Õ)¤rÖ)¨c°!©f¸«mÀÈÁ
ÈcÓ@QØ%*Ð"Ø˜R�LÙÞÖ0Ø�1‰vœ‹|Ø�q‘6˜S“=Ø˜Q‘J‘EØ˜‘V˜s“]Ø˜Q‘J�EØ˜‹zØ—‘˜cÔ"Ø—‘˜hÔ'Ø�ÚØ�‰�c×ñ9 0ö: Ø�‰�f˜R‘jÔ!ÞØ�‰�hÔØ€Mr0   c                ó   ^ • SU 4S jjnU$ )aò  Creates a transformation that splits symbol names.

``predicate`` should return True if the symbol name is to be split.

For instance, to retain the default behavior but avoid splitting certain
symbol names, a predicate like this would work:


>>> from sympy.parsing.sympy_parser import (parse_expr, _token_splittable,
... standard_transformations, implicit_multiplication,
... split_symbols_custom)
>>> def can_split(symbol):
...     if symbol not in ('list', 'of', 'unsplittable', 'names'):
...             return _token_splittable(symbol)
...     return False
...
>>> transformation = split_symbols_custom(can_split)
>>> parse_expr('unsplittable', transformations=standard_transformations +
... (transformation, implicit_multiplication))
unsplittable
c                óœ  >• / nSnSnU  GH½  nU(       a  SnM  SnUS   [         :X  a  US   S;   a  SnGO�U(       Gay  US   [         :X  Gak  US   SS nT" U5      (       GaS  US   S   nUSS 2	 Sn	U	[        U5      :  Ga-  Xy   n
X¡;   d  X¢;   a  UR                  [         SU
-  45        OíU
R                  5       (       a•  U
/n[	        U	S-   [        U5      5       H4  n	Xy   R                  5       (       d  U	S-  n	  OUR                  Xy   5        M6     S	R                  U5      n
UR                  [         S
4[        S4[         SU
-  4[        S4/5        OCU	[        U5      :X  a  UOSnUR                  [         U4[        S4[         SU
-  4[        S4/5        U	S-  n	U	[        U5      :  a  GM-  SnSnGMª  SnUR                  U5        GMÀ     U$ )NFr   r   )r   r   Tr2   éþÿÿÿz%sr   ÚNumberr3   z'%s'r4   r   )r	   r"   rh   ÚisdigitÚrangeÚjoinrg   r
   )ro   r+   r,   r7   ÚsplitÚsplit_previousrj   r|   Útok_typer?   ÚcharÚcharsÚuseÚ	predicates                €r$   Ú_split_symbolsÚ,split_symbols_custom.<locals>._split_symbols‚  sÙ  ø€ Ø ˆØˆØˆäˆCÞà$�ÙØ ˆNà�1‰vœ‹~ # a¡&Ð,BÓ"BØ’ç˜3˜q™6¤Tœ>Ø˜Q™  "˜�á˜V×$Ò$Ø% b™z¨!™}�HØ˜r™s˜à�AØœc &›kœ/Ø%™y˜ØÓ-°Ó1DØ"ŸM™M¬4°¸±Ð*=Õ>Ø!Ÿ\™\Ÿ^™^Ø%) F˜EÜ%*¨1¨q©5´#°f³+Ö%> Ø'-¡y×'8Ñ'8×':Ñ':Ø$%¨¡F AÙ$)Ø %§¡¨V©YÖ 7ñ	 &?ð
 $&§7¡7¨5£>˜DØ"ŸM™M¬D°(Ð+;¼bÀ#¸YÜ,0°&¸4±-Ð+@Ä2ÀsÀ)ð+Mõ Nð /0´3°v³;Ó.>¡(ÀH˜CØ"ŸM™M¬D°#¨;¼¸S¸	Ü,0°&¸4±-Ð+@Ä2ÀsÀ)ð+Mô Nà˜Q™˜ð% œc &›kž/ð, "�EØ%)�NÚð "�Eà�M‰M˜#×ñ_ ðb ˆr0   rx   rD   )rœ   r�   s   ` r$   Úsplit_symbols_customrŸ   l  s   ø€ ÷,6ðp Ðr0   c                óx   • [        [        5      " XU5      n[        X1U5      n[        XAU5      n[	        U5      nU$ )aØ  Makes the multiplication operator optional in most cases.

Use this before :func:`implicit_application`, otherwise expressions like
``sin 2x`` will be parsed as ``x * sin(2)`` rather than ``sin(2*x)``.

Examples
========

>>> from sympy.parsing.sympy_parser import (parse_expr,
... standard_transformations, implicit_multiplication)
>>> transformations = standard_transformations + (implicit_multiplication,)
>>> parse_expr('3 x y', transformations=transformations)
3*x*y
)rz   Úimplicit_multiplicationr}   r„   rk   ©ro   r+   r,   Úres1Úres2Úres3r7   s          r$   r¡   r¡   Æ  s<   € ô" Ô5Ô6°vÈ;ÓW€DÜ˜D¨kÓ:€DÜ# D°kÓB€DÜ�d‹^€FØ€Mr0   c                óx   • [        [        5      " XU5      n[        X1U5      n[        XAU5      n[	        U5      nU$ )aé  Makes parentheses optional in some cases for function calls.

Use this after :func:`implicit_multiplication`, otherwise expressions
like ``sin 2x`` will be parsed as ``x * sin(2)`` rather than
``sin(2*x)``.

Examples
========

>>> from sympy.parsing.sympy_parser import (parse_expr,
... standard_transformations, implicit_application)
>>> transformations = standard_transformations + (implicit_application,)
>>> parse_expr('cot z + csc z', transformations=transformations)
cot(z) + csc(z)
)rz   Úimplicit_applicationr}   rŠ   rk   r¢   s          r$   r§   r§   Þ  s<   € ô" Ô2Ô3°FÈÓT€DÜ˜D¨kÓ:€DÜ  °;Ó?€DÜ�d‹^€FØ€Mr0   c                óR   • [         [        [        [        4 H  nU" XU5      n M     U $ )a6  Allows a slightly relaxed syntax.

- Parentheses for single-argument method calls are optional.

- Multiplication is implicit.

- Symbol names can be split (i.e. spaces are not needed between
  symbols).

- Functions can be exponentiated.

Examples
========

>>> from sympy.parsing.sympy_parser import (parse_expr,
... standard_transformations, implicit_multiplication_application)
>>> parse_expr("10sin**2 x**2 + 3xyz + tan theta",
... transformations=(standard_transformations +
... (implicit_multiplication_application,)))
3*x*y*z + 10*sin(x**2)**2 + tan(theta)

)Úsplit_symbolsr¡   r§   rŽ   )r7   r+   r,   Ústeps       r$   Ú#implicit_multiplication_applicationr«   ö  s1   € ô0 Ô 7Ü%Ô'>ó@ˆá�f¨+Ó6Šñ@ð €Mr0   c                ó¼  • / nSnU R                  S5        [        X SS 5       GH³  u  pVUu  pxUu  pšU[        :X  Ga…  UnUS;   d\  [        U5      (       dL  US   [        :X  a	  US   S:X  d6  US   [        :X  a  US   S;   a  U	[        :X  a  U
S:X  d  X±;   a$  X   [
        La  UR                  [        U45        M–  X±;   ah  UR                  [
        [        5       5      R                  U5        U
S	:X  a  [        U5      X'   O[        U5      X'   UR                  [        U45        GM  X²;   aN  X+   n[        U[        [        [        45      (       d  [        U5      (       a  UR                  [        U45        GMV  UR!                  [        U
S	:w  a  S
OS4[        S	4[        [#        [%        U5      5      4[        S4/5        OUR                  Xx45        Xx4nGM¶     U$ )zAInserts calls to ``Symbol``/``Function`` for undefined variables.)r2   r   r   N)ÚTrueÚFalseÚNoner   r   )r3   Ú,Ú=r3   r   r   r4   )rh   r�   r	   r   r
   ÚnullÚ
setdefaultÚsetÚaddr   r   r)   r   r   Útyper(   rg   ÚreprÚstr)ro   r+   r,   r7   ÚprevTokrj   rƒ   ÚtokNumÚtokValÚ
nextTokNumÚ
nextTokValr6   Úobjs                r$   Úauto_symbolr¿     s±  € à€FØ€Gà
‡M�M�(ÔÜ˜F¨1¨2 J×/‰ˆØ‰ˆØ!(Ñˆ
Ø”TŒ>ØˆDàÐ1Ó1Ü  —‘à ™
¤bÓ(¨W°Q©Z¸3Ó->à ™
¤bÓ(¨W°Q©Z¸:Ó-EØ&¬"Ó,°¸sÓ1BàÓ)¨jÑ.>ÄdÒ.JØ—‘œt T˜lÔ+ÙØÓ#Ø×%Ñ%¤d¬C«EÓ2×6Ñ6°tÔ<Ø Ó$Ü'/°£~�JÒ$ä'-¨d£|�JÑ$Ø—‘œt T˜lÔ+ÚØÓ$Ø!Ñ'�Ü˜c¤N´E¼4Ð#@×AÑAÄXÈcÇ]Á]Ø—M‘M¤4¨ ,Ô/Úà�M‰MÜ :°Ó#4‘x¸*ÐEÜ�S�	Ü”tœC ›I“Ð'Ü�S�	ð	õ ð �M‰M˜6Ð*Ô+àÐ"‹ñQ 0ðT €Mr0   c                ó0  • / nSnU S   u  pV[        U 5      nU[        :X  aä  US:X  aÞ  US:X  d  US:X  a#  U S   S   [        :X  a  UR                  U 5        U$ US:”  a§  UR                  [        S4[        S4[        S4[        S	4[        S	4/5        U SS
  Hj  u  p‰U[        :X  a
  U	S:X  a  Sn	SnU(       d  U[        :X  a  U	S;   a  [        S5      eU(       a  UR                  SX‰45        MW  UR                  SX‰45        Ml     U$ UR                  U 5        U$ )z¡Substitutes "lambda" with its SymPy equivalent Lambda().
However, the conversion does not take place if only "lambda"
is passed because that is a syntax error.

Fr   Úlambdaé   é   r   ÚLambdar3   r4   NÚ:r°   T)r€   r†   z)Starred arguments in lambda not supportedr2   r‘   )r"   r	   r   rg   r
   r   Úinsert)
ro   r+   r,   r7   Úflagr=   r>   ÚtokLenrº   r»   s
             r$   Úlambda_notationrÉ   H  s%  € ð €FØ€DØ˜A‘Y�N€FÜ�‹[€Fà”ƒ~˜& HÓ,Ø�Q‹;˜& A›+¨&°©)°A©,¼'Ó*Að �M‰M˜&Ô!ð, €Mð+ �a‹ZØ�M‰MÜ�xÐ Ü�S�	Ü�S�	Ü�S�	Ü�S�	ðô ð #)¨¨£*‘�ØœR“< F¨c£MØ �FØ�DÞ ¬"£°¸;Ó1FÜ$Ð%PÓQÐQÞØ—M‘M " vÐ&6Ö7à—M‘M " vÐ&6Ö7ñ #-ð €Mð 	�‰�fÔà€Mr0   c                óF  • / nSnU  H–  u  pVU[         :X  a  US:X  a  US-  nM  U[        :X  a*  UnUS:X  a  US-  nM5  SnUR                  [         U45        MP  US:X  a  [        SU5      nOUS:X  a  [        SU5      nOUS:”  a  [        eSnUR                  XV45        M˜     U$ )z'Allows standard notation for factorial.r   Ú!r   Ú	factorialrÂ   Ú
factorial2)r
   r   rh   r@   r   )ro   r+   r,   r7   Ú
nfactorialr=   r>   Úops           r$   Úfactorial_notationrÐ   p  s®   € à€FØ€JÛ ‰ˆØ”R‹<˜F c›Mà˜!‰OŠJØ”zÓ!ØˆBØ�S‹yØ˜a‘’
à�
Ø—‘œr 2˜hÖ'à˜Q‹Ü.¨{¸FÓC‘Ø˜q“Ü.¨|¸VÓD‘Ø˜a“Ü Ð ØˆJØ�M‰M˜6Ð*Ö+ñ' !ð( €Mr0   c                ó¾   • / nU  HT  u  pEU[         :X  a3  US:X  a  UR                  [         S45        M.  UR                  XE45        MB  UR                  XE45        MV     U$ )z-Treats XOR, ``^``, as exponentiation, ``**``.r‡   r†   )r
   rh   )ro   r+   r,   r7   r=   r>   s         r$   Úconvert_xorrÒ   ‹  sV   € à€FÛ ‰ˆØ”R‹<Ø˜‹}Ø—‘œr 4˜jÖ)à—‘˜vÐ.Ö/à�M‰M˜6Ð*Ö+ñ !ð €Mr0   c                óö  • / nS n/ nU  GHå  u  pgU[         :X  aœ  U(       dA  SU;   a;  SUR                  5       ;  a'  SUR                  5       ;  a  UR                  Xg45        OâU" U5      (       aD  [        U5      S:X  d"  [        U5      S:X  a&  U" US   S   5      (       a  UR                  Xg45        O‘/ nOŽU[        :X  a‚  US	:X  a'  [        U5      S:X  a  UR                  [        U45        OWUS
:X  a'  [        U5      S:¼  a  UR                  [        U45        O*US:X  a  U(       d  UR                  [         S45        O/ nO/ nUR                  Xg45        U(       d  GMV  US   S   S
:X  d  GMe  US[        U5      *  nUS   S   R                  S5      u  p‰US   S   n
[        U5      S:X  a
  X¥S   S   -  n
UR                  SS5      nU	R                  SS5      n	U
R                  SS5      n
S[        U	5      -  nXš4 Vs/ s H  oÌR                  S5      PM     snu  p�U=(       d    SnU	=(       d    SSU-   nnUS[        U
5      -  U-   nn[        S4[        S4[        S4[         U4[        S4[        S4[        S4[        S4[         U4[        S4[         U4[        S4[        S4[        S4[        S4[         U4[        S4[         U4[        S4[        S4/nUR                  U5        / nGMè     U$ s  snf )zk
Allows 0.2[1] notation to represent the repeated decimal 0.2111... (19/90)

Run this before auto_number.

c                ó&   • [        S U  5       5      $ )Nc              3  ó*   #   • U  H	  oS ;   v •  M     g7f)Ú0123456789_NrD   )Ú.0r?   s     r$   Ú	<genexpr>Ú6repeated_decimals.<locals>.is_digit.<locals>.<genexpr>¤  s   é € Ð1ªq¨!˜Ö%ªqùs   ‚)Úall)Úss    r$   Úis_digitÚ#repeated_decimals.<locals>.is_digit£  s   € ÜÑ1©qÓ1Ó1Ð1r0   r   ÚeÚjrÂ   rÃ   r2   r   Ú[Ú]z0.Nr   é   r   r   Ú0Ú1Ú9r3   ÚIntegerr4   Ú+ÚRationalr°   )
r   Úlowerrh   r"   r
   r–   ÚreplaceÚlstripr	   rg   )ro   r+   r,   r7   rÜ   Únumr=   r>   ÚpreÚpostÚrepetendÚzerosÚwÚ	repetendsÚaÚbÚcÚdrÞ   Úseqs                       r$   Úrepeated_decimalsrø   š  sÓ  € ð €Fò2ð €CÜ ‰ˆØ”VÓÞ˜C 6›M¨c¸¿¹»Ó.GØ˜6Ÿ<™<›>Ó)Ø—
‘
˜FÐ+Õ,Ù˜&×!Ñ!¤s¨3£x°1£}Ü˜“H “M¡h¨s°2©w°q©z×&:Ñ&:Ø—
‘
˜FÐ+Õ,à‘Ø”r‹\Ø˜‹}¤ S£¨Q£Ø—
‘
œB ˜<Õ(Ø˜3“¤3 s£8¨q£=Ø—
‘
œB ˜<Õ(Ø˜3“¦sà—
‘
œF D˜>Õ*à‘àˆCà�‰�vÐ&Ô'ç‰3�3�r‘7˜1‘: Ö$ð ˜Jœc #›h˜YÐ'ˆFØ˜A™˜q™	Ÿ™¨Ó,‰IˆCØ˜1‘v˜a‘yˆHÜ�3‹x˜1‹}Ø ™F 1™IÑ%�à—+‘+˜c 2Ó&ˆCØ—<‘<  RÓ(ˆDØ×'Ñ'¨¨RÓ0ˆHàœ˜D›	‘MˆEØ7;Ñ6FÓGÒ6F°Ÿx™x¨ž}Ñ6FÑG‰OˆDð —
�sˆAØ—;˜3  e¡ˆqˆAØ˜s¤3 x£=Ñ0°EÑ9ˆqˆAô �S�	Ü˜9Ð%Ü˜�IÜ ˜Ü˜�IÜ˜�IÜ˜:Ð&Ü˜�IÜ ˜Ü˜S˜	Ü ˜Ü˜�IÜ˜�IÜ˜:Ð&Ü˜�IÜ ˜Ü˜S˜	Ü ˜Ü˜�IÜ�S�	ð)ˆCð, �M‰M˜#ÔØ‹CñK !ðN €MùòA Hs   ÈK6c           	     óÎ  • / nU  HÜ  u  pEU[         :X  a»  Un/ nUR                  S5      (       a  USS n[        S4[        S4/nSU;   d"  SU;   d  SU;   aG  UR	                  S	5      (       d1  [        S
4[        S4[         [        [        U5      5      4[        S4/nO[        S4[        S4[         U4[        S4/nUR                  X‡-   5        MÊ  UR                  XE45        MÞ     U$ )z–
Converts numeric literals to use SymPy equivalents.

Complex numbers use ``I``, integer literals use ``Integer``, and float
literals use ``Float``.

)rß   ÚJNr2   r€   ÚIr   rÞ   ÚE)Ú0xÚ0XÚFloatr3   r4   ræ   )	r   Úendswithr
   r	   Ú
startswithr·   r¸   rg   rh   )	ro   r+   r,   r7   r=   r>   ÚnumberÚpostfixr÷   s	            r$   Úauto_numberr  ò  sð   € ð €Fã ‰ˆØ”VÓØˆFØˆGà�‰˜z×*Ñ*Ø  ˜�Ü ˜9¤t¨S kÐ2�à�f‹} #¨£-°3¸&³=Ø×*Ñ*¨<×8Ñ8Ü˜g�¬¨S¨	ÜœT¤# f£+Ó.Ð/´"°c°ð<‘ô ˜iÐ(¬2¨s¨)Ü˜Fð6$Ü&(¨# Yð0�ð �M‰M˜#™-Ö(à�M‰M˜6Ð*Ö+ñ' !ð* €Mr0   c                óî   • / nSnU  Hj  u  pVU[         :X  a  US:X  a  SnSnUR                  XV45        M-  US:X  a%  U[        :X  a  SnUR                  [        U45        MX  UR                  XV45        Ml     U$ )z=Converts floats into ``Rational``. Run AFTER ``auto_number``.Frÿ   Trè   )r	   rh   r   r   )ro   r+   r,   r7   Úpassed_floatr=   r>   s          r$   Úrationalizer    s{   € à€FØ€LÛ ‰ˆØ”T‹>Ø˜Ó Ø#�Ø#�Ø�M‰M˜6Ð*Ö+Ø˜TÓ! f´Ó&6Ø ˆLØ�M‰Mœ6 6Ð*Ö+à�M‰M˜6Ð*Ö+ñ !ð €Mr0   c                ó2  • / n[         S4U ;   a†  UR                  [        S45        UR                  [         S45        U  H9  nU[         S4:X  a  UR                  [         S45        M(  UR                  U5        M;     UR                  [         S45        U$ U nU$ )a‹  Transforms the equals sign ``=`` to instances of Eq.

This is a helper function for ``convert_equals_signs``.
Works with expressions containing one equals sign and no
nesting. Expressions like ``(1=2)=False`` will not work with this
and should be used with ``convert_equals_signs``.

Examples: 1=2     to Eq(1,2)
          1*2=x   to Eq(1*2, x)

This does not deal with function arguments yet.

r±   ÚEqr3   r°   r4   )r
   rh   r	   )ro   r+   r,   r7   r*   s        r$   Ú_transform_equals_signr
  '  s�   € ð €FÜ
ˆC€y�FÓØ�‰”t˜T�lÔ#Ø�‰”r˜3�iÔ ÛˆEØœ˜S˜	Ó!Ø—‘œr 3˜iÔ(ÙØ�M‰M˜%Ö ñ	 ð
 	�‰”r˜3�iÔ ð €Mð ˆØ€Mr0   c                óx   • [        [        5      " XU5      n[        X1U5      n[        XAU5      n[	        U5      nU$ )a*  Transforms all the equals signs ``=`` to instances of Eq.

Parses the equals signs in the expression and replaces them with
appropriate Eq instances. Also works with nested equals signs.

Does not yet play well with function arguments.
For example, the expression ``(x=y)`` is ambiguous and can be interpreted
as x being an argument to a function and ``convert_equals_signs`` will not
work for this.

See also
========
convert_equality_operators

Examples
========

>>> from sympy.parsing.sympy_parser import (parse_expr,
... standard_transformations, convert_equals_signs)
>>> parse_expr("1*2=x", transformations=(
... standard_transformations + (convert_equals_signs,)))
Eq(2, x)
>>> parse_expr("(1*2=x)=False", transformations=(
... standard_transformations + (convert_equals_signs,)))
Eq(Eq(2, x), False)

)rz   Úconvert_equals_signsr}   r
  rk   r¢   s          r$   r  r  D  s<   € ô: Ô2Ô3°FÈÓT€DÜ˜D¨kÓ:€DÜ! $°KÓ@€DÜ�d‹^€FØ€Mr0   útuple[TRANS, ...]Ústandard_transformationsc                óØ   • / n[        U R                  5       5      n[        UR                  5       H  u  pg    nUR	                  Xg45        M     U H  n	U	" XAU5      nM     [        U5      $ )zh
Converts the string ``s`` to Python code, in ``local_dict``

Generally, ``parse_expr`` should be used.
)r   Ústripr   Úreadlinerh   r   )
rÛ   r+   r,   Útransformationsro   Ú
input_coder=   r>   r   Ú	transforms
             r$   Ústringify_exprr  p  sl   € ð €FÜ˜!Ÿ'™'›)Ó$€JÜ#2°:×3FÑ3FÖ#GÑˆ˜˜1˜aØ�‰�vÐ&Ö'ñ $Hó %ˆ	Ù˜6¨{Ó;Šñ %ô �fÓÐr0   c                ó   • [        XU5      nU$ )zb
Evaluate Python code generated by ``stringify_expr``.

Generally, ``parse_expr`` should be used.
)Úeval)Úcoder+   r,   Úexprs       r$   Ú	eval_exprr  ƒ  s   € ô Ø˜:ó'€Dà€Kr0   Tc                ó|  • Uc  0 nO5[        U[        5      (       d  [        S5      e[        U;   a  [	        S5      eUcn  0 n[        SU5        [        [        5      nUR                  5        H*  u  pg[        U[        R                  5      (       d  M&  XsU'   M,     [        US'   [        US'   O [        U[        5      (       d  [        S5      eU=(       d    Sn[        U[        5      (       a+  US	:X  a
  [        SS nOUS
:X  a
  [        SS nO[	        S5      eUn[        XX85      n	U(       d  [!        [#        U	5      SS5      n	 [%        X‘U5      n
UR'                  [        S5       H  n[        X'   M     U
$ ! [(         a:  nUR'                  [        S5       H  n[        X'   M     U[	        SU	< 35      eSnAff = f)a�  Converts the string ``s`` to a SymPy expression, in ``local_dict``.

.. warning::
    Note that this function uses ``eval``, and thus shouldn't be used on
    unsanitized input.

Parameters
==========

s : str
    The string to parse.

local_dict : dict, optional
    A dictionary of local variables to use when parsing.

global_dict : dict, optional
    A dictionary of global variables. By default, this is initialized
    with ``from sympy import *``; provide this parameter to override
    this behavior (for instance, to parse ``"Q & S"``).

transformations : tuple or str
    A tuple of transformation functions used to modify the tokens of the
    parsed expression before evaluation. The default transformations
    convert numeric literals into their SymPy equivalents, convert
    undefined variables into SymPy symbols, and allow the use of standard
    mathematical factorial notation (e.g. ``x!``). Selection via
    string is available (see below).

evaluate : bool, optional
    When False, the order of the arguments will remain as they were in the
    string and automatic simplification that would normally occur is
    suppressed. (see examples)

Examples
========

>>> from sympy.parsing.sympy_parser import parse_expr
>>> parse_expr("1/2")
1/2
>>> type(_)
<class 'sympy.core.numbers.Half'>
>>> from sympy.parsing.sympy_parser import standard_transformations,\
... implicit_multiplication_application
>>> transformations = (standard_transformations +
...     (implicit_multiplication_application,))
>>> parse_expr("2x", transformations=transformations)
2*x

When evaluate=False, some automatic simplifications will not occur:

>>> parse_expr("2**3"), parse_expr("2**3", evaluate=False)
(8, 2**3)

In addition the order of the arguments will not be made canonical.
This feature allows one to tell exactly how the expression was entered:

>>> a = parse_expr('1 + x', evaluate=False)
>>> b = parse_expr('x + 1', evaluate=False)
>>> a == b
False
>>> a.args
(1, x)
>>> b.args
(x, 1)

Note, however, that when these expressions are printed they will
appear the same:

>>> assert str(a) == str(b)

As a convenience, transformations can be seen by printing ``transformations``:

>>> from sympy.parsing.sympy_parser import transformations

>>> print(transformations)
0: lambda_notation
1: auto_symbol
2: repeated_decimals
3: auto_number
4: factorial_notation
5: implicit_multiplication_application
6: convert_xor
7: implicit_application
8: implicit_multiplication
9: convert_equals_signs
10: function_exponentiation
11: rationalize

The ``T`` object provides a way to select these transformations:

>>> from sympy.parsing.sympy_parser import T

If you print it, you will see the same list as shown above.

>>> str(T) == str(transformations)
True

Standard slicing will return a tuple of transformations:

>>> T[:5] == standard_transformations
True

So ``T`` can be used to specify the parsing transformations:

>>> parse_expr("2x", transformations=T[:5])
Traceback (most recent call last):
...
SyntaxError: invalid syntax
>>> parse_expr("2x", transformations=T[:6])
2*x
>>> parse_expr('.3', transformations=T[3, 11])
3/10
>>> parse_expr('.3x', transformations=T[:])
3*x/10

As a further convenience, strings 'implicit' and 'all' can be used
to select 0-5 and all the transformations, respectively.

>>> parse_expr('.3x', transformations='all')
3*x/10

See Also
========

stringify_expr, eval_expr, standard_transformations,
implicit_multiplication_application

Nz!expecting local_dict to be a dictzcannot use "" in local_dictzfrom sympy import *ÚmaxÚminz"expecting global_dict to be a dictrD   rÚ   Úimplicité   z!unknown transformation group namez<string>r  z-Error from parse_expr with transformed code: )r)   ÚdictÚ	TypeErrorr²   Ú
ValueErrorÚexecÚvarsÚbuiltinsrS   ÚtypesÚBuiltinFunctionTyper   r   r¸   ÚTr  ÚcompileÚevaluateFalser  rn   Ú	Exception)rÛ   r+   r  r,   ÚevaluateÚbuiltins_dictr6   r¾   Ú_transformationsr  Úrvr?   rÞ   s                r$   Ú
parse_exprr0  Ž  s£  € ðJ ÑØ‰
Ü˜
¤D×)Ñ)ÜÐ;Ó<Ð<Ü	�Ó	ÜÐ6Ó7Ð7àÑØˆÜÐ" KÔ0äœX›ˆØ&×,Ñ,Ö.‰IˆDÜ˜#œu×8Ñ8×9Ó9Ø$'˜DÓ!ñ /ô !ˆ�EÑÜ ˆ�EÒä˜¤T×*Ñ*ÜÐ<Ó=Ð=à%×+¨€OÜ�/¤3×'Ñ'Ø˜eÓ#Ü ¡˜tÑØ 
Ó*Ü   !˜uÑäÐ@ÓAÐAà*Ðä˜!¨ÓG€DæÜ”} TÓ*¨J¸Ó?ˆð
ZÜ�t¨Ó5ˆà—‘¤ bÖ)ˆAÜ ˆJ‹Mñ *àˆ	øÜó Zà—‘¤ bÖ)ˆAÜ ˆJ‹Mñ *à”ZÐ"OÐPTÉxÐ XÓYÐYûð	Zús   Å2E7 Å7
F;Æ5F6Æ6F;c                óæ   • [         R                  " U 5      n[        5       R                  U5      n[         R                  " UR
                  S   R                  5      n[         R                  " U5      $ )zG
Replaces operators with the SymPy equivalent and sets evaluate=False.
r   )ÚastÚparseÚEvaluateFalseTransformerÚvisitÚ
ExpressionÚbodyÚvalueÚfix_missing_locations)rÛ   ÚnodeÚtransformed_nodes      r$   r*  r*  E  sX   € ô �9Š9�Q‹<€DÜ/Ó1×7Ñ7¸Ó=Ðä—~’~Ð&6×&;Ñ&;¸AÑ&>×&DÑ&DÓEÐä×$Ò$Ð%5Ó6Ð6r0   c                  óˆ  • \ rS rSr\R
                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S\R                  S0rSr\R                  S	\R                   S
\R"                  S\R$                  S\R&                  S\R(                  S0rS rS rS rS rSrg)r4  iQ  ÚAddÚMulÚPowÚOrÚAndÚNot)#ÚAbsÚimÚreÚsignÚargÚ	conjugateÚacosÚacotÚacscÚasecÚasinÚatanÚacoshÚacothÚacschÚasechÚasinhÚatanhÚcosÚcotÚcscÚsecÚsinÚtanÚcoshÚcothÚcschÚsechÚsinhÚtanhÚexpÚlnÚlogÚsqrtÚcbrtÚNeÚLtÚLeÚGtÚGer	  c                ó¤  ^ • U 4S jn[        U[        UR                  UR                  5      / UR                  45      u  p4[        U5      S:X  a  US   $ [        R                  " [        R                  " T R                  [        R                     [        R                  " 5       S9U[        R                  " S[        R                  " SS9S9/S	9$ )
Nc                óž  >• U u  p#Uu  pEUR                   TR                  ;  a  [        S5      e[        R                  " [        R
                  " TR                  UR                      [        R                  " 5       S9TR                  U5      TR                  U5      /[        R                  " S[        R                  " SS9S9/S9nX&/-   U4$ )Nz3Only equation or inequality operators are supported©ÚidÚctxr,  F©r8  ©rG  r8  ©r.   rQ   Úkeywords)
Ú	__class__Úrelational_operatorsr"  r2  ÚCallÚNameÚLoadr5  ÚkeywordÚConstant)ÚaccÚop_rightr7   ÚleftrÏ   ÚrightÚnewrT   s          €r$   ÚreducerÚ7EvaluateFalseTransformer.visit_Compare.<locals>.reducern  sª   ø€ Ø‰LˆFØ ‰IˆBØ�|‰| 4×#<Ñ#<Ó<Ü Ð!VÓWÐWÜ—(’(Ü—X’XØ×0Ñ0°·±Ñ>ÄCÇHÂHÃJñð —j‘j Ó&¨¯
©
°5Ó(9Ð:ÜŸ+š+¨*¼C¿LºLÈuÑ<UÑVÐWñˆCð ˜E‘> 5Ð(Ð(r0   r   r   rm  r,  Frp  rq  rr  )r   r�   ÚopsÚcomparatorsr}  r"   r2  rv  rw  Ú	operatorsÚBitAndrx  ry  rz  )rT   r:  r€  rQ   r   s   `    r$   Úvisit_CompareÚ&EvaluateFalseTransformer.visit_Comparem  s›   ø€ õ	)ô Ø”S˜Ÿ™ 4×#3Ñ#3Ó4°r¸4¿9¹9°oó
‰ˆô ˆt‹9˜‹>Ø˜‘7ˆNÜ�xŠxÜ—’˜TŸ^™^¬C¯J©JÑ7¼S¿XºX»ZÑHØÜ—k’k j¼¿ºÈ5Ñ8QÑRÐSñ
ð 	
r0   c                óŠ  • / nU Hº  n[        U[        R                  5      (       a‡  UR                  n[        U[        R                  5      (       a  UR                  nUR                  U:X  a-  UR                  U R                  UR                  U5      5        M–  UR                  U5        M©  UR                  U5        M¼     U$ r\   )	r)   r2  rv  r.   rn  rg   ÚflattenrQ   rh   )rT   rQ   r.   r7   rG  Úarg_funcs         r$   r‰  Ú EvaluateFalseTransformer.flatten‡  s‹   € ØˆÛˆCÜ˜#œsŸx™x×(Ñ(ØŸ8™8�Ü˜h¬¯©×1Ñ1Ø'Ÿ}™}�HØ—;‘; $Ó&Ø—M‘M $§,¡,¨s¯x©x¸Ó">Ö?à—M‘M #Ö&à—‘˜cÖ"ñ ð ˆr0   c                óê  • UR                   R                  U R                  ;   GaM  U R                  UR                   R                     nU R                  UR                  5      nU R                  UR
                  5      nSn[        UR                   [        R                  5      (       a   [        R                  " [        R                  " S[        R                  " 5       S9[        R                  " [        R                  " 5       [        R                  " S5      S9U/[        R                  " S[        R                  " SS9S9/S	9nGO”[        UR                   [        R                   5      (       Gaj  [        UR
                  [        R                  5      (       a£  X4p4S
n[        R                  " [        R                  " S[        R                  " 5       S9U[        R                  " [        R                  " 5       [        R                  " S5      S9/[        R                  " S[        R                  " SS9S9/S	9nOž[        R                  " [        R                  " S[        R                  " 5       S9U[        R                  " [        R                  " 5       [        R                  " S5      S9/[        R                  " S[        R                  " SS9S9/S	9nU(       a  X4p4[        R                  " [        R                  " U[        R                  " 5       S9XC/[        R                  " S[        R                  " SS9S9/S	9nUS;   a!  U R#                  UR$                  U5      Ul        U$ U$ )NFr>  rm  r   )rÏ   Úoperandr,  rp  rq  rr  Tr?  )r=  r>  )rÏ   rt  r„  r5  r~  r}  r)   r2  ÚSubrv  rw  rx  ÚUnaryOpÚUSubrz  ry  ÚDivr‰  rQ   )rT   r:  Úsympy_classr~  r}  ÚrevÚnew_nodes          r$   Úvisit_BinOpÚ$EvaluateFalseTransformer.visit_BinOp–  s7  € Ø�7‰7×Ñ §¡Ô.ØŸ.™.¨¯©×):Ñ):Ñ;ˆKØ—J‘J˜tŸz™zÓ*ˆEØ—:‘:˜dŸi™iÓ(ˆDàˆCÜ˜$Ÿ'™'¤3§7¡7×+Ñ+ÜŸšÜŸš U´·²³
Ñ;ÜŸ+š+¬¯ª«¼S¿\º\È!»_ÑMÈuÐUÜ!Ÿkšk¨jÄÇÂÐSXÑ@YÑZÐ[ñ’ô
 ˜DŸG™G¤S§W¡W×-Ò-Ü˜dŸi™i¬¯©×5Ñ5Ø"'˜%Ø�CÜŸ8š8ÜŸš U´·²³
Ñ;Ø¤§¢¬s¯xªx«zÄ3Ç<Â<ÐPQÃ?Ñ SÐTÜ!Ÿkšk¨jÄÇÂÐSXÑ@YÑZÐ[ñ‘Dô  ŸHšHÜŸš U´·²³
Ñ;Ø¤§¢´·²³
ÄCÇLÂLÐQRÃOÑ!TÐUÜ!Ÿkšk¨jÄÇÂÐSXÑ@YÑZÐ[ñ�Eö Ø#�eÜ—x’xÜ—X’X ´#·(²(³*Ñ=Ø�]ÜŸ+š+¨*¼C¿LºLÈuÑ<UÑVÐWñˆHð ˜nÓ,à $§¡¨X¯]©]¸KÓ H�”àˆOØˆr0   c           	     óB  • U R                  U5      n[        UR                  [        R                  5      (       ad  UR                  R
                  U R                  ;   a@  UR                  R                  [        R                  " S[        R                  " SS9S95        U$ )Nr,  Frp  rq  )Úgeneric_visitr)   r.   r2  rw  rn  Ú	functionsrs  rh   ry  rz  )rT   r:  r”  s      r$   Ú
visit_CallÚ#EvaluateFalseTransformer.visit_CallÂ  sh   € Ø×%Ñ% dÓ+ˆÜ�d—i‘i¤§¡×*Ñ*¨t¯y©y¯|©|¸t¿~¹~Ó/MØ×Ñ×$Ñ$¤S§[¢[°ZÄsÇ|Â|ÐZ_ÑG`Ñ%aÔbØˆr0   rD   N)rE   rF   rG   rH   r2  r=  ÚMultr?  rŽ  r‘  ÚBitOrr…  ÚBitXorr„  r™  ÚNotEqrg  ÚLtEri  ÚGtEr	  ru  r†  r‰  r•  rš  rJ   rD   r0   r$   r4  r4  Q  s­   † à�‰�Ø�‰�%Ø�‰�Ø�‰�Ø�‰�Ø�	‰	�4Ø�
‰
�EØ�
‰
�Eð	€Ið€Ið 	�	‰	�4Ø�‰�Ø�‰�Ø�‰�Ø�‰�Ø�‰�ðÐò
ò4ò*õXr0   r4  )r   r   rÂ   rÃ   é   râ   r  é   é   é	   é
   é   Ú
c              #  óJ   #   • U  H  u  pU< S [        U5      < 3v •  M     g7f)z: Nr   )r×   r?   Úfs      r$   rØ   rØ   ×  s   é € Ð]ÒE\¹T¸Q«¬9°Q­<Õ8ÒE\ùs   ‚!#c                  ó*   • \ rS rSrSrS rS rS rSrg)Ú_TiÚ  z½class to retrieve transformations from a given slice

EXAMPLES
========

>>> from sympy.parsing.sympy_parser import T, standard_transformations
>>> assert T[:5] == standard_transformations
c                ó,   • [        [        5      U l        g r\   )r"   Ú_transformationÚNrX   s    r$   rU   Ú_T.__init__ã  s   € Ü”_Ó%ˆ�r0   c                ó   • [         $ r\   )r  rX   s    r$   Ú__str__Ú
_T.__str__æ  s   € ÜÐr0   c                ó¢  • [        U5      [        La  U4n/ nU H‹  n[        U5      [        L a)  UR                  [	        U R
                  5      U   5        M>  [        U5      [        L a2  UR                  [	        UR                  U R
                  5      6 5        M‚  [        S5      e   [        U Vs/ s H  n[        U   PM     sn5      $ s  snf )Nzunexpected slice arg)r¶   ÚtupleÚintrh   r”   r¯  Úslicerg   Úindicesr!  r®  )rT   Útr?   Útir   s        r$   r^   Ú_T.__getitem__é  s¢   € Ü�A‹wœ%ÒØ�ˆAØˆÛˆBÜ�B‹xœ3ŠØ—‘œ˜tŸv™v› rÑ*Ö+Ü�b“œUÒ"Ø—‘œ §
¡
¨4¯6©6Ó 2Ð3Ö4äÐ 6Ó7Ð7ñ ô ±!Ó4²!¨Q”o aÔ(±!Ñ4Ó5Ð5ùÒ4s   Â2C)r¯  N)	rE   rF   rG   rH   rI   rU   r²  r^   rJ   rD   r0   r$   r¬  r¬  Ú  s   † ñò&òõ6r0   r¬  )r#   r¸   rd   Úboolr\   )r*   rc   r+   ry   r,   ry   )r6   r¸   r7   re   rd   re   )r7   úlist[TOKEN | AppliedFunction])ru   ÚTRANS)ro   zlist[TOKEN | ParenthesisGroup]r+   ry   r,   ry   )ro   r½  r+   ry   r,   ry   rx   )rœ   zCallable[[str], bool])ro   re   r+   ry   r,   ry   rd   re   )r7   re   r+   ry   r,   ry   rd   re   )
rÛ   r¸   r+   ry   r,   ry   r  r  rd   r¸   )r+   ry   r,   ry   )rÛ   r¸   r+   úDICT | Noner  ztuple[TRANS, ...] | strr,   r¿  )rÛ   r¸   )XrI   Ú
__future__r   Útokenizer   r   r   r   r   r	   r
   r   r   r   ry  r   r2  r   Úior   r%  r&  Útypingr   r   Ú	functoolsr   Úsympy.assumptions.askr   Úsympy.core.basicr   Ú
sympy.corer   Úsympy.core.functionr   Úsympy.utilities.miscr   Ú(sympy.functions.elementary.miscellaneousr   r   r²   rµ  r¶  r¸   rc   r   ry   Úlistr¾  r%   r/   r@   rB   rL   rk   rz   r}   r„   rŠ   rŽ   rŸ   r©   r¡   r§   r«   r¿   rÉ   rÐ   rÒ   rø   r  r  r
  r  r  Ú__annotations__r  r  r0  r*  ÚNodeTransformerr4  r®  r•   rS   r  r¬  r(  rD   r0   r$   Ú<module>rÎ     sE  ðÚ MÝ "÷>÷ >÷ >õ ã 
Û Ý Û Û ß  Ý Ý 0Ý "Ý Ý (Ý *ß =ð 
€àˆc�3ˆh‰€ØˆC�ˆH�~€Ø�$�u‘+˜t TÐ*¨D°©KÐ7Ñ8€ô#ö 
;ôô8	�t˜E‘{ô 	÷
?ñ ?ô4ô)ôXô2>ôB0ôf1ôhNñn %Ð%6Ó7€ðØ)-ðØ2=ôð0Ø&*ðØ/:ôð0Ø59ðØ>Iôô>0ôf%ôPô6ôUôpôDô&ð:!Ø&*ð!Ø/:ô!ðP ˜Ð%6¸Øðð Ð+ó ð
Ø*ðØ/2ôô&ð 26à-Ø*.¸ðtZØ 7ðtZð (õtZôn	7ôu˜s×2Ñ2ô uðr ØØØØØ&ØØØØØØñ€ð —)‘)Ñ]À_×EZÑEZÔE\Ó]Ó]€÷6ñ 6ñ8 ƒD�r0   