a
    kh2                     @   s  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	d
 Z3dd Z4d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/d0 ZFd1d2 ZGd3d4 ZHd5d6 ZId7d8 ZJd9d: ZKd;d< ZLd=d> ZMd?d@ ZNdAdB ZOd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)
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J 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?   S/var/www/auris/lib/python3.9/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 Nr1   r?   r,   yr?   r?   r@   rA   A       5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>transformationsr   r?   r?   r?   r@   rA   @   s    c                   S   s   t ddd fdS )Nr,   c                 S   s   dS rB   r?   rC   r?   r?   r@   rA   C   rE   rF   rG   rI   r?   r?   r?   r@   rA   B   s    c                   S   s   t dddS )Nr,   )r?   rG   rI   r?   r?   r?   r@   rA   D   rE   c                   S   s   t di g g S r>   rI   r?   r?   r?   r@   rA   E   rE   c                   S   s   t dg g i S r>   rI   r?   r?   r?   r@   rA   F   rE   c                   S   s   t dg g i S r>   rI   r?   r?   r?   r@   rA   G   rE   )r   r   r   r   r   r   r   r   free_symbolsr	   r
   r   r   r   Zevenitemsr   r   	TypeError)r,   inputstextresultr?   r?   r@   test_sympy_parser   sR    
!rP   c                  C   sB   dt ddi} ttf }|  D ]\}}t||d|ks J q d S )Nz0.123{   i  rG   )r   r   r   rK   r   )rM   rH   rN   rO   r?   r?   r@   test_rationalizeJ   s
    

rR   c               	   C   sF   g d} | D ]4}zt | ds"J W q ty>   ds:J Y q0 qd S )N)zx!!!zx!!!!z(!)FT)r   r   )rM   rN   r?   r?   r@   test_factorial_failS   s    rS   c                     sP   g d} | D ] t t fdd qg d} | D ] t ttf fdd q0d 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                      s   t  S NrI   r?   rN   r?   r@   rA   f   rE   z$test_repeated_fail.<locals>.<lambda>)z0.1[z0.1[1z0.1[]c                      s   t  S rT   rI   r?   rU   r?   r@   rA   k   rE   )r   rL   r   SyntaxError)rM   r?   rU   r@   test_repeated_fail_   s    rW   c                   C   s0   t dtddksJ t dtddks,J d S )Nz.[1]r1   	   z1 + .[1]r2   r   r   r?   r?   r?   r@   test_repeated_dot_onlyn   s    rZ   c                  C   sB   ddd i} dt di}| D ]\}}t|| d|ks J q d S )NZmy_functionc                 S   s   | d S )Nr-   r?   r,   r?   r?   r@   rA   u   rE   z!test_local_dict.<locals>.<lambda>zmy_function(2)   
local_dict)r   rK   r   )r^   rM   rN   rO   r?   r?   r@   test_local_dicts   s    r_   c                  C   sB   t ttf } tddd}td}tdd|i| d|| ks>J d S )NwT)realrD   Zyxr,   r^   rH   r   r   r   r   r   )tr`   rD   r?   r?   r@   test_local_dict_split_implmult~   s    re   c                     sR   t d} dtdi td d d | ks0J 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 )Nrg   r]   rI   r?   dr?   r@   rA      rE   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>)r   r   r   r   rL   r[   r?   rh   r@   test_local_dict_symbol_to_fcn   s
    rj   c                  C   sH   dt i} dtt dt di}| D ]\}}t|| d|ks&J q&d S )Nr   zQ & Sr   Sglobal_dict)r   r   rK   r   )rm   rM   rN   rO   r?   r?   r@   test_global_dict   s    rn   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sbJ qbd S )Nzfrom sympy import *maxminr   rl   )execvarsbuiltinsrK   
isinstancetypesBuiltinFunctionTyper   r   popr   r   )Zdefault_globalsZbuiltins_dictnameobjrm   r?   r?   r@   test_no_globals   s    


rz   c                   C   s    t tdd  t tdd  d S )Nc                   S   s   t dS )Nz(()rI   r?   r?   r?   r@   rA      rE   z!test_issue_2515.<locals>.<lambda>c                   S   s   t dS )Nz"""rI   r?   r?   r?   r@   rA      rE   )r   r   r?   r?   r?   r@   test_issue_2515   s    r{   c                  C   sJ   t d} d}t|ddt|ddks(J t|ddd| d  sFJ d S )Nr,   z2*(x+1)Fr:   r-   r1   )r   r   equals)r,   er?   r?   r@   test_issue_7663   s    r~   c                  C   s@   ddddd} |   D ]$\}}t|ddt|ddksJ qd S )N4*-3z(-4)*3z(-2)*x*yzx*(-4)*x)r   z-4*3z-2*x*yzx*-4*xFr:   rK   r   rM   rN   rO   r?   r?   r@   #test_recursive_evaluate_false_10560   s    r   c                  C   sx   g d} | D ]6}t |dd}|t|  kr<t| ksn J qtt ddddks\J tt ddddkstJ 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   strZdoit)rM   Zcaseexprr?   r?   r@   test_function_evaluate_false   s    (r   c                  C   s<   ddd} |   D ]$\}}t|ddt|ddksJ qd S )Nz(-10)/5z
(-10)/(-5))z-10/5z-10/-5Fr:   r   r   r?   r?   r@   test_issue_10773   s
    r   c                  C   sP   t ttf } td}td}td}td|ks4J td| d|| ksLJ d S )Nr,   rD   xyrG   rc   )rH   r,   rD   r   r?   r?   r@   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sLJ td| d|id	|||d  ksrJ d S )
Nr,   rD   afzay(x+1)rG   r1   zaf(x+1))rH   r^   )r   r   r   r   r   r   )rH   r,   rD   r   r   r?   r?   r@   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sHJ td| dt|| ksdJ td| dt|| ksJ td	| dt||ksJ td
| d||| ksJ d S )Nr,   rD   r   zsin^2(x)rG   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   )rd   r,   rD   r   Zyfcnr?   r?   r@   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]rG   rI   r?   rG   r?   r@   rA     rE   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>)r   r   r   r   r?   r?   rG   r@   .test_match_parentheses_implicit_multiplication  s    r   c                  C   sv   t tf } td}td}td| dtd|ks4J td| dt||ksNJ td| dttd| |dksrJ d S )	Nr,   rD   z1*2=xrG   r-   zy = xz(2*y = x) = FalseF)r   r    r   r   r   )rH   r,   rD   r?   r?   r@   test_convert_equals_signs	  s    r   c                  C   s(   t d} td}td|| ks$J d S )Nr,   r   zf(x))r   r   r   )r,   r   r?   r?   r@   test_parse_function_issue_3539  s    r   c                	   C   s  t dddtddddksJ t dddtddddks<J t dddtddddksZJ t dddtddddksxJ t d	ddtddddksJ t d
ddtddddksJ t dddttddddtddddddksJ t dddttddddtddddddksJ t dddttddddtddddtddddddksZJ tt	dd  tt	dd  tt	dd  tt	dd  d S )Nz1 < 2Fr:   r1   r-   z1 <= 2z1 > 2z1 >= 2z1 != 2z1 == 2z	1 < 2 < 3r.   z1 <= 2 <= 3z1 < 2 <= 3 < 4r\   c                   S   s   t dddS )Nz1 in 2Fr:   rI   r?   r?   r?   r@   rA   %  rE   z"test_issue_24288.<locals>.<lambda>c                   S   s   t dddS )Nz1 is 2Fr:   rI   r?   r?   r?   r@   rA   &  rE   c                   S   s   t dddS )Nz
1 not in 2Fr:   rI   r?   r?   r?   r@   rA   '  rE   c                   S   s   t dddS )Nz
1 is not 2Fr:   rI   r?   r?   r?   r@   rA   (  rE   )
r   r   r   r   r   r   r   r   r   
ValueErrorr?   r?   r?   r@   test_issue_24288  s    24
,
r   c                  C   st   t tf } td}td}td| d}||  krFd| d|  ksLn J td| d}||d | d	 kspJ d S )
Nnz2**n * 3**nz2**n3**nrG   r-   r.   Zn12n34   "   )r   r&   r   r   )rH   r   expr1Zexpr2r?   r?   r@   test_split_symbols_numeric*  s    &r   c                   C   s   t dtdksJ d S )Nu   α)r   r   r?   r?   r?   r@   test_unicode_names8  s    r   c                   C   s   t ddksJ t dt d  kr2tddks8n J t dt d  krZtd	d
ks`n J t dt d  krtddksn J t dt d  krtddksn J t dt d  krtddksn J d S )NZ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rY   r?   r?   r?   r@   test_python3_features<  s    ((((r   c                  C   s4   t d} tdd| ittf d}|j| hks0J d S )Nr,   z	E**x(1+x)rb   )r   r   r   r&   rJ   )r,   eqr?   r?   r@   test_issue_19501E  s    
r   c                  C   s  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sLJ td tks\J td tkslJ td t	ks|J td	 t
ksJ td
 tksJ td tksJ td tksJ td tksJ td tksJ td d td   krtksn J t}td |t|d  |d fks.J td ddf t|d f ksRJ tdddd| d  d kstJ tdddtd|  ksJ d S )Nr   r[   r   r1   r-   r.   r\         r0      rX   r2      )r   r1   r-   r.   r\   )r8   r   z0.3x^2allrG   zsin 3xZimplicit)Z	sympy.abcr,   lenr*   r#   r$   r%   r'   r(   r&   r!   r)   r   r    r"   r   r+   r   r   r   )r,   rd   r?   r?   r@   test_parsing_definitionsM  s(    (&$"r   c                  C   sB   g d} | D ]\}}t |t |ksJ q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)Z23)r   r   )ZcasesZbuilt_in_func_callZsympy_func_callr?   r?   r@   test_builtinsd  s    r   c                  C   s,   t tdd  dd i} td| du s(J d S )Nc                   S   s   t dddiS )Nr,    r1   rI   r?   r?   r?   r@   rA   q  rE   z"test_issue_22822.<locals>.<lambda>Zsome_parameterzsome_parameter is NoneT)r   r   r   )datar?   r?   r@   test_issue_22822p  s    r   )Prs   ru   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   Zsympy.parsing.sympy_parserr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   rP   rR   rS   rW   rZ   r_   re   rj   rn   rz   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r?   r?   r@   <module>   sJ   @ P
2			