o
    *ήci                     @   s  d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	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 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" d dl#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZHmIZI d dl/mJZJmKZKmLZL d dlMmNZN d dlOmPZPmQZQ d dlRmSZS d d lTZTd d!lUmVZVmWZW d d"lXmYZY e<d#ZZd$d% Z[d&d' Z\d(d) Z]d*d+ Z^eCd,d- Z_d.d/ Z`d0d1 Zad2d3 Zbd4d5 Zcd6d7 Zdd8d9 Zee?d:d; Zfd<d= Zgd>d? Zhd@dA ZidBdC ZjdDdE ZkdFdG ZldHdI ZmdJdK ZndLdM ZodNdO ZpdPdQ ZqdRdS ZrdTdU ZsdVdW ZtdXdY ZudZd[ Zvd\d] Zwd^d_ Zxd`da Zydbdc Zzddde Z{dfdg Z|dhdi Z}djdk Z~dldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Ze?dxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zd S )    )Add)Tuple)FunctionLambda)Mul)FloatIIntegerRationalpi)PowSSymbol)Abs)exp)sqrt)cossin)falseOrtrueXor)Matrix)null)Poly)srepr)Range)Intervalxy)sympify_sympifySympifyErrorkernSCantSympify	converter)
_sympifyit)import_module)raisesXFAILskipwarns_deprecated_sympy)conserve_mpmath_dps)PointLine)	factorial
factorial2)_clash_clash1_clash2)HAS_GMPY)	FiniteSetEmptySet)ImmutableDenseNDimArrayN)defaultdictOrderedDict)mpqnumpyc                  C   sT   t d} | ttksJ t| tttksJ tt| ttttks(J d S )Nzexp(x))r#   r   r!   typestr)v rB   D/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_sympify.pytest_issue_3538*   s   $rD   c                  C   s  t dtdks
J t dtdksJ t dtdksJ tj} t d| ks)J t d|  ks2J t d|  ks;J t dtdd	ksFJ t d
tdd	ksQJ t dtdd	ks\J t dtddksgJ t dtddksrJ t dtddks}J t dtddksJ t ddddtdd tdd ksJ t dddtddksJ t dddtddksJ t d ddtd!d"ksJ t d#ddtd!d"ksJ t d$ddtd%d&ksJ t d'ddtd(dtd	d) ksJ t d*ddtd+d,ksJ t d-ddd.ksJ t d/ddtd+d0ksJ t d1ddtd2d0ks#J t d3ddtd4d"ks1J t d5ddtdd	t ksAJ t d6td7d8ksMJ t d9td:d;ksYJ t d<ddtd=d>ksgJ d S )?Nr!   z   xz   x   z--.5z-1/2z-+--.5z-.[3]   z.[3]   z+.[3]z+0.[3]*10**-2i,  z.[052631578947368421]   z.0[526315789473684210]z.034[56]i  i\  z	1.22[345]Trational   d   iY  i< z2/2.6
      z2.6/2z2.6e2/17i     z	2.6e+2/17z	2.6e-2/17   ihB  z2.1+3/4      z2.234456iC iH z2.234456e23l     .Yu z2.234456e-23l      (rm\x
 z-2.234456e-23iz12345678901/17l   5? z1/.3 + xz222222222222/11111111111l   z l   ,
 z1/.2[123456789012]l   Un86l   gyuA z.1234567890123456l   *)-Fl    ~o8 )r#   r   r   Halfr
   r!   )n1rB   rB   rC   test_sympify11   sX   







 

rU   c                  C   sT   zdd l } W n
 ty   Y d S w t| dd}|tddkr&t|tu s(J d S )Nr   e      )	fractionsImportErrorr#   Fractionr
   r?   )rX   valuerB   rB   rC   test_sympify_Fraction^   s   "r\   c                  C   s   t r?t dkrdd l} nt dkrdd l} t| d}|tdkr&t|tu s(J t| dd}|tddkr=t|tu sAJ d S d S )N   r   rG   iAB rV   rW   )	r7   gmpy2gmpyr#   mpzr	   r?   r=   r
   )r_   r[   rB   rB   rC   test_sympify_gmpyh   s   

ra   c                  C   s  t td} | tdkrt| tu sJ dtj_t tjtdtddks*J t tjtdtddks;J dtj_t tjtd	td
dksPJ t tjtd	tddksaJ t t	dtdtdt
  kstJ t tddtjksJ d S )N      ?   z3.14159265359z1e-12Tz1e-13F   z3.14159z1e-5z1e-6      ?       @       @rG   r]   )r#   mpmathmpfr   r?   mpdpsr   
epsilon_eqmpcr   r=   r   rS   )r[   rB   rB   rC   test_sympify_mpmathv   s4   &rm   c                  C   sP   G dd d} |  }t |td ksJ t|td ksJ |td ks&J d S )Nc                   @      e Zd Zdd ZdS )ztest_sympify2.<locals>.Ac                 S   s   t dd S )Nr!   rF   r   selfrB   rB   rC   _sympy_   s   z test_sympify2.<locals>.A._sympy_N__name__
__module____qualname__rq   rB   rB   rB   rC   A       rv   rF   r$   r!   r#   rv   arB   rB   rC   test_sympify2   s
   r{   c                   C   s`   t dtd ks
J t dtd ksJ t dtdd ks J ttdd  ttd	d  d S )
Nx**3rF   zx^31/2rG   r]   c                   S      t dS )Nr|   r$   rB   rB   rB   rC   <lambda>       ztest_sympify3.<locals>.<lambda>c                   S   r~   )Nr}   r   rB   rB   rB   rC   r      r   )r#   r!   r	   r+   r%   rB   rB   rB   rC   test_sympify3   s
   r   c                   C   s<   t tdd  t tdd  t tdd  t tdd  d S )Nc                   S   r~   )Nifr#   rB   rB   rB   rC   r      r   z'test_sympify_keywords.<locals>.<lambda>c                   S   r~   )Nforr   rB   rB   rB   rC   r      r   c                   S   r~   )Nwhiler   rB   rB   rB   rC   r      r   c                   S   r~   )Nlambdar   rB   rB   rB   rC   r      r   )r+   r%   rB   rB   rB   rC   test_sympify_keywords   s   r   c                   C   s$   t ddksJ t ddksJ d S )Nz1e-64r   z1e-20000r   rB   rB   rB   rC   test_sympify_float      r   c                   C   s$   t dtu sJ t dtu sJ d S )NTF)r#   r   r   rB   rB   rB   rC   test_sympify_bool   r   r   c                  C   s   t ddt ddg} tddgdd| ksJ ttd	dd
td	tdiks&J tddddggtdtdtdtdggks@J d S )NrF   rM   rG      .3.2TrI   r   r    1234r]   rR   )r
   r#   dictr!   r"   r   ansrB   rB   rC   test_sympyify_iterables   s    8r   c                  C   s8   t ddt ddg} ttddgddt|  ksJ d S 	NrF   rM   rG   r   r   r   TrI   )r
   r#   tupler   r   rB   rB   rC   test_issue_16772   s   $r   c                      s(   G dd dt t tt fdd d S )Nc                   @      e Zd ZdS )ztest_issue_16859.<locals>.noNrs   rt   ru   rB   rB   rB   rC   no       r   c                      s   t  dS )Ng333333?r   rB   r   rB   rC   r          z"test_issue_16859.<locals>.<lambda>)floatr'   r+   r%   rB   rB   r   rC   test_issue_16859   s   r   c                  C   sT   G dd d} |  }t |d td ksJ t|d td ks"J |tks(J d S )Nc                   @   rn   )ztest_sympify4.<locals>.Ac                 S   r~   Nr!   r   ro   rB   rB   rC   rq         z test_sympify4.<locals>.A._sympy_Nrr   rB   rB   rB   rC   rv      rw   rv   rF   rx   ry   rB   rB   rC   test_sympify4   s
   r   c                   C   sl   t dtdks
J t dtdksJ t ddu sJ t ddu s$J t dtks,J t dtks4J d S )	NsomecoreTrueTFalseFr   r   )r#   r   r   r   rB   rB   rB   rC   test_sympify_text   s   r   c                   C   s8   t ddt  td  ksJ t dtd ksJ d S )Nzfactor(x**2-1, x)rG   zsin(pi/2)*cos(pi))r#   r!   r	   rB   rB   rB   rC   test_sympify_function   s   r   c                  C   s:   t td t d t} t| | u sJ t| | u sJ d S )Nr]   rG   )r   r!   r$   r#   )prB   rB   rC   test_sympify_poly   s   r   c                   C   sr  t dttks
J t dttd ksJ t dtdttd   ks&J t ddtttd   d ks8J t dttt ksDJ t dttksNJ t d	ttd ksZJ t d
tdttd   ksjJ t ddtttd   d ks|J t dttt ksJ t dtttksJ ttdd  ttdd  ttdd  ttdd  ttdd  d S )Nzx!z(x+1)!rG   z(1 + y*(x + 1))!z(1 + y*(x + 1)!)^2r]   zy*x!zx!!z(x+1)!!z(1 + y*(x + 1))!!z(1 + y*(x + 1)!!)^2zy*x!!zfactorial2(x)!c                   S   r~   )Nz+!!r   rB   rB   rB   rC   r      r   z(test_sympify_factorial.<locals>.<lambda>c                   S   r~   )Nz)!!r   rB   rB   rB   rC   r      r   c                   S   r~   )N!r   rB   rB   rB   rC   r      r   c                   S   r~   )Nz(!)r   rB   rB   rB   rC   r      r   c                   S   r~   )Nzx!!!r   rB   rB   rB   rC   r      r   )r#   r2   r!   r"   r3   r+   r%   rB   rB   rB   rC   test_sympify_factorial   s     $ $r   c                   C   s,   t dtdks
J t dtdksJ d S )Na__a)r#   r   rB   rB   rB   rC   test_issue_3595   s   r   c                  C   st   t d} tdtddksJ tdt| | ksJ tdt| d|  ks'J tdt| tfd|  t ks8J d S )	Nr!   	lambda: 1rB   rG   zlambda x: xzlambda x: 2*xr]   zlambda x, y: 2*x+y)r   r#   r   r"   r!   rB   rB   rC   test_lambda  s
   &r   c                   C   s`   t tdd  t tdd  t tdd  t t td W d    d S 1 s)w   Y  d S )Nc                   S   r~   )Nzlambda *args: argsr   rB   rB   rB   rC   r     r   z$test_lambda_raises.<locals>.<lambda>c                   S   r~   )Nzlambda **kwargs: kwargs[0]r   rB   rB   rB   rC   r     r   c                   S   r~   )Nzlambda x = 1: xr   rB   rB   rB   rC   r     r   r   )r+   r%   r$   rB   rB   rB   rC   test_lambda_raises  s   

"r   c                  C   s^   t tdd  G dd d} t  t|  tdksJ W d    d S 1 s(w   Y  d S )Nc                   S   r~   )Nzfx)r   rB   rB   rB   rC   r     r   z%test_sympify_raises.<locals>.<lambda>c                   @   rn   )ztest_sympify_raises.<locals>.Ac                 S      dS r   rB   ro   rB   rB   rC   __str__     z&test_sympify_raises.<locals>.A.__str__N)rs   rt   ru   r   rB   rB   rB   rC   rv     rw   rv   r!   )r+   r%   r.   r#   r   )rv   rB   rB   rC   test_sympify_raises  s
   "r   c                     s   t d} td t| | u sJ tdtdksJ tdtdks$J tddtd  ks0J t  u s8J tt fdd	 G d
d d}| }t|tdksUJ ttdd	  ttdd	  d S )Nr!   frG         ?0.5y      ?      ?rb   c                      s   t  S Nr   rB   r   rB   rC   r   .  r   ztest__sympify.<locals>.<lambda>c                   @   rn   )ztest__sympify.<locals>.Ac                 S   r~   Nr   r	   ro   rB   rB   rC   rq   1  r   z test__sympify.<locals>.A._sympy_Nrr   rB   rB   rB   rC   rv   0  rw   rv   r   c                   S   r~   Nr   r   rB   rB   rB   rC   r   8  r   c                   S   s   t g dS )NrG   r]   rF   r   rB   rB   rB   rC   r   9  r   )	r   r   r$   r	   r   r   r#   r+   r%   )r!   rv   rz   rB   r   rC   test__sympify   s   r   c                     s   t dt d} tdtdd }|dd ksJ |dtd ks)J || |  ks4J |d	tks=J tdd
d   dd ksPJ  dtd ks]J  | |  kshJ tt fdd d S )Nr!   r"   bc                 S      | | S r   rB   rz   r   rB   rB   rC   add@     ztest_sympifyit.<locals>.addrG   r   r   r   c                 S   r   r   rB   r   rB   rB   rC   
add_raisesJ  r   z"test_sympifyit.<locals>.add_raisesc                      s
    dS r   rB   rB   r   r!   rB   rC   r   R  s   
 z test_sympifyit.<locals>.<lambda>)r   r)   NotImplementedr   r+   r%   )r"   r   rB   r   rC   test_sympifyit<  s   

r   c                  C   s  G dd d} G dd d}G dd d}G dd d}G d	d
 d
}G dd d}| }| }| }|  }	| }
| }t |dksDJ tt |tsMJ t |dksUJ tt |ts^J t |dksfJ tt |tsoJ tt |	d dk s{J tt |
d dk sJ tt |d dk sJ t|dksJ tt|tsJ t|dksJ tt|tsJ t|dksJ tt|tsJ tt|	d dk sJ tt|
d dk sJ tt|d dk sJ d S )Nc                   @   rn   )ztest_int_float.<locals>.F1_1c                 S   r   N皙?rB   ro   rB   rB   rC   	__float__W  r   z&test_int_float.<locals>.F1_1.__float__N)rs   rt   ru   r   rB   rB   rB   rC   F1_1V  rw   r   c                   @       e Zd ZdZdd Zdd ZdS )ztest_int_float.<locals>.F1_1bzX
        This class is still a float, even though it also implements __int__().
        c                 S   r   r   rB   ro   rB   rB   rC   r   ^  r   z'test_int_float.<locals>.F1_1b.__float__c                 S   r   NrG   rB   ro   rB   rB   rC   __int__a  r   z%test_int_float.<locals>.F1_1b.__int__Nrs   rt   ru   __doc__r   r   rB   rB   rB   rC   F1_1bZ  s    r   c                   @   (   e Zd ZdZdd Zdd Zdd ZdS )	ztest_int_float.<locals>.F1_1czN
        This class is still a float, because it implements _sympy_()
        c                 S   r   r   rB   ro   rB   rB   rC   r   h  r   z'test_int_float.<locals>.F1_1c.__float__c                 S   r   r   rB   ro   rB   rB   rC   r   k  r   z%test_int_float.<locals>.F1_1c.__int__c                 S   r~   r   )r   ro   rB   rB   rC   rq   n  r   z%test_int_float.<locals>.F1_1c._sympy_Nrs   rt   ru   r   r   r   rq   rB   rB   rB   rC   F1_1cd  s
    r   c                   @   rn   )ztest_int_float.<locals>.I5c                 S   r   r   rB   ro   rB   rB   rC   r   r  r   z"test_int_float.<locals>.I5.__int__N)rs   rt   ru   r   rB   rB   rB   rC   I5q  rw   r   c                   @   r   )ztest_int_float.<locals>.I5ba  
        This class implements both __int__() and __float__(), so it will be
        treated as Float in SymPy. One could change this behavior, by using
        float(a) == int(a), but deciding that integer-valued floats represent
        exact numbers is arbitrary and often not correct, so we do not do it.
        If, in the future, we decide to do it anyway, the tests for I5b need to
        be changed.
        c                 S   r   Ng      @rB   ro   rB   rB   rC   r   ~  r   z%test_int_float.<locals>.I5b.__float__c                 S   r   r   rB   ro   rB   rB   rC   r     r   z#test_int_float.<locals>.I5b.__int__Nr   rB   rB   rB   rC   I5bu  s    r   c                   @   r   )	ztest_int_float.<locals>.I5cz
        This class implements both __int__() and __float__(), but also
        a _sympy_() method, so it will be Integer.
        c                 S   r   r   rB   ro   rB   rB   rC   r     r   z%test_int_float.<locals>.I5c.__float__c                 S   r   r   rB   ro   rB   rB   rC   r     r   z#test_int_float.<locals>.I5c.__int__c                 S   r~   r   r   ro   rB   rB   rC   rq     r   z#test_int_float.<locals>.I5c._sympy_Nr   rB   rB   rB   rC   I5c  s
    r   r   r   gh㈵>)r#   
isinstancer	   r   absr$   )r   r   r   r   r   r   i5i5bi5cf1_1f1_1bf1_1crB   rB   rC   test_int_floatU  s<   
r   c                  C   s:  t ddddttddddtddddddt dtddddddt dtdtddddddddtdtddddddtddddt dddtddddtd d ddt tdd	d
dddddt dtdtdtd	dddddddddt dtdtddddddddd
} |  D ]\}}t|dd|ksJ qd S )Nr]   rF   FevaluaterE   r   rG   TrR   rd      )
z2 + 3z2**2 / 3z	2 + 3 * 5z	2 - 3 * 5z1 / 3zTrue | Falsez1 + 2 + 3 + 5*3 + integrate(x)z2 * 4 * 6 + 8z	2 - 8 / 4z2 - 2**2)r   r   r   r   r!   itemsr#   )casescaseresultrB   rB   rC   test_evaluate_false  s     $* r   c                  C   s&   t d} | tdksJ | jsJ d S )Nz
Integer(4)rR   )r#   r	   
is_Integerrz   rB   rB   rC   test_issue_4133  s   r   c                  C   sl   ddg} t | tdtdgksJ t t| ttdtdks#J t t| ttdtdks4J d S )NrF   rf   )r#   r	   r   r   r   setr8   r   rB   rB   rC   test_issue_3982  s   "&r   c                   C   sR   t dd tdd   krt jksJ  J dt dd  tdt ks'J d S )NrG   r]   )r   r#   rS   r   r   rB   rB   rB   rC   test_S_sympify  s   .$r   c                   C   s8   t tdt td  krt tdksJ  J d S )Ny      ?        rb   )r   r   r   rB   rB   rB   rC   test_issue_4788  s   8r   c                   C   s   t d d u sJ d S r   r   rB   rB   rB   rC   test_issue_4798_None  s   r   c                   C   s   t dtt ks
J d S )Nzx+
y)r#   r!   r"   rB   rB   rB   rC   test_issue_3218     r   c                  C   s>   t d} d| i}td}|| ksJ td|}|| ksJ d S )NCr   r#   )r   varsexp1exp2rB   rB   rC   test_issue_4988_builtins  s   
r   c                  C   sX   t tdd} | tddkrt| tsJ t t| d}|tddkr(t|ts*J d S )Nr   rG   )rG   r   )r   rG   )r#   r0   r   r1   )r   LrB   rB   rC   test_geometry  s    r  c               
   C   s  d} ddt  dt    t t dt   d   dt t dt        dks&J t| }|dkr4| dks6J ddd} t| }|dkrJ| dksLJ tdtdtdtd	dd
dd
dksaJ tdtdkskJ tdtt  ksvJ dt t	  t	 }tddg||fgksJ tdt	 dt
t d  dt
t  tt    d ksJ tdtdksJ tddt dt	  d  ksJ tdddt  dt	   ksJ tdddt  dt	   ksJ td}|dkr| dksJ tddt  t d  ksJ d S )Nz7-1 - 2*(-(-x + 1/x)/(x*(x - 1/x)**2) - 1/(x*(x - 1/x)))rE   r]   rG   r!   _kernzInterval(-1,-2 - 4*(-3))r   rc   Fr   zE**-(x)2*(x + y)*y)r  z$-(2*sin(x)**2 + 2*sin(x)*cos(x))*y/2z(1 - x)/(1 - x*(1-y))z(1-x)/(1-(1-y)*x)z(1-2**-(4+1)*(1-y)*x)    z(1-2**(4+1)*(1-y)*x)z(1-2.*(1-y)*x)rf   zx - (x - 1)z(2*x)/(x-1))r!   r&   simplifyreplacer   r   r   r   r   r"   r   r   expand)ssseonerB   rB   rC   
test_kernS  s4   H,   "r  c                   C   sx   t dtdddgtddfgksJ t dtdddgt jfgks$J t ddgggks/J t dtdgks:J d S )	Nz[[1/3,2], (2/5,)]rG   rF   r]   r   z[[2/6,2], (2/4,)]z[[[2*(1)]]]zMatrix([2*(1)]))r   r
   rS   r   rB   rB   rB   rC   test_issue_6540_6552  s   &"r  c                  C   s   t tdtddksJ t tdtddksJ i } td|  t td| dks*J t tdtddks6J ttdtdjd	ksCJ tt	d
d  t
dd tttfD sXJ d S )NzQ & ClocalszC & Qzpi(x)zfrom sympy.abc import Q, CzC&Qzpi(C, Q)zpi + xr]   c                   S   s   t dtdS )Nz
pi + pi(x)r  )r   r6   rB   rB   rB   rC   r     r   z!test_issue_6046.<locals>.<lambda>c                 s   s"    | ]}t | thkV  qd S r   )r   valuesr   .0irB   rB   rC   	<genexpr>   s     z"test_issue_6046.<locals>.<genexpr>)r@   r   r5   r6   execr4   lenfree_symbolsr+   	TypeErrorallr  rB   rB   rC   test_issue_6046  s   
r  c                  C   s.   t td} t| }tt|dk sJ d S )N   g޷ET%)r@   r   evalfr#   r   r   )r  r   rB   rB   rC   !test_issue_8821_highprec_from_str$  s   r  c                  C   s  t std t g dg dg} t| }|jdksJ t | D ]\\}}}|||f |ks1J q!t dtdtd  g}t|}|jdksIJ |d	 |d	   krXdks[J  J |d
 |d
   krjtksmJ  J |d |d   krdtd  ksJ  J t d	d}|	ddd t|}|d j
sJ |d d	ksJ t g d}	t dd tdD }
|
	ddd t|	tg dksJ t|
tdd tdD dksJ d S )Nnumpy not installed.)rG   rF   rE   )r   rG      )r]   rF   irF   r]   )rF   r   rG      rR   )r   r   r   r   c                 S      g | ]}|qS rB   rB   r  rB   rB   rC   
<listcomp>C      z$test_issue_10295.<locals>.<listcomp>c                 S   r!  rB   rB   r  rB   rB   rC   r"  F  r#  )r]   rR   rF   )r>   r-   arrayr   shapendenumerater!   r"   arangeresize
is_integerranger#   r:   )rv   sAricivalBsBr   sCa1a2rB   rB   rC   test_issue_10295*  s2   
$$,(r4  c                   C   s4   t tdtdksJ ttdtdksJ d S )NrM   )r#   r*  r   r$   rB   rB   rB   rC   
test_RangeI  s   r5  c                  C   s4   t d} t| ht| ksJ tt tksJ d S )Nn)r   r#   r8   r   r9   )r6  rB   rB   rC   test_sympify_setO  s   r7  c                  C   s  t std t } dd }t| dtdu sJ z|t| dtds(J |t| dtds6J W n	 ty@   Y nw |t| dtdsOJ |t| 	dtds]J |t| 
d	td	skJ |t| d
td
syJ |t| dtdsJ |t| dtdsJ |t| dtdsJ |t| dtdsJ |t| dtdsJ |t| dtdddsJ |t| dtdddsJ |t| dtdddsJ |t| dtddt  sJ |t| dtddt  sJ |t| dtddt  s(J t| dr?|t| dtddds?J t| drV|t| dtdddsXJ d S d S )Nz'numpy not installed. Abort numpy tests.c                 S   s   | |kot | t |kS r   )r?   r    rB   rB   rC   equalZ  r   z!test_sympify_numpy.<locals>.equalrG   Tl   6G C	 iIiii-il6G C	 {   i90  gl?r   )	precisiong|ӭ?5   g6sӭ?P   re   rb   rf   float96float128g
|ӭ?)r>   r-   r#   bool_r   int_intpOverflowErrorintcint8int16int32int64uint8uint16uint32uint64float32r   float64
longdouble	complex64r   
complex128longcomplexhasattrr=  r>  )npr8  rB   rB   rC   test_sympify_numpyU  s`    

&&&



rT  c                  C   s4   t ddt ddg} tddhddt|  ksJ d S r   )r
   r#   r8   r   rB   rB   rC   !test_sympify_rational_numbers_set  s    rU  c                  C   st   G dd d} G dd d| }G dd d| }t |  tdks"J t | tdks-J t | tdks8J d	S )
z=Tests the resolution order for classes that implement _sympy_c                   @   rn   )ztest_sympify_mro.<locals>.ac                 S   r~   r   r   ro   rB   rB   rC   rq     r   z#test_sympify_mro.<locals>.a._sympy_Nrr   rB   rB   rB   rC   rz     rw   rz   c                   @   rn   )ztest_sympify_mro.<locals>.bc                 S   r~   Nr]   r   ro   rB   rB   rC   rq     r   z#test_sympify_mro.<locals>.b._sympy_Nrr   rB   rB   rB   rC   r     rw   r   c                   @   r   )ztest_sympify_mro.<locals>.cNr   rB   rB   rB   rC   c  r   rW  rG   r]   N)r#   r	   )rz   r   rW  rB   rB   rC   test_sympify_mro  s   rX  c               	   C   s  G dd d} G dd d| }G dd d| }dd t | < d	d t |< t|  td
ks.J t| tdks9J t| td
ksDJ G dd dt}tt v rUt t }nd}z|t t< td
|d
ksfJ W |du rpt t= dS |t t< dS |du r~t t= w |t t< w )z3Tests the resolution order for classes in converterc                   @   r   )z!test_sympify_converter.<locals>.aNr   rB   rB   rB   rC   rz     r   rz   c                   @   r   )z!test_sympify_converter.<locals>.bNr   rB   rB   rB   rC   r     r   r   c                   @   r   )z!test_sympify_converter.<locals>.cNr   rB   rB   rB   rC   rW    r   rW  c                 S   r~   r   r   r   rB   rB   rC   r     r   z(test_sympify_converter.<locals>.<lambda>c                 S   r~   rV  r   r   rB   rB   rC   r     r   rG   r]   c                   @   r   )z)test_sympify_converter.<locals>.MyIntegerNr   rB   rB   rB   rC   	MyInteger  r   rY  N)r(   r#   r	   int)rz   r   rW  rY  int_converterrB   rB   rC   test_sympify_converter  s*   

r\  c                  C   s>   t std tt dg} t| tsJ | d dksJ d S )Nr  rG   r   )r>   r-   r#   r$  r   r:   r   rB   rB   rC   test_issue_13924  s
   r]  c                  C   s|  t std tt d} t| tu sJ | tdksJ G dd dt}tt dd|i} t| |s6J tt d} | tt ksEJ tt ddd} | t	ttksWJ t
td	d
  tt d} t| tslJ | dksrJ tt ddd} t| tsJ | tddksJ tt d} t| tsJ | dt ksJ tt ddd} t| tsJ | tttddksJ d S )Nr  rz   c                   @   r   )z-test_numpy_sympify_args.<locals>.CustomSymbolNr   rB   rB   rB   rC   CustomSymbol  r   r^  r   zx^yF)convert_xorc                   S   s   t tdddS )Nr!   Tstrict)r#   r>   str_rB   rB   rB   rC   r     s    z)test_numpy_sympify_args.<locals>.<lambda>z1.1r   TrI      rM   zx + xr]   r   )r>   r-   r#   rb  r?   r   r   r!   r"   r   r+   r%   r   r
   r   r   )rz   r^  rB   rB   rC   test_numpy_sympify_args  s2   rd  c                  C   s(   t d} t d}td| | ksJ d S )Nrz   r   za+
br   r   rB   rB   rC   test_issue_5939  s   re  c                  C   s   t ddi} tj| vsJ td| v sJ | d tju sJ t tddi} tj| vs-J td| v s5J | d tju s>J t ttddi} tj| vsNJ td| v sVJ | d tju s_J d S )Nr   rG   )r#   r   rS   r   Oner<   r;   rZ  )drB   rB   rC   test_issue_16759  s   rh  c                  C   s.   t d} tdddt| tdddksJ d S )Nrz   za(x)*5Fr   r   )r   r#   r   r!   r   rB   rB   rC   test_issue_17811  s   &ri  c                     s`  t std t jdt jd t jdt jdt jdt jd} t jdt jd}t jdt jd}t jdt jd}t t  t dtksEJ t t t dtksTJ t  t t dtkscJ t t t dtksrJ | t dt dt 	dfD ]$}t| tksJ |t tksJ t
t| tsJ t
|t tsJ qt t| t dtd ksJ t t| t dtd ksJ t |t t dtd ksJ t |t t dtd ksJ |t dt dt 	dfD ]!}t| |t ksJ t
t| tsJ t
|t tsJ qtt t d	t ks)J tt tg t jd	t gtdks>J tt dgtdgdksOJ tt dgggtdgd
ksbJ t tdgdksoJ ttg ddks}J t| tdgdksJ t| dddksJ ttdd  tt fdd ttfdd d S )Nr  )rG   rG   )dtype)r]   r]   rB   r   rb   rG   r]   )rG   rG   rG   )r   r   r   r   Tr`  g        c                   S   s   t tdgddS )NrG   Tr`  )r#   r>   r$  rB   rB   rB   rC   r   <  s    z"test_issue_14706.<locals>.<lambda>c                         t  ddS NTr`  r   rB   )z1rB   rC   r   =  r   c                      rk  rl  r   rB   )z2rB   rC   r   >  r   )r>   r-   zerosrM  onesr  r!   fullrG  rO  r   r   r   r$  objectr#   r:   r+   r%   )z3y1y2y3zy_rB   )rm  rn  rC   test_issue_14706  sX   "	"""*"&ry  c                  C   s^  t ddd} t ddd}| jrt| jtdt dhksJ |jr/t|jdt dt ddhks1J t ddgdd| |gks?J t ddd} t ddd}| jrYt| jdt dhks[J |jrit|jd	t d	hkskJ t ddgdd| |gksyJ t d} t d}| jrt| jdt dhksJ |jrt|jd	t d	hksJ t ddg| |gksJ d S )
Nzx+3*x+2Fr   z2*x+4*x+2+4rF   r]   rR   Trd   )r#   is_Addr   argsr!   )urA   rB   rB   rC   test_issue_21536A  s   "(    r}  )sympy.core.addr   sympy.core.containersr   sympy.core.functionr   r   sympy.core.mulr   sympy.core.numbersr   r   r	   r
   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.logic.boolalgr   r   r   r   sympy.matrices.denser   sympy.parsing.sympy_parserr   sympy.polys.polytoolsr   sympy.printing.reprr   sympy.sets.fancysetsr   sympy.sets.setsr   	sympy.abcr!   r"   sympy.core.sympifyr#   r$   r%   r&   r'   r(   sympy.core.decoratorsr)   sympy.externalr*   sympy.testing.pytestr+   r,   r-   r.   sympy.utilities.decoratorr/   sympy.geometryr0   r1   (sympy.functions.combinatorial.factorialsr2   r3   r4   r5   r6   sympy.external.gmpyr7   
sympy.setsr8   r9   #sympy.tensor.array.dense_ndim_arrayr:   rg   collectionsr;   r<   mpmath.rationalr=   r>   rD   rU   r\   ra   rm   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r4  r5  r7  rT  rU  rX  r\  r]  rd  re  rh  ri  ry  r}  rB   rB   rB   rC   <module>   s     -

	
	X
 /
"	';