
    oVh2                        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 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.m/Z/m0Z0m1Z1m2Z2 d	 Z3d
 Z4d 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% ZOy)&    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)
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                  H   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-	}|j                         D ]  \  }}t!        |      |k(  rJ  t#        t$        d.        t#        t$        d/        t#        t$        d0        t#        t$        d1        t#        t$        d2        t#        t$        d3        t#        t$        d4        y )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        U/home/dcms/DCMS/lib/python3.12/site-packages/sympy/parsing/tests/test_sympy_parser.py<lambda>z#test_sympy_parser.<locals>.<lambda>>   s    301 rC   c                      t        dd       S )Nr.   c                      yNr3   rB   r.   ys     rD   rE   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>A       rC   transformationsr   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>@   s    36 rC   c                       t        dd f      S )Nr.   c                      yrH   rB   rI   s     rD   rE   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>C   rK   rC   rL   rN   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>B   s    3(89 rC   c                      t        dd      S )Nr.   )rB   rL   rN   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>D   s    jeD rC   c                      t        di g g       S rA   rN   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>E       jb"b9 rC   c                      t        dg g i       S rA   rN   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>F   rS   rC   c                      t        dg g i       S rA   rN   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>G   rS   rC   )r   r   r   r	   r   r   r   r   free_symbolsr
   r   r   r   r   evenitemsr   r   	TypeError)r.   inputstextresults       rD   test_sympy_parserr]      sU   sA q1u a  	Q  	AaC	 
 	#a&  	il  	z!}  		!a%(1,  	"a  	!R  	(2r"  	8C%  	Xb!_  	Xb"%  	hsB'   	8As#! " 	(662# $ UD)WR['!*=$%NN!!QK&)1u%1u%' ).c!fa(DVVAY; FB  *f$6)))* 9 2 3
9 7 8
9 : ;
9DE
99:
99:
99:rC   c                      dt        dd      i} t        t        fz   }| j                         D ]  \  }}t	        ||      |k(  rJ  y )Nz0.123{   i  rL   )r   r   r   rX   r   )rZ   rM   r[   r\   s       rD   test_rationalizer`   J   sS    #t$F /+?O Kf$@FJJJKrC   c                  R    g d} | D ]  }	 t        |       J  y # t        $ r Y w xY w)N)zx!!!zx!!!!z(!))r   r   rZ   r[   s     rD   test_factorial_failrc   S   s>    %F  	t5  		s   	&&c                      g d} | D ]  t        t        fd        g d} | D ]  t        t        t        ffd        y )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   rD   rE   z$test_repeated_fail.<locals>.<lambda>f   s    *T"2 rC   )z0.1[z0.1[1z0.1[]c                      t               S rf   rN   rg   s   rD   rE   z$test_repeated_fail.<locals>.<lambda>k   s    *T2B rC   )r   rY   r   SyntaxErrorrb   s    @rD   test_repeated_failrj   _   sN     F
  4y234 (F D
K(*BCDrC   c                  l    t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ y )Nz.[1]r3   	   z1 + .[1]r4   r   r   rB   rC   rD   test_repeated_dot_onlyrn   n   s4    f!Q///j!Xb!_444rC   c                  |    dd i} dt        d      i}|j                         D ]  \  }}t        ||       |k(  rJ  y )Nmy_functionc                     | dz   S )Nr/   rB   r.   s    rD   rE   z!test_local_dict.<locals>.<lambda>u   s
    Q rC   zmy_function(2)   
local_dict)r   rX   r   )ru   rZ   r[   r\   s       rD   test_local_dictrv   s   sR    J 	'!*F  Af$:6&@@@ArC   c                      t         t        t        fz   } t        dd      }t        d      }t	        dd|i|       ||z  k(  sJ y )NwT)realrJ   yxr.   ru   rM   r   r   r    r   r   )trx   rJ   s      rD   test_local_dict_split_implmultr~   ~   sF     M3J#LLAsAsAdAwBacIIIrC   c                      t        d      } dt        d      it        d       d   |       k(  sJ dt        d      it        t        fd       y )Nr.   foobarfoo(x)rt   bazc                      t        d       S )Nr   rt   rN   )ds   rD   rE   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>   s    ja@ rC   )r   r   r   r   rY   )r.   r   s    @rD   test_local_dict_symbol_to_fcnr      sR    sA	 Ah1-5!<<<	uA
9@ArC   c                      dt         i} dt        t        d      t        d            i}|j                         D ]  \  }}t        ||       |k(  rJ  y )Nr   zQ & Sr   Sglobal_dict)r   r   rX   r   )r   rZ   r[   r\   s       rD   test_global_dictr      s]    &K 	VC[&+.F  Cf$K8FBBBCrC   c                  L   i } t        d|        t        t              }|j                         D ]%  \  }}t	        |t
        j                        s!|| |<   ' t        | d<   t        | d<   | j                  d       dt        i}| D ]  }t        ||      }|t        |      k(  rJ  y )Nzfrom sympy import *maxminr   r   )execvarsbuiltinsrX   
isinstancetypesBuiltinFunctionTyper   r   popr   r   )default_globalsbuiltins_dictnameobjr   s        rD   test_no_globalsr      s     O	0NM"((* (	cc5445$'OD!( !OE OE !F#K #;7fTl"""#rC   c                  H    t        t        d        t        t        d        y )Nc                      t        d      S )Nz(()rN   rB   rC   rD   rE   z!test_issue_2515.<locals>.<lambda>       z%0 rC   c                      t        d      S )Nz"""rN   rB   rC   rD   rE   z!test_issue_2515.<locals>.<lambda>   r   rC   )r   r   rB   rC   rD   test_issue_2515r      s    
:01
:01rC   c                      t        d      } d}t        |d      t        |d      k(  sJ t        |d      j                  d| dz   z        sJ y )Nr.   z2*(x+1)Fr<   r/   r3   )r   r   equals)r.   es     rD   test_issue_7663r      sO    sAAa%(Jq5,IIIIa%(//1Q3888rC   c                  |    ddddd} | j                         D ]"  \  }}t        |d      t        |d      k(  r"J  y )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      rD   #test_recursive_evaluate_false_10560r      sN    	F  Vf$/:fu3UUUUVrC   c                      g d} | D ]?  }t        |d      }|t        |      cxk(  rt        |j                               k7  r<J  J  t        t        dd            dk(  sJ t        t        dd            dk(  sJ y )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      rD   test_function_evaluate_falser      s    F  5$/s4y4C		$4444445 z'E23x???z)e45CCCrC   c                  x    ddd} | j                         D ]"  \  }}t        |d      t        |d      k(  r"J  y )Nz(-10)/5z
(-10)/(-5))z-10/5z-10/-5Fr<   r   r   s      rD   test_issue_10773r      sH    F  Vf$/:fu3UUUUVrC   c                      t         t        t        fz   } t        d      }t        d      }t        d      }t	        d      |k(  sJ t	        d|       ||z  k(  sJ y )Nr.   rJ   xyrL   r|   )rM   r.   rJ   r   s       rD   test_split_symbolsr      s_    .$&=?@OsAsA	B dr!!!dO<!CCCrC   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 y )
Nr.   rJ   afzay(x+1)rL   r3   zaf(x+1))rM   ru   )r   r   r    r   r   r   )rM   r.   rJ   r   r   s        rD   test_split_symbols_functionr      s    .$&=?@OsAsAsAA iAQqS!A#YNNNi"%a*-.q1vX6 6 6rC   c                     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 y )Nr.   rJ   r   zsin^2(x)rL   r/   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.   rJ   r   yfcns        rD   test_functional_exponentr      s     K1H#IIAsAsAsAC=Dj!4Q!CCCj!4Q!CCCj!4Q!CCCh2c$q'lBBBh2a$q'lBBBrC   c                  H     t         t        fz    t        t         fd       y )Nc                      t        d       S )Nz(1,2),(3,4]rL   rN   rL   s   rD   rE   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>  s    z-X rC   )r   r    r   r   rL   s   @rD   .test_match_parentheses_implicit_multiplicationr     s    ..01O
:XYrC   c                     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 y )	Nr.   rJ   z1*2=xrL   r/   zy = xz(2*y = x) = FalseF)r   r!   r   r   r   )rM   r.   rJ   s      rD   test_convert_equals_signsr   	  s    .-01OsAsAg?2a8KKKg?2a8KKK)'),.r!A#qz5,AB B BrC   c                  \    t        d      } t        d      }t        d       ||       k(  sJ y )Nr.   r   zf(x))r   r   r   )r.   r   s     rD   test_parse_function_issue_3539r     s+    sAAf1%%%rC   c            
      R   t        dd      t        ddd      k(  sJ t        dd      t        ddd      k(  sJ t        dd      t        ddd      k(  sJ t        dd      t	        ddd      k(  sJ t        d	d      t        ddd      k(  sJ t        d
d      t        ddd      k(  sJ t        dd      t        t        ddd      t        ddd      d      k(  sJ t        dd      t        t        ddd      t        ddd      d      k(  sJ t        dd      t        t        ddd      t        ddd      t        ddd      d      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        y )Nz1 < 2Fr<   r3   r/   z1 <= 2z1 > 2z1 >= 2z1 != 2z1 == 2z	1 < 2 < 3r0   z1 <= 2 <= 3z1 < 2 <= 3 < 4rs   c                      t        dd      S )Nz1 in 2Fr<   rN   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>%      z(UC rC   c                      t        dd      S )Nz1 is 2Fr<   rN   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>&  r   rC   c                      t        dd      S )Nz
1 not in 2Fr<   rN   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>'      z,G rC   c                      t        dd      S )Nz
1 is not 2Fr<   rN   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>(  r   rC   )
r   r   r   r   r   r   r   r   r   
ValueErrorrB   rC   rD   test_issue_24288r     s   g."QE2JJJJh/2aU3KKKKg."QE2JJJJh/2aU3KKKKh/2aU3KKKKh/2aU3KKKKkE2c"QE:RTVWXZ[fkTlw|6}}}}me4Bq!e<TVXYZ\]hmVny~8&7Bq!e$bA&>1aRW@Xchij j j :CD
:CD
:GH
:GHrC   c                      t         t        fz   } t        d      }t        d      }t        d|       }||cxk(  rd|z  d|z  z  k(  sJ  J t        d|       }||dz  |z  d	z  k(  sJ y )
Nnz2**n * 3**nz2**n3**nrL   r/   r0   n12n34   "   )r   r'   r   r   )rM   r   expr1expr2s       rD   test_split_symbols_numericr   *  s     	,.	/  	sA}%Ez?CEE&QT!Q$Y&&&&&xAEAbDF2IrC   c                  6    t        d      t        d      k(  sJ y )Nu   α)r   r   rB   rC   rD   test_unicode_namesr   8  s    dvd|+++rC   c                     t        d      dk(  sJ t        d      t        d      cxk(  rt        dd      k(  sJ  J t        d      t        d      cxk(  rt        d	d
      k(  sJ  J t        d      t        d      cxk(  rt        dd      k(  sJ  J t        d      t        d      cxk(  rt        dd      k(  sJ  J t        d      t        d      cxk(  rt        dd      k(  sJ  J y )N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rm   rB   rC   rD   test_python3_featuresr   <  s    i F***j!Z	%:PhsC>PPPPPPn%M)BXhsTWFXXXXXXh:g#6J(2r:JJJJJJi Jx$8NHS#<NNNNNN,-<O1PvT\]kmuTvvvvvvrC   c                  v    t        d      } t        dd| it        t        fz         }|j                  | hk(  sJ y )Nr.   z	E**x(1+x)r{   )r   r   r   r'   rV   )r.   eqs     rD   test_issue_19501r   E  sA    sA	KS!H 	,.	/
1B ??qc!!!rC   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J  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 y )Nr   rr   r   r3   r/   r0   rs         r2      rl   r4      )r   r3   r/   r0   rs   )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     rD   test_parsing_definitionsr   M  s   2%%%10001,,,1!22221,,,1!33331!DDDD1,,,1!55551!88881!55552"99992+---Ra5AiL<$<<<<<<AU8#a&1*qt,,,,RaRU8/1Q4'9999h6!AqD&)CCCh
;s1Q3xGGGrC   c                      g d} | D ]  \  }}t        |      t        |      k(  rJ  t        t        d            dk(  sJ y )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      rD   test_builtinsr   d  sT    E 05 M+O,-O1LLLLMz+,-555rC   c                  N    t        t        d        dd i} t        d|       du sJ y )Nc                      t        dddi      S )Nr.    r3   rN   rB   rC   rD   rE   z"test_issue_22822.<locals>.<lambda>q  s    z#Aw7 rC   some_parameterzsome_parameter is NoneT)r   r   r   )datas    rD   test_issue_22822r   p  s-    
:78d#D.5===rC   )Pr   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   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   rn   rv   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rB   rC   rD   <module>r      s       f f f f E E   '    /;dK	D5
AJBC#*2
9VD V	D6
CZB&
I",w"H.	6>rC   