
    sgT                         d dl mZmZmZmZmZmZ d dlmZm	Z	 d Z
d Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)    )
DispatcherMDNotImplementedErrorMethodDispatcherhalt_orderingrestart_ordering#ambiguity_register_error_ignore_dup)raiseswarnsc                     | S N xs    _/var/www/html/venv/lib/python3.12/site-packages/sympy/multipledispatch/tests/test_dispatcher.pyidentityr      s    H    c                     | dz   S N   r   r   s    r   incr          q5Lr   c                     | dz
  S r   r   r   s    r   decr      r   r   c                     t        d      } | j                  t        ft               | j                  t        ft
               t        t        d      5  | j                  t        f      t        k(  sJ 	 d d d        | j                  t              t        u sJ  | d      dk(  sJ  | d      dk(  sJ y # 1 sw Y   AxY w)NfF)test_stacklevelr            ?        )
r   addintr   floatr   r
   DeprecationWarningresolvedispatchr   s    r   test_dispatcherr'      s    3AEE3&#EE5(C	!5	9 (yy# C'''(::c?c!!!Q4199S6S==( (s    B44B=c                      t        d      }  | j                  t        t        f      t                | d      dk(  sJ  | d      dk(  sJ y )Nr   r   r   r          @)r   registerr!   r"   r   r&   s    r   test_union_typesr+   !   sB    3AAJJU|S!Q4199S6S==r   c                      t        d      } | j                  t              d        }| j                  t              d        } | d      dk(  sJ  | d      dk(  sJ y )Nr   c                     | dz   S r   r   r   s    r   r   z)test_dispatcher_as_decorator.<locals>.inc,       1ur   c                     | dz
  S r   r   r   s    r   r   z)test_dispatcher_as_decorator.<locals>.inc0   r.   r   r   r   r   r   )r   r*   r!   r"   )r   r   s     r   test_dispatcher_as_decoratorr0   )   sd    3AZZ_  ZZ  Q4199S6S==r   c                  p     G d d      }  | d      } | dg      }|j                   |j                   k(  sJ y )Nc                   x    e Zd Z ed      Zej                  e      d        Zej                  e      d        Z	y)+test_register_instance_method.<locals>.Testr   c                     || _         y r   data)selfr6   s     r   
_init_listz6test_register_instance_method.<locals>.Test._init_list=   s	    DIr   c                     |g| _         y r   r5   )r7   datums     r   	_init_objz5test_register_instance_method.<locals>.Test._init_objA   s    DIr   N)
__name__
__module____qualname__r   __init__r*   listr8   objectr;   r   r   r   Testr3   :   sH    #C(			4	 	 
!	 
		6	"	  
#	 r   rB      r5   )rB   abs      r   test_register_instance_methodrF   8   s8    	  	  	QAaS	A66QVVr   c                     t        d      } d }dgfd}| j                  t        t        f||       d   rJ | j                  t        t        f||       d   rJ | j                  t        t        f||       d   sJ y )Nr   c                     | S r   r   r   s    r   r   z#test_on_ambiguity.<locals>.identityM   s    AXr   Fc                     dd<   y )NTr   r   )
dispatcherambambiguitiess     r   on_ambiguityz'test_on_ambiguity.<locals>.on_ambiguityQ   s    Ar   rM   r   )r   r    rA   r"   )r   r   rM   rL   s      @r   test_on_ambiguityrO   J   s    3A'K EE66
H<E@1~EE65/8,E?1~EE5&/8,E?q>>r   c                  F     t        d       t        t         fd      sJ y )Nr   c                  0     j                  dt              S )N)r   )r    r   r&   s   r   <lambda>z/test_raise_error_on_non_class.<locals>.<lambda>^   s    QUU4%5 r   r   r	   	TypeErrorr&   s   @r   test_raise_error_on_non_classrU   \   s    3A)5666r   c                     d } d }d }d}t        d|      }|j                  t        t        f|        |j                  t        t        f|       |j                  t        t        f|       | j
                  j                         |j
                  v sJ |j
                  j                         |j
                  v sJ |j
                  j                  | j
                  j                               |j
                  j                  |j
                  j                               k  sJ d|j
                  v sJ ||j
                  v sJ y )Nc                     | |z   S z Docstring number one r   r   ys     r   oneztest_docstring.<locals>.onec   r.   r   c                     | |z   S z Docstring number two r   rY   s     r   twoztest_docstring.<locals>.twog   r.   r   c                     | |z   S r   r   rY   s     r   threeztest_docstring.<locals>.threek   s    1ur   Doc of the multimethod itselfr   doczobject, object)r   r    rA   r!   r"   __doc__stripfindr[   r^   r`   
master_docr   s        r   test_docstringri   a   s    1J3J'AEE66
C EE3*cEE5%.% ;;!))+++;;!))+++99>>#++++-.			s{{((*+, , ,qyy((("""r   c                  `   d } d }d }d}t        d|      }|j                  t        t        f|        |j                  t        t        f|       |j                  t        t        f|       |j                  dd      |j                  k(  sJ |j                  dd	      |j                  k(  sJ y )
Nc                     | |z   S rX   r   rY   s     r   r[   ztest_help.<locals>.one~   r.   r   c                     | |z   S r]   r   rY   s     r   r^   ztest_help.<locals>.two   r.   r   c                     | |z   S )z Docstring number three r   rY   s     r   r`   ztest_help.<locals>.three   r.   r   ra   r   rb   r   r   r)   )r   r    rA   r!   r"   _helprd   rg   s        r   	test_helpro   }   s     1J3J'AEE66
C EE3*cEE5%.% 771a=CKK'''773---r   c                      d } d }d}t        d|      }|j                  t        t        f|        |j                  t        t        f|       d|j	                  dd      v sJ d|j	                  d	d	      v sJ y )
Nc                     | |z   S rX   r   rY   s     r   r[   ztest_source.<locals>.one   r.   r   c                     | |z
  S r]   r   rY   s     r   r^   ztest_source.<locals>.two   r.   r   ra   r   rb   zx + yr   zx - yr   )r   r    r!   r"   _source)r[   r^   rh   r   s       r   test_sourcert      st     1J3J'AEE3*cEE5%.#aii1o%%%aiiS))))r   c                  F     t        d       t        t         fd      sJ y )Nr   c                  &     j                  d      S r   )sourcer&   s   r   rR   z8test_source_raises_on_missing_function.<locals>.<lambda>   s    QXXa[ r   rS   r&   s   @r   &test_source_raises_on_missing_functionrx      s    3A)0111r   c                  N   dgfd} t        d      }t                d }|j                  t        t        f|       |j                  t        t        f|       dgk(  sJ t        |        dgk(  sJ t        |j                        t        t        ft        t        fhk(  sJ y )Nr   c                      dxx   dz  cc<   y )Nr   r   r   )rD   rE   gs     r   rM   z1test_halt_method_resolution.<locals>.on_ambiguity   s    	!	r   r   c                       y r   r   )argss    r   funcz)test_halt_method_resolution.<locals>.func   s    r   rN   r   )r   r   r    r!   rA   r   setordering)rM   r   r~   r{   s      @r   test_halt_method_resolutionr      s    	
A 	3AO EE3-EE63-8O8,/8O8qzz?V}vsm<<<<r   c                  F     t        d       t        t         fd      sJ y )Nr   c                        d      S Nhellor   r&   s   r   rR   z)test_no_implementations.<locals>.<lambda>       qz r   )r   r	   NotImplementedErrorr&   s   @r   test_no_implementationsr      s    3A%'9:::r   c                     t        d      j                  t              j                  t              d               }  d      dk(  sJ  g d      g dk(  sJ t	        t
        fd      sJ  | d      dk(  sJ y )Nr   c                     | d d d   S Nr   r   s    r   revz#test_register_stacking.<locals>.rev   s     2wr   )r   r   rC   )rC   r   r   c                        d      S r   r   r&   s   r   rR   z(test_register_stacking.<locals>.<lambda>   r   r   r   olleh)r   r*   r@   tupler	   r   )r   r   s    @r   test_register_stackingr      s    3AZZZZ   Y<9$$$Y<9$$$%'9:::w<7"""r   c                  F   t        d      } | j                  t              d        }| j                  t        t              d        } G d dt              }| j	                  t              |u sJ | j	                  |      |u sJ | j	                  t        t              |u sJ y )Nr   c                     | d d d   S r   r   r   s    r   r   z!test_dispatch_method.<locals>.rev   s    2wr   c                     | |z   S r   r   rY   s     r   r    z!test_dispatch_method.<locals>.add   r.   r   c                       e Zd Zy)$test_dispatch_method.<locals>.MyListNr<   r=   r>   r   r   r   MyListr          r   r   )r   r*   r@   r!   r%   )r   r   r    r   s       r   test_dispatch_methodr      s    3AZZ  ZZS   ::ds"""::f$$$::c33&&&r   c                      t        d      j                  t              d        } j                  t              d        }  d      dk(  sJ  d      dk(  sJ  d      dk(  sJ t	        t
        fd	      sJ y )
Nr   c                      y)Ndefaultr   r   s    r   _ztest_not_implemented.<locals>._   s    r   c                 (    | dz  dk(  ryt               )Nr   r   evenr   r   s    r   r   ztest_not_implemented.<locals>._   s    q5A:'))r   r   r   r   r   rC   c                        dd      S )Nr   r   r   r&   s   r   rR   z&test_not_implemented.<locals>.<lambda>   s    qAw r   )r   r*   rA   r!   r	   r   r   r   s    @r   test_not_implementedr      s    3AZZ  ZZ_* * W:"""Q46>>Q49%777r   c                  |    t        d      j                  t              d        } t        t        fd      sJ y )Nr   c                     t               r   r   )rD   s    r   r   z%test_not_implemented_error.<locals>._  s    #%%r   c                        d      S )Nr   r   r&   s   r   rR   z,test_not_implemented_error.<locals>.<lambda>	  s    qv r   )r   r*   r"   r	   r   r   s    @r   test_not_implemented_errorr     s:    3AZZ& & %~666r   c                  ^   t        d       G d d      }  G d d|        G d d|       j                  | fd t               j                  | fd	 t               j                  | fd
 t               j                  | fd t               t        t        fd      sJ y )Nr   c                       e Zd Zy)3test_ambiguity_register_error_ignore_dup.<locals>.ANr   r   r   r   Ar     r   r   r   c                       e Zd Zy)3test_ambiguity_register_error_ignore_dup.<locals>.BNr   r   r   r   Br     r   r   r   c                       e Zd Zy)3test_ambiguity_register_error_ignore_dup.<locals>.CNr   r   r   r   Cr     r   r   r   c                      y r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>      r   c                      y r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  r   r   c                      y r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  r   r   c                      y r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  r   r   c                  *                            S r   r   )r   r   r   s   r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  s    qac{ r   )r   r    r   r	   r   )r   r   r   r   s    @@@r   (test_ambiguity_register_error_ignore_dupr     s    3A A A  EE1a&"$GHEE1a&"$GHEE1a&"$GHEE1a&"$GH %':;;;r   N)!sympy.multipledispatch.dispatcherr   r   r   r   r   r   sympy.testing.pytestr	   r
   r   r   r   r'   r+   r0   rF   rO   rU   ri   ro   rt   rx   r   r   r   r   r   r   r   r   r   r   <module>r      sz   N N /
$$7
#8.0*&2=2;
#'&8(7<r   