o
    *ήc"                     @   s  d Z ddl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mZ ddlmZmZ ddlmZ dd	lmZmZmZ dd
lmZ ddlmZmZ ddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ e Z%ee%Z&ee&Z'ee&e%Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dd Z0d d! Z1d"d# Z2d$d% Z3d&d' Z4d(d) Z5d*d+ Z6d,d- Z7d.d/ Z8d0d1 Z9d2d3 Z:d4d5 Z;d6d7 Z<d8d9 Z=d:d; Z>dS )<zZThis tests sympy/core/basic.py with (ideally) no reference to subclasses
of Basic or Atom.    N)Q)BasicAtomas_Basic_atomic_aresame)Tuple)FunctionLambda)Ipi)S)symbolsSymbolDummy)Sum)cossin)gamma)Integral)exp)raisesc                   C   s8   t tt t rJ t ttdttdrJ d S )N   g       @)r   r   r   r    r   r   B/tmp/pip-target-vg8gfxp4/lib/python/sympy/core/tests/test_basic.pytest__aresame   s   "r   c                   C   s6   t jttfks	J t jt j t ksJ ttsJ d S N)b21argsb2b1funcboolr   r   r   r   test_structure    s   r#   c                   C   sB   t tdrJ tt dt_W d    d S 1 sw   Y  d S )N__dict__   )hasattrr    r   AttributeErrorxr   r   r   r   test_immutable&   s   
"r)   c            
      C   s.  t ttttt t t tg} t| D ]!\}}t| D ]\}}||k||kks&J ||k||kks0J qqt g ks9J t g kr@J t dksGJ t dkrNJ G dd d}t }| }||ksaJ ||ksgJ ||krmJ ||krsJ G dd d}| }	||	ksJ |	|ksJ ||	krJ |	|krJ d S )Nr   c                   @   s   e Zd ZdZdS )ztest_equality.<locals>.Fooz
        Class that is unaware of Basic, and relies on both classes returning
        the NotImplemented singleton for equivalence to evaluate to False.

        N)__name__
__module____qualname____doc__r   r   r   r   Foo8   s    r.   c                   @   s    e Zd ZdZdd Zdd ZdS )ztest_equality.<locals>.Barz
        Class that considers itself equal to any instance of Basic, and relies
        on Basic returning the NotImplemented singleton in order to achieve
        a symmetric equivalence relation.

        c                 S   s   t |trdS tS )NT)
isinstancer   NotImplementedselfotherr   r   r   __eq__N   s   
z!test_equality.<locals>.Bar.__eq__c                 S   s
   | |k S r   r   r1   r   r   r   __ne__S   s   
z!test_equality.<locals>.Bar.__ne__N)r*   r+   r,   r-   r4   r5   r   r   r   r   BarG   s    r6   )r    r   b3r   r   	enumerate)
	instancesib_ijb_jr.   bfoor6   barr   r   r   test_equality,   s.   rA   c                  C   s   t tttt tttt tttt ttt ttttg} t| D ]$\}}t| D ]\}}||kr9||i ks8J q'||d u sBJ q'qtti ksMJ d S r   )r   r    r   r8   matchesmatch)r9   r:   r;   r<   r=   r   r   r   test_matches_basic^   s   rD   c                   C   sl   t tsJ t ttsJ t tsJ tt trJ t  r$J t tr+J tddr4J d S )Nr(   )r   hasr    r7   r   strr   r   r   r   r   test_hasj   s   rG   c                   C   s@  t tttttksJ t tt tt tksJ ttttks$J t ttfttfgtttks6J t ttttitttksFJ t tttittitttksZJ t tttfttfgtttksoJ t	t
dd  t	t
dd  t	t
dd  tddtitksJ tdddidksJ d S )Nc                   S   s
   t dS )Nbad argr   subsr   r   r   r   <lambda>   s   
 ztest_subs.<locals>.<lambda>c                   S   s   t tttS r   )r   rJ   r    r   r7   r   r   r   r   rK          c                   S   s   t jddS )NrH   )r    rI   r   r   r   r   rK          textsr%   )r   rJ   r   r    r   r7   collectionsChainMapOrderedDictr   
ValueErrorr   r   r   r   r   	test_subst   s   $ (*rT   c                  C   s@   t d} | dd}|jdksJ | dd}|jdksJ d S )Nvar1r(   )r   rJ   name)exprreplacedr   r   r   test_subs_with_unicode_symbols   s
   rY   c                   C   s   t  t hks
J d S r   )r   atomsr   r   r   r   r   
test_atoms   s   r[   c                   C   s   t jt ksJ d S r   )r   free_symbolssetr   r   r   r   test_free_symbols_empty      r^   c                   C   s(   t  t ksJ t jddt ksJ d S )NF)deep)r   doitr   r   r   r   	test_doit   s   rb   c                   C   s   t tdksJ d S )Nr   )reprr   r   r   r   r   test_S   r_   rd   c                  C   s:  t ttitttksJ t tt itt tksJ tttitks'J tttttttitttks:J ttttittksIJ tttttitksXJ ttdd  ttdd  t	t
dfD ].} | i | kswJ | ji dd| ksJ | | titksJ | j| tiddtksJ qld S )Nc                   S   s   t  S r   )r    xreplacer   r   r   r   rK          ztest_xreplace.<locals>.<lambda>c                   S   s   t t tgS r   )r    re   r   r   r   r   r   rK      rL   fT)hack2)r   re   r   r    r   r7   r   r   	TypeErrorr   r	   )rg   r   r   r   test_xreplace   s   &rj   c                      s.   t d tjtjksJ tt fdd d S )Nr(   c                      s    j S r   )_sorted_argsr   r(   r   r   rK          z"test_sorted_args.<locals>.<lambda>)r   r   rk   r   r   r'   r   r   rl   r   test_sorted_args   s   rn   c                     s   t d\ } tt fdd tt fdd t dt ks%J dt  ddt  ks6J t d  }|  | d|    ksLJ  | d d ksYJ tjtj@  t t @ ksnJ d S )Nx yc                      s   t   dt  diS )Nr%   r   r   r   rl   r   r   rK      s    ztest_call.<locals>.<lambda>c                      s   t  dS Nr%   rp   r   rl   r   r   rK      rM   r%   r      )	r   r   ri   r   rcallr
   r   realpositive)ylr   rl   r   	test_call   s   ".rx   c                  C   s  t d\} }}t d\}}t| t|  }|tttt|  d t|  tt |  d  ks2J |tgtt| t| td  dd ksIJ t| t|t|  }|ttt tt|  tt |    d t|t|  kswJ | |ksJ d S )Nzx y zza br   F)evaluate)r   r   r   rewriter   r   r   r   )r(   rv   zar>   f1f2r   r   r   test_rewrite   s   :.Dr   c                  C   s   t d} td}|jdu sJ |djdu sJ td| | | f}| dks(J |js-J |jdu s4J |jddddks?J tdd tdd  d }|j	du sTJ |dj	du s^J |ddj	siJ d S )Nr(   rg   Fr%   r   r   )strict)
r   r	   	is_numberr   nis_zeroevalfr   r   is_comparable)r(   rg   r:   r   r   r   r   2test_literal_evalf_is_number_is_zero_is_comparable   s   
r   c                   C   s6   t dtju s	J t dt ksJ ttdd  d S )Nr%   r   c                   S   s   t g S r   )r   r   r   r   r   rK      rf   ztest_as_Basic.<locals>.<lambda>)r   r   Oner   r   ri   r   r   r   r   test_as_Basic   s   r   c                  C   s   t td\} }td}t| ||| | ||| hks J t| ||| dd|||| ||| hks;J tdt ksDJ tttdtdt ksTJ d S )Nghr(   T)	recursiver%   r   )mapr	   r   r   r]   r   r   )ghr(   r   r   r   test_atomic   s   *6$r   c                  C   s`  t d\} }}}}}}t||d  t||d ksJ t|||  t||| ks/J dt||d|f }dt||d|f }| }	|	|ksMJ |	 }
|
|ksWJ t|| ||d f|ddf t|| ||d f|ddfksyJ ttfD ]}|ddd}| }||kr|jtkr|jd u sJ q}t  j	sJ tdd j	du sJ d S )	Nzu v x y z _0 _1r%   r   r(   T)rt   F)commutative)
r   r
   as_dummyr   r   r   r   r!   is_realis_commutative)uvr(   rv   r{   _0_1eqansoncetwiceTdDr   r   r   test_as_dummy  s$   $$ "r   c                  C   s~   t d\} }}t| | | d fj| |iksJ t| | | d f|ddfj| |||iks-J t| | | | fj| |iks=J d S )Nzx _:2r%   r   )r   r   canonical_variables)r(   i0i1r   r   r   test_canonical_variables  s    
$r   c                     s   ddl m}  td\}}|d ||  ttfdd | d | dtt fd	d tt fd
d ttfdd d S )Nr   )Wildro   r   c                      s     tdS )Nr   )replacer   r   er   r   rK   #  rM   z)test_replace_exceptions.<locals>.<lambda>r>   cc                      s      jS r   r   r   r   r>   r   r   r   r   rK   &  s    c                      s     jdS rq   r   r   )r>   r   r   r   rK   '  rL   c                      s     dd dS )Nc                 S   s   | j S r   )	is_Number)r   r   r   r   rK   (  rm   z;test_replace_exceptions.<locals>.<lambda>.<locals>.<lambda>r%   )r   r   r   r   r   rK   (  s    )sympy.core.symbolr   r   r   ri   )r   r(   rv   r   r   r   test_replace_exceptions  s   r   )?r-   rP   sympy.assumptions.askr   sympy.core.basicr   r   r   r   r   sympy.core.containersr   sympy.core.functionr	   r
   sympy.core.numbersr   r   sympy.core.singletonr   r   r   r   r   sympy.concrete.summationsr   (sympy.functions.elementary.trigonometricr   r   'sympy.functions.special.gamma_functionsr   sympy.integrals.integralsr   &sympy.functions.elementary.exponentialr   sympy.testing.pytestr   r    r   r7   r   r   r#   r)   rA   rD   rG   rT   rY   r[   r^   rb   rd   rj   rn   rx   r   r   r   r   r   r   r   r   r   r   r   <module>   sR    
2
		