o
    GZhT                     @   s   d dl mZmZmZmZmZmZ d dlmZm	Z	 dd Z
dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),    )
DispatcherMDNotImplementedErrorMethodDispatcherhalt_orderingrestart_ordering#ambiguity_register_error_ignore_dup)raiseswarnsc                 C      | S N xr   r   [/var/www/auris/lib/python3.10/site-packages/sympy/multipledispatch/tests/test_dispatcher.pyidentity      r   c                 C      | d S N   r   r   r   r   r   inc      r   c                 C      | d S r   r   r   r   r   r   dec   r   r   c                  C   s   t d} | tft | tft ttdd | tftks#J W d    n1 s-w   Y  | 	ttu s;J | ddksCJ | ddksKJ d S )NfF)Ztest_stacklevelr            ?        )
r   addintr   floatr   r	   DeprecationWarningresolvedispatchr   r   r   r   test_dispatcher   s   r$   c                  C   s>   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#   r   r   r   test_union_types!   s   r'   c                  C   sP   t d} | tdd }| tdd }| ddksJ | ddks&J d S )	Nr   c                 S   r   r   r   r   r   r   r   r   ,      z)test_dispatcher_as_decorator.<locals>.incc                 S   r   r   r   r   r   r   r   r   0   r(   r   r   r   r   )r   r&   r   r   )r   r   r   r   r   test_dispatcher_as_decorator)   s   

r)   c                  C   s4   G dd d} | d}| dg}|j |j ksJ d S )Nc                   @   s8   e Zd ZedZeedd Zeedd Z	dS )z+test_register_instance_method.<locals>.Testr   c                 S   s
   || _ d S r   data)selfr+   r   r   r   
_init_list=   s   
z6test_register_instance_method.<locals>.Test._init_listc                 S   s   |g| _ d S r   r*   )r,   Zdatumr   r   r   	_init_objA   s   z5test_register_instance_method.<locals>.Test._init_objN)
__name__
__module____qualname__r   __init__r&   listr-   objectr.   r   r   r   r   Test:   s    
r5      r*   )r5   abr   r   r   test_register_instance_method8   s   
r9   c                     s   t d} dd }dg  fdd}| jttf||d  d r!J | jttf||d  d r1J | jttf||d  d sAJ d S )	Nr   c                 S   r
   r   r   r   r   r   r   r   M       z#test_on_ambiguity.<locals>.identityFc                    s   d d< d S )NTr   r   )
dispatcherZambZambiguitiesr   r   on_ambiguityQ   s   z'test_on_ambiguity.<locals>.on_ambiguityr=   r   )r   r   r4   r   )r   r   r=   r   r<   r   test_on_ambiguityJ   s   r?   c                      "   t d tt fddsJ d S )Nr   c                      s     dtS )N)r   )r   r   r   r#   r   r   <lambda>^   s    z/test_raise_error_on_non_class.<locals>.<lambda>r   r   	TypeErrorr   r   r#   r   test_raise_error_on_non_class\      rD   c                  C   s   dd } dd }dd }d}t d|d	}|ttf|  |ttf| |ttf| | j |jv s6J |j |jv s@J |j| j |j|j k sTJ d
|jv s[J ||jv sbJ d S )Nc                 S      | | S z Docstring number one r   r   yr   r   r   onec   r(   ztest_docstring.<locals>.onec                 S   rF   z Docstring number two r   rH   r   r   r   twog   r(   ztest_docstring.<locals>.twoc                 S   rF   r   r   rH   r   r   r   threek   r   ztest_docstring.<locals>.threeDoc of the multimethod itselfr   doczobject, object)r   r   r4   r   r   __doc__stripfindrJ   rL   rM   
master_docr   r   r   r   test_docstringa   s   rV   c                  C   s   dd } dd }dd }d}t d|d	}|ttf|  |ttf| |ttf| |d
d
|jks7J |dd|jksBJ d S )Nc                 S   rF   rG   r   rH   r   r   r   rJ   ~   r(   ztest_help.<locals>.onec                 S   rF   rK   r   rH   r   r   r   rL      r(   ztest_help.<locals>.twoc                 S   rF   )z Docstring number three r   rH   r   r   r   rM      r(   ztest_help.<locals>.threerN   r   rO   r   r   r%   )r   r   r4   r   r   Z_helprQ   rT   r   r   r   	test_help}   s   rW   c                  C   sl   dd } dd }d}t d|d}|ttf|  |ttf| d|d	d	v s*J d
|ddv s4J d S )Nc                 S   rF   rG   r   rH   r   r   r   rJ      r(   ztest_source.<locals>.onec                 S   s   | | S rK   r   rH   r   r   r   rL      r(   ztest_source.<locals>.tworN   r   rO   zx + yr   zx - yr   )r   r   r   r   _source)rJ   rL   rU   r   r   r   r   test_source   s   rY   c                      r@   )Nr   c                      s
     dS r   )sourcer   r#   r   r   rA         
 z8test_source_raises_on_missing_function.<locals>.<lambda>rB   r   r   r#   r   &test_source_raises_on_missing_function   s   r\   c                     s   dg  fdd} t d}t  dd }|ttf| |ttf|  dgks+J t| d  dgks7J t|jttfttfhksFJ d S )	Nr   c                    s    d  d7  < d S )Nr   r   r   )r7   r8   gr   r   r=      s   z1test_halt_method_resolution.<locals>.on_ambiguityr   c                  W      d S r   r   )argsr   r   r   func   r   z)test_halt_method_resolution.<locals>.funcr>   r   )r   r   r   r   r4   r   setZordering)r=   r   ra   r   r]   r   test_halt_method_resolution   s   
"rc   c                      r@   )Nr   c                          dS Nhellor   r   r#   r   r   rA          z)test_no_implementations.<locals>.<lambda>)r   r   NotImplementedErrorr   r   r#   r   test_no_implementations   rE   ri   c                     sv   t d  t tdd }  ddksJ  g dg dks&J tt fdds1J | dd	ks9J d S )
Nr   c                 S      | d d d S Nr   r   r   r   r   rev   s   z#test_register_stacking.<locals>.rev)r   r   r6   )r6   r   r   c                      rd   re   r   r   r#   r   r   rA      rg   z(test_register_stacking.<locals>.<lambda>rf   Zolleh)r   r&   r3   tupler   rh   )rm   r   r#   r   test_register_stacking   s   ro   c                  C   sz   t d} | tdd }| ttdd }G dd dt}| t|u s(J | ||u s1J | tt|u s;J d S )Nr   c                 S   rj   rk   r   r   r   r   r   rm      s   z!test_dispatch_method.<locals>.revc                 S   rF   r   r   rH   r   r   r   r      r(   z!test_dispatch_method.<locals>.addc                   @      e Zd ZdS )z$test_dispatch_method.<locals>.MyListNr/   r0   r1   r   r   r   r   MyList       rr   )r   r&   r3   r   r"   )r   rm   r   rr   r   r   r   test_dispatch_method   s   


rt   c                     sv   t d  tdd }  tdd }  ddksJ  ddks&J  d	dks.J tt fd
ds9J d S )Nr   c                 S   s   dS )Ndefaultr   r   r   r   r   _   s   ztest_not_implemented.<locals>._c                 S   s   | d dkrdS t  )Nr   r   evenr   r   r   r   r   rv      s   rf   ru   r   rw   r6   c                      s
    ddS )Nr   r   r   r   r#   r   r   rA      r[   z&test_not_implemented.<locals>.<lambda>)r   r&   r4   r   r   rh   rv   r   r#   r   test_not_implemented   s   

rz   c                     s4   t d  tdd } tt fddsJ d S )Nr   c                 S   s   t  r   rx   )r7   r   r   r   rv     s   z%test_not_implemented_error.<locals>._c                      rd   )Nr   r   r   r#   r   r   rA   	  rg   z,test_not_implemented_error.<locals>.<lambda>)r   r&   r   r   rh   ry   r   r#   r   test_not_implemented_error  s   
r{   c                     s   t dG dd d} G dd d|  G dd d| |  fdd	 t  | fd
d	 t | fdd	 t | fdd	 t tt fdd	sTJ d S )Nr   c                   @   rp   )z3test_ambiguity_register_error_ignore_dup.<locals>.ANrq   r   r   r   r   A  rs   r|   c                   @   rp   )z3test_ambiguity_register_error_ignore_dup.<locals>.BNrq   r   r   r   r   B  rs   r}   c                   @   rp   )z3test_ambiguity_register_error_ignore_dup.<locals>.CNrq   r   r   r   r   C  rs   r~   c                 S   r_   r   r   rH   r   r   r   rA     r:   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>c                 S   r_   r   r   rH   r   r   r   rA     r:   c                 S   r_   r   r   rH   r   r   r   rA     r:   c                 S   r_   r   r   rH   r   r   r   rA     r:   c                      s      S r   r   r   r}   r~   r   r   r   rA     s    )r   r   r   r   rh   )r|   r   r   r   (test_ambiguity_register_error_ignore_dup  s   r   N)Z!sympy.multipledispatch.dispatcherr   r   r   r   r   r   Zsympy.testing.pytestr   r	   r   r   r   r$   r'   r)   r9   r?   rD   rV   rW   rY   r\   rc   ri   ro   rt   rz   r{   r   r   r   r   r   <module>   s,     	