
    h6                        S SK r S SKrS SKJr  S SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJrJrJr  SSKJrJr  S rS	 rS
 rS rS rSrSSSSSS.SSSSS./SSS/S.SSS\ 3/\ /S ./S!.r\R2                  " \5      r\R6                  S" 5       rS# rS$ rS% r\R@                  RC                  \" 5       (       + S&S'9\R@                  RE                  S(/ S)Q5      S* 5       5       r#S+ r$S, r%S- r&/ S.Qr'/ S/Qr(/ S0Qr)/ S1Qr*/ S2Qr+/ S3Qr,/ S4Qr-/ S5Qr./ S6Qr/S7/r0\1" \'\)\+\,\-/ S8Q\.\/\0S9S:S;.S<9
r2\1" \(\*\+\,\-/ S8Q\.\/\0S:S9S;.S<9
r3\R@                  Rh                  \R@                  RE                  S=S>\2\3/4S?\2\3/4S@\2\3/4SA\2/SB-  4SC\2\3/4SD\2\3/4SE\2\3/4/5      SF 5       5       r5\R@                  Rh                  \R@                  RE                  S=SG\2\3/SH-  4/5      SI 5       5       r6g)J    N)Path)	CliRunner)appget_git_version)DocDocBinSpan   )make_tempdirnormalize_whitespacec                  :     [        5         g! [         a     gf = f)NTF)r   RuntimeError     R/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/test_cli_app.pyhas_gitr      s"     s   
 
c            
         [        5        n [        5        nS H  n[        X-  5      R                  5         M      [        5       R	                  [
        S[        U 5      [        U5      /5      nSUR                  ;   d   e[        R                  " U5      n[        U5      S:X  d   eSU;   d   eSU;   d   eSU;   d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N)	data1.iob	data2.iobz	data3.iobconvertzGenerated output file   zdata1.spacyzdata2.spacyzdata3.spacyr   r   touchr   invoker   strstdoutoslistdirlend_ind_outfresult	out_filess        r   test_convert_autor&      s    	458AN  " 9 ##C)SYE
)KL&&--777JJu%	9~"""	)))	)))	))) "0s#   C"B)C C"
C	C""
C0c            
         [        5        n [        5        nS H  n[        X-  5      R                  5         M      [        5       R	                  [
        S[        U 5      [        U5      /5      nSUR                  ;   d   e[        R                  " U5      n[        U5      S:X  d   e S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)N)r   r   z
data3.jsonr   z!All input files must be same typer   r   r    s        r   test_convert_auto_conflictr(   &   s    	459AN  " : ##C)SYE
)KL2fmmCCCJJu%	9~""" "0s#   C
BB9(C
9
C	C


Cc                      [        5       R                  [        / SQ5      n [        5       R                  [        SS/5      n[        U R                  5      [        UR                  R                  SS5      5      :X  d   eg )N)	benchmarkaccuracy--helpevaluater,   zspacy evaluatezspacy benchmark accuracy)r   r   r   r   r   replace)result_benchmarkresult_evaluates     r   test_benchmark_accuracy_aliasr1   2   so     {))#/RSk((z8.DEO 0 7 78<P&&'79ST=   r   c                 
   [        U / SQ/ SQS9[        U / SQ/ SQS9/n[        U / SQ/ SQS9[        U / SQ/ S	QS9/n[        5        n[        US
9nUR                  US-  5        [        US
9nUR                  US-  5        [	        5       R                  [        SSU S3SSSS/5        [	        5       R                  [        SSU S3SU S3SU S3/5      nSUR                  ;   d   e S S S 5        g ! , (       d  f       g = f)NIlikecatsr4   r5   cat)wordslemmas)Dogsaregreattoo)dogber=   r>   )Catsr<   cute)r8   r@   rB   )Petsr<   r=   )petr@   r=   docstrain.spacy	dev.spacyinitconfig/config.cfg--langen
--pipelinetrainable_lemmatizerdebugdata--paths.train/train.spacy--paths.dev
/dev.spacyz= Trainable Lemmatizer =)r   r   r   to_diskr   r   r   r   )en_vocab
train_docsdev_docsr!   	train_bindev_binresult_debug_datas          r   (test_debug_data_trainable_lemmatizer_clir]   ;   s+   H1:NO10	
J 	H3<QRH4=STH 
4
+	$./h'{*+&$&	
 &K..&$&%&
#
 *->-E-EEEEA 
s   B#C44
Dzmyconfig.cfgzSample projectzThis is a project for testingzassets/spacy-readme.mdzYhttps://github.com/explosion/spaCy/raw/dec81508d28b47f09a06203c472b37f00db6c869/README.md 411b2c89ccf34288fae8ed126bf652f7)desturlchecksumzassets/citation.cffz:https://github.com/explosion/spaCy/raw/master/CITATION.cff c996bfd80202d480eb2e592369714e5eT)r_   r`   ra   extraokzprint okzpython -c "print('okokok')")namehelpscriptcreatezmake a filezpython -m spacy init config )re   rf   rg   outputs)titledescriptionassetscommandsc               #      #    [        5        n U S-  R                  [        5        U v   S S S 5        g ! , (       d  f       g = f7f)Nproject.yml)r   
write_textSAMPLE_PROJECT_TEXT)pdirs    r   project_dirrs      s.     	4		))*=>
 
s   A3	A
AAc           
      B   U S-  nUR                  5       (       a   S5       e[        5       R                  [        SS[	        U 5      S[	        U5      /5      nUR
                  S:X  d   eUR                  5       (       d   eUR                  S5      n[        S   U;   d   eg )	N	README.mdzREADME already existsprojectdocumentz-or   zutf-8rk   )	existsr   r   r   r   	exit_codeis_file	read_textSAMPLE_PROJECT)rs   readme_pathr$   texts       r   test_project_documentr      s    +K!!##<%<<#[iS%5tS=MNF q         )D-(D000r   c           	         U S-  nUR                  5       (       a   S5       e[        5       R                  [        SS[	        U 5      /5      nUR
                  S:X  d   eUS-  R                  5       (       d   S5       e[        5       R                  [        SSS[	        U 5      /5      nUR
                  S:X  d   eUS-  R                  5       (       d   S	5       eg )
Nrl   zAssets dir is already presentrv   r   zspacy-readme.mdzAssets not downloadedz--extrazcitation.cffzExtras not downloaded)rx   r   r   r   r   ry   rz   )rs   	asset_dirr$   s      r   test_project_assetsr      s    h&I!!B#BB![i3{;K%LMFq   ))2244M6MM4[i9c+FV%WXFq   &//11J3JJ1r   c           
         U [         -  n[        5       R                  [        SSSS[	        U 5      /5      nUR
                  S:X  d   eUR                  5       (       a   e[        5       R                  [        SSS[	        U 5      /5      nUR
                  S:X  d   eUR                  5       (       d   e[        5       R                  [        SSS[	        U 5      /5      nUR
                  S:X  d   eSUR                  ;   d   eg )Nrv   runz--dryrh   r   rd   okokok)CFG_FILEr   r   r   r   ry   rz   r   )rs   	test_filer$   s      r   test_project_runr      s    h&I[i3{3CDF q     """"[i#kBR%STFq   [ic+>N%OPFq   v}}$$$r   zgit not installed)reasonoptions) z--branch v3z8--repo https://github.com/explosion/projects --branch v3c                 D   [        5        nUS-  nSnU (       d  / n OU R                  5       n [        5       R                  [        SSU/U Q[        U5      P5      nUR                  S:X  d   eUS-  R                  5       (       d   e S S S 5        g ! , (       d  f       g = f)Nrv   zbenchmarks/ner_conll03cloner   ru   )r   splitr   r   r   r   ry   rz   )r   	workspaceouttargetr$   s        r   test_project_cloner      s     
9)#)GmmoG##)WfAwACA
 1$$$k!**,,,, 
s   A<B
Bc           
         [        [        5      nSn[        5        nU[        U5      0US'   [        R
                  " U5      nU S-  R                  U5        U [        -  n[        5       R                  [        SSS[        U 5      /5      nUR                  S:X  d   eUR                  5       (       d   e[        5       R                  [        SSU[        U 5      /5      nUR                  S:X  d   eUR                  5         UR                  5       (       a   e[        5       R                  [        SS	U[        U 5      /5      nUR                  S:X  d   eUR                  5       (       d   e S S S 5        g ! , (       d  f       g = f)
Nxyzremotesro   rv   r   rh   r   pushpull)dictr|   r   r   srsly
yaml_dumpsrp   r   r   r   r   ry   rz   unlinkrx   )rs   projremote
remote_dir	proj_textr   r$   s          r   test_project_push_pullr      sN   DF	:!3z?3Y$$T*		}	$00;(*	##C)UHc+FV)WX1$$$  """"##C)VVSEU)VW1$$$##%%%%##C)VVSEU)VW1$$$  """" 
s   EE66
Fc                     Sn [        5       R                  [        SU SS/5      nSU  S3UR                  ;   d   eSUR                  ;   d   e[        5       R                  [        SU /5      nSU  S3UR                  ;   d   eSUR                  ;   d   eSn [        5       R                  [        SU /5      nSU  S3UR                  ;   d   eS	UR                  ;   d   eSUR                  ;   d   eg )
Nspacy.TextCatBOW.v3find-functionz-rarchitectureszFound registered function ''z
textcat.pyzspacy.TextCatBOW.v1spacy_legacyr   r   r   r   )functionr$   s     r   test_find_function_validr      s    $H[ox%WXF(
!4EEE6==((([ox%@AF(
!4EEE6==((( %H[ox%@AF(
!4EEEV]]***6==(((r   c                      Sn Sn[        5       R                  [        SU SU/5      nSU S3UR                  ;   d   eSn [        5       R                  [        SU /5      nSU  S3UR                  ;   d   eg )	Nr   foobarr   z
--registryzUnknown function registry: 'r   zspacy.TextCatBOW.v666z$Couldn't find registered function: 'r   )r   registryr$   s      r   test_find_function_invalidr     s    $HH[oxx@F *(15FFF 'H[ox%@AF1(1=NNNr   r3   )r4   r5   dogsr7   )r4   r5   r?   )PRPVBPNNS)z*Case=Nom|Number=Sing|Person=1|PronType=PrszTense=Pres|VerbForm=FinzNumber=Plur)nsubjROOTdobj)PRONVERBNOUN)Or   zI-ANIMAL)   r   ANIMAL)r
   r
   r
   g      ?g        )CATDOG)
r9   r:   tagsmorphsdepsheadsposentsspansr6   zcomponent,examplestaggermorphologizerrO   parser   nerspancattextcatc                    U S:X  a3  / nU H*  n[        X$S   S9nUS   Ul        UR                  U5        M,     OU S:X  a]  / nU HT  n[        X$S   S9nUS    VVVs/ s H  u  pgn[        XVXx5      PM     snnnUR                  S'   UR                  U5        MV     OT/ nU HL  nUR                  5        V	V
s0 s H  u  pU	S;  d  M  X_M     nn	n
[        U40 UD6nUR                  U5        MN     [        5        n[        US	9nUR                  US
-  5        [        US	9nUR                  US-  5        [        5       R                  [        SSU S3SSSU /5      nUR                  S:X  d   e[        5       R                  [        SU S3SU S3SU S3SU S3/5      nUR                  S:X  d   e[        US-  S-  5      R                  5       (       d   e S S S 5        g s  snnnf s  sn
n	f ! , (       d  f       g = f)Nr   r9   )r9   r6   r   r   scr6   r   rE   rG   rH   rI   rJ   rK   rL   rM   rN   r   trainrR   rS   rT   rU   --output/modelmodel
model-last)r   r6   appendr	   r   itemsr   r   rV   r   r   r   ry   r   rx   )	componentexamplesrW   rX   exampledocstartendlabelkvr!   rZ   r[   init_config_resulttrain_results                   r   test_init_config_trainabler   :  s3    I
Ghg&67CvCHc"   
i	
Ghg&67CFMgFVFV1BUS,FVCIIdO c"   
G(/V1DU;UtqtGVh*'*Cc"	   
4
+	$./j){*+&[//&$
 "++q000 {))&$&%&
#&	
 %%***D7N\1299;;;;A 
 W 
s   G$
7G+G+;CG11
G?ztagger,parser,morphologizer   c                    / nU HL  nUR                  5        VVs0 s H  u  pVUS;  d  M  XV_M     nnn[        U40 UD6nUR                  U5        MN     [        5        n[	        US9n	U	R                  US-  5        [	        US9n
U
R                  US-  5        [        5       R                  [        SSU S3SS	S
U /5      nUR                  S:X  d   e[        5       R                  [        SU S3SU S3SU S3SU S3/5      nUR                  S:X  d   e[        US-  S-  5      R                  5       (       d   e S S S 5        g s  snnf ! , (       d  f       g = f)Nr   rE   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   rR   rS   rT   rU   r   r   r   r   )r   r   r   r   r   rV   r   r   r   ry   r   rx   )r   r   rW   rX   r   r   r   r   r!   rZ   r[   r   r   s                r   #test_init_config_trainable_multipler     s    J$+MMORODAq@Q7Q414OR(&g&# 
 
4
+	$./j){*+&[//&$
 "++q000 {))&$&%&
#&	
 %%***D7N\1299;;;;A 
	 S 
s   EECE
E)7r   syspathlibr   pytestr   typer.testingr   spacy.cli._utilr   r   spacy.tokensr   r   r	   utilr   r   r   r&   r(   r1   r]   r   r|   r   rq   fixturers   r   r   r   markskipifparametrizer   r   r   r   example_words_1example_words_2example_lemmas_1example_lemmas_2example_tagsexample_morphsexample_depsexample_posexample_entsexample_spansr   TRAIN_EXAMPLE_1TRAIN_EXAMPLE_2slowr   r   r   r   r   <module>r      s   	 
    # 0 * * 4*	#-Fd  2 -n:	
 *O:		
 67	
 !5hZ@A#*		
!> &&~6   	1	K%  	M*=>- ?-#,)&O ('' ' $
 )&%!"
		
	
S	! 
		
	
S	! 	O_56	?O<=	/?!CD	O$r)*	/23	_o67	_o677< 7<t #o%G"%LMN'<	 
'<r   