
    g/                        d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d	 Z5d
 Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd  ZLd! ZMd" ZNd# ZOd$ ZPd% ZQdS )&    N)Q)SymbolFunctionFloatRationalIntegerIMulPowEqLtLeGtGeNe)exp	factorial
factorial2sinMinMax)And)Limit)raisesskip)
parse_exprstandard_transformationsrationalize
TokenErrorsplit_symbolsimplicit_multiplicationconvert_equals_signsconvert_xorfunction_exponentiationlambda_notationauto_symbolrepeated_decimals#implicit_multiplication_applicationauto_numberfactorial_notationimplicit_application_transformationTc                  l   t          d          } i dd| z  dt          d          dt          dd          d	ddt          z  z   d
t	          |           dt          |           dt          |           dt          | dz             dz
  dt          dd          dt          dd          dt          dd          dt          dd          dt          dd          dt          dd          dt          dd          dt          dd          d t          d!d"          t          d#d$          d%t          d           t          d&          t          d'          t          d          g| j        t          dd          t          t          ddd()          t          ddd()          d()          t          t          |           | d*d+,          t          j        |           d-	}|                                D ]\  }}t!          |          |k    sJ t#          t$          d.            t#          t$          d/            t#          t$          d0            t#          t$          d1            t#          t$          d2            t#          t$          d3            t#          t$          d4            d S )5Nxz2*x   z3.00   z22/7      z2+3jzexp(x)zx!zx!!z(x + 1)! - 1   z3.[3]
   z.0[3]   z3.2[3]a   z1.3[12]i  iJ  z	1 + 3.[3]   z	1 + .0[3]   z
1 + 3.2[3]   z.[0011]i  z0.1[00102] + 1ii i i'  i'  i _7 Fevaluater   -)dir)	z1.[0191]z10!z-(2)z[-1, -2, 3]zSymbol("x").free_symbolszS('S(3).n(n=3)')zfactorint(12, visual=True)zLimit(sin(x), x, 0, dir="-")z	Q.even(x)c                  ,    t          dt                    S Nr/   )r   r        a/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/parsing/tests/test_sympy_parser.py<lambda>z#test_sympy_parser.<locals>.<lambda>?   s    3011 rD   c                  &    t          dd           S )Nr/   c                     dS Nr4   rC   r/   ys     rE   rF   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>B   s    A rD   transformationsr   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>A   s    3666 rD   c                  (    t          dd f          S )Nr/   c                     dS rI   rC   rJ   s     rE   rF   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>D   s    Q rD   rL   rN   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>C   s    3(8999 rD   c                  $    t          dd          S )Nr/   )rC   rL   rN   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>E   s    jeDDD rD   c                  &    t          di g g           S rB   rN   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>F       jb"b99 rD   c                  &    t          dg g i           S rB   rN   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>G   rS   rD   c                  &    t          dg g i           S rB   rN   rC   rD   rE   rF   z#test_sympy_parser.<locals>.<lambda>H   rS   rD   )r   r   r   r	   r   r   r   r   free_symbolsr
   r   r   r   r   evenitemsr   r   	TypeError)r/   inputstextresults       rE   test_sympy_parserr]      s   sA q1u a  	Q  	AaC	 
 	#a&&  	ill  	z!}}  		!a%((1,  	"a  	!R  	(2r""  	8C%%  	Xb!__  	Xb"%%  	hsB''   	8As##! " 	(6622# $ UD))WR[['!**=$%N!!QKK&)1u%%%1u%%%' ' ' ).c!ffa(D(D(DVAYY;     FB  * *f$6)))))
9 2 2 3 3 3
9 7 7 8 8 8
9 : : ; ; ;
9DDEEE
999:::
999:::
999:::::rD   c                      dt          dd          i} t          t          fz   }|                                 D ]\  }}t	          ||          |k    sJ d S )Nz0.123{   i  rL   )r   r   r   rX   r   )rZ   rM   r[   r\   s       rE   test_rationalizer`   K   sp    #t$$F /+?O K Kf$@@@FJJJJJK KrD   c                  Z    g d} | D ]#}	 t          |           J # t          $ r Y  w xY wd S )N)zx!!!zx!!!!z(!))r   r   rZ   r[   s     rE   test_factorial_failrc   T   s`    %%%F   	tL 	 	 	K		 s   
((c                      g d} | D ]t          t          fd           g d} | D ]!t          t          t          ffd           "d S )N)z1[1]z.1e1[1]z0x1[1]z1.1j[1]z
1.1[1 + 1]z0.1[[1]]z0x1.1[1]c                  "    t                     S NrN   r[   s   rE   rF   z$test_repeated_fail.<locals>.<lambda>g   s    *T"2"2 rD   )z0.1[z0.1[1z0.1[]c                  "    t                     S rf   rN   rg   s   rE   rF   z$test_repeated_fail.<locals>.<lambda>l   s    *T2B2B rD   )r   rY   r   SyntaxErrorrb   s    @rE   test_repeated_failrj   `   s         F
  4 4y22223333 (''F D D
K(*B*B*B*BCCCCD DrD   c                      t          d          t          dd          k    sJ t          d          t          dd          k    sJ d S )Nz.[1]r4   	   z1 + .[1]r5   )r   r   rC   rD   rE   test_repeated_dot_onlyrm   o   sJ    f!Q////j!!Xb!__444444rD   c                      dd i} dt          d          i}|                                D ]\  }}t          ||           |k    sJ d S )Nmy_functionc                     | dz   S )Nr0   rC   r/   s    rE   rF   z!test_local_dict.<locals>.<lambda>v   s
    Q rD   zmy_function(2)   
local_dict)r   rX   r   )rt   rZ   r[   r\   s       rE   test_local_dictru   t   sp    J 	'!**F  A Af$:666&@@@@@A ArD   c                      t           t          t          fz   } t          dd          }t          d          }t	          dd|i|           ||z  k    sJ d S )NwT)realrK   yxr/   rt   rM   r   r    r!   r   r   )trw   rK   s      rE   test_local_dict_split_implmultr}      s]     M3J#LLAsAsAdAwBBBacIIIIIIrD   c                      t          d          } dt          d          it          d           d         |           k    sJ dt          d          it          t          fd           d S )Nr/   foobarfoo(x)rs   bazc                  &    t          d           S )Nr   rs   rN   )ds   rE   rF   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>   s    ja@@@ rD   )r   r   r   r   rY   )r/   r   s    @rE   test_local_dict_symbol_to_fcnr      sx    sA	 Ah1---5!<<<<	uA
9@@@@AAAAArD   c                      dt           i} dt          t          d          t          d                    i}|                                D ]\  }}t          ||           |k    sJ d S )Nr   zQ & Sr   Sglobal_dict)r   r   rX   r   )r   rZ   r[   r\   s       rE   test_global_dictr      s~    &K 	VC[[&++..F  C Cf$K888FBBBBBC CrD   c                  ~   i } t          d|            t          t                    }|                                D ]$\  }}t	          |t
          j                  r|| |<   %t          | d<   t          | d<   | 	                    d           dt          i}| D ](}t          ||          }|t          |          k    sJ )d S )Nzfrom sympy import *maxminr   r   )execvarsbuiltinsrX   
isinstancetypesBuiltinFunctionTyper   r   popr   r   )default_globalsbuiltins_dictnameobjr   s        rE   test_no_globalsr      s     O	000NNM"((** ( (	cc5455 	($'OD! OE OE !!!F#K # #;777fTll"""""# #rD   c                  ^    t          t          d            t          t          d            d S )Nc                       t          d          S )Nz(()rN   rC   rD   rE   rF   z!test_issue_2515.<locals>.<lambda>       z%00 rD   c                       t          d          S )Nz"""rN   rC   rD   rE   rF   z!test_issue_2515.<locals>.<lambda>   r   rD   )r   r   rC   rD   rE   test_issue_2515r      s0    
:00111
:0011111rD   c                      t          d          } d}t          |d          t          |d          k    sJ t          |d                              d| dz   z            sJ d S )Nr/   z2*(x+1)r   r=   Fr0   r4   )r   r   equals)r/   es     rE   test_issue_7663r      sr    sAAa!$$$
1u(E(E(EEEEEa!$$$++AqsG4444444rD   c                      ddddd} |                                  D ]+\  }}t          |d          t          |d          k    sJ ,d S )N4*-3z(-4)*3z(-2)*x*yzx*(-4)*x)r   z-4*3z-2*x*yzx*-4*xFr=   rX   r   rZ   r[   r\   s      rE   #test_recursive_evaluate_false_10560r      ss    	 F  V Vf$///:fu3U3U3UUUUUUV VrD   c                  D   g d} | D ]P}t          |d          }|t          |          cxk    r%t          |                                          k    sn J Qt          t          dd                    dk    sJ t          t          dd                    dk    sJ d S )N)!zAbs(0)zim(0)zre(0)zsign(0)zarg(0)zconjugate(0)zacos(0)zacot(0)zacsc(0)zasec(0)zasin(0)zatan(0)zacosh(0)zacoth(0)zacsch(0)zasech(0)zasinh(0)zatanh(0)zcos(0)zcot(0)zcsc(0)zsec(0)zsin(0)ztan(0)zcosh(0)zcoth(0)zcsch(0)zsech(0)zsinh(0)ztanh(0)zexp(0)log(0)zsqrt(0)Fr=   zln(0)r   zcbrt(0)z0**(1/3))r   strdoit)rZ   caseexprs      rE   test_function_evaluate_falser      s      F  5 5$///s4yy4444C		$4$44444444z'E22233x????z)e44455CCCCCCrD   c                      ddd} |                                  D ]+\  }}t          |d          t          |d          k    sJ ,d S )Nz(-10)/5z
(-10)/(-5))z-10/5z-10/-5Fr=   r   r   s      rE   test_issue_10773r      sm     F  V Vf$///:fu3U3U3UUUUUUV VrD   c                      t           t          t          fz   } t          d          }t          d          }t          d          }t	          d          |k    sJ t	          d|           ||z  k    sJ d S )Nr/   rK   xyrL   r{   )rM   r/   rK   r   s       rE   test_split_symbolsr      sz    .$&=?@OsAsA	B dr!!!!dO<<<!CCCCCCrD   c                  <   t           t          t          fz   } t          d          }t          d          }t          d          }t	          d          }t          d|           ||z  |dz   z  k    sJ t          d| d|i	          | ||dz             z  k    sJ d S )
Nr/   rK   afzay(x+1)rL   r4   zaf(x+1))rM   rt   )r   r    r!   r   r   r   )rM   r/   rK   r   r   s        rE   test_split_symbols_functionr      s    .$&=?@OsAsAsAA iAAAQqS!A#YNNNNi"%a* * *-.qq1vvX6 6 6 6 6 6rD   c                  4   t           t          t          fz   } t          d          }t          d          }t          d          }t	          d          }t          d|           t          |          dz  k    sJ t          d|           t          |          |z  k    sJ t          d|           t          |          |z  k    sJ t          d	|           t           ||                    k    sJ t          d
|           | ||          z  k    sJ d S )Nr/   rK   r   zsin^2(x)rL   r0   zsin^y(x)zexp^y(x)zE^y(x)za^y(x))r   r#   r$   r   r   r   r   r   )r|   r/   rK   r   yfcns        rE   test_functional_exponentr      s    K1H#IIAsAsAsAC==Dj!444Q!CCCCj!444Q!CCCCj!444Q!CCCCh222c$$q''llBBBBh222a$$q''lBBBBBBrD   c                  X     t           t          fz    t          t           fd           d S )Nc                  &    t          d           S )Nz(1,2),(3,4]rL   rN   rL   s   rE   rF   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>  s    z-XXX rD   )r   r!   r   r   rL   s   @rE   .test_match_parentheses_implicit_multiplicationr     s3    ..01O
:XXXXYYYYYrD   c                  b   t           t          fz   } t          d          }t          d          }t          d|           t	          d|          k    sJ t          d|           t	          ||          k    sJ t          d|           t	          t	          d|z  |          d          k    sJ d S )	Nr/   rK   z1*2=xrL   r0   zy = xz(2*y = x) = FalseF)r   r"   r   r   r   )rM   r/   rK   s      rE   test_convert_equals_signsr   
  s    .-01OsAsAg???2a88KKKKg???2a88KKKK)') ) ),.r!A#qzz5,A,AB B B B B BrD   c                  ~    t          d          } t          d          }t          d           ||           k    sJ d S )Nr/   r   zf(x))r   r   r   )r/   r   s     rE   test_parse_function_issue_3539r     s?    sAAf1%%%%%%rD   c            
      :   t          ddd          t          ddd          t          ddd          t          ddd          t	          ddd          t          ddd          d} |                                 D ]\  }}t          |d          |k    sJ d S )Nr4   r0   Fr=   )z1 < 2z1 <= 2z1 > 2z1 >= 2z1 != 2z1 == 2)r   r   r   r   r   r   rX   r   r   s      rE   test_issue_24288r     s    Aq5)))QE***Aq5)))QE***QE***QE*** F  : :f$///699999: :rD   c                      t           t          fz   } t          d          }t          d          }t          d|           }||cxk    rd|z  d|z  z  k    sn J t          d|           }||dz  |z  d	z  k    sJ d S )
Nnz2**n * 3**nz2**n3**nrL   r0   r1   n12n34   "   )r   r(   r   r   )rM   r   expr1expr2s       rE   test_split_symbols_numericr   &  s     	,.	/  	sA}%%Ez?CCCEE&&&&QT!Q$Y&&&&&&xAAAEAbDF2IrD   c                  J    t          d          t          d          k    sJ d S )Nu   α)r   r   rC   rD   rE   test_unicode_namesr   4  s'    dvd||++++++rD   c                     t           j        dk     rt          d           t          d          dk    sJ t          d          t          d          cxk    rt	          dd          k    sn J t          d	          t          d
          cxk    rt	          dd          k    sn J t          d          t          d          cxk    rt	          dd          k    sn J t          d          t          d          cxk    rt	          dd          k    sn J t          d          t          d          cxk    rt	          dd          k    sn J d S )N)r1      z2test_python3_features requires Python 3.8 or newer123_456i@ z1.2[3_4]z1.2[34]ic  i  z1.2[012_012]z1.2[012012]i  iM  z.[3_4]z.[34]r   c   z.1[3_4]z.1[34]   i  z123_123.123_123[3_4]z123123.123123[34]l   [.X,i)sysversion_infor   r   r   rC   rD   rE   test_python3_featuresr   8  s   
&  ABBB i  F****j!!Z	%:%:PPPPhsC>P>PPPPPPPn%%M)B)BXXXXhsTWFXFXXXXXXXh:g#6#6JJJJ(2r:J:JJJJJJJi  Jx$8$8NNNNHS#<N<NNNNNNN,--<O1P1PvvvvT\]kmuTvTvvvvvvvvvrD   c                      t          d          } t          dd| it          t          fz             }|j        | hk    sJ d S )Nr/   z	E**x(1+x)rz   )r   r   r   r(   rV   )r/   eqs     rE   test_issue_19501r   F  sT    sA	KS!H 	,.	/
1 
1 
1B ?qc!!!!!!rD   c                  ,   ddl m}  t          t                    dk    sJ t          d         t          k    sJ t          d         t
          k    sJ t          d         t          k    sJ t          d         t          k    sJ t          d         t          k    sJ t          d         t          k    sJ t          d	         t          k    sJ t          d
         t          k    sJ t          d         t          k    sJ t          d         t          k    sJ t          d         t          k    sJ t          d         t          k    sJ t           d d         t           d         cxk    rt"          k    sn J t          }t           d         |t          |          dz
           |d         fk    sJ t           d ddf         t"          |d         fz   k    sJ t%          dd          d| dz  z  dz  k    sJ t%          dd          t'          d| z            k    sJ d S )Nr   rq   r   r4   r0   r1   rr         r3   r   rl   r5      )r   r4   r0   r1   rr   )r;   r   z0.3x^2allrL   zsin 3ximplicit)	sympy.abcr/   lenr,   r%   r&   r'   r)   r*   r(   r#   r+   r!   r"   r$   r   r-   r   r   r   )r/   r|   s     rE   test_parsing_definitionsr   N  s    2%%%%100001,,,,1!222221,,,,1!333331!DDDDD1,,,,1!555551!888881!555552"999992+----RaR5AiL<<<<$<<<<<<<AU8#a&&1*qt,,,,,RaRU8/1Q4'99999h666!AqD&)CCCCh
;;;s1Q3xxGGGGGGrD   c                      g d} | D ]'\  }}t          |          t          |          k    sJ (t          t          d                    dk    sJ d S )N))zabs(x)zAbs(x))z	max(x, y)z	Max(x, y))z	min(x, y)z	Min(x, y))z	pow(x, y)z	Pow(x, y)zpow(38, -1, 97)23)r   r   )casesbuilt_in_func_callsympy_func_calls      rE   test_builtinsr   e  sy      E 05 M M+O,--O1L1LLLLLLz+,,--555555rD   c                  b    t          t          d            dd i} t          d|           du sJ d S )Nc                  &    t          dddi          S )Nr/    r4   rN   rC   rD   rE   rF   z"test_issue_22822.<locals>.<lambda>r  s    z#Aw77 rD   some_parameterzsome_parameter is NoneT)r   
ValueErrorr   )datas    rE   test_issue_22822r   q  sB    
:77888d#D.55======rD   )Rr   r   r   sympy.assumptionsr   
sympy.corer   r   r   r   r   r	   r
   r   r   r   r   r   r   r   sympy.functionsr   r   r   r   r   r   sympy.logicr   sympy.seriesr   sympy.testing.pytestr   r   sympy.parsing.sympy_parserr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r]   r`   rc   rj   rm   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rD   rE   <module>r      s   


         f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f E E E E E E E E E E E E E E E E             - - - - - - - -                                       /; /; /;dK K K	 	 	D D D5 5 5
A A AJ J JB B BC C C# # #*2 2 2
5 5 5V V VD D D V V V	D 	D 	D6 6 6
C 
C 
CZ Z ZB B B& & &

: 
: 
:  , , ,w w w" " "H H H.	6 	6 	6> > > > >rD   