U
    	-e/                     @   s  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	d
 Z5dd Z6dd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd  Z@d!d" ZAd#d$ ZBd%d& ZCd'd( ZDd)d* ZEd+d, ZFd-d. ZGd/d0 ZHd1d2 ZId3d4 ZJd5d6 ZKd7d8 ZLd9d: ZMd;d< ZNd=d> ZOd?d@ ZPdAdB ZQdS )C    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                  C   s  t d} d|  tdtddddt  t| t| t| t| d d tddtddtd	dtd
dtddtddtddt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dt
ddddddtt| | dddt| d}| D ]\}}t||kstqttdd  ttdd  ttd d  ttd!d  ttd"d  ttd#d  ttd$d  d S )%Nx               
      a   i  iJ           i  ii i i'  i'  i _7 Fevaluater   -)dir)z2*xz3.00z22/7z2+3jzexp(x)zx!zx!!z(x + 1)! - 1z3.[3]z.0[3]z3.2[3]z1.3[12]z	1 + 3.[3]z	1 + .0[3]z
1 + 3.2[3]z.[0011]z0.1[00102] + 1z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                   S   s
   t dtS Nr-   )r   r    r@   r@   f/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/parsing/tests/test_sympy_parser.py<lambda>?   s    z#test_sympy_parser.<locals>.<lambda>c                   S   s   t ddd dS )Nr-   c                 S   s   dS Nr2   r@   r-   yr@   r@   rA   rB   B       5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>transformationsr   r@   r@   r@   rA   rB   A   s    c                   S   s   t ddd fdS )Nr-   c                 S   s   dS rC   r@   rD   r@   r@   rA   rB   D   rF   rG   rH   rJ   r@   r@   r@   rA   rB   C   s    c                   S   s   t dddS )Nr-   )r@   rH   rJ   r@   r@   r@   rA   rB   E   rF   c                   S   s   t di g g S r?   rJ   r@   r@   r@   rA   rB   F   rF   c                   S   s   t dg g i S r?   rJ   r@   r@   r@   rA   rB   G   rF   c                   S   s   t dg g i S r?   rJ   r@   r@   r@   rA   rB   H   rF   )r   r   r   r   r   r   r   r   free_symbolsr	   r
   r   r   r   Zevenitemsr   AssertionErrorr   	TypeError)r-   inputstextresultr@   r@   rA   test_sympy_parser   sR    
!rR   c                  C   sB   dt ddi} ttf }|  D ]\}}t||d|ks tq d S )Nz0.123{   i  rH   )r   r   r   rL   r   rM   )rO   rI   rP   rQ   r@   r@   rA   test_rationalizeK   s     
rT   c               	   C   sJ   dddg} | D ]6}zt | ds$tW q tk
rB   ds>tY qX qd S )Nzx!!!zx!!!!z(!)FT)r   rM   r   )rO   rP   r@   r@   rA   test_factorial_failT   s    
rU   c                     s\   dddddddg} | D ] t t fdd	 qd
ddg} | D ] t ttf fdd	 q<d S )Nz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                      s   t  S NrJ   r@   rP   r@   rA   rB   g   rF   z$test_repeated_fail.<locals>.<lambda>z0.1[z0.1[1z0.1[]c                      s   t  S rV   rJ   r@   rW   r@   rA   rB   l   rF   )r   rN   r   SyntaxError)rO   r@   rW   rA   test_repeated_fail`   s    
 
rY   c                   C   s0   t dtddkstt dtddks,td S )Nz.[1]r2   	   z1 + .[1]r3   )r   r   rM   r@   r@   r@   rA   test_repeated_dot_onlyo   s    r[   c                  C   sB   ddd i} dt di}| D ]\}}t|| d|ks tq d S )NZmy_functionc                 S   s   | d S )Nr.   r@   r-   r@   r@   rA   rB   v   rF   z!test_local_dict.<locals>.<lambda>zmy_function(2)   
local_dict)r   rL   r   rM   )r_   rO   rP   rQ   r@   r@   rA   test_local_dictt   s      r`   c                  C   sB   t ttf } tddd}td}tdd|i| d|| ks>td S )NwT)realrE   Zyxr-   r_   rI   r   r   r    r   r   rM   )tra   rE   r@   r@   rA   test_local_dict_split_implmult   s    rf   c                     sR   t d} dtdi td d d | ks0tdt di tt fdd d S )	Nr-   Zfoobarfoo(x)r^   Zbazc                      s   t d dS )Nrh   r^   rJ   r@   dr@   rA   rB      rF   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>)r   r   r   rM   r   rN   r\   r@   ri   rA   test_local_dict_symbol_to_fcn   s
    rk   c                  C   sH   dt i} dtt dt di}| D ]\}}t|| d|ks&tq&d S )Nr   zQ & Sr   Sglobal_dict)r   r   rL   r   rM   )rn   rO   rP   rQ   r@   r@   rA   test_global_dict   s      ro   c                  C   s   i } t d|  tt}| D ]\}}t|tjr|| |< qt| d< t| d< | 	d dt
i}| D ] }t||d}|t
|ksbtqbd S )Nzfrom sympy import *maxminr   rm   )execvarsbuiltinsrL   
isinstancetypesBuiltinFunctionTyper   r   popr   r   rM   )Zdefault_globalsZbuiltins_dictnameobjrn   r@   r@   rA   test_no_globals   s    


r{   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t dS )Nz(()rJ   r@   r@   r@   rA   rB      rF   z!test_issue_2515.<locals>.<lambda>c                   S   s   t dS )Nz"""rJ   r@   r@   r@   rA   rB      rF   )r   r   r@   r@   r@   rA   test_issue_2515   s    r|   c                  C   sJ   t d} d}t|ddt|ddks(tt|ddd| d  sFtd S )Nr-   z2*(x+1)r   r;   Fr.   r2   )r   r   rM   equals)r-   er@   r@   rA   test_issue_7663   s    r   c                  C   s@   ddddd} |   D ]$\}}t|ddt|ddkstqd S )N4*-3z(-4)*3z(-2)*x*yzx*(-4)*x)r   z-4*3z-2*x*yzx*-4*xFr;   rL   r   rM   rO   rP   rQ   r@   r@   rA   #test_recursive_evaluate_false_10560   s    r   c               !   C   s   ddddddddd	d
dddddddddddddddddddddd d!g!} | D ]6}t |d"d#}|t|  krzt| ksJn tqJtt d$d"d#d ksttt d%d"d#d&kstd S )'Nz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)zlog(0)zsqrt(0)Fr;   zln(0)zcbrt(0)z0**(1/3))r   strZdoitrM   )rO   caseexprr@   r@   rA   test_function_evaluate_false   sN                               (r   c                  C   s<   ddd} |   D ]$\}}t|ddt|ddkstqd S )Nz(-10)/5z
(-10)/(-5))z-10/5z-10/-5Fr;   r   r   r@   r@   rA   test_issue_10773   s
    r   c                  C   sP   t ttf } td}td}td}td|ks4ttd| d|| ksLtd S )Nr-   rE   xyrH   rd   )rI   r-   rE   r   r@   r@   rA   test_split_symbols   s    r   c                  C   sv   t ttf } td}td}td}td}td| d|| |d  ksLttd| d|id	|||d  ksrtd S )
Nr-   rE   afzay(x+1)rH   r2   zaf(x+1))rI   r_   )r   r   r    r   r   r   rM   )rI   r-   rE   r   r   r@   r@   rA   test_split_symbols_function   s     r   c                  C   s   t ttf } td}td}td}td}td| dt|d ksHttd| dt|| ksdttd| dt|| ksttd	| dt||ksttd
| d||| kstd S )Nr-   rE   r   zsin^2(x)rH   r.   zsin^y(x)zexp^y(x)zE^y(x)za^y(x))	r   r"   r#   r   r   r   r   rM   r   )re   r-   rE   r   Zyfcnr@   r@   rA   test_functional_exponent   s    r   c                      s    t tf  tt fdd d S )Nc                      s   t d dS )Nz(1,2),(3,4]rH   rJ   r@   rH   r@   rA   rB     rF   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>)r   r    r   r   r@   r@   rH   rA   .test_match_parentheses_implicit_multiplication  s    r   c                  C   sv   t tf } td}td}td| dtd|ks4ttd| dt||ksNttd| dttd| |dksrtd S )	Nr-   rE   z1*2=xrH   r.   zy = xz(2*y = x) = FalseF)r   r!   r   r   r   rM   )rI   r-   rE   r@   r@   rA   test_convert_equals_signs
  s    r   c                  C   s(   t d} td}td|| ks$td S )Nr-   r   zf(x))r   r   r   rM   )r-   r   r@   r@   rA   test_parse_function_issue_3539  s    r   c               
   C   sx   t ddddtddddtddddtddddtddddtddddd} |  D ]\}}t|dd|ksVtqVd S )Nr2   r.   Fr;   )z1 < 2z1 <= 2z1 > 2z1 >= 2z1 != 2z1 == 2)	r   r   r   r   r   r   rL   r   rM   r   r@   r@   rA   test_issue_24288  s    r   c                  C   st   t tf } td}td}td| d}||  krFd| d|  ksLn ttd| d}||d | d	 ksptd S )
Nnz2**n * 3**nz2**n3**nrH   r.   r/   Zn12n34   "   )r   r'   r   r   rM   )rI   r   expr1Zexpr2r@   r@   rA   test_split_symbols_numeric&  s    &r   c                   C   s   t dtdkstd S )Nu   α)r   r   rM   r@   r@   r@   rA   test_unicode_names4  s    r   c                   C   s   t jdk rtd tddks"ttdtd  krDtddksJn ttd	td
  krltddksrn ttdtd  krtddksn ttdtd  krtddksn ttdtd  krtddksn td S )N)r/      z2test_python3_features requires Python 3.8 or newerZ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   rM   r   r@   r@   r@   rA   test_python3_features8  s    
((((r   c                  C   s4   t d} tdd| ittf d}|j| hks0td S )Nr-   z	E**x(1+x)rc   )r   r   r   r'   rK   rM   )r-   eqr@   r@   rA   test_issue_19501F  s    
r   c                  C   s  ddl m}  ttdksttd tks,ttd tks<ttd tksLttd tks\ttd t	kslttd t
ks|ttd	 tksttd
 tksttd tksttd tksttd tksttd tksttd d td   krtksn tt}td |t|d  |d fks.ttd ddf t|d f ksRttdddd| d  d kstttdddtd|  kstd S )Nr   r\   r   r2   r.   r/   r]         r1   r   rZ   r3      )r   r2   r.   r/   r]   )r9   r   z0.3x^2allrH   zsin 3xZimplicit)Z	sympy.abcr-   lenr+   rM   r$   r%   r&   r(   r)   r'   r"   r*   r    r!   r#   r   r,   r   r   r   )r-   re   r@   r@   rA   test_parsing_definitionsN  s(    (&$"r   c                  C   sF   ddddg} | D ]\}}t |t |kstqtt ddksBt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)Z23)r   rM   r   )ZcasesZbuilt_in_func_callZsympy_func_callr@   r@   rA   test_builtinse  s    r   c                  C   s,   t tdd  dd i} td| dks(td S )Nc                   S   s   t dddiS )Nr-    r2   rJ   r@   r@   r@   rA   rB   r  rF   z"test_issue_22822.<locals>.<lambda>Zsome_parameterzsome_parameter is NoneT)r   
ValueErrorr   rM   )datar@   r@   rA   test_issue_22822q  s    r   )Rr   rt   rv   Zsympy.assumptionsr   Z
sympy.corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Zsympy.functionsr   r   r   r   r   r   Zsympy.logicr   Zsympy.seriesr   Zsympy.testing.pytestr   r   Zsympy.parsing.sympy_parserr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   rR   rT   rU   rY   r[   r`   rf   rk   ro   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   r@   r@   rA   <module>   sL   @ P
2		