o
    *ήc..                     @   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 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*m+Z+m,Z,m-Z-m.Z.m/Z/ d	d
 Z0dd Z1dd Z2d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/d0 ZCd1d2 ZDd3d4 ZEd5d6 ZFd7d8 ZGd9d: ZHd;d< ZId=d> ZJd?d@ ZKdS )A    N)Q)	SymbolFunctionFloatRationalIntegerIMulPowEq)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} i dd|  dtddtddd	ddt  d
t| dt| dt| 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d td!d"td#d$d%td td&td'tdg| jd(t	t
ddd)d*t
ddd)d*d)d*tt| | d+d,d-t| d.	}| D ]\}}t||ksJ qttd/d0  ttd1d0  ttd2d0  ttd3d0  ttd4d0  ttd5d0  ttd6d0  d S )7N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 g      @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                   S   s
   t dtS Nr(   )r   r    r;   r;   L/tmp/pip-target-vg8gfxp4/lib/python/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      dS Nr-   r;   r(   yr;   r;   r<   r=   B       5test_sympy_parser.<locals>.<lambda>.<locals>.<lambda>transformationsr   r;   r;   r;   r<   r=   A   s   c                   S   s   t ddd fdS )Nr(   c                 S   r>   r?   r;   r@   r;   r;   r<   r=   D   rB   rC   rD   rF   r;   r;   r;   r<   r=   C   s   c                   S   s   t dddS )Nr(   )r;   rD   rF   r;   r;   r;   r<   r=   E       c                   S   s   t di g g S r:   rF   r;   r;   r;   r<   r=   F       c                   S      t dg g i S r:   rF   r;   r;   r;   r<   r=   G   rH   c                   S   rI   r:   rF   r;   r;   r;   r<   r=   H   rH   )r   r   r   r   r   r   r   r   free_symbolsr	   r
   r   r   r   evenitemsr   r   	TypeError)r(   inputstextresultr;   r;   r<   test_sympy_parser   sv   

	








!rQ   c                  C   sB   dt ddi} ttf }|  D ]\}}t||d|ksJ qd S )Nz0.123{   i  rD   )r   r   r   rL   r   )rN   rE   rO   rP   r;   r;   r<   test_rationalizeK   s   

rS   c               	   C   s6   g d} | D ]}zt | J  ty   	 Y qw d S )N)zx!!!zx!!!!z(!))r   r   )rN   rO   r;   r;   r<   test_factorial_failT   s   rT   c                     sP   g d} | D ] t t fdd qg d} | D ] t ttf fdd q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 NrF   r;   rO   r;   r<   r=   g       z$test_repeated_fail.<locals>.<lambda>)z0.1[z0.1[1z0.1[]c                      rU   rV   rF   r;   rW   r;   r<   r=   l   rX   )r   rM   r   SyntaxError)rN   r;   rW   r<   test_repeated_fail`   s   rZ   c                   C   s0   t dtddksJ t dtddksJ d S )Nz.[1]r-   	   z1 + .[1]r.   )r   r   r;   r;   r;   r<   test_repeated_dot_onlyo   s   r\   c                  C   sB   ddd i} dt di}| D ]\}}t|| d|ksJ qd S )Nmy_functionc                 S   s   | d S )Nr)   r;   r(   r;   r;   r<   r=   v   rX   z!test_local_dict.<locals>.<lambda>zmy_function(2)   
local_dict)r   rL   r   )ra   rN   rO   rP   r;   r;   r<   test_local_dictt   s   rb   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)realrA   yxr(   ra   rE   r   r   r   r   r   )trc   rA   r;   r;   r<   test_local_dict_split_implmult   s   "ri   c                     sR   t d} dtdi td d d | ksJ dt di tt fdd d S )	Nr(   foobarfoo(x)r`   bazc                         t d dS )Nrl   r`   rF   r;   dr;   r<   r=      rG   z/test_local_dict_symbol_to_fcn.<locals>.<lambda>)r   r   r   r   rM   r^   r;   ro   r<   test_local_dict_symbol_to_fcn   s
   rq   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   rL   r   )rt   rN   rO   rP   r;   r;   r<   test_global_dict   s   ru   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sAJ q1d S )Nzfrom sympy import *maxminr   rs   )execvarsbuiltinsrL   
isinstancetypesBuiltinFunctionTyper   r   popr   r   )default_globalsbuiltins_dictnameobjrt   r;   r;   r<   test_no_globals   s   

r   c                   C   s    t tdd  t tdd  d S )Nc                   S      t dS )Nz(()rF   r;   r;   r;   r<   r=      rX   z!test_issue_2515.<locals>.<lambda>c                   S   r   )Nz"""rF   r;   r;   r;   r<   r=      rX   )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  s#J d S )Nr(   z2*(x+1)r   r6   Fr)   r-   )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*xFr6   rL   r   rN   rO   rP   r;   r;   r<   #test_recursive_evaluate_false_10560   s   r   c                  C   sz   g d} | D ]}t |dd}|t|  krt| ks"J  J qtt ddddks/J tt d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)Fr6   zln(0)r   zcbrt(0)z0**(1/3))r   strdoit)rN   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/-5Fr6   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sJ td| d|| ks&J d S )Nr(   rA   xyrD   rg   )rE   r(   rA   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s&J td| d|id	|||d  ks9J d S )
Nr(   rA   afzay(x+1)rD   r-   zaf(x+1))rE   ra   )r   r   r   r   r   r   )rE   r(   rA   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s$J td| dt|| ks2J td| dt|| ks@J td	| dt||ksNJ td
| d||| ks\J d S )Nr(   rA   r   zsin^2(x)rD   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   )rh   r(   rA   r   yfcnr;   r;   r<   test_functional_exponent   s    r   c                      s    t tf  tt fdd d S )Nc                      rn   )Nz(1,2),(3,4]rD   rF   r;   rD   r;   r<   r=     rG   z@test_match_parentheses_implicit_multiplication.<locals>.<lambda>)r   r   r   r   r;   r;   rD   r<   .test_match_parentheses_implicit_multiplication  s   r   c                  C   sv   t tf } td}td}td| dtd|ksJ td| dt||ks'J td| dttd| |dks9J d S )	Nr(   rA   z1*2=xrD   r)   zy = xz(2*y = x) = FalseF)r   r   r   r   r   )rE   r(   rA   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   sv   t tf } td}td}td| d}||  kr$d| d|  ks'J  J td| d}||d | d	 ks9J d S )
Nnz2**n * 3**nz2**n3**nrD   r)   r*   n12n34   "   )r   r"   r   r   )rE   r   expr1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_names)  s   r   c                   C   s   t jdk r	td tddksJ tdtd  kr#tddks&J  J td	td
  kr8tddks;J  J tdtd  krMtddksPJ  J tdtd  krbtddkseJ  J tdtd  krwtddkszJ  J d S )N)r*      z2test_python3_features requires Python 3.8 or newer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   r   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sJ d S )Nr(   z	E**x(1+x)rf   )r   r   r   r"   rJ   )r(   eqr;   r;   r<   test_issue_19501;  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s&J td tks.J td tks6J td t	ks>J td	 t
ksFJ td
 tksNJ td tksVJ td tks^J td tksfJ td tksnJ td d td   krtksJ  J t}td |t|d  |d fksJ td ddf t|d f ksJ tdddd| d  d ksJ tdddtd|  ksJ d S )Nr   r^   r   r-   r)   r*   r_         r,   r   r[   r.      )r   r-   r)   r*   r_   )r4   r   z0.3x^2allrD   zsin 3ximplicit)	sympy.abcr(   lenr&   r   r    r!   r#   r$   r"   r   r%   r   r   r   r   r'   r   r   r   )r(   rh   r;   r;   r<   test_parsing_definitionsC  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)23)r   r   )casesbuilt_in_func_callsympy_func_callr;   r;   r<   test_builtinsZ  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(    r-   rF   r;   r;   r;   r<   r=   g  rH   z"test_issue_22822.<locals>.<lambda>some_parameterzsome_parameter is NoneT)r   
ValueErrorr   )datar;   r;   r<   test_issue_22822f  s   r   )Lr   rz   r|   sympy.assumptionsr   
sympy.corer   r   r   r   r   r   r	   r
   r   sympy.functionsr   r   r   r   r   r   sympy.logicr   sympy.seriesr   sympy.testing.pytestr   r   sympy.parsing.sympy_parserr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   rQ   rS   rT   rZ   r\   rb   ri   rq   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   r;   r;   r<   <module>   sL   , P
2		