B
    .(b                 @   s   d dl mZ d dlZd dlmZmZmZ d dlmZ d dl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 )    )unicode_literalsN)	ancestorscontains_cycleis_nonproj_arc)is_nonproj_tree)nonproj   )get_docc               C   s   dddddddgS )N   r          r   r   r   N/home/dcms/DCMS/lib/python3.7/site-packages/spacy/tests/parser/test_nonproj.pytree   s    r   c               C   s   dddddddgS )Nr
   r   r   r      r   r   r   r   r   cyclic_tree   s    r   c            	   C   s   dddddd dddg	S )Nr
   r   r   r      r   r   r   r   r   partial_tree   s    r   c            	   C   s   dddddddddg	S )Nr
   r   r   r   r   r   r   r   r   r   nonproj_tree   s    r   c            	   C   s   dddddddddg	S )Nr
   r   r   r   r   r   r   r   r   r   	proj_tree    s    r   c               C   s,   dddddddddddddddd	dd
ddgS )Nr   r   r   r   
                  r   r   r   r   r   multirooted_tree%   s    r   c             C   s   dd t d| D dddgks"tdd t d|D dddddddgksLtdd t d|D ddd gksntd	d t d
|D g kstd S )Nc             S   s   g | ]}|qS r   r   ).0ar   r   r   
<listcomp>+   s    z)test_parser_ancestors.<locals>.<listcomp>r   r   r   r   c             S   s   g | ]}|qS r   r   )r   r   r   r   r   r   ,   s    c             S   s   g | ]}|qS r   r   )r   r   r   r   r   r   -   s    c             S   s   g | ]}|qS r   r   )r   r   r   r   r   r   .   s    r   )r   AssertionError)r   r   r   r   r   r   r   test_parser_ancestors*   s    "*"r!   c             C   sN   t | d kstt |tdddgks*tt |d ks:tt |d ksJtd S )Nr   r   r   )r   r    set)r   r   r   r   r   r   r   test_parser_contains_cycle1   s    r#   c             C   s   t d| dkstt d| dks$tt d| dks6tt d| dksHtt d| dksZtt d| dksltt d| dks~tt d	| d
kstt d| dkstt d	|dkstt d|dkstt d|d
kstd S )Nr   Fr
   r   r   r   r      r   T   r   r   )r   r    )r   r   r   r   r   r   test_parser_is_nonproj_arc8   s    r&   c             C   sD   t | dkstt |dks tt |dks0tt |dks@td S )NFT)r   r    )r   r   r   r   r   r   r   test_parser_is_nonproj_treeG   s    r'   c                s4   fdd}dddg}dddddddddg	}ddd	ddd
ddd
dd
ddddg}dddddddddg	}dddddddddddddddg}t ddkstt ddkstt ddkstt ddkstt d| |dddgkstt |dkstt |dkstt ||\}}|dddddddddg	ksBt|dddddddd dg	ksbt|||\}	}
|	|ks~t|
|kstt ||\}}|ddd	ddd
ddd
ddddddgkst|d!dddddddddd"ddddgkst|||\}	}
|	|kst|
|kstdddddddddg	}dddddddd#dg	}|||\}	}
|	|ksft|
dddddddddg	kstddd	ddd
ddd
ddddddg}d!dddddddddd"ddddg}|||\}	}
|	d	dd	ddd
ddd
dd
ddddgkst|
dddddddddddddddgks0td S )$Nc                sd    dt |  }dd t| D }t|jdd |D ||d}t| dd |D dd |D fS )Nz	whatever c             S   s   g | ]\}}|| qS r   r   )r   iheadr   r   r   r   S   s    zJtest_parser_pseudoprojectivity.<locals>.deprojectivize.<locals>.<listcomp>c             S   s   g | ]
}|j qS r   )text)r   tr   r   r   r   V   s    )wordsdepsZheadsc             S   s   g | ]}|j jqS r   )r)   r(   )r   r+   r   r   r   r   [   s    c             S   s   g | ]
}|j qS r   )Zdep_)r   tokenr   r   r   r   [   s    )len	enumerater	   Zvocabr   deprojectivize)
proj_headsdeco_labelstokensZrel_proj_headsdoc)en_tokenizerr   r   r1   Q   s    
z6test_parser_pseudoprojectivity.<locals>.deprojectivizer
   r   r   r   r   	   r   r$   r%   r      r   ZdetZnsubjrootZdobjZauxZaclpunctZadvmodZnmodZamodzX||Y)XYr;   )r;    TFr   z	acl||dobjzadvmod||auxz
nmod||dobjz	acl||iobj)r   Z	decomposer    Zis_decoratedZ_liftZ_get_smallest_nonproj_arcZprojectivize)r6   r1   r   r   Znonproj_tree2labelsZlabels2r2   r3   Zdeproj_headsZundeco_labelsr   )r6   r   test_parser_pseudoprojectivityP   sZ    
"" ,"
,r?   )
__future__r   ZpytestZspacy.syntax.nonprojr   r   r   r   Zspacy.syntaxr   utilr	   Zfixturer   r   r   r   r   r   r!   r#   r&   r'   r?   r   r   r   r   <module>   s    	