o
    h"                     @   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   Zero)
expression r   Z/var/www/html/ai/venv/lib/python3.10/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J d S Nr   )r   r   r   r   r   r   r   )zero_onelevelr   r   r   	test_sall   s   r   c                   C      t t tt d S r   )_test_global_traversalr   _test_stop_on_non_basicsr   r   r   r   test_bottom_up      r    c                   C   r   r   )r   r   r   r   r   r   r   test_top_down   r!   r"   c                 C   sH   | t }|ttttttttdtdttdtdks"J d S r   )r   r   r   r   r   r   )trav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s2J d S )Nc                 S   s"   z| d W S  t y   |  Y S w 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(   expectedrlr   r   r   r   )   s
   ""r   c                   @   s   e Zd ZdS )Basic2N)__name__
__module____qualname__r   r   r   r   r0   7   s    r0   c                 C   s$   | j rt| j d tst| j  S | S r   )argsr   r   r0   )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s*J d S )Ng      ?g       @r-      )r   r/   r   r   r0   )top_rlr   r   r   test_top_down_onceA      $ r7   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s*J d S )Nr&   r+   g      @g      @)r   r/   r   r   r0   )	bottom_rlr   r   r   test_bottom_up_onceH   r8   r:   c                  C   sD   t td  } tdd t| }tdd t| }t||ks J d S )Nr-   c                 S   s   | d S r%   r   vr   r   r   <lambda>Q   s    ztest_expr_fns.<locals>.<lambda>c                 S   s   t t| tdS r%   )r   __new__r
   r   r;   r   r   r   r=   R   s    )r   r   r   r	   r   r   )r(   er,   r   r   r   test_expr_fnsO   s   r@   N)%sympy.strategies.traverser   r   r   r   r   r   sympy.strategies.rlr   sympy.strategies.utilr	   sympy.core.addr
   sympy.core.basicr   sympy.core.numbersr   sympy.core.singletonr   sympy.core.symbolr   r   	sympy.abcr   r   r   r   r   r    r"   r   r   r0   r/   r7   r:   r@   r   r   r   r   <module>   s(     