
    h                     ~    S SK r S SKJr  S SKJrJr  S SKJrJr   " S S\5      r	\
S:X  a  \ R                  " 5         gg)    N)TransformTest)
find_firstfind_all)Nodes	ExprNodesc                   l    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)TestTreePath   Nc                 b    U R                   c  U R                  / S5      U l         U R                   $ )Nz
            def decorator(fun):  # DefNode
                return fun       # ReturnStatNode, NameNode
            @decorator           # NameNode
            def decorated():     # DefNode
                pass
            )_treerun_pipeline)selfs    \/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Compiler/Tests/TestTreePath.py_build_treeTestTreePath._build_tree	   s1    ::**2 0 DJ zz    c           	      L   U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )N   z	//DefNodez
//NameNode   z//ReturnStatNodez//DefNode//ReturnStatNoder   assertEquallenr   r   ts     r   test_node_pathTestTreePath.test_node_path   s    CK 89:CL 9:;C,> ?@AC,G HIJr   c           	         U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )N
   z//*   z//DefNode//*r   z//NameNode//*r   r   s     r   test_node_path_star TestTreePath.test_node_path_star   sd    S!U!345CN ;<=CO <=>r   c           	          U R                  5       nU R                  S[        [        US5      5      5        U R                  SS/[        US5      5        g )Nr   z//NameNode/@namefun	decoratorr   r   s     r   test_node_path_attribute%TestTreePath.test_node_path_attribute!   sJ    C,> ?@A%-x;M/NOr   c           	          U R                  5       nU R                  S[        [        US5      5      5        U R                  S/[        US5      5        g )Nr   z//ReturnStatNode/@value.namer#   r   r   s     r   test_node_path_attribute_dotted,TestTreePath.test_node_path_attribute_dotted&   sG    C,J KLM%(1.L"MNr   c           	          U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )Nr   z!//DefNode/ReturnStatNode/NameNodez//ReturnStatNode/NameNoder   r   s     r   test_node_path_child!TestTreePath.test_node_path_child+   sJ    C,O PQRC,G HIJr   c           	      h   U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  [        R
                  [        [        US5      5      5        g )Nr   z//DefNode[.//ForInStatNode]r   //DefNode[.//NameNode]r   z//ReturnStatNode[./NameNode]r   r   r   r   r   ReturnStatNodetyper   r   s     r   test_node_path_node_predicate*TestTreePath.test_node_path_node_predicate0   s    C,I JKLC,D EFGC,J KLM--j,JKL	Nr   c           	      h   U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  [        R
                  [        [        US5      5      5        g )Nr   r.   r   z//DefNode[.//NameNode]//*r   z&//DefNode[.//NameNode]//ReturnStatNoder/   r   s     r   "test_node_path_node_predicate_step/TestTreePath.test_node_path_node_predicate_step8   s    C,D EFGC,G HIJC,T UVW--j,TUV	Xr   c           	          U R                  5       nU R                  S[        [        US5      5      5        U R                  [        R
                  [        [        US5      5      5        g )Nr   //NameNode[@name])r   r   r   r   r   NameNoder1   r   r   s     r   test_node_path_attribute_exists,TestTreePath.test_node_path_attribute_exists@   sT    C,? @AB++j,?@A	Cr   c           	          U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )Nr   z//NameNode[not(@name)]r   z//NameNode[not(@honking)]r   r   s     r   #test_node_path_attribute_exists_not0TestTreePath.test_node_path_attribute_exists_notF   sJ    C,D EFGC,G HIJr   c           	         U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )	Nr   z,//DefNode[.//ReturnStatNode and .//NameNode]r   z1//DefNode[.//ReturnStatNode and .//DecoratorNode]z//NameNode[@honking and @name]z//NameNode[@name and @honking]r   z'//DefNode[.//NameNode[@name] and @name]r   r   s     r   test_node_path_andTestTreePath.test_node_path_andK   s    C,Z [\]C,_ `abC,L MNOC,L MNOC,U VWXr   c           	         U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )	Nr   z0//DefNode[.//ReturnStatNode or .//DecoratorNode]r8   r   z//NameNode[@honking]z//NameNode[@name or @honking]z//NameNode[@honking or @name]z&//DefNode[.//NameNode[@name] or @name]r   r   s     r   test_node_path_orTestTreePath.test_node_path_orS   s    C,^ _`aC,? @ABC,B CDEC,K LMNC,K LMNC,T UVWr   c           	      n    U R                  5       nU R                  S[        [        US5      5      5        g )Nr   z//NameNode[@name = 'decorator']r   r   s     r   )test_node_path_attribute_string_predicate6TestTreePath.test_node_path_attribute_string_predicate\   s-    C,M NOPr   c           	         U R                  5       nU R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        U R                  S[        [        US5      5      5        g )Nr   z//DefNode[.//NameNode[@name]]r   z+//DefNode[.//NameNode[@name = 'decorator']]z@//DefNode[.//ReturnStatNode[./NameNode[@name = 'fun']]/NameNode]r   r   s     r   "test_node_path_recursive_predicate/TestTreePath.test_node_path_recursive_predicate`   sg    C,K LMNC,Y Z[\C,n opqr   )r   )__name__
__module____qualname____firstlineno__r   r   r   r    r%   r(   r+   r2   r5   r:   r=   r@   rC   rF   rI   __static_attributes__ r   r   r	   r	      sY    E	K?P
O
K
NXCK
YXQrr   r	   __main__)unittestCython.TestUtilsr   Cython.Compiler.TreePathr   r   Cython.Compilerr   r   r	   rK   mainrP   r   r   <module>rW      s:     * 9 ,^r= ^r@ zMMO r   