
    MZd%                        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$m%Z%  e       Z& ee&      Z' ee'      Z( ee'e&      Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9d  Z:d! Z;d" Z<d# Z=d$ Z>d% Z?d& Z@y)'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)raiseswarns_deprecated_sympyc                      t        t        t                     t                     rJ t        t        t        d            t        t        d                  rJ y )N   g       @)r   r   r	   r        =/usr/lib/python3/dist-packages/sympy/core/tests/test_basic.pytest__aresamer      s=    eg000adU1R5\2222r   c                      t         j                  t        t        fk(  sJ t        j                  t         j                   t         k(  sJ t        t              sJ y N)b21argsb2b1funcboolr   r   r   test_structurer(       s>    88Bx88SXX#%%%8O8r   c                      t        t        d      rJ t        t              5  dt        _        d d d        y # 1 sw Y   y xY w)N__dict__   )hasattrr%   r   AttributeErrorxr   r   r   test_immutabler/   &   s6    r:&&&		   s	   7A c            	      *   t         t        t        t        t	        t         t         t               t        g} t        |       D ]2  \  }}t        |       D ]  \  }}||k(  ||k(  k(  sJ ||k7  ||k7  k(  rJ  4 t	               g k7  sJ t	               g k(  rJ t	               dk7  sJ t	               dk(  rJ  G d d      }t	               } |       }||k7  sJ ||k7  sJ ||k(  rJ ||k(  rJ  G d d      } |       }	||	k(  sJ |	|k(  sJ ||	k7  rJ |	|k7  rJ y )Nr   c                       e Zd ZdZy)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   Foor2   8   s    	r   r7   c                       e Zd ZdZd Zd Zy)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                 0    t        |t              ryt        S )NT)
isinstancer   NotImplementedselfothers     r   __eq__z!test_equality.<locals>.Bar.__eq__N   s    %'!!r   c                     | |k(   S r!   r   r=   s     r   __ne__z!test_equality.<locals>.Bar.__ne__S   s    u}$$r   N)r3   r4   r5   r6   r@   rB   r   r   r   Barr9   G   s    		"
	%r   rC   )r%   r$   b3r"   r   	enumerate)
	instancesib_ijb_jr7   bfoorC   bars
             r   test_equalityrN   ,   s@   RS%B"3U;II& ,3	* 	,FAs3JAF+++3JAF+++	,,
 7b==w"}7a<<w!|  	A
%C8O8!8O8Cx<ax<% % %C8O8!8O8Cx<ax<xr   c                     t        t        t        t              t        t        t        t              t        t        t        t              t        t        t              t        t        t              t        t        g} t        |       D ]G  \  }}t        |       D ]4  \  }}||k(  r|j	                  |      i k(  r J |j	                  |      4J  I t        j                  t              i k(  sJ y r!   )r   r%   r$   rE   matchesmatch)rF   rG   rH   rI   rJ   s        r   test_matches_basicrR   ^   s    r2r"E"b"$5uRR7Hr2b"r27II& 03	* 	0FAsAv{{3'2---{{3'///		00 88B<2r   c                     t         j                  t              sJ t         j                  t        t              sJ t         j                  t              sJ t        j                  t         t              rJ t         j                         rJ t         j                  t
              rJ t        d      j                  d      rJ y )Nr.   )r"   hasr%   rD   r   strr   r   r   r   test_hasrV   j   s    772;;772r??775>>vvc2wwy=wws|c{s####r   c                  v   t         j                  t        t              t	        t        t              k(  sJ t         j                  t        t               t	        t         t              k(  sJ t
        j                  t        t              t        k(  sJ t         j                  t        t        ft        t        fg      t	        t        t              k(  sJ t         j                  t        t        t        t        i      t	        t        t              k(  sJ t         j                  t        j                  t        t        it        t        i            t	        t        t              k(  sJ t         j                  t        j                  t        t        ft        t        fg            t	        t        t              k(  sJ t        t        d        t        t        d        t        t        d        t        d      j                  dt        i      t        k(  sJ t        d      j                  ddi      dk(  sJ y )Nc                  ,    t         j                  d      S )Nbad argr"   subsr   r   r   <lambda>ztest_subs.<locals>.<lambda>   s    sxx	2 r   c                  H    t         j                  t        t        t              S r!   )r"   r[   r%   r$   rD   r   r   r   r\   ztest_subs.<locals>.<lambda>   s    sxxB3 r   c                  .    t         j                  d      S )NrY   )r%   rZ   r   r   r   r\   ztest_subs.<locals>.<lambda>   s    sxx9x5 r   textsr+   )r"   r[   r$   r%   r   rD   collectionsChainMapOrderedDictr   
ValueErrorr   r   r   r   	test_subsre   t   su   88BuR},,,88Bc2...772r?b   88b"XBx()U2r]:::88RR$%r266688K(("bB8<=r2NNN88K++b"XBx,@ABeBPRmSSS
:23
:34 :56&>|,222#;S!H%***r   c                      t        d      } | j                  dd      }|j                  dk(  sJ | j                  dd      }|j                  dk(  sJ y )Nvar1r.   )r   r[   name)exprreplaceds     r   test_subs_with_unicode_symbolsrk      sO    &>Dyy%H==Cyy%H==Cr   c                  H    t         j                         t               hk(  sJ y r!   )r"   atomsr   r   r   r   
test_atomsrn      s    99;57)###r   c                  >    t         j                  t               k(  sJ y r!   )r"   free_symbolssetr   r   r   test_free_symbols_emptyrr      s    su$$$r   c                  |    t         j                         t         k(  sJ t         j                  d      t         k(  sJ y )NF)deep)r"   doitr   r   r   	test_doitrv      s/    88:8883&&&r   c                  ,    t        t              dk(  sJ y )Nr   )reprr   r   r   r   test_Sry      s    7c>>r   c                      t         j                  t        t        i      t	        t        t              k(  sJ t         j                  t        t         i      t	        t         t              k(  sJ t
        j                  t        t        i      t        k(  sJ t	        t        t              j                  t        t        t        t        i      t	        t        t              k(  sJ t        t              j                  t        t        i      t        t              k(  sJ t        t              j                  t        t              t        i      t        k(  sJ t        t        d        t        t        d        t        t        d      fD ]r  } | j                  i       | k(  sJ | j                  i d      | k(  sJ | j                  | t        i      t        k(  sJ | j                  | t        id      t        k(  rrJ  y )Nc                  *    t         j                         S r!   )r%   xreplacer   r   r   r\   ztest_xreplace.<locals>.<lambda>   s    bkkm r   c                  @    t         j                  t         t        g      S r!   )r%   r|   r$   r   r   r   r\   ztest_xreplace.<locals>.<lambda>   s    bkk2r(3 r   fT)hack2)r"   r|   r$   r%   r   rD   r   r   	TypeErrorr   r
   )r~   s    r   test_xreplacer      sp   <<R!U2r]222<<S	"eCn444;;Bx B&&&R=!!2r2r"23uR}DDD8b"X&$r(2228d2h^,222
9+,
9348C=! 5zz"~"""zz"Dz)Q...zz1b'"b(((zz1b'z."444	5r   c                       t        d       t        j                  t        j                  k(  sJ t	        t
         fd       y )Nr.   c                       j                   S r!   )_sorted_argsr.   s   r   r\   z"test_sorted_args.<locals>.<lambda>   s    1>> r   )r   r"   r   r#   r   r-   r   s   @r   test_sorted_argsr      s/    Asxx'''
>12r   c                  j   t        d      \  } t        t        fd       t        t        fd       t              j	                  d      t              k(  sJ dt              z   j	                  d      dt              z   k(  sJ t        dz        }|z   j	                  |       d| z  z   k(  sJ |z  j	                  d      dz  k(  sJ t        j                  t        j                  z  j	                        t        j                        t        j                        z  k(  sJ y )Nx yc                  @     t                dt               di      S )Nr+   r   r   r   s   r   r\   ztest_call.<locals>.<lambda>   s    fc!fq1c!fq%9: r   c                  &     t               d      S Nr+   r   r   s   r   r\   ztest_call.<locals>.<lambda>   s    fc!fQi r   r+   r      )	r   r   r   r   rcallr   r   realpositive)ylr.   s     @r   	test_callr      s    5>DAq 9:;
9'( q6<<?c!f$$$AJa AAJ... 	q!A#AE==qsQw&&&qD<<?ad"""
 FFQZZ&&q)QVVAYA-FFFFr   c                     t        d      \  } }}t        d      \  }}t        |       t        |       z   }|j                  t        t              t	        t
        | z        dz  t        |       z   t	        t
         | z        dz  z   k(  sJ |j                  t        gt              t        |       t        | t        dz  z   d      z   k(  sJ t        |       t        |      t        |      z  z   }|j                  t        t              t
         t	        t
        | z        t	        t
         | z        z
  z  dz  t        |      t        |      z  z   k(  sJ |j                         |k(  sJ y )Nzx y zza br   F)evaluate)r   r   r   rewriter   r   r   r   )r.   r   zarK   f1f2s          r   test_rewriter      s   gGAq!5>DAq	Q#a&B::c##ac(1*s1v"5QBqD	!"CCCC::seC CFSRTE-J$JJJJ	Q#a&q/	!B::c#1"c!A#haRT&:";A"=AuQx"OOOO::<2r   c                  &   t        d      } t        d      }|j                  du sJ  |d      j                  du sJ t        d| | | f      }|j	                         dk(  sJ |j
                  sJ |j                  du sJ |j                  dd      dk(  sJ t        d      dz  t        d      dz  z   dz
  }|j                  du sJ |j	                  d      j                  du sJ |j	                  d      j	                  d      j                  sJ y )Nr.   r~   Fr+   r   r   )strict)
r   r
   	is_numberr   nis_zeroevalfr   r   is_comparable)r.   r~   rG   r   s       r   2test_literal_evalf_is_number_is_zero_is_comparabler      s   AA ;;%Q4>>U"""Q1IA 335A::999;;%771U7#q((( 	A	CFAI!A??e###33q65(((33q688A;$$$$r   c                      t        d      t        j                  u sJ t        d      t               k(  sJ t	        t
        d        y )Nr+   r   c                      t        g       S r!   )r   r   r   r   r\   ztest_as_Basic.<locals>.<lambda>   s
    hrl r   )r   r   Oner	   r   r   r   r   r   test_as_Basicr      s7    A;!%%B<57"""
9*+r   c            	         t        t        d      \  } }t        d      }t         | | ||      z                | | ||      z         hk(  sJ t         | | ||      z         d       ||      | | | ||      z         hk(  sJ t        d      t	               k(  sJ t        t        t        d      t        d                  t	               k(  sJ y )Nghr.   T)	recursiver+   r   )mapr
   r   r   rq   r   r   )ghr.   s      r   test_atomicr      s    xDAqA1Q1X;Aa!A$hK=0001Q1X;$/AaD!Qq1Q4x[3IIII1:51qt$%...r   c                  F   t        d      \  } }}}}}}t        ||dz         j                         t        ||dz         k(  sJ t        |||z         j                         t        |||z         k(  sJ dt        ||d|f      z   }dt        ||d|f      z   }|j                         }	|	|k(  sJ |	j                         }
|
|k(  sJ t	        ||z   ||dz   f|ddf      j                         t	        ||z   ||dz   f|ddf      k(  sJ t
        t        fD ]B  } |dd      }|j                         }||k7  r |j                  t        k(  r|j                  BJ  t               j                         j                  sJ t        d      j                         j                  du sJ y )	Nzu v x y z _0 _1r+   r   r.   T)r   F)commutative)
r   r   as_dummyr   r   r   r   r&   is_realis_commutative)uvr.   r   r   _0_1eqansoncetwiceTdDs                 r   test_as_dummyr     s   #$56Aq!Q2r!QU$$&&R!V*<<<<!QV%%'6"b2g+>>>>
c!aAY
B
c"r1aj!
!C;;=D3;;MMOEC<<AFQAJQ
 

(*b2q1u+AqzBC C Ce_ @cJJLAv!&&E/aii.???@ 7,,,,U#,,.==FFFr   c                      t        d      \  } }}t        | | | dz   f      j                  | |ik(  sJ t        | | | dz   f|ddf      j                  | |||ik(  sJ t        | | | |z   f      j                  | |ik(  sJ y )Nzx _:2r+   r   )r   r   canonical_variables)r.   i0i1s      r   test_canonical_variablesr     s     IAr2A1q5z"661b'AAAA1q5zB1:.BB	2r2G   A1r6{#77Ar7BBBr   c                     ddl m}  t        d      \  }}|dz  ||z  z   t        t        fd        | d       | d      t        t        fd       t        t        fd	       t        t        fd
       y )Nr   )Wildr   r   c                  0     j                  t        d      S )Nr   )replacer   es   r   r\   z)test_replace_exceptions.<locals>.<lambda>#  s    aiiQ/ r   rK   cc                  B    j                   z  j                        S r!   r   r   )rK   r   r   s   r   r\   z)test_replace_exceptions.<locals>.<lambda>&  s    aii!QYY7 r   c                  <    j                   j                  d      S r   r   )rK   r   s   r   r\   z)test_replace_exceptions.<locals>.<lambda>'  s    aii		15 r   c                  *     j                  d d      S )Nc                     | j                   S r!   )	is_Number)r   s    r   r\   z;test_replace_exceptions.<locals>.<lambda>.<locals>.<lambda>(  s
    !++ r   r+   )r   r   s   r   r\   z)test_replace_exceptions.<locals>.<lambda>(  s    aii(=qA r   )sympy.core.symbolr   r   r   r   )r   r.   r   rK   r   r   s      @@@r   test_replace_exceptionsr     sb    &5>DAq	
A!A
9/0S	AS	A
978
956
9ABr   c                      ddl m}  g  G fdd|       }d}t               5  t        |       d d d        dgk(  sJ y # 1 sw Y   xY w)Nr   )ManagedPropertiesc                   "     e Zd Z fdZ xZS )&test_ManagedProperties.<locals>.MyMetac                 F    j                  d       t        |   |i | y )Nexecuted)appendsuper__init__)clsr#   kwargs	__class__	myclassess      r   r   z/test_ManagedProperties.<locals>.MyMeta.__init__4  s#    Z(Gd-f-r   )r3   r4   r5   r   __classcell__)r   r   s   @r   MyMetar   3  s    	. 	.r   r   z5
class MySubclass(Basic, metaclass=MyMeta):
    pass
r   )sympy.core.assumptionsr   r   exec)r   r   coder   s      @r   test_ManagedPropertiesr   +  sW     9I." .
D 
 	! T
 $$$ s   A  A	)Ar6   ra   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%   r$   rD   r"   r   r(   r/   rN   rR   rV   re   rk   rn   rr   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     #  ' 0 $ " 4 4 ) ? 9 . 6 ?
W
2Y
2YBm3
/d	$+, $%'
5 3
G,	%4,/G(C	C%r   