
    h>)                     h   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	J
r
Jr  S SKJrJr  S SKJrJrJr  SS	KJr  \SS
 j5       r\R,                  S 5       r\R,                  S 5       r\R2                  R5                  S5      S 5       rS r\R2                  R5                  S5      S 5       rS rg)    N)contextmanagerEnglish)contains_cycle)DocDocBinSpan)CorpusExample)create_lower_casing_augmentercreate_orth_variants_augmentermake_whitespace_variant   )make_tempdirc              #      #    [        5        nX!-  n[        U S9R                  U5        Uv   S S S 5        g ! , (       d  f       g = f7f)N)docs)r   r   to_disk)r   nametmpdiroutput_files       ^/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/training/test_augmenters.pymake_docbinr      s5     	6mD!!+. 
s   A!7	A
AAc                      [        5       $ )Nr        r   nlpr      s
    9r   c                 f    / SQn/ SQn/ SQn/ SQnSSS.n[        U R                  XX4S9nXVl        U$ )	N)
Sarahz'ssisterflewtoSiliconValleyviaLondon.)
NNPPOSNNVBDINr'   r'   r+   r'   r&   )
PROPNPARTNOUNVERBADPr,   r,   r0   r,   PUNCT)
zB-PERSONzI-PERSONO r2   zB-LOCzI-LOCr2   B-GPEr2         ?        )TRAVELBAKING)wordstagsposents)r   vocabcats)r   r9   r:   r;   r<   r>   docs          r   r?   r?       s?     _ELD
]CVDS)D
ciiuS
DCHJr   zignore::UserWarningc                    S/SS/S.S// SQS./n/ SQn/ SQnS	/[        U5      -  nS
US'   S
US'   [        U R                  X$US9n[        SSSU0S9n[	        U/S-  5       n[        XvS9n[        U" U 5      5        S S S 5        [        SSSU0S9n[	        U/S-  5       n[        XvS9nU" U 5       H@  n	U	R                   H-  n
U
R                  U
R                  R                  5       :X  a  M-   e   MB     S S S 5        [        U R                  US	/[        U5      -  S9n[        SSSU0S9n[	        U/S-  5       n[        XvS9nU" U 5       HL  n	[        U	R                  U5       H/  u  pUR                  UR                  R                  5       :X  a  M/   e   MN     S S S 5        [        U R                  US	/[        U5      -  S9n[        SSSU0S9n[	        U/S-  5       n[        XvS9nU" U 5       H>  n	[        U	R                  U5       H!  u  pUR                  UR                  :X  a  M!   e   M@     S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       N= f! , (       d  f       g = f)NNFP   …...)r:   variants:)-   —   –-----   ——)z

A	BabrB   rC   rF   rG   rH   rI   rJ   rK   )_SPr)   rM   r)   r)   r)   rA   rA   rE   rE   rE   rE   rE   rE   TFr   r   )r9   spacesr:   g?      ?single)levellowerorth_variants
   	augmenterr5   )r9   rR   r6   )lenr   r=   r   r   r
   list	referencetextrV   zip)r   rT   r9   r:   rR   r?   rZ   r   readerexampletokenex_token	doc_tokens                r   test_make_orth_variantsre   .   sx    uen5$NOF
 gE\DVc%j FF1IF1I
ciiu$
?C.Xv,>I 
cURZ	 K9VC[ 
! /Xv,>I 
cURZ	 K9c{G **zzUZZ%5%5%7777 + # 
! ciiudVc%j-@
AC.Xv,>I 
cURZ	 K9c{G'*7+<+<c'B#}}	(<(<(>>>> (C # 
! ciiudVc%j-@
AC.Xv,>I 
cURZ	 K9c{G'*7+<+<c'B#}}	666 (C # 
!	 ? 
!	  
!	  
!	  
!	 sE   #I"A
I0I>AI'I'&AI82I8
I
I$'
I58
Jc                    [        SS9n[        U/5       n[        X2S9n[        U" U 5      5      nS S S 5        WS   nUR                  R
                  UR
                  R                  5       :X  d   eUR                  R
                  UR
                  R                  5       :X  d   eUR                   Vs/ s H%  owR                  UR                  UR                  4PM'     nnUR                  R                   Vs/ s H%  owR                  UR                  UR                  4PM'     snU:X  d   e[        UR                  R                  UR                  5       H/  u  pU	R
                  U
R
                  R                  5       :X  a  M/   e   U Vs/ s H  oR                  PM     snUR                   Vs/ s H  oR                  PM     sn:X  d   eUR                   Vs/ s H  oR                  PM     snU Vs/ s H  oR                  PM     sn:X  d   e/ SQn[        U R                   US9n[        U/5       n[        X2S9n[        U" U 5      5      nS S S 5        US   nUR                  R
                  UR
                  R                  5       :X  d   eUR                  R
                  UR
                  R                  5       :X  d   eUR                   Vs/ s H  oR
                  PM     snU Vs/ s H  oR                  5       PM     sn:X  d   eUR                   Vs/ s H  oR
                  PM     snU R#                  UR
                  R                  5       5       Vs/ s H  oR
                  PM     sn:X  d   eg ! , (       d  f       GNZ= fs  snf s  snf s  snf s  snf s  snf s  snf ! , (       d  f       GNd= fs  snf s  snf s  snf s  snf )Nr5   )rU   rY   r   )rL   rN   zCCC.)r9   )r   r   r
   r\   r]   r^   rV   	predictedr<   startendlabelr_   ent_iobpos_r   r=   make_doc)r   r?   rZ   r   r`   corpuseger<   ref_entorig_enttr9   s                r   test_lowercase_augmenterrt   e   s   -C8I	cU	{9fSk" 
 
B<< 0000<< 0000/2xx8x!WWaeeQWW%xD8/1||/@/@A/@!WWaeeQWW%/@ATIII !2!2CHH=||x}}224444 >"#s!IIs#2<<'H<a		<'HHHHLL)LqFFL)c-Bcffc-BBBB E
ciiu
%C	cU	{9fSk" 
 
B<< 0000<< 0000LL)LqFFL)-GAggi-GGGGLL)LqFFL)SXX^^%56.616.   1 
	 9A $'H)-B 
	 *-G) .sS   N4,N:,NN 5N% N*;N/<N4O5O$O&O
N4
Oc                    SS[         4S jjn[        U/5       n[        X2" 5       S9n[        U" U 5      5      nS S S 5        SnSnWS   R                  U:X  d   eUS   R
                  R                  U:X  d   eUS   R                  R                  U:X  d   eUS   R                  U:X  d   eUS   R
                  R                  U:X  d   eUS   R                  R                  U:X  d   eUR                   Vs/ s H%  oR                  UR                  UR                  4PM'     n	nUS   R
                  R                   Vs/ s H%  oR                  UR                  UR                  4PM'     snU	:X  d   eUS   R
                  R                   Vs/ s H%  oR                  UR                  UR                  4PM'     snU	:X  d   eg ! , (       d  f       GN= fs  snf s  snf s  snf )	N	randomizec                    ^  U 4S jnU$ )Nc              3   H  >#    UR                   nT	(       aJ  U Vs/ s H<  n[        R                  " 5       S:  a  UR                  5       OUR                  5       PM>     nnOG[	        U5       VVs/ s H/  u  pSUS-  (       a  UR                  5       OUR                  5       PM1     nnnUR                  5       nU R                  SR                  U5      5      nU Vs/ s H  oR                   PM     snUS   S'   Uv   UR                  Xv5      v   g s  snf s  snnf s  snf 7f)NrS   r   r3   token_annotationORTH)	r^   randomrV   upper	enumerateto_dictrm   join	from_dict)
r   ra   r^   cchiexample_dictr?   rs   rv   s
            r   augmentRtest_custom_data_augmentation.<locals>.create_spongebob_augmenter.<locals>.augment   s     <<DQUVQUA6==?S#8aggiaggiGQUVDMdOTODA1q5aggiaggi7OT"??,L,,rwwr{+CHK7L17LL+,V4M##C66 WT 8Ms)   D"ADD"/6D%7D"D11D"r   )rv   r   s   ` r   create_spongebob_augmenterAtest_custom_data_augmentation.<locals>.create_spongebob_augmenter   s    
	7 r   rY   z4Sarah 's sister flew to Silicon Valley via London . z4SaRaH 's sIsTeR FlEw tO SiLiCoN VaLlEy vIa lOnDoN . r      )F)boolr   r
   r\   r^   r]   rg   r<   rh   ri   rj   )
r   r?   r   r   r`   rn   	orig_text	augmentedrp   r<   s
             r   test_custom_data_augmentationr      s   d  
cU	{/I/KLfSk" 
 GIFI!9>>Y&&&!9##y000!9##y000!9>>Y&&&!9##y000!9##y000/2xx8x!WWaeeQWW%xD8/5ay/B/B/G/GH/G!WWaeeQWW%/GHDPPP/5ay/B/B/G/GH/G!WWaeeQWW%/GHDPPP 
	 9HHs    G	:,G,G ,G%	
Gc                 n   Sn/ SQn/ SQn/ SQn/ SQn/ SQn/ SQn/ SQn[        U R                  UUUUUUUS	9n	U	R                  U:X  d   e[        U R	                  U5      U	5      n
[        X
S
S5      nUR                  R                  S   R                  S:X  d   e[        X
S
S5      nUR                  R                  S   R                  S:X  d   e[        X
S
S5      nUR                  R                  S   R                  S:X  d   e[        X
S
S5      nUR                  R                  S   R                  S:X  d   e[        [        U	5      S-   5       GH'  n[        X
S
U5      nUR                  U   R                  (       d   eUR                   Vs/ s H  oR                  PM     snUS U S/-   XLS  -   :X  d   eUR                   Vs/ s H  oR                  PM     snUS U S
/-   X\S  -   :X  d   eUR                   Vs/ s H  oR                  PM     snUS U S/-   X|S  -   :X  d   eUR                  R                  S5      (       a   eUR                  R                  S5      (       a   e[        UR                   Vs/ s H  oR                   R"                  PM     sn5      (       a   e[        [%        U	R&                  5      5      S:X  d   eUS:X  a*  UR                  U   R                   R"                  S:X  d   eO,UR                  U   R                   R"                  US-
  :X  d   eS H  n[        XSU5      n[        UR                   Vs/ s H  oR                   R"                  PM     sn5      (       a   e[        [%        U	R&                  5      5      S:X  d   eUR                  U   R                   R"                  US-
  :X  a  M   e   [        U	R                  5      [        UR                  R                  5      :X  d   e[)        S UR                   5       5      (       d   eUR                  R                   H/  nUS   R                  (       a   eUS   R                  (       d  M/   e   GM*     SU
R                  S   l        [        X
S
S5      nUR                  U
R                  R                  :X  d   eSU
R                  S   l        U
R                  SS /U
R                  R*                  S'   [        X
S
S5      nUR                  U
R                  R                  :X  d   eU
R                  R*                  S	 [-        U	SSS S!S"9/U
R                  l        [        X
S
S5      nUR                  U
R                  R                  :X  d   eg s  snf s  snf s  snf s  snf s  snf )#Nz?They flew to New York City.
Then they drove to Washington, D.C.)Theyr    r!   NewYorkCityr&   
Thentheydrover!   
Washington,D.C.)TTTTTFFFTTTTFTF)PRPr*   r+   r'   r'   r'   r&   rQ   RBr   r*   r+   r'   r   r'   )r   flyr!   r   r   r   r&   r   thenr   driver!   r   r   r   )r   r   r         r   r   rX   rX   rX   rX   rX         r   )nsubjROOTprepcompoundr   pobjpunctdepadvmodr   r   r   r   r   appos)r2   r3   r2   r4   I-GPEr   r2   r2   r2   r2   r2   r2   r4   r2   r4   )r9   rR   r:   lemmasheadsdepsr<       r   zNew York Cityr   zNew  York Cityr   zNew York  City   r   rQ   r   r(   MORPHr   )r      rX   z		
c              3   >   #    U  H  oR                   S :H  v   M     g7f)r   N)rk   ).0rs   s     r   	<genexpr>/test_make_whitespace_variant.<locals>.<genexpr>   s     <+;a99>+;s   r3   r   spansENTQ123)rj   kb_id)r   r=   r^   r   rm   r   r]   r<   ranger[   is_spacetag_lemma_dep_has_annotationr   headr   r\   sentsanyr   r	   )r   r^   r9   rR   r:   r   r   r   r<   r?   ra   mod_exr   rs   jmod_ex2ents                    r   test_make_whitespace_variantr      sG   MD~ElFmD~FAE RDiD
			C 88tcll4(#.G$S3:F  #((O;;;$S3:F  #((,<<<<$S3:F  #((,<<<<$S3:F  #((O;;;3s8a< (sA>"++++ & 0 01 01 01T"1X5G$r(5RRRR"("2"23"2Q"23vbqzSE7IFSUJ7VVVV & 0 01 01 01T"1X5G$r(5RRRR##2259999##227;;;;!V5E5E"F5E66885E"FGGGG4		?#q(((6##A&++--222##A&++--Q666A-c8QGG%9J9J&K9JAvvxx9J&KLLLLtCII'1,,,$$Q',,..!a%777	  388}F$4$4$9$9 ::::<6+;+;<<<<<##((C1v&&2w''''' )7 !B !#Ga$S3:F;;'++00000 'Ga )0(9(9!A(>'?GG$$S3:F;;'++00000( #31EHIG$S3:F;;'++00000W 231
 #G 'Ls   VV#V(V-
V2)zroundtrip.spacy)r{   
contextlibr   pytestspacy.lang.enr   (spacy.pipeline._parser_internals.nonprojr   spacy.tokensr   r   r	   spacy.trainingr
   r   spacy.training.augmentr   r   r   utilr   r   fixturer   r?   markfilterwarningsre   rt   r   r   r   r   r   <module>r      s     %  ! C * * *        
 
 1237 337l> 12Q 3Q@P1r   