
    h:                     8   S SK r S SKrS SKr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  \R                  S 5       r\R                  S 5       r\R                  S	 5       rS
 rS rS rS r\R*                  R-                  S/ SQ5      S 5       r\R*                  R-                  S/ SQ5      S 5       rS r\R*                  R5                  S5      S 5       r\R*                  R9                  S5      S 5       r\R*                  R9                  S5      S 5       rg)    N)Mock)DependencyMatcher)DocToken   )clean_underscorec                 .    / SQn/ SQn/ SQn[        XX#S9$ )N)	Thequickbrownfoxjumpedoverthelazyr   )	   r   r      r   r      r      )	detamodr   nsubjROOTpreppobjr   r   wordsheadsdeps)r   )en_vocabr   r   r   s       e/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/matcher/test_dependency_matcher.pydocr"      s    TE'ERDxE==    c                    S nU R                  U5      nSSS0S.SSSSSS	.S
.SSSUS0S
./nSSS0S.SSSSS0S
.SSSSS0S
./nSSS0S.SSSSS0S
.SSSSS0S
./nSSS0S.SSSSS0S
./nSSS0S.SSSSS0S
./nX4XVU/$ )Nc                 ^    [        [        R                  " S5      R                  U 5      5      $ )Nzbrown|yellow)boolrecompilematch)texts    r!   is_brown_yellow!patterns.<locals>.is_brown_yellow   s!    BJJ/55d;<<r#   r   ORTHRIGHT_IDRIGHT_ATTRS>qr   r   r-   DEPLEFT_IDREL_OPr/   r0   rTr   fox1.r   >>r   )add_flag)r    r+   IS_BROWN_YELLOWpattern1pattern2pattern3pattern4pattern5s           r!   patternsrC      sG   = ''8O FE?;$+F;		
 +T2		
H" vx.@A"E?		
  "F+		
H" vx.@A"E?		
 "G,		
H" vx.@A"E?		
H vx.@A"E?		
H H==r#   c                     [        U 5      n[        5       n[        S[        U5      S-   5       HD  nUS:X  a  UR	                  SUS   /US9  M   UR	                  S[        U5      -   XS-
     /5        MF     U$ )N   r>   r   on_matchpattern)r   r   rangelenaddstr)r    rC   r"   matchermockis         r!   dependency_matcherrP   d   ss    )G6D1c(ma'(6KK
Xa[MDKAKK	CF*X!e_,=>	 ) Nr#   c                 >   [        U 5      S:X  d   eSU ;   d   eU R                  S5      S US   /4:X  d   eU " U5      n[        U5      S:X  d   eUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   / S	Q:X  d   eUS
   S   SS
/:X  d   eUS   S   SS
/:X  d   eUS   S   SS/:X  d   eUSS nU " U5      n[        U5      S:X  d   eUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   / S	Q:X  d   eUS
   S   SS
/:X  d   eUS   S   SS
/:X  d   eg )Nr   r@   r      r   rE   r   rE   r   r   r   r   r   r   r   r   r   r   )rJ   get)rP   r"   rC   matchesspans        r!   test_dependency_matcherrY   q   s   !"a'''++++!!*-$!1FFFF %Gw<11:a=I%%%1:a=I%%%1:a=I%%%1:a=QF"""1:a=QF"""1:a=QF"""q8D &Gw<11:a=I%%%1:a=I%%%1:a=I%%%1:a=QF"""1:a=QF"""r#   c                    [        U 5      n[        S[        U5      S-   5       H'  nUR                  S[	        U5      -   XS-
     /5        M)     U" U5      nUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   S	S/:X  d   eUS	   S   S	S/:X  d   eUS
   S   S	S/:X  d   e[
        R                  " U5      n[
        R                  " U5      n[        U5      [        U5      :X  d   eU" U5      nUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   / SQ:X  d   eUS   S   S	S/:X  d   eUS	   S   S	S/:X  d   eUS
   S   S	S/:X  d   eg )NrE   rH   r   rS   rT   r   rU   r   r   r   r   )r   rI   rJ   rK   rL   pickledumpsloads)r    rC   r"   rM   rO   rW   b	matcher_rs           r!   test_dependency_matcher_pickler`      s   )G1c(ma'(IA&a%(9: ) clG1:a=I%%%1:a=I%%%1:a=I%%%1:a=QF"""1:a=QF"""1:a=QF"""WAQIw<3y>)))nG1:a=I%%%1:a=I%%%1:a=I%%%1:a=QF"""1:a=QF"""1:a=QF"""r#   c                    SSS0S.SSSSSS.S	.SSS
SS0S	./n[        U 5      nUR                  SU/5        [        R                  " [        5         UR                  SU5        S S S 5        [        R                  " [        5         UR                  SUSS  /5        S S S 5        [        R                  " [        5         [
        R                  " U5      nUS   S	 UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nUS   S	 UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nUS   S	 UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nUS   S	 UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nUS   S	 UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nSUS   S'   UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nSUS   S'   UR                  SU/5        S S S 5        [        R                  " [        5         [
        R                  " U5      nSUS   S'   UR                  SU/5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNx= f! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNx= f! , (       d  f       GN6= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r-   r.   r1   r2   r   r   r3   r5   r8   r   FOUNDEDrE   r   r/   r0   r6   r7   z!!!BARFOO)	r   rK   pytestraises
ValueErrorcopydeepcopywarnsUserWarning)r    rH   rM   r?   s       r!   *test_dependency_matcher_pattern_validationrl      s   FE?;$+F;		
 "G,		
G   )GKK	G9%	z	"Iw' 
# 
z	"I}- 
# 
z	"==)QK
#Iz* 
# 
z	"==)QK
#Iz* 
# 
z	"==)QK&Iz* 
# 
z	"==)QK	"Iz* 
# 
z	"==)QK!Iz* 
#
 
z	"==) %HIz* 
#
 
z	"==)"'JIz* 
#
 
k	"==)"EIz* 
#	"K 
#	" 
#	" 
#	" 
#	" 
#	" 
#	" 
#	"
 
#	"
 
#	"
 
#	"sx   L=M 0M!0M3$0N60N0N)2N;.2O2O=
M
M!
M03
N
N
N&)
N8;
O

O
O,c                 H   SSS0S./nSSS0S./n[        U 5      n[        5       nUR                  SU/US9  UR                  SU/US9  U" U5      n[        U5      S:X  d   eUR	                  XAS	U5        [        U 5      nUR                  SU/5        U" U5      nXh:X  d   eg )
Nr   r-   r.   NOMATCHrH   rF   nomatch_patternrE   r   )r   r   rK   rJ   assert_called_once_with)	r    r"   rH   ro   rM   rN   rW   matcher2matches2s	            r!    test_dependency_matcher_callbackrs      s    fg->?G fi-@AO  )G6DKK	G9tK4KK!O#4tKDclGw<1  q': !*HLLWI&}Hr#   zop,num_matches))r:   r   ).*   );r   );*ru   c                    [        U / SQS-  / SQS/S-  S9nSnS H  nSS	U0S
.SUS0 S./n[        U 5      nUR                  SU/5        U" U5      nU[        U5      -  nU H  n	U	u  pUS:X  a  US   US   S-
  :X  d   eOAUS:X  a  US   US   S-   :X  d   eO)US:X  a  US   US   :  d   eOUS:X  a  US   US   :  d   eX;S      R                  X;S      R                  :X  a  M   e   M     XB:X  d   eg )N)ar^   cder   )
r   r   r   r   r   r   r   r   r   r   dep
   r   r   1r-   r.   2r5   Ar:   rE   rv   rt   rw   )r   r   rK   rJ   sent)r    opnum_matchesr"   match_countr*   rH   rM   rW   r)   match_id	token_idss               r!   &test_dependency_matcher_precedence_opsr      sN    '!+,Wr\	C K)fd^<rs2N
 $H-C'##,s7|#E"'HSy |y|a'7777s |y|a'7777t |il222t |il222|$))S1->-C-CCCC  *, %%%r#   zleft,right,op,num_matches)E)r   r   <rE   )r   r   r   r   )r   r   r   r   )r   r   r1   r   )r   r   r1   rE   )r   r   r1   r   )r   r   <<r   )r   r   r   r   )r   r   r   r   )r   r   r;   r   )r   r   r;   rE   )r   r   r;   r   )r   r   r:   rE   )r   r   r:   rE   )r   r   r:   r   )r   r   r:   r   )r   r   rv   r   )r   r   rv   r   )r   r   rv   r   )r   r   rv   r   )r   r   rt   r   )r   r   rt   r   )r   r   rt   rE   )r   r   rw   rE   )r   r   rw   r   )r   r   rw   rE   )r   r   rw   rE   )r   r   $+rE   )r   r   r   r   )r   r   r   r   )r   r   $-r   )r   r   r   rE   )r   r   r   r   )r   r   $++rE   )r   r   r   r   )r   r   r   r   )r   r   $--r   )r   r   r   rE   )r   r   r   r   )r   r   <+r   )r   r   r   r   )r   r   r   r   )r   r   r   rE   )r   r   <++rE   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   <-r   )r   r   r   r   )r   r   r   r   )r   r   r   rE   )r   r   <--r   )r   r   r   r   )r   r   r   rE   )r   r   >+r   )r   r   r   r   )r   r   r   r   )r   r   r   rE   )r   r   >++rE   )r   r   r   r   )r   r   r   r   )r   r   >-r   )r   r   r   r   )r   r   r   r   )r   r   r   rE   )r   r   >--r   )r   r   r   rE   )r   r   r   rE   )r   r   r   r   c                     UnX#:X  a  US-   nUSU0S.UUUSU0S./n[        U 5      nUR                  SU/5        U" U5      n	[        U	5      U:X  d   eg )Nr   LOWERr.   r5   rH   )r   rK   rJ   )
r    r"   leftrightr   r   right_idrH   rM   rW   s
             r!   test_dependency_matcher_opsr     sx    V H}3;7D/: #U+		
G  )GKK	G9%clGw<;&&&r#   c                     SSSS.S./n[        U 5      n[        R                  " [        5         UR	                  SU/5        S S S 5        g ! , (       d  f       g = f)Nr   r   +)r4   OPr.   rH   )r   re   rf   rg   rK   )r    r"   rH   rM   s       r!   $test_dependency_matcher_long_matchesr   z  sJ    V3-GHG  )G	z	"Iy) 
#	"	"s   A
Ar   c                    U " S5      nU H  nUS   Ul         SUl        M     [        R                  " SSS9  SUS   R                  l        S	S
SS00S./n[        U R                  5      nUR                  SU/5        U" U5      nSnU" XS  5      n[        [        U5      [        U5      5       H8  u  pUS   U	S   :X  d   e[        US   U	S   5       H  u  pXU-   :X  a  M   e   M:     g )Nz	a b c d er   ry   is_cF)defaultTr   rz   _r.   CrE   )headdep_r   set_extensionr   r   r   vocabrK   zipsorted)en_tokenizerr"   tokenrH   rM   doc_matchesoffsetspan_matches	doc_match
span_matchdoc_t_ispan_t_is               r!   &test_dependency_matcher_span_user_datar     s   
{
#CV

  
.CFHHM#~)>?G   2 23GKKgY#,KF3w<(L!$VK%8&:N!O	|z!},,,!$Yq\:a=!AG//// "B "Pr#   i/$  c                 t   U " S5      nUS   US   l         SSS0S.SSSS	0S
S./nSSS0S.SSSS0SS./n[        U R                  5      nUR                  SX#/5        U" U5      nU/ :X  d   e[        U R                  5      nUR                  SU/5        UR                  SU/5        U" U5      nU/ :X  d   eg )NzI like textrE   r   rootr-   liker.   r8   r*   r   r6   r/   r0   r7   fishr1   check)r   r   r   rK   )r   r"   r>   r?   rM   rW   s         r!   #test_dependency_matcher_order_issuer     s     }
%Ca&CFK VV,<="F+		
H VV,<="F+		
H   2 23G KK(-.clGb==   2 23GKK($KK($clGb==r#   c                 &   U " S5      nUS   US   l         SSS0S.SSSS	0S
S./n[        U R                  5      nUR                  SU/5        UR	                  S5        SSS0S.SSSS0S
S./nUR                  SU/5        U" U5      nU/ :X  d   eg )NzThe red bookr   rE   r   r-   bookr.   r8   redr1   r   r   flagblue)r   r   r   rK   remove)r   r"   r>   rM   r?   rW   s         r!   test_dependency_matcher_remover     s     ~
&Ca&CFK VV,<="E?		
H   2 23GKK($NN7 VV,<="F+		
H KK($clGb==r#   )rh   r[   r'   re   rN   r   spacy.matcherr   spacy.tokensr   r   doc.test_underscorer   fixturer"   rC   rP   rY   r`   rl   rs   markparametrizer   r   r   usefixturesr   issuer   r    r#   r!   <module>r      sG     	   + # 2 > > J> J>Z 	 	#.#4=+@. )+WX& Y&D FIT'UIT'(* +,0 -0* 4* *Z 4$ $r#   