
    Qi2                        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% ZOd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)
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        }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/parsing/tests/test_sympy_parser.py<lambda>z#test_sympy_parser.<locals>.<lambda>>   s    3011 rC   c                  &    t          dd           S )Nr.   c                     dS Nr3   rB   r.   ys     rD   rE   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>A   s    A rC   transformationsr   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>@   s    3666 rC   c                  (    t          dd f          S )Nr.   c                     dS rH   rB   rI   s     rD   rE   z5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>C   s    Q rC   rK   rM   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>B   s    3(8999 rC   c                  $    t          dd          S )Nr.   )rB   rK   rM   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>D   s    jeDDD rC   c                  &    t          di g g           S rA   rM   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>E       jb"b99 rC   c                  &    t          dg g i           S rA   rM   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>F   rR   rC   c                  &    t          dg g i           S rA   rM   rB   rC   rD   rE   z#test_sympy_parser.<locals>.<lambda>G   rR   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\      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:::::rC   c                      dt          dd          i} t          t          fz   }|                                 D ]\  }}t	          ||          |k    sJ d S )Nz0.123{   i  rK   )r   r   r   rW   r   )rY   rL   rZ   r[   s       rD   test_rationalizer_   J   sp    #t$$F /+?O K Kf$@@@FJJJJJK KrC   c                  Z    g d} | D ]#}	 t          |           J # t          $ r Y  w xY wd S )N)zx!!!zx!!!!z(!))r   r   rY   rZ   s     rD   test_factorial_failrb   S   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 NrM   rZ   s   rD   rE   z$test_repeated_fail.<locals>.<lambda>f   s    *T"2"2 rC   )z0.1[z0.1[1z0.1[]c                  "    t                     S re   rM   rf   s   rD   rE   z$test_repeated_fail.<locals>.<lambda>k   s    *T2B2B rC   )r   rX   r   SyntaxErrorra   s    @rD   test_repeated_failri   _   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rC   c                      t          d          t          dd          k    sJ t          d          t          dd          k    sJ d S )Nz.[1]r3   	   z1 + .[1]r4   r   r   rB   rC   rD   test_repeated_dot_onlyrm   n   sJ    f!Q////j!!Xb!__444444rC   c                      dd i} dt          d          i}|                                D ]\  }}t          ||           |k    sJ d S )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   rW   r   )rt   rY   rZ   r[   s       rD   test_local_dictru   s   sp    J 	'!**F  A Af$:666&@@@@@A ArC   c                      t           t          t          fz   } t          dd          }t          d          }t	          dd|i|           ||z  k    sJ d S )NwT)realrJ   yxr.   rt   rL   r   r   r    r   r   )trw   rJ   s      rD   test_local_dict_split_implmultr}   ~   s]     M3J#LLAsAsAdAwBBBacIIIIIIrC   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   rM   )ds   rD   rE   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>   s    ja@@@ rC   )r   r   r   r   rX   )r.   r   s    @rD   test_local_dict_symbol_to_fcnr      sx    sA	 Ah1---5!<<<<	uA
9@@@@AAAAArC   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   rW   r   )r   rY   rZ   r[   s       rD   test_global_dictr      s~    &K 	VC[[&++..F  C Cf$K888FBBBBBC CrC   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builtinsrW   
isinstancetypesBuiltinFunctionTyper   r   popr   r   )default_globalsbuiltins_dictnameobjr   s        rD   test_no_globalsr      s     O	000NNM"((** ( (	cc5455 	($'OD! OE OE !!!F#K # #;777fTll"""""# #rC   c                  ^    t          t          d            t          t          d            d S )Nc                       t          d          S )Nz(()rM   rB   rC   rD   rE   z!test_issue_2515.<locals>.<lambda>       z%00 rC   c                       t          d          S )Nz"""rM   rB   rC   rD   rE   z!test_issue_2515.<locals>.<lambda>   r   rC   )r   r   rB   rC   rD   test_issue_2515r      s0    
:00111
:0011111rC   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)Fr<   r/   r3   )r   r   equals)r.   es     rD   test_issue_7663r      sr    sAAa%(((Jq5,I,I,IIIIIa%(((//1Q38888888rC   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<   rW   r   rY   rZ   r[   s      rD   #test_recursive_evaluate_false_10560r      ss    	 F  V Vf$///:fu3U3U3UUUUUUV VrC   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)rY   caseexprs      rD   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CrC   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      rD   test_issue_10773r      sm     F  V Vf$///:fu3U3U3UUUUUUV 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 d S )Nr.   rJ   xyrK   r{   )rL   r.   rJ   r   s       rD   test_split_symbolsr      sz    .$&=?@OsAsA	B dr!!!!dO<<<!CCC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 d S )
Nr.   rJ   afzay(x+1)rK   r3   zaf(x+1))rL   rt   )r   r   r    r   r   r   )rL   r.   rJ   r   r   s        rD   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 6rC   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.   rJ   r   zsin^2(x)rK   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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BrC   c                  X     t           t          fz    t          t           fd           d S )Nc                  &    t          d           S )Nz(1,2),(3,4]rK   rM   rK   s   rD   rE   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>  s    z-XXX rC   )r   r    r   r   rK   s   @rD   .test_match_parentheses_implicit_multiplicationr     s3    ..01O
:XXXXYYYYYrC   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.   rJ   z1*2=xrK   r/   zy = xz(2*y = x) = FalseF)r   r!   r   r   r   )rL   r.   rJ   s      rD   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rC   c                  ~    t          d          } t          d          }t          d           ||           k    sJ d S )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            
      V   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            d S )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 < 4rr   c                  $    t          dd          S )Nz1 in 2Fr<   rM   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>%      z(UCCC rC   c                  $    t          dd          S )Nz1 is 2Fr<   rM   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>&  r   rC   c                  $    t          dd          S )Nz
1 not in 2Fr<   rM   rB   rC   rD   rE   z"test_issue_24288.<locals>.<lambda>'      z,GGG rC   c                  $    t          dd          S )Nz
1 is not 2Fr<   rM   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     st   g..."QE2J2J2JJJJJh///2aU3K3K3KKKKKg..."QE2J2J2JJJJJh///2aU3K3K3KKKKKh///2aU3K3K3KKKKKh///2aU3K3K3KKKKKkE222c"QE:R:R:RTVWXZ[fkTlTlTlw|6}6}6}}}}}me444Bq!e<T<T<TVXYZ\]hmVnVnVny~888&777Bq!e$$$bA&>&>&>1aRW@X@X@Xchiiij j j j :CCDDD
:CCDDD
:GGHHH
:GGHHHHHrC   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**nrK   r/   r0   n12n34   "   )r   r'   r   r   )rL   r   expr1expr2s       rD   test_split_symbols_numericr   *  s     	,.	/  	sA}%%Ez?CCCEE&&&&QT!Q$Y&&&&&&xAAAEAbDF2IrC   c                  J    t          d          t          d          k    sJ d S )Nu   α)r   r   rB   rC   rD   test_unicode_namesr   8  s'    dvd||++++++rC   c                  j   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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rl   rB   rC   rD   test_python3_featuresr   <  sb   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vrC   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'   rU   )r.   eqs     rD   test_issue_19501r   E  sT    sA	KS!H 	,.	/
1 
1 
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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   r3   r/   r0   rr         r2      rk   r4      )r   r3   r/   r0   rr   )r:   r   z0.3x^2allrK   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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GrC   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      rD   test_builtinsr   d  sy      E 05 M M+O,--O1L1LLLLLLz+,,--555555rC   c                  b    t          t          d            dd i} t          d|           du sJ d S )Nc                  &    t          dddi          S )Nr.    r3   rM   rB   rC   rD   rE   z"test_issue_22822.<locals>.<lambda>q  s    z#Aw77 rC   some_parameterzsome_parameter is NoneT)r   r   r   )datas    rD   test_issue_22822r   p  sB    
:77888d#D.5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_   rb   ri   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   rB   rC   rD   <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
9 9 9V V VD D D V V V	D 	D 	D6 6 6
C 
C 
CZ Z ZB B B& & &
I I I"  , , ,w w w" " "H H H.	6 	6 	6> > > > >rC   