o
    ii                     @   s\  d dl Z d dlZd dlZd dlmZ d dlZd dlmZmZm	Z	 d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZmZmZ d dlmZ ddlm Z m!Z! zd dl"Z"e"#d e"$d W n	 e%y}   Y nw dd Z&dd Z'dd Z(dd Z)ej*dd Z+dd Z,dd Z-dd Z.dd Z/d d! Z0d"d# Z1d$d% Z2d&d' Z3d(d) Z4ej*d*d+ Z5ej*d,d- Z6ej*d.d/ Z7ej89d0dd1gd2d3 Z:ej89d0dd1gd4d5 Z;ej89d0dd1gd6d7 Z<ej89d0dd1gd8d9 Z=ej89d0dd1gd:d; Z>ej89d0dd1gd<d= Z?ej89d0dd1gd>d? Z@ej8jAej89d0dd1gd@dA ZBdBdC ZCdDdE ZDdFdG ZEdHdI ZFdJdK ZGdLdM ZHej89dNg dOdPdQ ZIej89dNg dRdSdT ZJej89dUdVddWdXgeegdYdZ ZKd[d\ ZLej89d0dd1gd]d^ ZMd_d` ZNej8jOePe	 e dadbdcdd ZQdedf ZRdgdh ZSdS )i    N)mock)CupyOpsNumpyOpsget_current_ops)GermanEnglish)Language)Scorer)DocSpan)Example)find_matching_languageignore_errorraise_errorregistry)Vocab   )add_vecs_to_vocabassert_docs_equalc                 C   s   d| j v r	td| S )N2zno dice)text
ValueErrordoc r   M/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/test_language.pyevil_component      
r   c                 C   s   | j dsd| d _| S )N4T)r   
startswithis_sent_startr   r   r   r   perhaps_set_sentences%   s   
r#   c                 C   s   |  ds	td| S )N
SENT_STARTzno sents)has_annotationr   r   r   r   r   assert_sents_error+   r   r&   c                 C   s   t d}|d|  d S )NspacyzTrouble with component %s.)logging	getLoggerwarning)	proc_nameprocdocseloggerr   r   r   
warn_error1   s   
r0   c                  C   s4   t t } | d}dD ]}|| q|   | S )NtextcatPOSITIVENEGATIVE)r	   r   add_pipe	add_label
initialize)nlpr1   labelr   r   r   r8   6   s   

r8   c                 C   s\  d}ddddi}ddi}t | j|dd	}t||}| |g tt | | W d    n1 s8w   Y  tt | ||f W d    n1 sTw   Y  tt | ||f W d    n1 spw   Y  tt	 t|d }W d    n1 sw   Y  tt
 t||}W d    d S 1 sw   Y  d S )
Nhello worldcats      ?        r2   LABELT words)r   vocabsplitr   	from_dictupdatepytestraises	TypeErrorr   KeyError)r8   r   annotswrongkeyannotsr   exampler   r   r   test_language_update@   s*   "rM   c                 C   s^  d}dddddii}t | j|dd}t||}| |g}|d	 d
ks)J | dd |fD }|d	 d
ks<J tt | | W d    n1 sQw   Y  tt | ||fg W d    n1 snw   Y  tt | ||fg W d    n1 sw   Y  tt | ||g W d    d S 1 sw   Y  d S )Nr:   doc_annotationr;   r<   r=   r2   r?   r@   speedr   c                 s   s    | ]}|V  qd S Nr   ).0egr   r   r   	<genexpr>c   s    z)test_language_evaluate.<locals>.<genexpr>)	r   rB   rC   r   rD   evaluaterF   rG   rH   )r8   r   rJ   r   rL   scoresr   r   r   test_language_evaluateZ   s(   "rV   c                 C   sX   t ddd }d}ddddi}t t } | |}| d | t||g d	S )
zoTest that docs are processed correctly within Language.pipe if the
    component doesn't expose a .pipe method.test_evaluate_no_pipec                 S      | S rP   r   r   r   r   r   pipex      z#test_evaluate_no_pipe.<locals>.piper:   r;   r<   r=   r2   N)r	   	componentr   r5   rT   r   rD   )r8   rY   r   rJ   r   r   r   r   rW   t   s   


rW   c           
      C   s   t | }|d}dD ]}|| q|  ddddi}|d}t||}||g}|dj	}|D ]}|d 
|dusDJ q7|jj D ]}	|	|vr\|d 
|	du s\J qKdS )	z8Test that evaluate works with a multilabel textcat pipe.textcat_multilabelFEATUREREQUESTBUGQUESTIONr;   r<   )r^   ra   r:   cats_f_per_typeN)r	   r5   r6   r7   make_docr   rD   rT   get_pipelabelsget	referencer;   keys)
en_vocabr8   r\   r9   rJ   r   rL   rU   re   keyr   r   r    test_evaluate_textcat_multilabel   s"   

rk   c                 C   s   t | }|d}dD ]}|| q|d}dD ]}|| q|  ddddddddi}|d	}t||}||g}||j	d
 j
}	|	D ]}|d |dusZJ qM|jj D ]}
|
|	vrr|d |
du srJ qadS )z|Test that evaluate evaluates the final textcat component in a pipeline
    with more than one textcat or textcat_multilabel.r1   r2   r\   r]   r;   r<   r=   r3   r4   r^   ra   r3   r4   r:   r    rb   N)r	   r5   r6   r7   rc   r   rD   rT   rd   
pipe_namesre   rf   rg   r;   rh   )ri   r8   r1   r9   r\   rJ   r   rL   rU   re   rj   r   r   r   $test_evaluate_multiple_textcat_final   s8   



rn   c                    s  dd  t jd fdd}t| }|jddddiid	}d
D ]}|| q!|d}dD ]}|| q0|  ddddddddi}|d}t	||}|
|g}	d|	v s^J |dj}
t|	d  t|
ksrJ d|	v sxJ |dj}
t|	d  t|
ksJ dS )z_Test that evaluate can evaluate multiple textcat components separately
    with custom scorers.c                 [   s*   t j| dfddi|}dd | D S )Nr;   multi_labelFc                 S   s   i | ]
\}}d | |qS )custom_r   )rQ   kvr   r   r   
<dictcomp>   s    zYtest_evaluate_multiple_textcat_separate.<locals>.custom_textcat_score.<locals>.<dictcomp>)r
   
score_catsitems)exampleskwargsrU   r   r   r   custom_textcat_score   s   zEtest_evaluate_multiple_textcat_separate.<locals>.custom_textcat_scoretest_custom_textcat_scorerc                      s    S rP   r   r   rx   r   r   make_custom_textcat_scorer   rZ   zKtest_evaluate_multiple_textcat_separate.<locals>.make_custom_textcat_scorerr1   scorerz@scorersconfigr2   r\   r]   r;   r<   r=   rl   r:   custom_cats_f_per_typerb   N)r'   r   scorersr	   r5   r6   r7   rc   r   rD   rT   rd   re   setrh   )ri   r{   r8   r1   r9   r\   rJ   r   rL   rU   re   r   rz   r   'test_evaluate_multiple_textcat_separate   s@   
	



 r   c                 C   s   |  j d7  _ | S )Nr   )vectorr   r   r   r   vector_modification_pipe   s   r   c                 C   s   d| j d< | S )Nbarfoo)	user_datar   r   r   r   userdata_pipe   s   
r   c                 C   s$   t | dddd}|  j|f7  _| S )Nr   r   FIRST)r9   )r   ents)r   spanr   r   r   ner_pipe   s   r   c                   C   s"   dg dfdg dfdg dfgS )Nr'   )g皙ɿ333333ӿworld)r   r   gٿrY   )gffffff?g?g?r   r   r   r   r   sample_vectors   s   


r   c                 C   sX   t jdtd t jdtd t jdtd t| j| | d | d | d | S )N&test_language_vector_modification_pipefunctest_language_userdata_pipetest_language_ner_pipe)r	   r[   r   r   r   r   rB   r5   )r8   r   r   r   r   nlp2  s   


r   c                  C   s   g d} | S )N)zHello world.zThis is spacy.z-You can use multiprocessing with pipe method.zPlease try!r   )datar   r   r   texts  s   r   	n_process   c                    sh   t  }t|ts|dk r0|d } fdd|D } j||dd}t||D ]\}}t|| q&d S d S )Nr   
   c                    s   g | ]} |qS r   r   rQ   r   r   r   r   
<listcomp>%  s    z&test_language_pipe.<locals>.<listcomp>r   
batch_size)r   
isinstancer   rY   zipr   )r   r   r   ops	expectedsr-   r   expected_docr   r   r   test_language_pipe   s   r   c                    s   t  }t|ts|dk r>t|}t|\}} fdd|D } j||dd}d}	tt|||	D ]\}
}t	|
| q4d S d S )Nr   c                 3   s    | ]} |V  qd S rP   r   r   r   r   r   rS   3  s    z,test_language_pipe_stream.<locals>.<genexpr>r      )
r   r   r   	itertoolscycleteerY   islicer   r   )r   r   r   r   stream_textstexts0texts1r   r-   n_fetchr   r   r   r   r   test_language_pipe_stream,  s   
r   c                 C   s0  t  }t|ts| dk rt }|d |  ddg}tt ||d  W d   n1 s2w   Y  tt t	|j
|| d W d   n1 sPw   Y  |t tt t	|j
|| d W d   n1 ssw   Y  |t t	|j
|| d}t|dksJ ||d  dS dS )z3Test that the error handling of nlp.pipe works wellr   merge_subtokensz-Curious to see what will happen to this text.zAnd this one.r   Nr   )r   r   r   r   r5   r7   rF   rG   r   listrY   set_error_handlerr   r   lenr   r   r8   r   r-   r   r   r    test_language_pipe_error_handler;  s*   


r   c                 C   s&  t jdtd t }t|ts|dk rt }|d g d}t	t
 t|| W d   n1 s6w   Y  |t td}tj|d;}t|j||d}|d	krr|  |jdkseJ t||j t|ksrJ d
d |D g dksJ W d   dS 1 sw   Y  dS dS )zETest the error handling of a custom component that has no pipe methodmy_evil_componentr   r   )TEXT 111TEXT 222TEXT 333TEXT 342TEXT 666Nr'   r*   r   r   c                 S      g | ]}|j qS r   r   rQ   r   r   r   r   r   l      z;test_language_pipe_error_handler_custom.<locals>.<listcomp>)r   r   r   )r	   r[   r   r   r   r   r   r5   rF   rG   r   r   rY   r   r0   r(   r)   r   patchobjectassert_called
call_countr   )ri   r   r   r8   r   r/   mock_warningr-   r   r   r   'test_language_pipe_error_handler_customS  s(   


"r   c                 C   sx  t jdtd t }t|ts|dk rt }|d g d}t	t
 t|j|dd W d   n1 s8w   Y  |t td}tj|d	b}t|j|d|d
}|dkru|  |jdkshJ t||j t|ksuJ |d d j|d d fdksJ |d d j|d d fdksJ |d d j|d d fdksJ W d   dS 1 sw   Y  dS dS )z8Test the error handling of nlp.pipe with input as tuplesr   r   r   )r   o   )r      r   iM  )r   iV  r   i  T)	as_tuplesNr'   r*   )r   r   r   r   r   r   r   )r	   r[   r   r   r   r   r   r5   rF   rG   r   r   rY   r   r0   r(   r)   r   r   r   r   r   r   r   )ri   r   r   r8   r   r/   r   tuplesr   r   r   0test_language_pipe_error_handler_input_as_tupleso  s,   


""$"r   c                 C   s   t jdtd t jdtd t }t|ts|dk rjdd tdD }t }|	d |	d |
  tt t|j||dd	}W d
   n1 sNw   Y  |t t|j||dd	}t|dkslJ d
S d
S )z4Test the error handling of a component's pipe methodmy_perhaps_sentencesr   r&   r   c                 S   s   g | ]	}t | d qS )z is enough. Done)str)rQ   ir   r   r   r         z9test_language_pipe_error_handler_pipe.<locals>.<listcomp>d   r   r   NY   )r	   r[   r#   r&   r   r   r   ranger   r5   r7   rF   rG   r   r   rY   r   r   r   )ri   r   r   r   r8   r-   r   r   r   %test_language_pipe_error_handler_pipe  s"   


r   c                 C   s   t  }t|ts| dk rot }d|_ddgd }tt t|j	|| d W d   n1 s1w   Y  t
|_| dkr^tt t|j	|| d W d   dS 1 sWw   Y  dS t|j	|| d}t|dksqJ dS dS )	$Test the error handling for make_docr   r   1234567890123456789012345r   Nr   r   r   r   r   r   
max_lengthrF   rG   r   r   rY   r   default_error_handlerr   r   r   r   r   0test_language_pipe_error_handler_make_doc_actual  s"   "r   c                 C   s   t  }t|ts| dk rJt }d|_ddgd }tt t|j	|| d W d   n1 s1w   Y  t
|_t|j	|| d}t|dksLJ dS dS )r   r   r   r   r   r   Nr   r   r   r   r   r   3test_language_pipe_error_handler_make_doc_preferred  s   r   c                     s  d} dd dddt |  dfdd}t |  d fdd}t |  d	fd
d}t |  dfdd}t |  dfdd}dgd|  did|  did|  d	iddddiid|  did|  didd}t|}|jjdksJ |jd dksJ |jd dksJ d|jvsJ d|jvsJ |jdgksJ |dsJ |  |jd dksJ |jd dksJ t	 gsJ d S ) N+test_language_from_config_before_after_initF_beforec                         fdd} | S )Nc                    s   d | t u sJ d| j_| S )NTr   )r   Defaultsr   )lang_cls
ran_beforer   r   before_creation  s   zbtest_language_from_config_before_after_init.<locals>.make_before_creation.<locals>.before_creationr   )r   r   r   r   make_before_creation  s   zItest_language_from_config_before_after_init.<locals>.make_before_creation_afterc                     r   )Nc                    s>   d t | ts	J | jg ksJ | jjdksJ d| jd< | S )NTr   r   r   r   rm   r   r   metar8   	ran_afterr   r   after_creation  s   
z`test_language_from_config_before_after_init.<locals>.make_after_creation.<locals>.after_creationr   )r   r   r   r   make_after_creation  s   	zHtest_language_from_config_before_after_init.<locals>.make_after_creation_after_pipelinec                     r   )Nc                    sR   d t | ts	J | jdgksJ | jjdksJ | jd dks"J d| jd< | S )NTsentencizerr   r   bazr   r   ran_after_pipeliner   r   after_pipeline_creation  s   
zrtest_language_from_config_before_after_init.<locals>.make_after_pipeline_creation.<locals>.after_pipeline_creationr   )r   r   r   r   make_after_pipeline_creation  s   
zQtest_language_from_config_before_after_init.<locals>.make_after_pipeline_creation_before_initc                     r   )Nc                       d d| j d< | S )NTbeforebefore_initr   r   ran_before_initr   r   r        
zZtest_language_from_config_before_after_init.<locals>.make_before_init.<locals>.before_initr   )r   r   r   r   make_before_init     zEtest_language_from_config_before_after_init.<locals>.make_before_init_after_initc                     r   )Nc                    r   )NTafter
after_initr   r   ran_after_initr   r   r    r   zXtest_language_from_config_before_after_init.<locals>.make_after_init.<locals>.after_initr   )r  r  r   r   make_after_init  r  zDtest_language_from_config_before_after_init.<locals>.make_after_initr   
@callbacks)pipeliner   r   r   factory)r   r  )r8   
componentsr7   r   r   r   r   r  r   r   r  )
r   	callbacksr   from_configr   r   r   rm   r7   all)namer   r   r   r   r  r~   r8   r   )r   r  r   r   r   r   r     sP   
	

r   c               	   C   s  d} t j|  ddd d t j|  ddd d t j|  dd	d d t j|  dd
d d |  d|  dfD ]$}ddd|iii}tt t| W d   n1 s[w   Y  q<|  d|  dfD ]$}ddd|iii}tt t| W d   n1 sw   Y  qk|  d|  dfD ]$}ddd|iii}tt t| W d   n1 sw   Y  qdS )z=Check that an error is raised if function doesn't return nlp.3test_language_from_config_before_after_init_invalid_before1c                   S      dd S )Nc                 S      d S rP   r   r   r   r   r   <lambda>,      Wtest_language_from_config_before_after_init_invalid.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r  ,      zEtest_language_from_config_before_after_init_invalid.<locals>.<lambda>r   _before2c                   S   r  )Nc                 S   s   |  S rP   r   r   r   r   r   r  -  s    r  r   r   r   r   r   r  -  r  _after1c                   S   r  )Nc                 S   r  rP   r   r   r   r   r   r  .  r  r  r   r   r   r   r   r  .  r  c                   S   r  )Nc                 S   s   t S rP   r   r   r   r   r   r  /  r  r  r   r   r   r   r   r  /  r  r8   r   r  N_after2r   r   )r   r  rF   rG   r   r   r  )r  callback_namer~   r   r   r   r  )  s0   r  c                  C   sB   G dd d} t d}| |j|_d}||}|j|ksJ dS )z3Test the custom whitespace tokenizer from the docs.c                   @   s   e Zd Zdd Zdd ZdS )z?test_language_whitespace_tokenizer.<locals>.WhitespaceTokenizerc                 S   s
   || _ d S rP   )rB   )selfrB   r   r   r   __init__C  s   
zHtest_language_whitespace_tokenizer.<locals>.WhitespaceTokenizer.__init__c                 S   s   | d}dgt| }t|D ]\}}|dkr d||< d||< q|d dkr4|dd }|dd }nd|d< t| j||dS )Nr?   T Fr    r   )rA   spaces)rC   r   	enumerater   rB   )r  r   rA   r  r   wordr   r   r   __call__F  s   
zHtest_language_whitespace_tokenizer.<locals>.WhitespaceTokenizer.__call__N)__name__
__module____qualname__r  r"  r   r   r   r   WhitespaceTokenizerB  s    r&  enz?   What's happened to    me? he thought. It wasn't a dream.    N)r'   blankrB   	tokenizerr   )r&  r8   r   r   r   r   r   "test_language_whitespace_tokenizer?  s   
r*  c                     s   d} G dd d t | ddtf fdd}dd	d
| iii}t|}|d}dd |D ddgks6J t|dgd }dd |D ddgksMJ dS )zFTest that a fully custom tokenizer can be plugged in via the registry.test_language_custom_tokenizerc                   @   s    e Zd ZdZdd Zdd ZdS )z7test_language_custom_tokenizer.<locals>.CustomTokenizerzEDummy "tokenizer" that splits on spaces and adds prefix to each word.c                 S   s   |j | _ || _d S rP   )rB   prefix)r  r8   r,  r   r   r   r  e  s   
z@test_language_custom_tokenizer.<locals>.CustomTokenizer.__init__c                    s&    fdd| dD }t j|dS )Nc                    s   g | ]	} j  | qS r   r,  )rQ   r!  r  r   r   r   j  r   zTtest_language_custom_tokenizer.<locals>.CustomTokenizer.__call__.<locals>.<listcomp>r?   r@   )rC   r   rB   )r  r   rA   r   r.  r   r"  i  s   z@test_language_custom_tokenizer.<locals>.CustomTokenizer.__call__N)r#  r$  r%  __doc__r  r"  r   r   r   r   CustomTokenizerb  s    r0  _r,  c                    s    fdd}|S )Nc                    s    | dS )Nr-  r   r   )r0  r,  r   r   create_tokenizero  s   zYtest_language_custom_tokenizer.<locals>.custom_create_tokenizer.<locals>.create_tokenizerr   )r,  r2  r0  r-  r   custom_create_tokenizerm  s   z?test_language_custom_tokenizer.<locals>.custom_create_tokenizerr8   r)  z@tokenizersr:   c                 S   r   r   r   rQ   tr   r   r   r   w  r   z2test_language_custom_tokenizer.<locals>.<listcomp>_hello_worldr   c                 S   r   r   r   r5  r   r   r   r   y  r   N)r1  )r   
tokenizersr   r   r  r   rY   )r  r4  r~   r8   r   r   r3  r   r+  ^  s   
r+  c                  C   sz   dddii} t t t|  W d   n1 sw   Y  t t t|  W d   dS 1 s6w   Y  dS )zTest that calling Language.from_config raises an error and lang defined
    in config needs to match language-specific subclasses.r8   langr'  N)rF   rG   r   r	   r  r   r}   r   r   r   &test_language_from_config_invalid_lang|  s   "r;  c                  C   sp   t d} | jd d dksJ dddii}ddi}t jd||d} | jd d dks-J | jd dks6J d S )	Nr'  trainingdropoutg?g?r  my_custom_model)r~   r   )r'   r(  r~   r   )r8   r~   r   r   r   r   test_spacy_blank  s   
r?  zlang,target)frafrfrerB  iwhemorosccsrmulxx)zxxNc                 C   s   t | |ksJ dS )zc
    Test that we can look up languages by equivalent or nearly-equivalent
    language codes.
    N)r   )r:  targetr   r   r   test_language_matching  s   rS  ))r'  r'  r@  rC  rE  rH  rK  rN  )rP  rP  c                 C   s   t | }|j|ksJ dS )z
    Test that we can get spacy.blank in various languages, including codes
    that are defined to be equivalent or that match by CLDR language matching.
    N)r'   r(  r:  )r:  rR  r8   r   r   r   test_blank_languages  s   
rT  valueFxyc                 C   sL   d}t t}t|  W d    n1 sw   Y  |t|jv s$J d S )Nzinvalid value)rF   rG   r   r	   r   rU  )rU  err_fragmentr.   r   r   r    test_language_init_invalid_vocab  s
   
rY  c                 C   s   t t }|d}dD ]}|| q|  d}||jjvs"J || jjvs*J |jj| |jj	 | jj	 ks?J |jj	 }t
t | jdd|d W d    n1 s]w   Y  || jjv sjJ |jj	 |kstJ d S )Nr1   r2   thisisalongstringtextcat2)r  source)r	   r   r5   r6   r7   rB   stringsaddvectorsto_bytesrF   warnsUserWarning)r   r8   r1   r9   long_stringvectors_bytesr   r   r    test_language_source_and_vectors  s    

re  c                    s   g d} fdd|D }t dd |D rJ  |d }|j|d ks'J t|jdks0J tt ts:|dk rst + t	d  j
||d	}d
d |D |ksVJ tdd |D saJ W d    d S 1 slw   Y  d S d S )N)r;   dogszguinea pigsc                    s   g | ]}  |qS r   )rc   r   r   r   r   r     s    z-test_pass_doc_to_pipeline.<locals>.<listcomp>c                 s       | ]}t |jV  qd S rP   r   r;   r   r   r   r   rS         z,test_pass_doc_to_pipeline.<locals>.<genexpr>r   r   errorr   c                 S   r   r   r   r   r   r   r   r     r   c                 s   rg  rP   rh  r   r   r   r   rS     ri  )anyr   r   r;   r   r   r   warningscatch_warningssimplefilterrY   r  )r8   r   r   r-   r   r   r   r   test_pass_doc_to_pipeline  s   

"ro  c                 C   s   ddg}t t | | W d    n1 sw   Y  tt| |dks*J g d}t t t| | W d    n1 sEw   Y  t t | | W d    d S 1 s_w   Y  d S )NzThis is a text.zThis is another.r   )r   r      )rF   rG   r   r   r   rY   )r8   str_listint_listr   r   r   test_invalid_arg_to_pipeline  s   

"rs  ztest requires GPU)reasonc              	   C   s   |d }| j |ddd}tjtdd+ tt |D ]}qW d    n1 s)w   Y  W d    d S W d    d S 1 sAw   Y  d S )Nr   r   r   zmultiprocessing with GPU modelsmatch)rY   rF   ra  rb  rG   r   )r   r   r-   r1  r   r   r    test_multiprocessing_gpu_warning  s   "rw  c                 C   s   t jdtd | d tjtdd t jdtd W d    n1 s%w   Y  tjtdd t jdtd W d    d S 1 sDw   Y  d S )Nr   r   znot permittedru  zmy.evil.component.v1)r	   r[   r   r5   rF   rG   r   r
  r   r   r   r   test_dot_in_factory_names  s   
"rx  c                  C   s   t  } tddd }| d | d | d tddd }| d tjtdd	 | d W d
   d
S 1 s?w   Y  d
S )zNTest that an error is raised if components return a type other than a
    doc.test_component_good_pipec                 S   rX   rP   r   r   r   r   r   	good_pipe  rZ   z(test_component_return.<locals>.good_piper   test_component_bad_pipec                 S   s   | j S rP   r   r   r   r   r   bad_pipe  s   z'test_component_return.<locals>.bad_pipezinstead of a Docru  N)r   r	   r[   r5   remove_piperF   rG   r   )r8   rz  r|  r   r   r   test_component_return  s   





"r~  )Tr   r(   rl  unittestr   rF   	thinc.apir   r   r   r'   spacy.lang.der   spacy.lang.enr   spacy.languager	   spacy.scorerr
   spacy.tokensr   r   spacy.trainingr   
spacy.utilr   r   r   r   spacy.vocabr   utilr   r   torchset_num_threadsset_num_interop_threadsImportErrorr   r#   r&   r0   fixturer8   rM   rV   rW   rk   rn   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   xfailr   r   r  r*  r+  r;  r?  rS  rT  rY  re  ro  rs  skipifr   rw  rx  r~  r   r   r   r   <module>   s    

	"4










_



	


