o
    ohT                     @   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/html/construction_image-detection-poc/venv/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)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-   datumr   r   r   	_init_objA   s   z5test_register_instance_method.<locals>.Test._init_objN)
__name__
__module____qualname__r   __init__r'   listr.   objectr0   r   r   r   r   Test:   s    
r7      r+   )r7   abr   r   r   test_register_instance_method8   s   
r;   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   )
dispatcherambambiguitiesr   r   on_ambiguityQ   s   z'test_on_ambiguity.<locals>.on_ambiguityrA   r   )r   r   r6   r    )r   r   rA   r   r?   r   test_on_ambiguityJ   s   rC   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\      rH   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   rJ   z Docstring number two r   rL   r   r   r   twog   r)   ztest_docstring.<locals>.twoc                 S   rJ   r   r   rL   r   r   r   threek   r   ztest_docstring.<locals>.threeDoc of the multimethod itselfr   doczobject, object)r   r   r6   r   r    __doc__stripfindrN   rP   rQ   
master_docr   r   r   r   test_docstringa   s   rZ   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   rJ   rK   r   rL   r   r   r   rN   ~   r)   ztest_help.<locals>.onec                 S   rJ   rO   r   rL   r   r   r   rP      r)   ztest_help.<locals>.twoc                 S   rJ   )z Docstring number three r   rL   r   r   r   rQ      r)   ztest_help.<locals>.threerR   r   rS   r   r   r&   )r   r   r6   r   r    _helprU   rX   r   r   r   	test_help}   s   r\   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   rJ   rK   r   rL   r   r   r   rN      r)   ztest_source.<locals>.onec                 S   s   | | S rO   r   rL   r   r   r   rP      r)   ztest_source.<locals>.tworR   r   rS   zx + yr   zx - yr   )r   r   r   r    _source)rN   rP   rY   r   r   r   r   test_source   s   r^   c                      rD   )Nr   c                      s
     dS r   )sourcer   r$   r   r   rE         
 z8test_source_raises_on_missing_function.<locals>.<lambda>rF   r   r   r$   r   &test_source_raises_on_missing_function   s   ra   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   )r9   r:   gr   r   rA      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>.funcrB   r   )r   r   r   r   r6   r   setordering)rA   r   rf   r   rb   r   test_halt_method_resolution   s   
"ri   c                      rD   )Nr   c                          dS Nhellor   r   r$   r   r   rE          z)test_no_implementations.<locals>.<lambda>)r   r   NotImplementedErrorr   r   r$   r   test_no_implementations   rI   ro   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   r8   )r8   r   r   c                      rj   rk   r   r   r$   r   r   rE      rm   z(test_register_stacking.<locals>.<lambda>rl   olleh)r   r'   r5   tupler   rn   )rs   r   r$   r   test_register_stacking   s   rv   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   rp   rq   r   r   r   r   r   rs      s   z!test_dispatch_method.<locals>.revc                 S   rJ   r   r   rL   r   r   r   r      r)   z!test_dispatch_method.<locals>.addc                   @      e Zd ZdS )z$test_dispatch_method.<locals>.MyListNr1   r2   r3   r   r   r   r   MyList       ry   )r   r'   r5   r   r#   )r   rs   r   ry   r   r   r   test_dispatch_method   s   


r{   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   r}      s   rl   r|   r   r~   r8   c                      s
    ddS )Nr   r   r   r   r$   r   r   rE      r`   z&test_not_implemented.<locals>.<lambda>)r   r'   r6   r   r   rn   r}   r   r$   r   test_not_implemented   s   

r   c                     s4   t d  tdd } tt fddsJ d S )Nr   c                 S   s   t  r   r   )r9   r   r   r   r}     s   z%test_not_implemented_error.<locals>._c                      rj   )Nr   r   r   r$   r   r   rE   	  rm   z,test_not_implemented_error.<locals>.<lambda>)r   r'   r    r   rn   r   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                   @   rw   )z3test_ambiguity_register_error_ignore_dup.<locals>.ANrx   r   r   r   r   A  rz   r   c                   @   rw   )z3test_ambiguity_register_error_ignore_dup.<locals>.BNrx   r   r   r   r   B  rz   r   c                   @   rw   )z3test_ambiguity_register_error_ignore_dup.<locals>.CNrx   r   r   r   r   C  rz   r   c                 S   rd   r   r   rL   r   r   r   rE     r<   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>c                 S   rd   r   r   rL   r   r   r   rE     r<   c                 S   rd   r   r   rL   r   r   r   rE     r<   c                 S   rd   r   r   rL   r   r   r   rE     r<   c                      s      S r   r   r   r   r   r   r   r   rE     s    )r   r   r   r   rn   )r   r   r   r   (test_ambiguity_register_error_ignore_dup  s   r   N)!sympy.multipledispatch.dispatcherr   r   r   r   r   r   sympy.testing.pytestr   r	   r   r   r   r%   r(   r*   r;   rC   rH   rZ   r\   r^   ra   ri   ro   rv   r{   r   r   r   r   r   r   r   <module>   s,     	