o
    i6                     @   s  d dl Z d dlZd dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZmZmZ ddlmZmZ dd	 Zd
d Zdd Zdd Zdd ZdZdddddddddddgddd gd!d"d#d$e ge gd%gd&ZeeZejd'd( Zd)d* Zd+d, Zd-d. Zej j!e  d/d0ej "d1g d2d3d4 Z#d5d6 Z$d7d8 Z%d9d: Z&g d;Z'g d<Z(g d=Z)g d>Z*g d?Z+g d@Z,g dAZ-g dBZ.g dCZ/dDgZ0e1e'e)e+e,e-g dEe.e/e0dFdGdHdI
Z2e1e(e*e+e,e-g dEe.e/e0dGdFdHdI
Z3ej j4ej "dJdKe2e3gfdLe2e3gfdMe2e3gfdNe2gdO fdPe2e3gfdQe2e3gfdRe2e3gfgdSdT Z5ej j4ej "dJdUe2e3gdV fgdWdX Z6dS )Y    N)Path)	CliRunner)appget_git_version)DocDocBinSpan   )make_tempdirnormalize_whitespacec                   C   s"   zt   W dS  ty   Y dS w )NTF)r   RuntimeError r   r   L/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/test_cli_app.pyhas_git   s   r   c               	   C   s   t  e} t  I}dD ]
}t| |   q
t tdt| t|g}d|jv s*J t	|}t
|dks7J d|v s=J d|v sCJ d|v sIJ W d    n1 sSw   Y  W d    d S W d    d S 1 skw   Y  d S )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_filesr   r   r   test_convert_auto   s   
Pr"   c               	   C   s   t  S} t  7}dD ]
}t| |   q
t tdt| t|g}d|jv s*J t	|}t
|dks7J W d    n1 sAw   Y  W d    d S W d    d S 1 sYw   Y  d S )N)r   r   z
data3.jsonr   z!All input files must be same typer   r   r   r   r   r   test_convert_auto_conflict&   s   
Pr#   c                  C   sH   t  tg d} t  tddg}t| jt|jddks"J d S )N)	benchmarkaccuracy--helpevaluater&   zspacy evaluatezspacy benchmark accuracy)r   r   r   r   r   replace)result_benchmarkresult_evaluater   r   r   test_benchmark_accuracy_alias2   s
   
r+   c                 C   s  t | g dg ddt | g dg ddg}t | g dg ddt | g dg d	dg}t P}t|d
}||d  t|d
}||d  t tdd| dddddg t tdd| dd| dd| dg}d|jv swJ W d    d S 1 sw   Y  d S )NIlikecatsr-   r.   cat)wordslemmas)Dogsaregreattoo)dogber6   r7   )Catsr5   cute)r1   r9   r;   )Petsr5   r6   )petr9   r6   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_datar   r   r   (test_debug_data_trainable_lemmatizer_cli;   sN   	

"rV   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)rX   rY   rZ   extraokzprint okzpython -c "print('okokok')")namehelpscriptcreatezmake a filezpython -m spacy init config )r^   r_   r`   outputs)titledescriptionassetscommandsc                  c   sB    t  } | d t | V  W d    d S 1 sw   Y  d S )Nproject.yml)r
   
write_textSAMPLE_PROJECT_TEXT)pdirr   r   r   project_dir   s
   "rk   c              	   C   sp   | d }|  rJ dt tddt| dt|g}|jdks#J | s)J |d}td |v s6J d S )	N	README.mdzREADME already existsprojectdocumentz-or   zutf-8rd   )	existsr   r   r   r   	exit_codeis_file	read_textSAMPLE_PROJECT)rk   readme_pathr    textr   r   r   test_project_document   s   
rv   c                 C   s   | d }|  rJ dt tddt| g}|jdksJ |d  s)J dt tdddt| g}|jdks=J |d  sGJ d	d S )
Nre   zAssets dir is already presentrm   r   zspacy-readme.mdzAssets not downloadedz--extrazcitation.cffzExtras not downloaded)ro   r   r   r   r   rp   rq   )rk   	asset_dirr    r   r   r   test_project_assets   s   rx   c              	   C   s   | t  }t tddddt| g}|jdksJ | rJ t tdddt| g}|jdks3J | s9J t tdddt| g}|jdksMJ d|jv sTJ d S )Nrm   runz--dryra   r   r]   okokok)CFG_FILEr   r   r   r   rp   rq   r   )rk   	test_filer    r   r   r   test_project_run   s   r}   zgit not installed)reasonoptions) z--branch v3z8--repo https://github.com/explosion/projects --branch v3c                 C   s   t  7}|d }d}| sg } n|  } t tdd|g| t|}|jdks*J |d  s2J W d    d S 1 s=w   Y  d S )Nrm   zbenchmarks/ner_conll03cloner   rl   )r
   splitr   r   r   r   rp   rq   )r   	workspaceouttargetr    r   r   r   test_project_clone   s   "r   c              	   C   s  t t}d}t s}|t|i|d< t|}| d | | t }t 	t
dddt| g}|jdks6J | s<J t 	t
dd|t| g}|jdksPJ |  | rZJ t 	t
dd	|t| g}|jdksnJ | stJ W d    d S 1 sw   Y  d S )
Nxyzremotesrg   rm   ry   ra   r   pushpull)dictrs   r
   r   srsly
yaml_dumpsrh   r{   r   r   r   rp   rq   unlinkro   )rk   projremote
remote_dir	proj_textr|   r    r   r   r   test_project_push_pull   s$   
"r   c                  C   s   d} t  td| ddg}d|  d|jv sJ d|jv sJ t  td| g}d|  d|jv s3J d|jv s:J d} t  td| g}d|  d|jv sPJ d	|jv sWJ d|jv s^J d S )
Nspacy.TextCatBOW.v3find-functionz-rarchitectureszFound registered function ''z
textcat.pyzspacy.TextCatBOW.v1spacy_legacyr   r   r   r   )functionr    r   r   r   test_find_function_valid   s   r   c                  C   sd   d} d}t  td| d|g}d| d|jv sJ d} t  td| g}d|  d|jv s0J d S )	Nr   foobarr   z
--registryzUnknown function registry: 'r   zspacy.TextCatBOW.v666z$Couldn't find registered function: 'r   )r   registryr    r   r   r   test_find_function_invalid  s   r   r,   )r-   r.   dogsr0   )r-   r.   r8   )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)
r2   r3   tagsmorphsdepsheadsposentsspansr/   zcomponent,examplestaggermorphologizerrH   parser   nerspancattextcatc           
         s  | dkrg }|D ]}t ||d d |d  _|  qnD| dkrEg }|D ]}t ||d d  fdd|d D  jd	< |  q&ng }|D ]}d
d | D }t |fi | |  qIt g}t|d}||d  t|d}||d  t 	t
dd| dddd| g}|jdksJ t 	t
d| dd| dd| dd| dg}	|	jdksJ t|d d  sJ W d    d S 1 sw   Y  d S )Nr   r2   )r2   r/   r   c                    s    g | ]\}}}t  |||qS r   )r   ).0startendlabeldocr   r   
<listcomp>R  s    z.test_init_config_trainable.<locals>.<listcomp>r   scc                 S      i | ]\}}|d vr||qS )r/   r   r   r   kvr   r   r   
<dictcomp>Z      z.test_init_config_trainable.<locals>.<dictcomp>r>   r@   rA   rB   rC   rD   rE   rF   rG   r   trainrK   rL   rM   rN   --output/modelmodel
model-last)r   r/   appendr   itemsr
   r   rO   r   r   r   rp   r   ro   )
	componentexamplesrP   rQ   exampler   rS   rT   init_config_resulttrain_resultr   r   r   test_init_config_trainable:  sj   



"r   ztagger,parser,morphologizer   c                 C   s"  g }|D ]}dd |  D }t|fi |}|| qt g}t|d}||d  t|d}||d  t tdd| dd	d
d| g}	|	j	dksQJ t td| dd| dd| dd| dg}
|
j	dkssJ t
|d d  sJ W d    d S 1 sw   Y  d S )Nc                 S   r   r   r   r   r   r   r   r     r   z7test_init_config_trainable_multiple.<locals>.<dictcomp>r>   r@   rA   rB   rC   rD   rE   rF   rG   r   r   rK   rL   rM   rN   r   r   r   r   )r   r   r   r
   r   rO   r   r   r   rp   r   ro   )r   r   rP   rQ   r   r   r   rS   rT   r   r   r   r   r   #test_init_config_trainable_multiple  sJ   

"r   )7r   syspathlibr   pytestr   typer.testingr   spacy.cli._utilr   r   spacy.tokensr   r   r   utilr
   r   r   r"   r#   r+   rV   r{   rs   r   ri   fixturerk   rv   rx   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   r   <module>   s    	2


	





: