o
    is                     @   s   d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 e j
dd Ze j
dd Ze j
d	d
 Ze j
dd Ze j
dd Ze j
dd Zdd Zdd Zdd Zdd Zdd ZdS )    N)nonproj)	ancestorscontains_cycleis_nonproj_arcis_nonproj_tree)Docc                   C      g dS )N)      r
         r
   r
    r   r   r   S/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/parser/test_nonproj.pytree      r   c                   C   r   )Nr	   r
   r
   r   r      r
   r   r   r   r   r   cyclic_tree   r   r   c                   C   r   )N)	r	   r
   r
   r   r   N   r   r
   r   r   r   r   r   partial_tree   r   r   c                   C   r   )N	r	   r
   r
   r   r   r
   r   r   r
   r   r   r   r   r   nonproj_tree   r   r   c                   C   r   )N	r	   r
   r
   r   r   r
   r   r   r
   r   r   r   r   r   	proj_tree!   r   r   c                   C   r   )N)r   r
   r   r   r   r   r   r   r   
   r   r               r      r   r   r   r   r   r   r   multirooted_tree&   r   r    c                 C   s   dd t d| D g dksJ dd t d|D g dks J dd t d|D g dks0J d	d t d
|D g ks>J d S )Nc                 S      g | ]}|qS r   r   .0ar   r   r   
<listcomp>,       z)test_parser_ancestors.<locals>.<listcomp>r   )r   r   r
   c                 S   r!   r   r   r"   r   r   r   r%   -   r&   )r   r   r   r   r   r   r   c                 S   r!   r   r   r"   r   r   r   r%   .   r&   )r   r   Nc                 S   r!   r   r   r"   r   r   r   r%   /   r&   r   )r   r   r   r   r    r   r   r   test_parser_ancestors+   s       r(   c                 C   sH   t | d u sJ t |h dksJ t |d u sJ t |d u s"J d S )N>   r   r   r   )r   r'   r   r   r   test_parser_contains_cycle2   s   r)   c                 C   s  t d|du s	J t d|du sJ t d|du sJ t d|du s$J t d|du s-J t d|du s6J t d|du s?J t d	|d
u sHJ t d|du sQJ t d	|du sZJ t d|du scJ t d|d
u slJ tjtdd t d|  W d    d S 1 sw   Y  d S )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    r   r   r   test_parser_is_nonproj_arc9   s"   "r2   c                 C   s|   t | du sJ t |du sJ t |du sJ t |du s J tjtdd t | W d    d S 1 s7w   Y  d S )NFTr,   r-   )r   r/   r0   r1   )r   r   r   r   r    r   r   r   test_parser_is_nonproj_treeN   s   
"r3   c                    s2   fdd}g d}g d}g d}g d}g d}g d}g d	}t d
dks+J t ddks4J t d
du s=J t ddu sFJ t d| |g dksTJ t |dks]J t |dksfJ t ||\}	}
tjtdd t || W d    n1 sw   Y  |	g dksJ |
g dksJ ||	|
\}}||ksJ ||ksJ t ||\}	}
|	g dksJ |
g dksJ ||	|
\}}||ksJ ||ksJ g d}	g d}
||	|
\}}||	ksJ |g dksJ g d}	g d}
||	|
\}}|g dksJ |g dksJ d S )Nc                    sD   dgt |  }t ||| d}t| dd |D dd |D fS )Nz	whatever )wordsdepsheadsc                 S   s   g | ]}|j jqS r   )headi)r#   tr   r   r   r%   `   s    zJtest_parser_pseudoprojectivity.<locals>.deprojectivize.<locals>.<listcomp>c                 S   s   g | ]}|j qS r   )dep_)r#   tokenr   r   r   r%   `   s    )lenr   r   deprojectivize)
proj_headsdeco_labelsr4   docen_vocabr   r   r=   \   s   
z6test_parser_pseudoprojectivity.<locals>.deprojectivize)r	   r
   r
   r   )	   r	   r   r	   r   r*   rC   r+   r*   r	   r*   r      r   r	   r   )	detnsubjrootrE   dobjauxrF   aclpunct)advmodrG   rE   rF   rL   rE   rH   rE   nmodrI   rM   rL   rE   amodrK   )rE   rF   rG   rE   rH   rI   rK   zX||Y)XYrO   )rO    TFr   )r
   r
   r
   r   r   r,   r-   r   )	rE   rF   rG   rE   rH   rI   rF   z	acl||dobjrK   )r	   r	   r   r	   r   r*   rC   r+   r*   r	   rC   r   rD   r   r	   )advmod||auxrG   rE   rF   rL   rE   rH   rE   rM   rI   
nmod||dobjrL   rE   rN   rK   )	rE   rF   rG   rE   rH   rI   rF   z	acl||iobjrK   )rR   rG   rE   rI   rL   rE   rH   rE   rM   rI   rS   rL   rE   rN   rK   )r   r	   r   r	   r   r*   rC   r+   r*   r	   r*   r   rD   r   r	   )rL   rG   rE   rI   rL   rE   rH   rE   rM   rI   rM   rL   rE   rN   rK   )	r   	decomposeis_decorated_liftget_smallest_nonproj_arc_slowprojectivizer/   r0   r1   )rB   r=   r   r   nonproj_tree2r   labelslabels2cyclic_labelsr>   r?   deproj_headsundeco_labelsr   rA   r   test_parser_pseudoprojectivity[   sR   r_   )r/    spacy.pipeline._parser_internalsr   (spacy.pipeline._parser_internals.nonprojr   r   r   r   spacy.tokensr   fixturer   r   r   r   r   r    r(   r)   r2   r3   r_   r   r   r   r   <module>   s*    





