
    hN                     <   S SK r S SKJr  S SKJr  S SKJrJr  S SKJ	r	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  S SKJr  SSKJrJr  S/ SQ/ SQS.4S/ SQ/ SQS.4/rS/ SQ/ SQS.4S/ SQ/ SQS.4/rS/ SQ/ SQS.4/rSr\ R>                  S 5       r \ R>                  S 5       r!S r"\ RF                  RI                  S5      S  5       r%\ RF                  RI                  S!5      S" 5       r&\ RF                  RI                  S!5      S# 5       r'\ RF                  RI                  S$5      \ RF                  RQ                  S%S&9S' 5       5       r)S( r*\ RF                  RW                  S)S&9\ RF                  RY                  S*S+//5      S, 5       5       r-\ RF                  RW                  S)S&9S- 5       r.S. r/S/ r0\ RF                  RW                  S)S&9S0 5       r1S1 r2S2 r3\ RF                  RY                  S3S4S5/5      S6 5       r4\ RF                  RY                  S3S4S5/5      S7 5       r5\ RF                  Rl                  \ RF                  RY                  S3S4S5/5      \ RF                  RY                  S8S9\S4S:S;SS<S=.S>\S4S:S;SS<S=./5      S? 5       5       5       r7S@ r8SA r9g)B    N)assert_equal)Adam)registryutil)DEPNORM)English)DependencyParser)DEFAULT_PARSER_MODEL)DEFAULT_TOK2VEC_MODEL)Doc)Example)Vocab   )apply_transition_sequencemake_tempdirz&They trade mortgage-backed securities.)   r      r      r   r   )nsubjROOTcompoundpunctnmoddobjr   headsdepszI like London and Berlin.)r   r   r   r   r   r   )r   r   r   ccconjr   )r   r   r   r   r   r   )r   r   r   r   r    r   I like London.)r   r   r   N)r   r   r   Ng?c                  "    [        [        S 0S9$ )Nc                     U $ N )ss    W/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/parser/test_parse.py<lambda>vocab.<locals>.<lambda>C   s    1    )lex_attr_getters)r   r   r%   r*   r'   vocabr,   A   s    4"566r*   c                   ^ U R                   R                  S5        S[        0n[        R                  " USS9S   n[        X5      mSTR                  S'   STR                  S'   TR                  S	5        TR                  U4S
 j5        [        S5      n[        S5       H@  n0 n[        U / SQS9n[        R                  " U/ SQ/ SQS.5      nTR                  U/X5S9  MB     T$ )Nr   modelTvalidater   token_vector_width    hidden_widthleftc                     > [        T 5      /$ r$   _parser_exampleparsers   r'   r(   parser.<locals>.<lambda>P       v67r*   gMbP?
   abcdwordsr   r      rE   )r4   r   r4   r   r   sgdlosses)stringsaddr   r   resolver
   cfg	add_label
initializer   ranger   r   	from_dictupdate)	r,   rL   r.   rG   irH   docexampler9   s	           @r'   r9   r9   F   s    	MMf(
)CS409Ee+F'(FJJ#$!#FJJ~
V
78
u+C2Y%34##<1QR
 	wiS8  Mr*   c                 l    [        U R                  / SQS9n/ SQ/ SQS.n[        R                  " X5      $ )Nr=   rB   rD   )rightr   r4   r   r   )r   r,   r   rP   )r9   rS   golds      r'   r7   r7   ]   s/    
fll"6
7C!+LMDS''r*   i
  c                 n    / SQn/ SQnS/[        U5      -  n[        XX#S9nUS   R                  SL d   eg)zATest that deprojectivization doesn't mess up sentence boundaries.)Whenwewriteorcommunicate	virtually,rZ   canhideourtruefeelings.)r   r   	   r   r   r   rf   rf   rf   rf      rg   rf   rf   deprC   r   r   r   FN)lenr   is_sent_start)en_vocabrC   r   r   rS   s        r'   test_issue2772rm   c   sE     @E 9E7SZD
h5
<Cq65(((r*   i  c                    ^ SS0n [         R                  " S[        0SS9S   n[        [	        5       U40 U D6mTR                  S5        STR                  ;  d   eTR                  U4S j5        STR                  ;  d   eg	)
zBTest that the parser doesn't have subtok label if not learn_tokenslearn_tokensFr.   Tr/   r   subtokc                     > [        T 5      /$ r$   r6   r8   s   r'   r(   *test_issue3830_no_subtok.<locals>.<lambda>{   r;   r*   Nr   rK   r   r
   r   rM   labelsrN   configr.   r9   s     @r'   test_issue3830_no_subtokrw   q   s     	F g';<tLWUEegu77F
W6==(((
786==(((r*   c                    ^ SS0n [         R                  " S[        0SS9S   n[        [	        5       U40 U D6mTR                  S5        STR                  ;  d   eTR                  U4S j5        STR                  ;   d   eg)	zATest that the parser does have subtok label if learn_tokens=True.ro   Tr.   r/   r   rp   c                     > [        T 5      /$ r$   r6   r8   s   r'   r(   ,test_issue3830_with_subtok.<locals>.<lambda>   r;   r*   Nrs   ru   s     @r'   test_issue3830_with_subtokr{      s     	F g';<tLWUEegu77F
W6==(((
78v}}$$$r*   i$  zNot fixed yet)reasonc                 ~    [        U R                  / SQS9nSUS   l        U " U5      nUS   R                  S:X  d   eg )Nr=   rB   Fr   )r   r,   rk   )r9   rS   s     r'   test_partial_annotationr~      sD     fll"6
7C CF +Cq65(((r*   c                     / SQn/ SQn/ SQn[        XX#S9nU H$  nUR                  S:w  a  M   UR                  5       e   g )N)rR   dozn'thaveother
assistance)rE   rE   rE   rE   r   rE   )r   auxnegr   amodr   ri   r   )r   rh   text)rl   rC   r   r   rS   ts         r'   test_parser_rootr      s@    =EE:D
h5
<Cuuz!166!z r*   z=The step_through API was removed (but should be brought back)rC   Helloc                     [        XS/S/S9n[        U5      S:X  d   eUR                  U5       n S S S 5        US   R                  S:w  d   eg ! , (       d  f       N$= f)Nr   r   ri   r   )r   rj   step_throughrh   )rl   	en_parserrC   rS   _s        r'   #test_parser_parse_one_word_sentencer      s[    
 hA3fX
>Cs8q==				$ 
%q6::?? 
%	$s   A
Ac                 6   / SQn/ SQn[        XS9n[        XU5        US   R                  R                  S:X  d   eUS   R                  R                  S:X  d   eUS   R                  R                  S:X  d   eUS   R                  R                  S:X  d   eg )N)Iatethepizzawith	anchoviesre   )L-nsubjSzL-detrB   r   r   r   rE   )r   r   headrR   )rl   r   rC   
transitionrS   s        r'   test_parser_initialr      s     CE*J
h
$Cij9q6;;==Aq6;;==Aq6;;==Aq6;;==Ar*   c                 h   / SQn/ SQnS/[        U5      -  n[        XX4S9n[        [        US   R                  5      5      S:X  d   e[        [        US   R                  5      5      S:X  d   e[        [        US   R
                  5      5      S:X  d   e[        [        US   R                  5      5      S:X  d   e[        [        US   R                  5      5      S	:X  d   e[        [        US   R
                  5      5      S:X  d   e[        [        US   R                  5      5      S
:X  d   eg )N)Thefourwheelsonr   busturnedquickly)r   r      r   r   rE   r   r   rh   ri   r   r   rE   r   r   r   )rj   r   listleftsrightschildrensubtree)rl   r   rC   r   r   rS   s         r'   test_parser_parse_subtreesr      s   NE$E7SZD
h5
<CtCFLL!"a'''tCFMM"#q(((tCFOO$%***tCFLL!"a'''tCFMM"#q(((tCFOO$%***tCFNN#$)))r*   c                    / SQn/ SQn/ SQn/ SQn[        XX2US9nUR                  5        nUR                   H  nUR                  USUR                  0S9  M!     S S S 5        US   R
                  S	:X  d   eUS
   R
                  S:X  d   eUS   R
                  S:X  d   eUS   R
                  S:X  d   eg ! , (       d  f       Nc= f)N)Aphraser   anotherr   occurs)r   r   r   r   r   r   )detr   prepr   pobjr   )DETNOUNADPr   r   VERB)rC   r   r   poslemma)attrsr   zA phraser   r   r   zanother phraserE   r   )r   
retokenizenoun_chunksmergelemma_r   )rl   rC   r   r   r   rS   retokenizernps           r'   test_parser_merge_ppr      s    BEE:D
7C
h$
EC		[//Bb"))(<= " 
 q6;;*$$$q6;;&   q6;;****q6;;(""" 
	s   0B99
Cc                 
   / SQn/ SQn[        XS9n[        XU5        US   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   e/ S	Qn[        XS9n[        XU5        US   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eUS   R                  R
                  S:X  d   eg )
N)r>   r?   r@   rA   e)R-nsubjDr   r   r   zR-ROOTrB   r   r   r   r   rE   )r   r   r   r   r   r   r   )r   r   n_leftsn_rights	left_edgerR   
right_edger   )rl   r   rC   r   tokenss        r'   $test_parser_arc_eager_finalize_stater      s    &EFJ'Fi<!9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q    MJ'Fi<!9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   !9!!!!9"""!9  A%%%!9!!Q&&&!9>>q   r*   c                 *   / SQn/ SQn/ SQn[        XX2S9n[        [        U5      5       H7  nUS:X  d  US:X  a  XE   R                  SL d   eM$  XE   R                  SL a  M7   e   UR                   H  nU H  nUR
                  U;   a  M   e   M      g )	N)&EinSatzre   u	   AußerdemistZimmerdavonu
   überzeugtr_   dassauchzepige-
netischeMechanismeneineRollespielenr_   alsou	   Vorgänger_   dier   sichdarauf	auswirkenr_   welcheGene	abgelesenwerdenundr   r   nichtre   r   )&r   r   r      r   r      r   r         r      r   r      r   r   r      r   r         r   r   r   r         r      r   r2   r   r   r   $   )&nkr   r   mor   sboppdr   cpr   r    r   r   r   oarer   r   appr   r   r   r   r   rcr   r   r   ocr   cdr   r   ngr   r   )rC   r   r   r   rE   TF)r   rO   rj   rk   sentsr   )rl   rC   r   r   rS   rR   senttokens           r'   test_parser_set_sent_startsr  %  s     VE ZE D
h$
<C3u:6Q!V6''4///6''5000	 
 		E::%%%  r*   c                 ~    SSSS.nS[         0n[        R                  " USS9S   n[        X40 UD6  [        X5        g )NFr   d   )ro   min_action_frequpdate_with_oracle_cut_sizer.   Tr/   )r   r   rK   r
   )rl   rv   rL   r.   s       r'   test_parser_constructorr  6  sK    '*F
 (
)CS409EX//X%r*   	pipe_namer9   beam_parserc                   ^ [        5       nUR                  U 5      n/ m[         Hi  u  p4TR                  [        R
                  " UR                  U5      U5      5        UR                  S/ 5       H  nUc  M  UR                  U5        M     Mk     UR                  U4S jS9n[        S5       H  n0 nUR                  TXhS9  M     WU    S:  d   eSn	U" U	5      n
U
S   R                  S	:X  d   eU
S
   R                  S:X  d   eU
S   R                  R                  S:X  d   eU
S
   R                  R                  S:X  d   eg )Nr   c                     > T $ r$   r%   )train_exampless   r'   r(   &test_incomplete_data.<locals>.<lambda>M  s    Nr*   )get_examples   rF   -C6?I like securities.r   r   r   r   r   )r	   add_pipePARTIAL_DATAappendr   rP   make_docgetrM   rN   rO   rQ   dep_r   rR   )r  nlpr9   r   annotationsrh   	optimizerrR   rH   	test_textrS   r  s              @r'   test_incomplete_datar  B  s3    )C\\)$FN)g//T0BKPQ??62.C  % / *
 ,BCI3Z

>y
@  )v%%% %I
i.Cq6;;'!!!q6;;&   q6;;==Aq6;;==Ar*   c                 j   [        5       nUR                  U 5      n/ n[         Hd  u  pEUR                  [        R
                  " UR                  U5      U5      5        UR                  S/ 5       H  nUR                  U5        M     Mf     UR                  5       n[        S5       H  n0 n	UR                  X7U	S9  M     W	U    S:  d   eSn
U" U
5      nUS   R                  S:X  d   eUS   R                  S	:X  d   eUS
   R                  S:X  d   eUS   R                  R                  S:X  d   eUS   R                  R                  S:X  d   eUS
   R                  R                  S:X  d   e[        5        nUR!                  U5        ["        R$                  " U5      nU" U
5      nUS   R                  S:X  d   eUS   R                  S	:X  d   eUS
   R                  S:X  d   eUS   R                  R                  S:X  d   eUS   R                  R                  S:X  d   eUS
   R                  R                  S:X  d   e S S S 5        / SQnUR'                  U5       Vs/ s H  oR)                  [*        /5      PM     nnUR'                  U5       Vs/ s H  oR)                  [*        /5      PM     nnU Vs/ s H
  oA" U5      PM     sn Vs/ s H  oR)                  [*        /5      PM     nn[-        UU5        [-        UU5        g ! , (       d  f       N= fs  snf s  snf s  snf s  snf )Nr      rF   r  r  r   r   r   r   rE   r   r   )zJust a sentence.z$Then one more sentence about London.zHere is another one.r!   )r	   r  
TRAIN_DATAr  r   rP   r  r  rM   rN   rO   rQ   r  r   rR   r   to_diskr   load_model_from_pathpipeto_arrayr   r   )r  r  r9   r  r   r  rh   r  rR   rH   r  rS   tmp_dirnlp2doc2textsbatch_deps_1batch_deps_2no_batch_depss                      r'   test_overfitting_IOr+  \  s    )C\\)$FN'g//T0BKPQ??62.CS! / (  I3Z

>
@  )v%%%$I
i.Cq6;;'!!!q6;;&   q6;;'!!!q6;;==Aq6;;==Aq6;;==A	7G((1IAw||w&&&Aw||v%%%Aw||w&&&Aw||~~"""Aw||~~"""Aw||~~""" 
E 4788E?C?CLL#'?LC3688E?C?CLL#'?LCKP4Q54SY54QR4QS\\3%(4QMR|,}-- 
$ DC4QRs%   ;CL'L!L& L+L0
Lparser_configzspacy.TransitionBasedParser.v1F@   T)z@architecturestok2vec
state_typeextra_state_tokensr3   maxout_pieces	use_upperzspacy.TransitionBasedParser.v2c                    SU0n[        5       nUR                  XS9n/ n[         Hd  u  pgUR                  [        R
                  " UR                  U5      U5      5        UR                  S/ 5       H  nUR                  U5        M     Mf     UR                  5       n	[        S5       H  n
0 nUR                  XYUS9  M     g )Nr.   rv   r   r   rF   )r	   r  r  r  r   rP   r  r  rM   rN   rO   rQ   )r  r,  pipe_configr  r9   r  r   r  rh   r  rR   rH   s               r'   test_parser_configsr6    s     M*K
)C\\)\8FN'g//T0BKPQ??62.CS! / (  I1X

>
@ r*   c                  B   Sn Sn[        5       nU US.nUR                  SUS9n/ n[         Hd  u  pgUR                  [        R
                  " UR                  U5      U5      5        UR                  S/ 5       H  nUR                  U5        M     Mf     UR                  5       n	[        S5       H  n
0 nUR                  XYUS9  M     S	nUR                  U5      nU/nUR                  U5      nUR                  U5      u  nn[        [        U5      5       H  nUR                   H-  nUS
   UU4   nS
[         -
  Us=::  a  S[         -   ::  a  M*   e   e   [        [        U5      5       H-  n
US
   UU
4   nS
[         -
  Us=::  a  S[         -   ::  a  M*   e   e   M     g )Nr   r  
beam_widthbeam_densityr	  r4  r   r<   rF   r  r   r   )r	   r  CONFLICTING_DATAr  r   rP   r  r  rM   rN   rO   rQ   predictscored_parsesrj   rt   eps)r9  r:  r  rv   r9   r  r   r  rh   r  rR   rH   r  rS   docsbeamshead_scoreslabel_scoresjlabellabel_score
head_scores                         r'   test_beam_parser_scoresrG    s   JL
)C $F \\-\7FN-g//T0BKPQ??62.CS! / .  I 2Y

>
@ 
 %I
,,y
!C5DNN4 E & 4 4U ;K3s8_]]E&q/1e*5Ks7k4QW44444 # s3xA$QA/Js7j3AG33333 !	 r*   c                     [        5       n SnSnUUS.nU R                  SUS9n/ n[         Hd  u  pgUR                  [        R
                  " U R                  U5      U5      5        UR                  S/ 5       H  nUR                  U5        M     Mf     U R                  5       n	[        S5       H  n
0 nU R                  XYUS9  M     WS   S:  d   eS	nU R                  U5      /nUR                  U5      nUR                  U5      u  nnUS
   nUS
   nUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   e[#        5        nU R%                  U5        [&        R(                  " U5      nUR                  U5      /nUR+                  S5      nUR                  U5      nUR                  U5      u  nnUS
   nUS
   nUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   eUS   [        R                  " S[         S9:X  d   e S S S 5        g ! , (       d  f       g = f) Nr   r  r8  r	  r4  r   r  rF   r  r   )r   r   g      ?)abs)r   r   g        )r   r   )r   r   )r   r   )r   r   )rE   r   )rE   r   )rE   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )rE   r   )rE   r   )rE   r   )r	   r  r  r  r   rP   r  r  rM   rN   rO   rQ   r<  r=  pytestapproxr>  r   r   r   r!  get_pipe)r  r9  r:  rv   r9   r  r   r  rh   r  rR   rH   r  r?  r@  rA  rB  r$  r%  docs2parser2beams2head_scores2label_scores2s                           r'   test_beam_overfitting_IOrR    s   
)CJL $F \\-\7FN'g//T0BKPQ??62.CS! / (  I3Z

>
@  - 6)))$ILL#$DNN4 E & 4 4U ;Ka.K?L%s)DDDD$cs(CCCC%s)DDDD%s)DDDD$cs(CCCC%s)DDDD%s)DDDD$cs(CCCC%s)DDDDv&--"====v&--"====v&--"====v&--"====v&--"====v&--"====v&--"====v&--"====v&--"==== 
7G((1y)*--.'&-&;&;F&C#m#A%a(\*fmmCS.IIII[)V]]3C-HHHH\*fmmCS.IIII\*fmmCS.IIII[)V]]3C-HHHH\*fmmCS.IIII\*fmmCS.IIII[)V]]3C-HHHH\*fmmCS.IIIIF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBBF#v}}Sc'BBBB9 
s   KY,,
Y:):rJ  numpy.testingr   	thinc.apir   spacyr   r   spacy.attrsr   r   spacy.lang.enr	   spacy.pipeliner
   spacy.pipeline.dep_parserr   spacy.pipeline.tok2vecr   spacy.tokensr   spacy.trainingr   spacy.vocabr   r   r   r  r;  r  r>  fixturer,   r9   r7   markissuerm   rw   r{   xfailr~   r   skipparametrizer   r   r   r   r   r  r  r  r+  slowr6  rG  rR  r%   r*   r'   <module>re     sc    &    ! ! + : 8  "  : 	1*S	
 	$'D	

( 	$'D	
 	$'E	
 & 	$3	
 
 7 7  ,( 4
) 
) 4
) 
) 4
% 
% 4/*) + )" J   G9+. / J  *# J  F!F!R&"	& x&?@ A2 x&?@/. A/.f x&?@ =I^nv  OT  fh  {|  KO  
P<I^nv  OT  fh  {|  KO  
P	A A A#4LOCr*   