o
    h=                     @   s   d Z ddlZddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
mZ ddlmZmZmZ ejjejjgZdZedd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd ZdS )a  
Tests to read a stored protobuf.
Also serves as an example of how to parse sentences, tokens, pos, lemma,
ner, dependencies and mentions.

The test corresponds to annotations for the following sentence:
    Chris wrote a simple sentence that he parsed with Stanford CoreNLP.
    N)Path)fixture)DocumentSentenceTokenDependencyGraph
CorefChain)parseFromDelimitedStringwriteToDelimitedStringto_textzDChris wrote a simple sentence that he parsed with Stanford CoreNLP.
c                  C   st   t jt jt} t| j} t j| dd}t|d}|	 }W d    n1 s+w   Y  t
 }t|| |S )Ndataztest.datrb)ospathdirnameabspath__file__r   parentjoinopenreadr   r	   )test_dir	test_datafbufdoc r   \/var/www/html/env_mimamsha/lib/python3.10/site-packages/stanza/tests/server/test_protobuf.pydoc_pb   s   


r   c                 C   s   |   dksJ d S )Nie  )ByteSizer   r   r   r   test_parse_protobuf%   s   r!   c                 C   s8   t | }| }|  t }t|| | |ksJ d S N)r
   getvaluecloser   r	   )r   streamr   doc_pb_r   r   r   test_write_protobuf)   s   
r'   c                 C   s   | j tksJ d S r"   )textTEXTr    r   r   r   test_document_text3   s   r*   c                 C   sh   t | jdks	J | jd }t|tsJ |j|j dksJ |jdks&J t|td d ks2J d S )N   r   C    )	lensentence
isinstancer   characterOffsetEndcharacterOffsetBeginr(   r   r)   )r   r0   r   r   r   test_sentences7   s   
r4   c                 C   s  | j d }|j}t|dksJ t|d tsJ d }dd |D }||ks*J d }dd |D }||ks;J d }d	d |D }||ksLJ d
 }	dd |D }
|
|	ks]J dd d D }dd d D }dd |D }dd |D }||ksJ ||ksJ d S )Nr      zDChris wrote a simple sentence that he parsed with Stanford CoreNLP .c                 S      g | ]}|j qS r   )word.0tr   r   r   
<listcomp>K       ztest_tokens.<locals>.<listcomp>zCChris write a simple sentence that he parse with Stanford CoreNLP .c                 S   r6   r   )lemmar8   r   r   r   r;   P   r<   z(NNP VBD DT JJ NN IN PRP VBD IN NNP NNP .c                 S   r6   r   )posr8   r   r   r   r;   U   r<   z'PERSON O O O O O O O O ORGANIZATION O Oc                 S   r6   r   )nerr8   r   r   r   r;   Z   r<   c                 S      g | ]}t |qS r   intr9   ir   r   r   r;   ^       z!0 6 12 14 21 30 35 38 45 50 59 66c                 S   r@   r   rA   rC   r   r   r   r;   _   rE   z"5 11 13 20 29 34 37 44 49 58 66 67c                 S   r6   r   )	beginCharr8   r   r   r   r;   `   r<   c                 S   r6   r   )endCharr8   r   r   r   r;   a   r<   )r0   tokenr/   r1   r   split)r   r0   tokenswordswords_lemmaslemmas_r>   pos_r?   ner_beginendbegin_end_r   r   r   test_tokensC   s,   
rU   c                 C   s   | j d }|j dksJ |j dksJ |j dks J |j}t|t |js-J t|j	t|j
ks9J t|jdksBJ |jd }|jdksNJ |jdksUJ |jdks\J dS )z;
    Extract the dependency parse from the annotation.
    r   r5      r+   nsubjN)r0   basicDependenciesr   enhancedDependenciesenhancedPlusPlusDependenciesr1   r   rootr/   noderH   edgesourcetargetdep)r   r0   treer]   r   r   r   test_dependency_parsef   s   



rb   c                 C   s   | j }t|dksJ |d }t|tsJ |jd jdks J |jd jdks*J |jd jdks4J |jd jdks>J |jd jdksHJ |jd jdksRJ |jdksYJ dS )z;
    Extract the corefence chains from the annotation.
    r+   r   MALE      N)	
corefChainr/   r1   r   mention
beginIndexendIndexgenderrepresentative)r   chainschainr   r   r   test_coref_chain   s   rn   )__doc__r   pathlibr   pytestr   stanza.protobufr   r   r   r   r   r	   r
   r   marktravisclient
pytestmarkr)   r   r!   r'   r*   r4   rU   rb   rn   r   r   r   r   <module>   s$    

#