
    sg"                         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
 Zd Zd Zd Zd Zd Z G d de      Z d Z!d Z"d Z#d Z$y)    )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                 F    t        | t              rt        j                  S | S N)
isinstancer   r   Zero)
expressions    W/var/www/html/venv/lib/python3.12/site-packages/sympy/strategies/tests/test_traverse.pyzero_symbolsr      s    
F3166CC    c            
          t        t              }  | t        t        t        t        t        t
                          t        t        d      t        d      t        t        t
                    k(  sJ y Nr   )r   r   r   r   r   r   r   )zero_onelevels    r   	test_sallr      sL    &Mq!U1a[12adAaD%1+&' ' 'r   c                  @    t        t               t        t               y r   )_test_global_traversalr   _test_stop_on_non_basics r   r   test_bottom_upr$      s    9%Y'r   c                  @    t        t               t        t               y r   )r!   r   r"   r#   r   r   test_top_downr&      s    8$X&r   c                      | t               } |t        t        t        t        t        t                          t        t        d      t        d      t        t        d      t        d                  k(  sJ y r   )r   r   r   r   r   r   )travzero_all_symbolss     r   r!   r!   "   sV    L)E!Qa45adAaD%!ad+,- - -r   c           
          d }t        t        d      t        d      t        t        d      t        d                  }t        t        d      t        d      t        t        d      t        d                  } | |      } ||      |k(  sJ y )Nc                 0    	 | dz   S # t         $ r | cY S w xY wN   )	TypeError)exprs    r   add_one_if_canz0_test_stop_on_non_basics.<locals>.add_one_if_can*   s$    	!8O 	K	s    r-   a   b   )r   r   r   )r(   r0   r/   expectedrls        r   r"   r"   )   so     1s3xqtSX!67DQqT3s8U1Q4S%:;H	n	Bd8xr   c                       e Zd Zy)Basic2N)__name__
__module____qualname__r#   r   r   r8   r8   7   s    r   r8   c                 |    | j                   r/t        | j                   d   t              st        | j                    S | S r   )argsr   r   r8   )r   s    r   r6   r6   ;   s-    vvjG4qvvHr   c                      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 y )Ng      ?g       @r4      )r   r6   r   r   r8   )top_rls    r   test_top_down_oncerA   A   sf    2F%##adAaD(9:;qvqvuQqT1Q4012 2 2r   c                      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 y )Nr-   r2   g      @g      @)r   r6   r   r   r8   )	bottom_rls    r   test_bottom_up_oncerD   H   sf    r"IU1Q41uQsVQsV'<=>adAaD&33012 2 2r   c                      t         t        dz  z   }  t        d t              |       } t        d t              |       }t        |      |k(  sJ y )Nr4   c                     | dz   S r,   r#   vs    r   <lambda>ztest_expr_fns.<locals>.<lambda>Q   s
    AE r   c                 J    t        j                  t        | t        d            S r,   )r   __new__r   r   rG   s    r   rI   ztest_expr_fns.<locals>.<lambda>R   s    EMM#q!A$7 r   )r   r   r   r
   r   r	   )r/   er3   s      r   test_expr_fnsrM   O   sF    q!t8D,	/8,T2AC	7CDIA1:??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"   r8   r6   rA   rD   rM   r#   r   r   <module>rW      sk   I I ' *  " & " )  D'(
'
- 	U 	22r   