
    gT                         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dS )    )
DispatcherMDNotImplementedErrorMethodDispatcherhalt_orderingrestart_ordering#ambiguity_register_error_ignore_dup)raiseswarnsc                     | S N xs    h/var/www/html/ai-engine/env/lib/python3.11/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          } |                     t          ft                     |                     t          ft
                     t          t          d          5  |                     t          f          t          k    sJ 	 d d d            n# 1 swxY w Y   | 	                    t                    t          u sJ  | d          dk    sJ  | d          dk    sJ d S )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	9	9 ( (yy#  C'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( (::c??c!!!!1Q44199991S66S======s   ('BB #B c                      t          d          }  |                     t          t          f          t                      | d          dk    sJ  | d          dk    sJ d S )Nr   r   r   r          @)r   registerr!   r"   r   r&   s    r   test_union_typesr+   !   s[    3AAJJU|S!!!1Q44199991S66S======r   c                      t          d          } |                     t                    d             }|                     t                    d             } | d          dk    sJ  | d          dk    sJ d S )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   )   s    3AZZ__  _ ZZ   1Q44199991S66S======r   c                  r     G d d          }  | d          } | dg          }|j         |j         k    sJ d S )Nc                       e Zd Z ed          Ze                    e          d             Ze                    e          d             Z	dS )+test_register_instance_method.<locals>.Testr   c                     || _         d S r   data)selfr6   s     r   
_init_listz6test_register_instance_method.<locals>.Test._init_list=   s    DIIIr   c                     |g| _         d S r   r5   )r7   datums     r   	_init_objz5test_register_instance_method.<locals>.Test._init_objA   s    DIIIr   N)
__name__
__module____qualname__r   __init__r*   listr8   objectr;   r   r   r   Testr3   :   sv        ##C((			4	 	 	 	 
!	 	 
		6	"	"	  	  
#	"	  	  	 r   rB      r5   )rB   abs      r   test_register_instance_methodrF   8   sc    	  	  	  	  	  	  	  	  	QAaS		A6QVr   c                  P   t          d          } d }dgfd}|                     t          t          f||           d         rJ |                     t          t          f||           d         rJ |                     t          t          f||           d         sJ d S )Nr   c                     | S r   r   r   s    r   r   z#test_on_ambiguity.<locals>.identityM   s    AXr   Fc                     dd<   d S )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                  Z     t          d           t          t           fd          sJ d S )Nr   c                  :                          dt                    S )N)r   )r    r   r&   s   r   <lambda>z/test_raise_error_on_non_class.<locals>.<lambda>^   s    QUU4%5%5 r   r   r	   	TypeErrorr&   s   @r   test_raise_error_on_non_classrU   \   s4    3A)55556666666r   c                     d } d }d }d}t          d|          }|                    t          t          f|            |                    t          t          f|           |                    t          t          f|           | j                                        |j        v sJ |j                                        |j        v sJ |j                            | j                                                  |j                            |j                                                  k     sJ d|j        v sJ ||j        v sJ d S )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   sQ          1J3J'''AEE66
C   EE3*cEE5%.%   ;!)++++;!)++++9>>#+++--..		s{((**++, , , ,qy((((""""""r   c                     d } d }d }d}t          d|          }|                    t          t          f|            |                    t          t          f|           |                    t          t          f|           |                    dd          |j        k    sJ |                    dd	          |j        k    sJ d S )
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==CK''''773------r   c                  (   d } d }d}t          d|          }|                    t          t          f|            |                    t          t          f|           d|                    dd          v sJ d|                    d	d	          v sJ d S )
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      s         1J3J'''AEE3*cEE5%.#aii1oo%%%%aiiS))))))))r   c                  Z     t          d           t          t           fd          sJ d S )Nr   c                  .                          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      s4    3A)00001111111r   c                     dgfd} t          d          }t                       d }|                    t          t          f|           |                    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 d S )Nr   c                 (    dxx         dz  cc<   d S )Nr   r   r   )rD   rE   gs     r   rM   z1test_halt_method_resolution.<locals>.on_ambiguity   s    	!	r   r   c                      d S 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OOO   EE3-EE63-8888,////8888qz??V}vsm<<<<<<<r   c                  Z     t          d           t          t           fd          sJ d S )Nr   c                        d          S Nhellor   r&   s   r   rR   z)test_no_implementations.<locals>.<lambda>       qqzz r   )r   r	   NotImplementedErrorr&   s   @r   test_no_implementationsr      s5    3A%'9'9'9'9:::::::r   c                  N   t          d                              t                                        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 d S )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    1Y<<9$$$$1YYY<<999$$$$%'9'9'9'9:::::3w<<7""""""r   c                     t          d          } |                     t                    d             }|                     t          t                    d             } G d dt                    }|                     t                    |u sJ |                     |          |u sJ |                     t          t                    |u sJ d S )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dS )$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                  L   t          d                              t                    d             }                     t                    d             }  d          dk    sJ  d          dk    sJ  d          dk    sJ t	          t
          fd	          sJ d S )
Nr   c                     dS )Ndefaultr   r   s    r   _ztest_not_implemented.<locals>._   s    yr   c                 4    | dz  dk    rdS t                      )Nr   r   evenr   r   s    r   r   ztest_not_implemented.<locals>._   s     q5A::6')))r   r   r   r   r   rC   c                        dd          S )Nr   r   r   r&   s   r   rR   z&test_not_implemented.<locals>.<lambda>   s    qqAww r   )r   r*   rA   r!   r	   r   r   r   s    @r   test_not_implementedr      s    3AZZ   ZZ__* * _* 1W::""""1Q446>>>>1Q449%7777777r   c                      t          d                              t                    d             } t          t          fd          sJ d S )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    qqvv r   )r   r*   r"   r	   r   r   s    @r   test_not_implemented_errorr     sY    3AZZ& & & %~~~~6666666r   c                     t          d           G d d          }  G d d|            G d d|                               | fd t                                         | fd	 t                                         | fd
 t                                         | fd t                     t          t          fd          sJ d S )Nr   c                       e Zd ZdS )3test_ambiguity_register_error_ignore_dup.<locals>.ANr   r   r   r   Ar     r   r   r   c                       e Zd ZdS )3test_ambiguity_register_error_ignore_dup.<locals>.BNr   r   r   r   Br     r   r   r   c                       e Zd ZdS )3test_ambiguity_register_error_ignore_dup.<locals>.CNr   r   r   r   Cr     r   r   r   c                     d S r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>      d r   c                     d S r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  r   r   c                     d S r   r   rY   s     r   rR   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>  r   r   c                     d S 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    qqaacc{{ r   )r   r    r   r	   r   )r   r   r   r   s    @@@r   (test_ambiguity_register_error_ignore_dupr     s9   3A           A       A    EE1a&""$GHHHEE1a&""$GHHHEE1a&""$GHHHEE1a&""$GHH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      s  N N N N N N N N N N N N N N N N / . . . . . . .      
 
 
      $  $7 7 7
# # #8. . .0* * *&2 2 2= = =2; ; ;
# # #' ' '&8 8 8(7 7 7< < < < <r   