U
    	Ç-e"  ã                   @   sð   d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
 d dl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mZ d
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZG dd„ deƒZ dd„ Z!dd„ Z"dd„ Z#dd„ Z$d S )!é    )Útop_downÚ	bottom_upÚsallÚtop_down_onceÚbottom_up_onceÚ	basic_fns)Úrebuild)Úexpr_fns)ÚAdd)ÚBasic)ÚInteger)ÚS)ÚStrÚSymbol)ÚxÚyÚzc                 C   s   t | tƒrtjS | S ©N)Ú
isinstancer   r   ZZero)Z
expression© r   úe/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/strategies/tests/test_traverse.pyÚzero_symbols   s    r   c                  C   s@   t tƒ} | ttttttƒƒƒttdƒtdƒtttƒƒks<t‚d S ©Nr   )r   r   r   r   r   r   r   ÚAssertionError)Zzero_onelevelr   r   r   Ú	test_sall   s    ÿr   c                   C   s   t tƒ ttƒ d S r   )Ú_test_global_traversalr   Ú_test_stop_on_non_basicsr   r   r   r   Útest_bottom_up   s    r   c                   C   s   t tƒ ttƒ d S r   )r   r   r   r   r   r   r   Útest_top_down   s    r   c                 C   sH   | t ƒ}|ttttttƒƒƒttdƒtdƒttdƒtdƒƒƒksDt‚d S r   )r   r   r   r   r   r   r   )ÚtravZzero_all_symbolsr   r   r   r   "   s     ÿr   c                 C   sh   dd„ }t tdƒtdƒt tdƒtdƒƒƒ}t tdƒtdƒt tdƒtdƒƒƒ}| |ƒ}||ƒ|ksdt‚d S )Nc                 S   s(   z
| d W S  t k
r"   |  Y S X d S ©Né   )Ú	TypeError)Úexprr   r   r   Úadd_one_if_can*   s    
z0_test_stop_on_non_basics.<locals>.add_one_if_canr!   Úaé   Úbé   )r   r   r   r   )r   r$   r#   ÚexpectedÚrlr   r   r   r   )   s
    ""r   c                   @   s   e Zd ZdS )ÚBasic2N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r+   7   s   r+   c                 C   s$   | j r t| j d tƒs t| j Ž S | S r   )Úargsr   r   r+   )r   r   r   r   r*   ;   s    
r*   c                  C   sX   t tƒ} | ttdƒtdƒttdƒtdƒƒƒƒttdƒtdƒttdƒtdƒƒƒksTt‚d S )Ng      ð?g       @r(   é   )r   r*   r   r   r+   r   )Ztop_rlr   r   r   Útest_top_down_onceA   s    $ ÿr1   c                  C   sX   t tƒ} | ttdƒtdƒttdƒtdƒƒƒƒttdƒtdƒttdƒtdƒƒƒksTt‚d S )Nr!   r&   g      @g      @)r   r*   r   r   r+   r   )Z	bottom_rlr   r   r   Útest_bottom_up_onceH   s    $ ÿr2   c                  C   sD   t td  } tdd„ tƒ| ƒ}tdd„ tƒ| ƒ}t|ƒ|ks@t‚d S )Nr(   c                 S   s   | d S r    r   ©Úvr   r   r   Ú<lambda>Q   ó    ztest_expr_fns.<locals>.<lambda>c                 S   s   t  t| tdƒ¡S r    )r   Ú__new__r
   r   r3   r   r   r   r5   R   r6   )r   r   r   r	   r   r   r   )r#   Úer'   r   r   r   Útest_expr_fnsO   s    r9   N)%Zsympy.strategies.traverser   r   r   r   r   r   Zsympy.strategies.rlr   Zsympy.strategies.utilr	   Zsympy.core.addr
   Zsympy.core.basicr   Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z	sympy.abcr   r   r   r   r   r   r   r   r   r+   r*   r1   r2   r9   r   r   r   r   Ú<module>   s&    