U
    ZÊ¹jÝ/  ã                   @   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@   úd/var/www/html/bwave/python/venv/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sšt‚tt d%d"d#�ƒd&ks²t‚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s€t‚td	| d�t||ƒƒksœt‚td
| d�|||ƒ ks¸t‚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“   Z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r”tddƒksšn t‚tdƒtdƒ  kr¼tddƒksÂn t‚tdƒtdƒ  krätddƒksên 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sŒt‚td
 tksœt‚td tks¬t‚td tks¼t‚td tksÌt‚td tksÜt‚td d… td   krþt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�s’t‚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		