
    hZ                     2   S SK r S SKrS SKrS SKJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  \R0                  S 5       r\R4                  " S5      S 5       r\R4                  " S5      S 5       r\R:                  R=                  S5      S 5       r\R:                  R=                  S5      S 5       r \R:                  R=                  S5      S 5       r!\R:                  R=                  S5      S 5       r"\R:                  R=                  S5      S 5       r#S r$S r%S r&\R:                  RO                  SS/5      S 5       r(\R:                  RO                  S S!/5      S" 5       r)S# r*\R:                  RO                  SS$/5      S% 5       r+\R:                  RO                  S&S'SS( 4/5      S) 5       r,S* r-S+ r.\R:                  RO                  S,S-/5      S. 5       r/\R:                  RO                  SS//5      S0 5       r0\R:                  RO                  SS//5      S1 5       r1\R:                  RO                  SS//5      S2 5       r2\R:                  RO                  SS//5      S3 5       r3\R:                  RO                  SS//5      S4 5       r4S5 r5S6 r6\R:                  RO                  S7S8/5      S9 5       r7\R:                  RO                  S:S; S<S=0/5      S> 5       r8\R:                  RO                  S:/ S?Q5      S@ 5       r9SA r:SB r;SC r<SD r=\R:                  RO                  SE/ SFQ5      SG 5       r>\R:                  RO                  SESHSI/5      SJ 5       r?SK r@SL rA\R:                  R=                  SM5      SN 5       rBSO rCg)P    N)get_current_ops)English)noun_chunksLanguage)TrainablePipe)Doc)Example)SimpleFrozenListget_arg_namesmake_tempdir)Vocabc                      [        5       $ Nr        `/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/pipeline/test_pipe_methods.pynlpr      s
    :r   new_pipec                     U $ r   r   docs    r   r   r          Jr   
other_pipec                     U $ r   r   r   s    r   r   r      r   r   i  c                      S n [        5       n[        UR                  U " 5       5      5       HJ  u  p#US:X  d  US:X  d  US:X  a  [        R                  " 5         U H  n[        UR                  5        M     ML     g )Nc               3      #    [        S5       H  n Sv   M	     [        S5       H  n Sv   M	     [        S5       H  n Sv   M	     [        S5       H  n Sv   M	     [        S5       H  n Sv   M	     g 7f)Ni'  z#It's sentence produced by that bug.zI erase some hbdsaj lemmas.zI erase lemmas.)range)_s    r   string_generator(test_issue1506.<locals>.string_generator#   si     uA77 uA// uA## uA77 uA77 s   A0A2i'  i N  i0u  )r   	enumeratepipegccollectstrlemma_)r    r   idts        r   test_issue1506r+   !   sa    
8 )C#((#3#567 :eqEzJJLAM  8r   iv  c                     [        [        5       5      n U R                  (       a   e[         R                  " S5      S 5       nU R	                  SSS9  U R	                  SSSS9  U R	                  SSSS9  U R
                  / SQ:X  d   e[        [        5       5      nUR                  (       a   eUR	                  SSS9  UR	                  SSSS	9  UR	                  SSSS	9  UR
                  / SQ:X  d   eg )
N	componentc                     U $ r   r   r   s    r   r-   !test_issue1654.<locals>.component>   s    
r   1name2)r2   after3)r0   r3   r5   )r2   before)r   r   pipeliner-   add_pipe
pipe_names)r   r-   nlp2s      r   test_issue1654r;   9   s    
57
C||$ % LL3L'LL3cL2LL3cL2>>_,,,EGD}}MM+CM(MM+CM4MM+CM4??o---r   i(  c                  0   / SQn [        5       nUR                  S5      R                  S5        UR                  S5      R                  S5        UR                  S5      R                  S5        UR                  5         UR	                  U 5       H  nM     g)	z]Test that `nlp.pipe()` works when an empty string ends the batch.

Fixed in v7.0.5 of Thinc.
)helloworld r?   parserdepnerPERSONtaggerNNN)r   r8   	add_label
initializer#   )textsr   r   s      r   test_issue3880rI   N   st     'E
)CLL$$U+LL!!(+LL$$T*NNxx r   i  c                  `   [        5       n U R                  n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9n[        R                  " / SQ[        R                  S9nUR                  SU5        UR                  SU5        UR                  S	U5        UR                  S
U5        SnSSS0SS0/S./nU R                  S5      n	U	R                  U5        U " U5       V
s/ s H  oR                  PM     nn
[        U5      S:X  d   e[        5       n[        R                  R                  UR                  US   5      U5        [        R                  R                  UR                  US   5      U5        [        R                  R                  UR                  US   5      U5        [        R                  R                  UR                  US   5      U5        U R                  S5        U " U5       V
s/ s H  oR                  PM     nn
[        U5      S:X  d   e[        R                  R                  UR                  US   5      U5        [        R                  R                  UR                  US   5      U5        [        R                  R                  UR                  US   5      U5        g s  sn
f s  sn
f )N)g?      ?g?)dtype)gɿg333333g)333333?ggffffff?)rK   r   rM   )g?grK   IlikeDavidBowiezI like David BowierC   LOWERdavidbowie)labelpatternentity_ruler   r            merge_entities)r   vocabnumpyasarrayfloat32
set_vectorr8   add_patternsvectorlenr   testingassert_array_equalto_numpy)r   r]   array1array2array3array4array34textpatternsrulerr*   parsed_vectors_1opsparsed_vectors_2s                 r   test_issue5082rs   ^   sn    )CIIE]]?%--@F]]-U]]CF]]+5==AF]]=>Fmm-U]]CG	S&!	VV$	Wf%	Wf%D'(:Wg<N'OPH LL(E	x *-d)4)Q)4 A%%%

C	MM$$S\\2B12E%FO	MM$$S\\2B12E%FO	MM$$S\\2B12E%FO	MM$$S\\2B12E%FOLL!"*-d)4)Q)4 A%%%	MM$$S\\2B12E%FO	MM$$S\\2B12E%FO	MM$$S\\2B12E%FP 5 5s   L&'L+iR  c                      / SQn [        U S9n/ SQn/ SQn/ SQn[        XX4US9n[        Ul        [	        5       nUR                  S5      nU" U5        g )N)Inanerawheremarketshavebrought
prosperityandempowerment.)strings)ROOTdetpobjadvmodnsubjauxrelcldobjccconjpunct)ADPDETNOUNADVr   AUXVERBr   CCONJr   PUNCT)r   rZ   r   	      r   rZ   r      r   r   )wordsposheadsdepsmerge_noun_chunks)r   r	   r   noun_chunks_iteratorr   create_pipe)r   r]   r   r   r   en_docr   	merge_npss           r   test_issue5458r      sY     pE% EdD
`C-EEF"-F )C 34Ifr   c                  v     " S S[         5      n [        5       nUR                  S5      nU " 5       nU" U5        g )Nc                   &    \ rS rSrS rS rS rSrg),test_multiple_predictions.<locals>.DummyPipe   c                     SU l         g )Ndummy_modelmodel)selfs    r   __init__5test_multiple_predictions.<locals>.DummyPipe.__init__   s	    &DJr   c                     / SQ/ SQ4$ )N)rY   rZ   r[   )rX      r   r   )r   docss     r   predict4test_multiple_predictions.<locals>.DummyPipe.predict   s    y))r   c                     U$ r   r   )r   r   scoress      r   set_annotations<test_multiple_predictions.<locals>.DummyPipe.set_annotations   s    Kr   r   N)__name__
__module____qualname____firstlineno__r   r   r   __static_attributes__r   r   r   	DummyPiper      s    	'	*	r   r   foo)r   r   make_doc)r   r   r   
dummy_pipes       r   test_multiple_predictionsr      s3    M  *C
,,u
CJsOr   c                 J    U R                  S5        SU R                  ;   d   eg )Nr   )r8   r9   r   s    r   test_add_pipe_no_namer      s     LL'''r   c                     U R                  SSS9  [        R                  " [        5         U R                  SSS9  S S S 5        g ! , (       d  f       g = f)Nr   duplicate_namer1   )r8   pytestraises
ValueErrorr   s    r   test_add_pipe_duplicate_namer      s<    LL"2L3	z	"Z&67 
#	"	"s   A
Ar2   r@   c                 V    U R                  SUSS9  U R                  S   S   U:X  d   eg )Nr   T)r2   firstr   )r8   r7   r   r2   s     r   test_add_pipe_firstr      s/    LL$dL3<<?1%%%r   zname1,name2)r@   lambda_pipec                     [         R                  " SS S9  U R                  SUS9  U R                  SUSS9  U R                  S   S   U:w  d   eU R                  S	   S   U:X  d   eg )
N	new_pipe2c                     U $ r   r   r   s    r   <lambda>$test_add_pipe_last.<locals>.<lambda>       Sr   funcr1   r   T)r2   lastr   )r   r-   r8   r7   )r   name1name2s      r   test_add_pipe_lastr      sk    {9LL5L)LL%dL3<<?1&&&<<A%'''r   c                     [         R                  " [        5         U R                  SSSS9  S S S 5        g ! , (       d  f       g = f)Nr   T)r   r   r   r   r   r8   r   s    r   !test_cant_add_pipe_first_and_lastr      s,    	z	"Zt$7 
#	"	"	   6
Atest_get_pipec                     [         R                  " [        5         U R                  U5        S S S 5        U R	                  SUS9  U R                  U5      [
        :X  d   eg ! , (       d  f       N:= fNr   r1   )r   r   KeyErrorget_piper8   r   r   s     r   r   r      sO    	x	 T 
!LL$L'<<))) 
!	 s   A!!
A/z$name,replacement,invalid_replacementtest_replace_pipec                     U $ r   r   r   s    r   r   r      r   r   c                    [         R                  " [        5         U R                  U[        5        S S S 5        U R                  SUS9  [         R                  " [        5         U R                  X5        S S S 5        U R                  X5        U R                  U5      U R                  U5      :X  d   eg ! , (       d  f       N= f! , (       d  f       NW= fr   )r   r   r   replace_piper   r8   r   r   )r   r2   replacementinvalid_replacements       r   r   r      s    
 
z	"x( 
#LL$L'	z	"3 
#T'<<!==== 
#	" 
#	"s   B6$C6
C
Cc                     U R                  S5        U R                  S5        U R                  SS/:X  d   eU R                  SS5        U R                  SS/:X  d   eg )NsentencizerrB   )r8   r9   r   r   s    r   test_replace_last_piper      sX    LLLL>>mU3333UE">>mU3333r   c                     U R                  S5        U R                  S5        U R                  S5      R                  SL d   eU R                  SSSS0S9  U R                  S5      R                  SL d   eg )Nentity_linkerr   T
incl_priorF)config)r8   r   r   r   r   s    r   test_replace_pipe_configr      sn    LL!LL<<(33t;;;_o|U>ST<<(33u<<<r   zold_name,new_name)old_piper   c                     [         R                  " [        5         U R                  X5        S S S 5        U R	                  SUS9  U R                  X5        U R
                  S   S   U:X  d   eg ! , (       d  f       NH= f)Nr   r1   r   )r   r   r   rename_piper8   r7   )r   old_namenew_names      r   test_rename_piper      s_    	z	"+ 
#LL(L+OOH'<<?1)))	 
#	"s   A//
A=my_componentc                 h   [         R                  " [        5         U R                  U5        S S S 5        U R	                  SUS9  [        U R                  5      S:X  d   eU R                  U5      u  p#[        U R                  5      (       a   eX!:X  d   eU[        :X  d   eg ! , (       d  f       N|= f)Nr   r1   rY   )r   r   r   remove_piper8   rd   r7   r   )r   r2   removed_nameremoved_components       r   test_remove_piper      s    	z	" 
#LL$L's||!!!&)ood&;#L3<<    ((( 
#	"s   B##
B1c                     U R                  SUS9  U R                  U5      (       d   eU R                  US9nU R                  U5      (       a   eUR                  5         g )Nr   r1   disabler8   has_pipeselect_pipesrestorer   r2   disableds      r   test_disable_pipes_methodr     s[    LL$L'<<-H||D!!!!r   c                     U R                  SUS9  U R                  U5      (       d   eU R                  / S9nU R                  U5      (       a   eUR                  5         g )Nr   r1   enabler   r  s      r   test_enable_pipes_methodr
    s[    LL$L'<<r*H||D!!!!r   c                    U R                  SUS9  U R                  U5      (       d   eU R                  US9   U R                  U5      (       a   e SSS5        U R                  U5      (       d   eg! , (       d  f       N'= f)zOTest that an enabled component stays enabled after running the context manager.r   r1   r   Nr8   r  r  r   s     r   test_disable_pipes_contextr    su     LL$L'<<			$		'<<%%%%% 
(<< 
(	's   A33
Bc                 Z   U R                  SUS9  U R                  U5      (       d   eU R                  U5        U R                  U5      (       a   eU R                  US9   U R                  U5      (       a   e SSS5        U R                  U5      (       a   eg! , (       d  f       N'= f)zPTest that a disabled component stays disabled after running the context manager.r   r1   r   N)r8   r  disable_piper  r   s     r   "test_disable_pipes_context_restorer    s     LL$L'<<T||D!!!!			$		'<<%%%%% 
(||D!!!!! 
(	's   !B
B*c                    S H+  nU R                  SUS9  U R                  U5      (       a  M+   e   U R                  SS/S9   U R                  S5      (       a   eU R                  S5      (       a   eU R                  S5      (       d   e S S S 5        U R                  SS9   U R                  S5      (       a   eU R                  S5      (       a   eU R                  S5      (       d   e S S S 5        U R                  SS/SS	9   U R                  S5      (       d   eU R                  S5      (       d   eU R                  S5      (       a   e S S S 5        U R                  / S9   U R                  S5      (       a   eU R                  S5      (       a   eU R                  S5      (       a   e S S S 5        U R                  / SQ/ S	9   U R                  S5      (       d   eU R                  S5      (       d   eU R                  S5      (       d   e S S S 5        U R                  / SQ/ S
9   U R                  S5      (       a   eU R                  S5      (       a   eU R                  S5      (       a   e S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN]= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nc1c2c3r   r1   r  r  r   r  r  r	  r   )r   r	  r  r   s     r   test_select_pipes_list_argr  '  s   "Zd+||D!!!! # 
		4,		/<<%%%%<<%%%%||D!!!! 
0 
				&<<%%%%<<%%%%||D!!!! 
' 
		$t		<||D!!!!||D!!!!<<%%%%% 
= 
				$<<%%%%<<%%%%<<%%%%% 
% 
		!3R		@||D!!!!||D!!!!||D!!!! 
A 
		"4R		@<<%%%%<<%%%%<<%%%%% 
A	@) 
0	/ 
'	& 
=	< 
%	$ 
A	@ 
A	@sN   A	J$A	JA	J()A	J:A	K1A	K
J
J%(
J7:
K	
K
K+c                 ^   S H+  nU R                  SUS9  U R                  U5      (       a  M+   e   [        R                  " [        5         U R                  5         S S S 5        [        R                  " [        5         U R                  SS/S/S9  S S S 5        [        R                  " [        5         U R                  SS// S9  S S S 5        [        R                  " [        5         U R                  / S/S9  S S S 5        U R                  S/S9nU R                  S5        [        R                  " [        5         UR                  5         S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)	Nr  r   r1   r  r  r  r  r   )r8   r  r   r   r   r  r   r  r  s      r   test_select_pipes_errorsr  E  s>   "Zd+||D!!!! # 
z	" 
# 
z	"ttf= 
# 
z	"tb9 
# 
z	"TF3 
# /HOOD	z	" 
#	" 
#	" 
#	" 
#	" 
#	"
 
#	"s<   E?E+5E<*F?F
E(+
E9<
F

F
F,n_pipesd   c                     [         R                  " SS S9  [        U5       H  nU R                  SSU 3S9  M     [	        U R
                  5      U:X  d   eg )Nr  c                     U $ r   r   r   s    r   r   (test_add_lots_of_pipes.<locals>.<lambda>^      3r   r   pipe_r1   )r   r-   r   r8   rd   r9   )r   r  r(   s      r   test_add_lots_of_pipesr!  \  sM    y77^YuQC[1 s~~')))r   r-   c                     U $ r   r   r   s    r   r   r   d  r  r   r=   r>   c                     [         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fr   r   )r   r-   s     r   !test_raise_for_invalid_componentsr$  d  s&    	z	"Y 
#	"	"r   )rB   rD   r@   textcatc                     SnU R                  U5      nUR                  U5        US:X  a  X#R                  ;   d   eg UR                  U4:X  d   eg )NTESTrD   )r   rF   labels)r   r-   rU   r#   s       r   test_pipe_base_class_add_labelr)  j  sM    E??9%DNN5H###{{uh&&&r   c                    / SQSS/S.nUR                  5        He  u  p#U R                  U5        U R                  U5      nU H  nUR                  U5        M     [	        UR
                  5      [	        U5      :X  a  Me   e   [	        U R                  5      [	        U5      :X  d   eU R                  R                  5        H!  u  p#[        X   5      [        U5      :X  a  M!   e   g )N)rC   ORGGPEPOSITIVENEGATIVE)rB   r%  )itemsr8   r   rF   rd   r(  pipe_labelssorted)r   input_labelsr2   r(  r#   rU   s         r   test_pipe_labelsr3  v  s    '
+L %**,T||D!ENN5! 4;;3v;... - s3|#4444--/l()VF^;;; 0r   c                     [        5       n U R                  S5        [        R                  " [        5         U R                  SSS9  SSS5        U R                  SSS9  U R
                  SS/:X  d   e[        R                  " [        5         U R                  SSS9  SSS5        [        R                  " [        5         U R                  SSS9  SSS5        U R                  SSS9  U R
                  / S	Q:X  d   eU R                  S
SS9  U R
                  / SQ:X  d   e[        R                  " [        5         U R                  SSSS9  SSS5        [        R                  " [        5         U R                  SSSS9  SSS5        [        R                  " [        5         U R                  SSS9  SSS5        [        R                  " [        5         U R                  SSS9  SSS5        g! , (       d  f       GN= f! , (       d  f       GNk= f! , (       d  f       GNJ= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)z3Test that before/after works with strings and ints.rB   r%  r@   )r6   Nr[   )r4   r   )r%  r@   rB   rD   rZ   )r%  r@   rD   rB   rW   rY   T)r4   r   )r6   r4   F)r   )r   r8   r   r   r   r9   r   s    r   test_add_pipe_before_afterr5    s   
*CLL	z	"Yx0 
#LL5L)>>i////	z	"Xa( 
#	z	"XQ' 
#LLL#>>9999LL!L$>>CCCC	z	"^1D9 
#	z	"^E; 
#	z	"^D1 
#	z	"^51 
#	"% 
#	" 
#	"	"	" 
#	"	"	"	"	"	"	"sS   G0H H;H&/H7#II0
G?
H
H#&
H47
I
I
I'c                  L  ^ Sn 0 mU4S jn[         R                  " U  S3U" U  S35      S9n[         R                  " U  S3U" U  S35      S9n[        5       nUR                  U  S35        UR                  U  S35        TU  S3   S:X  d   eTU  S3   S:X  d   eUR                  U  S3U4U  S3U4/:X  d   eUR                  U  S3U  S3/:X  d   eUR                  U  S35        UR                  U  S3/:X  d   eUR                  U  S3U  S3/:X  d   eUR                  U  S3/:X  d   eUR                  S   S   U  S3/:X  d   eU" S	5        TU  S3   S:X  d   eTU  S3   S	:X  d   eUR                  U  S35        UR                  / :X  d   eUR                  U  S3U  S3/:X  d   eUR                  S   S   / :X  d   eU" S
5        TU  S3   S
:X  d   eTU  S3   S
:X  d   eUR                  U  S35        UR                  U  S35        UR                  U  S3U4/:X  d   eUR                  U  S3U4/:X  d   eUR                  U  S3/:X  d   eUR                  U  S3/:X  d   eUR                  / :X  d   eUR                  S   S   / :X  d   eUR                  U  S3U 5        UR                  X4/:X  d   eUR                  U /:X  d   eU" S5        TU  S3   S:X  d   eTU  S3   S
:X  d   e[        R                  " [        5         UR                  U  S35        S S S 5        UR                  U 5        UR                  U /:X  d   eUR                  / :X  d   eUR                  S   S   U /:X  d   eU" S5        TU  S3   S:X  d   eg ! , (       d  f       Nt= f)Ntest_disable_enable_pipesc                 "   >^  STT '   U U4S jnU$ )Nr?   c                 &   > U R                   TT'   U $ r   rm   r   r2   resultss    r   r-   Dtest_disable_enable_pipes.<locals>.make_component.<locals>.component  s    HHGDMJr   r   r2   r-   r<  s   ` r   make_component1test_disable_enable_pipes.<locals>.make_component      	
 r   r0   r   r3   r?   r   r  r=   r>   !?)r   r-   r8   r7   r9   r  r  component_namesr   enable_piper   
componentsr   r   r   r   )r2   r?  r  r  r   r<  s        @r   r7  r7    sR   &DG 
		tfAJ^tfAJ-G	HB			tfAJ^tfAJ-G	HB
*CLLD6LLD6dV1:"$$$dV1:"$$$<<vQZ,$qz2.>????>>ajTF!*5555vQZ <<tfAJ<'''dV1:$qz"::::>>aj\)))::eZ(vQZL888LdV1:"$$$dV1:')))OOtfAJ<<2>>ajTF!*5555::eZ(B...LdV1:')))dV1:')))vQZ OOtfAJ>>$qz2.////<<vQZ,----dV1:,...>>aj\)))<<2::eZ(B...OOtfAJ%>>tj\)))4&(((HdV1:#%%%dV1:')))	z	"D6$ 
#T4&(((>>R::eZ(TF222HdV1:#%%% 
#	"s   N
N#c                     [        5       n U R                  S5      nU R                  S/:X  d   eU R                  U R                  U R                  U R
                  U R                  U R                  4 H1  n[        U[        5      (       d   e[        U[        5      (       a  M1   e   [        R                  " [        5         U R                  R                  SU45        SSS5        [        R                  " [        5         U R                  R                  5         SSS5        [        R                  " [        5         U R                  R!                  5         SSS5        [        R                  " [        5         U R
                  R#                  5         SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g= f)zTest that spaCy raises custom error messages if "frozen" properties are
accessed. We still want to use a list here to not break backwards
compatibility, but users should see an error if they're trying to append
to nlp.pipeline etc.rB   ner2N)r   r8   r9   r7   rF  rD  r  factory_names
isinstancelistr   r   r   NotImplementedErrorappendpopsortclear)r   rB   props      r   test_pipe_methods_frozenrR    sC   
 *C
,,u
C>>eW$$$ $%%%%$ 01111 
*	+VSM* 
,	*	+ 
,	*	+ 
,	*	+!!# 
,	+ 
,	+	+	+	+	+	+	+s0   F F1?G<G 
F.1
F?
G
G!r#   )rD   r@   rB   r%  morphologizerc                     [        5       nUR                  U 5      n [        U SS 5      c   e[        U SS 5      nUc   eS[        U5      ;   d   eg N
label_datarG   r(  r   r8   getattrr   r#   r   rG   s      r   #test_pipe_label_data_exports_labelsrZ    s[     *C<<D4t,888|T2J!!!}Z0000r   senterr   c                     [        5       nUR                  U 5      n [        U SS 5      b   e[        U SS 5      nUb  S[        U5      ;  d   eg g rU  rW  rY  s      r   test_pipe_label_data_no_labelsr]  
  sX    
*C<<D4t,444|T2J}Z8888 r   c                  
   [        5       n U R                  S5        SU R                  S   S   ;  d   eSS/0U R                  S   S   S'   U R                  S   S   S   SS/0:X  d   eU R                  S5        SU R                  S   S   ;  d   eU R                  S5        SU R                  S   S   ;  d   eSS/0U R                  S   S   S'   U R	                  SS5        SU R                  S   S   ;  d   eU R                  S   S   S   SS/0:X  d   eSS0U R                  S   S   S	'   U R                  S
S	S9  S	U R                  S   S   ;   d   eU R                  S	5        S	U R                  S   S   ;  d   eg)zDTest that the [initialize] config reflects the components correctly.rD   rG   rF  r(  r=   	my_taggerr   bartestrB   r1   N)r   r8   r   r   r   r   s    r   test_pipe_methods_initializerb    s   
*CLL3::l3LAAAA8@7)7LCJJ|\*84::l#L1(;7)?TTTTOOH3::l3LAAAALL3::l3LAAAA8@7)7LCJJ|\*84OOHk*3::l3LAAAA::l#L1+>8gYBWWWW6;U^CJJ|\*62LLVL$SZZ-l;;;;OOFL1,????r   c            	        ^
 Sn 0 m
U
4S jn[         R                  " U  S3U" U  S35      S9  [         R                  " U  S3U" U  S35      S9  [        U  S3U  S3/5      n[        5       n/ SQn/ nU H<  nUR	                  [        UR                  U5      UR                  U5      5      5        M>     / U  S3/U  S3U  S3/U  S3U  S3/4 H  nT
 H  nST
U'   M
     [        UR                  S9nUR                  U  S35        UR                  U  S35        UR                  XWS	9  U H$  n	T
U	   SR                  S
 U 5       5      :X  a  M$   e   U[        U5      -
   H  n	T
U	   S:X  a  M   e   M     g )Ntest_with_annotatesc                 "   >^  STT '   U U4S jnU$ )Nr?   c                 6   > TT==   U R                   -  ss'   U $ r   r:  r;  s    r   r-   Etest_update_with_annotates.<locals>.make_component.<locals>.component1  s    DMSXX%MJr   r   r>  s   ` r   r?  2test_update_with_annotates.<locals>.make_component.  rA  r   r0   r   r3   )abbcccr?   )r]   )	annotatesc              3   L   #    U  H  oR                   R                  v   M     g 7fr   )	predictedrm   ).0egs     r   	<genexpr>-test_update_with_annotates.<locals>.<genexpr>P  s     0VXr1B1BXs   "$)r   r-   setr   rM  r
   r   r]   r8   updatejoin)r2   r?  rF  r   rH   examplesrm   components_to_annotatekeyr-   r<  s             @r   test_update_with_annotatesry  *  s    DG $qz$qz(BC$qz$qz(BCajTF!*-.J
)CEHT 2CLL4FGH  	66vQZ 6vQZ 	# CGCL CII&vQZ vQZ 

8
>/I9%0VX0V)VVVV 0#c*@&AAI9%+++ B#r   i,  c            
         [        5       n U R                  S5        U R                  S5        U R                  S5        [        5        nU R                  U5        [        R
                  " US/SSS/00S9R                  SS/:X  d   e[        R
                  " US/S9  [        R                  " [        5         [        R
                  " US/SSSS/00S9  SSS5        SSS5        g! , (       d  f       N= f! , (       d  f       g= f)	zMTest conflict between enable/disable w.r.t. `nlp.disabled` set in the config.rD   r[  r   r   r  )r	  r   r  N)
r   r8   r   to_diskspacyloadr  r   r   r   )r   tmp_dirs     r   (test_enable_disable_conflict_with_configr  U  s     )CLLLLLL	7GzzXJ
XJ7O/P

(x/0 	0 0 	

7H:.]]:&JJ z
Xx,@AB ' 
 '& 
s%   A0C88C'C8'
C5	1C88
Dc            
         [        5       n S H  nU R                  U5        M     [        5        nU R                  U5        SS/nSS/nSn[        R
                  " X#S9n[        U Vs/ s H  owUR                  ;   PM     sn5      (       d   e[        R
                  " X$S9n[        UR                   Vs/ s H  nXvR                  ;   Xt;  L PM     sn5      (       d   e[        R
                  " X%S9nXVR                  ;  d   e[        R
                  " X%S9nXVR                  ;   d   eXVR                  ;  d   eUR                  U1:X  d   eUR                  U/:X  d   e[        R
                  " UUUR                   Vs/ s H  nXt;  d  M
  UPM     snS9n[        UR                   Vs/ s H  nXvR                  ;   Xt;  L PM     sn5      (       d   e[        R                  " [        5         [        R
                  " X$S/S9  SSS5        SSS5        gs  snf s  snf s  snf s  snf ! , (       d  f       N+= f! , (       d  f       g= f)	z1Tests spacy.load() with dis-/enabling components.)r   rD   r@   r@   rD   r   r  )excluder  N)r   r8   r   r{  r|  r}  allr  rD  r9   	_disabledr   r   r   )base_nlpr#   r~  
to_disable	to_enable
single_strr   	comp_names           r   test_load_disable_enabler  n  s9    yH3$ 4 
7!)
x(	
 jj5zJz)-zJKKKK jj3 "%!4!4!4I ll*	0JK!4
 
 	
 
 jj5!4!4444jj500000///}},,,||
|+++ jj "%!4!4!4I- !4
  "%!4!4!4I ll*	0JK!4
 
 	
 
 ]]:&JJw8*E '_ 
 K
( '&_ 
s`   9H<(H
 5H<5H
B/H< 	H!H!H<+H&
(H</H+H<H<+
H9	5H<<
I
)Dr$   r^   r   	thinc.apir   r|  spacy.lang.enr   spacy.lang.en.syntax_iteratorsr   spacy.languager   spacy.pipeliner   spacy.tokensr	   spacy.trainingr
   
spacy.utilr   r   r   spacy.vocabr   fixturer   r-   r   r   markissuer+   r;   rI   rs   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r!  r$  r)  r3  r5  r7  rR  rZ  r]  rb  ry  r  r  r   r   r   <module>r     s   	   %  ! 6 # (  " D D    
J   
L! " 4 . 4. .( 4  4Q QD 4 $"(
8 (,& -&
 )B(CD( E(8
 /!23* 4* *<9:>	>4= ,/G.HI* J* .!12) 3) .!12 3 .!12 3 .!12 3 .!12" 3"&<. SE** +* '8J&KL  M 
 &LM' N'<"24<&~$8 
C11 (O!<=9 >9@,(,V 5 07Fr   