
    oVh'                        d Z ddl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mZ ddlmZ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) ddl*m+Z+m,Z, ddl-m.Z. ddl/m0Z0  e       Z1 ee1      Z2 ee2      Z3 ee2e1      Z4 ed      Z5d Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d  ZAd! ZBd" ZCd# ZDd$ ZEd% ZFd& ZGd' ZHd( ZId) ZJd* ZKd+ ZLd, ZMd- ZNy).zZThis tests sympy/core/basic.py with (ideally) no reference to subclasses
of Basic or Atom.    N)TypeVarGeneric)Q)BasicAtomas_Basic_atomic_aresame)Tuple)FunctionLambda)IpiFloat)S)symbolsSymbolDummy)Sum)cossin)gamma)Integral)exp)raiseswarns_deprecated_sympy)Abssign)	Piecewise)EqTc                  ,   t        t        t                     t                     rJ t        d      t        d      fdt	        d      ffD ]G  \  } }t        d      D ]4  }t        t        |       t        |            rJ t        | |      rJ || }} 6 I y )N   g       @g      ?   )r
   r   r   r   r   range)ijdos      K/home/dcms/DCMS/lib/python3.12/site-packages/sympy/core/tests/test_basic.pytest__aresamer*      s    eg000A$"U1X/ 1( 	Ba%(3331~%%aqA	    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bool r+   r)   test_structurer5   (   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__r$   )hasattrr1   r   AttributeErrorxr4   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__r4   r+   r)   Foor>   @   s    	r+   rC   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__V   s    %'!!r+   c                     | |k(   S r-   r4   rI   s     r)   __ne__z!test_equality.<locals>.Bar.__ne__[   s    u}$$r+   N)r?   r@   rA   rB   rL   rN   r4   r+   r)   BarrE   O   s    		"
	%r+   rO   )r1   r0   b3r.   r   	enumerate)
	instancesr&   b_ir'   b_jrC   bfoorO   bars
             r)   test_equalityrX   4   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   r1   r0   rQ   matchesmatch)rR   r&   rS   r'   rT   s        r)   test_matches_basicr\   f   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.   hasr1   rP   r   strr   r4   r+   r)   test_hasr`   r   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.   subsr4   r+   r)   <lambda>ztest_subs.<locals>.<lambda>   s    sxx	2 r+   c                  H    t         j                  t        t        t              S r-   )r.   re   r1   r0   rP   r4   r+   r)   rf   ztest_subs.<locals>.<lambda>   s    chhr2r2 r+   c                  .    t         j                  d      S )Nrc   )r1   rd   r4   r+   r)   rf   ztest_subs.<locals>.<lambda>   s    chh)h4 r+   textsr$   )r.   re   r0   r1   r   rP   collectionsChainMapOrderedDictr   
ValueError	TypeErrorr   r4   r+   r)   	test_subsrp   |   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
923 945&>|,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   re   name)exprreplaceds     r)   test_subs_with_unicode_symbolsrv      sO    &>Dyy%H==Cyy%H==Cr+   c                  H    t         j                         t               hk(  sJ y r-   )r.   atomsr   r4   r+   r)   
test_atomsry      s    99;57)###r+   c                  >    t         j                  t               k(  sJ y r-   )r.   free_symbolssetr4   r+   r)   test_free_symbols_emptyr}      s    su$$$r+   c                  |    t         j                         t         k(  sJ t         j                  d      t         k(  sJ y )NF)deep)r.   doitr4   r+   r)   	test_doitr      s/    88:8883&&&r+   c                  ,    t        t              dk(  sJ y )Nr   )reprr   r4   r+   r)   test_Sr      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-   )r1   xreplacer4   r+   r)   rf   ztest_xreplace.<locals>.<lambda>   s    bkkm r+   c                  @    t         j                  t         t        g      S r-   )r1   r   r0   r4   r+   r)   rf   ztest_xreplace.<locals>.<lambda>   s    bkk2r(3 r+   fT)hack2)r.   r   r0   r1   r   rP   r   r   ro   r   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)   rf   z"test_sorted_args.<locals>.<lambda>   s    1>> r+   )r   r.   r   r/   r   r9   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)   rf   ztest_call.<locals>.<lambda>   s    fc!fq1c!fq%9: r+   c                  &     t               d      S Nr$   r   r   s   r)   rf   ztest_call.<locals>.<lambda>   s    fc!fQi r+   r$   r#      )	r   r   ro   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arU   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   r&   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$   r4   c                      t        g       S r-   )r   r4   r+   r)   rf   ztest_as_Basic.<locals>.<lambda>   s
    hrl r+   )r   r   Oner   r   ro   r4   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	   r|   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   r2   is_realis_commutative)uvr:   r   r   _0_1eqansoncetwicer!   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)   rf   z)test_replace_exceptions.<locals>.<lambda>+  s    aiiQ/ r+   rU   cc                  B    j                   z  j                        S r-   r   r   )rU   r   r   s   r)   rf   z)test_replace_exceptions.<locals>.<lambda>.  s    aii!QYY7 r+   c                  <    j                   j                  d      S r   r   )rU   r   s   r)   rf   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)   rf   z;test_replace_exceptions.<locals>.<lambda>.<locals>.<lambda>0  s
    !++ r+   r$   )r   r   s   r)   rf   z)test_replace_exceptions.<locals>.<lambda>0  s    aii(=qA r+   )sympy.core.symbolr   r   r   ro   )r   r:   r   rU   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__<  s#    Z(Gd-f-r+   )r?   r@   rA   r   __classcell__)r   r   s   @r)   MyMetar   ;  s    	. 	.r+   r   z5
class MySubclass(Basic, metaclass=MyMeta):
    pass
r   )sympy.core.assumptionsr   r   exec)r   r   coder   s      @r)   test_ManagedPropertiesr   3  sW     9I." .
D 
 	! T
 $$$ s   A  A	c                  ^     G d dt         t        t                 }  G d d| t                 }y )Nc                       e Zd Zy)test_generic.<locals>.ANr?   r@   rA   r4   r+   r)   Ar   L      r+   r   c                       e Zd Zy)test_generic.<locals>.BNr   r4   r+   r)   Br   O  r   r+   r   )r   r   r!   )r   r   s     r)   test_genericr   J  s$    FGAJ AaD r+   c                  &   t        d      } t        |       j                  t              t        |       j                  t              k(  sJ t        |       j                  t              t        dt        | d      f| t	        |       z  df      k(  sJ y )Nr:   r   T)r   r   r   absr   r   r    r   s    r)   test_rewrite_absr   S  sl    sA7??347??3#77777??39aAq]QQZ<N#OOOOr+   )OrB   rk   typingr   r   sympy.assumptions.askr   sympy.core.basicr   r   r   r	   r
   sympy.core.containersr   sympy.core.functionr   r   sympy.core.numbersr   r   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   $sympy.functions.elementary.complexesr   r   $sympy.functions.elementary.piecewiser   sympy.core.relationalr    r1   r0   rP   r.   r!   r*   r5   r;   rX   r\   r`   rp   rv   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r+   r)   <module>r     s     # #  ' 0 + + " 4 4 ) ? 9 . 6 ? : : $
W
2Y
2YBmCL/d	$+, $%'
5 3
G,	%4,/G(C	C%.Pr+   