
    hs                     2   S SK r S SKJr  S SKJrJrJrJr  S SKJ	r	  \ R                  S 5       r\ R                  S 5       r\ R                  S 5       r\ R                  S 5       r\ R                  S	 5       r\ R                  S
 5       rS rS rS rS rS rg)    N)nonproj)	ancestorscontains_cycleis_nonproj_arcis_nonproj_tree)Docc                  
    / SQ$ )N)      r         r   r    r       Y/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/parser/test_nonproj.pytreer            r   c                  
    / SQ$ )Nr
   r   r   r   r      r   r   r   r   r   cyclic_treer      r   r   c                  
    / SQ$ )N)	r
   r   r   r   r   N   r   r   r   r   r   r   partial_treer      s    ))r   c                  
    / SQ$ )N	r
   r   r   r   r   r   r   r   r   r   r   r   r   nonproj_treer          &&r   c                  
    / SQ$ )N	r
   r   r   r   r   r   r   r   r   r   r   r   r   	proj_treer    !   r   r   c                  
    / SQ$ )N)r   r   r   r   r   r   r   r   r   
   r   r"               r%      r$   r   r   r   r   r   multirooted_treer(   &   s    PPr   c                 H   [        SU 5       Vs/ s H  oDPM     sn/ SQ:X  d   e[        SU5       Vs/ s H  oDPM     sn/ SQ:X  d   e[        SU5       Vs/ s H  oDPM     sn/ SQ:X  d   e[        SU5       Vs/ s H  oDPM     sn/ :X  d   eg s  snf s  snf s  snf s  snf )Nr   )r   r   r   )r   r   r   r   r   r   r   )r   r   Nr'   )r   )r   r   r   r(   as        r   test_parser_ancestorsr+   +   s     D)*)!A)*i777 K010!A015JJJJ L121!A12lBBB %5676!A672=== +127s   BBB;Bc                 ~    [        U 5      b   e[        U5      1 Sk:X  d   e[        U5      b   e[        U5      b   eg )N>   r   r   r   )r   )r   r   r   r(   s       r   test_parser_contains_cycler-   2   sI    $'''+&)333,'///*+333r   c                    [        SU5      SL d   e[        SU5      SL d   e[        SU5      SL d   e[        SU5      SL d   e[        SU5      SL d   e[        SU5      SL d   e[        SU5      SL d   e[        S	U5      S
L d   e[        SU5      SL d   e[        S	U5      SL d   e[        SU5      SL d   e[        SU5      S
L d   e[        R                  " [        SS9   [        SU 5        S S S 5        g ! , (       d  f       g = f)Nr   Fr
   r   r   r   r      r   T   r'   r&   8Found cycle in dependency graph: \[1, 2, 2, 4, 5, 3, 2\]match)r   pytestraises
ValueError)r   r   r   r(   s       r   test_parser_is_nonproj_arcr7   9   s0    !\*e333!\*e333!\*e333!\*e333!\*e333!\*e333!\*e333!\*d222!\*e333!\*e333"./5888"./4777	U
 	q+&
 
 
s   &C<<
D
c                     [        U 5      SL d   e[        U5      SL d   e[        U5      SL d   e[        U5      SL d   e[        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       g = f)NFTr1   r2   )r   r4   r5   r6   )r    r   r   r   r(   s        r   test_parser_is_nonproj_treer9   N   s}     9%...<(D000<(E111+,444	U
 	$
 
 
s   A//
A=c                   ^  U 4S jn/ SQn/ SQn/ SQn/ SQn/ SQn/ SQn/ SQn[         R                  " S	5      S
:X  d   e[         R                  " S5      S:X  d   e[         R                  " S	5      SL d   e[         R                  " S5      SL d   e[         R                  " SU5        U/ SQ:X  d   e[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[         R
                  " X65      u  p[        R                  " [        SS9   [         R
                  " XX5        S S S 5        U	/ SQ:X  d   eU
/ SQ:X  d   eU" X5      u  pX:X  d   eX:X  d   e[         R
                  " XG5      u  pU	/ SQ:X  d   eU
/ SQ:X  d   eU" X5      u  pX:X  d   eX:X  d   e/ SQn	/ SQn
U" X5      u  pX:X  d   eU/ SQ:X  d   e/ SQn	/ SQn
U" X5      u  pU/ SQ:X  d   eU/ SQ:X  d   eg ! , (       d  f       N= f)Nc                    > S/[        U 5      -  n[        TX!U S9n[        R                  " U5        U Vs/ s H  oDR                  R
                  PM     snU Vs/ s H  oUR                  PM     sn4$ s  snf s  snf )Nz	whatever )wordsdepsheads)lenr   r   deprojectivizeheadidep_)
proj_headsdeco_labelsr<   docttokenen_vocabs         r   r@   6test_parser_pseudoprojectivity.<locals>.deprojectivize\   sf    J/(%Ls#"%&#Q#&(E(EEE&(Es   A4A9)r
   r   r   r   )	   r
   r   r
   r   r/   rK   r0   r/   r
   r/   r$      r"   r
   r   )	detnsubjrootrM   dobjauxrN   aclpunct)advmodrO   rM   rN   rT   rM   rP   rM   nmodrQ   rU   rT   rM   amodrS   )rM   rN   rO   rM   rP   rQ   rS   zX||Y)XYrW   )rW    TFr   )r   r   r   r   r"   r1   r2   r   )	rM   rN   rO   rM   rP   rQ   rN   z	acl||dobjrS   )r
   r
   r   r
   r   r/   rK   r0   r/   r
   rK   r$   rL   r"   r
   )advmod||auxrO   rM   rN   rT   rM   rP   rM   rU   rQ   
nmod||dobjrT   rM   rV   rS   )	rM   rN   rO   rM   rP   rQ   rN   z	acl||iobjrS   )rZ   rO   rM   rQ   rT   rM   rP   rM   rU   rQ   r[   rT   rM   rV   rS   )r   r
   r   r
   r   r/   rK   r0   r/   r
   r/   r$   rL   r"   r
   )rT   rO   rM   rQ   rT   rM   rP   rM   rU   rQ   rU   rT   rM   rV   rS   )	r   	decomposeis_decorated_liftget_smallest_nonproj_arc_slowprojectivizer4   r5   r6   )rI   r@   r   r   nonproj_tree2r   labelslabels2cyclic_labelsrD   rE   deproj_headsundeco_labelss   `            r   test_parser_pseudoprojectivityrg   [   sQ   F D.LDM'KTF JGKMV$
222S!Y...'4///$---MM!T900>!CCC00?2EEE%22<HJ	z)d	e[8 
f4444 : : : :"0"IL'''"""%22=JJIIII = = = = #1"IL(((### -J)K"0"IL%%% 6 6 6 6 BJ+K #1"ILKKKK 5 5 5 5E 
f	es   G55
H)r4    spacy.pipeline._parser_internalsr   (spacy.pipeline._parser_internals.nonprojr   r   r   r   spacy.tokensr   fixturer   r   r   r   r    r(   r+   r-   r7   r9   rg   r   r   r   <module>rl      s     4   ! ! ! ! * * ' ' ' ' Q Q>4'*
%>5r   