
    it                        d dl Z d dlmZ d dlmZ d dlmZmZmZ ddl	m
Z
 e j                  d        Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Ze j.                  j1                  dddddiiddiggidgfddddiiggidgfdddiiggdddiiddiggdddiiggdg dfddd iiggdd!d iiggd"d#gfg      d$        Ze j.                  j1                  d%d&d'g      d(        Zd) Ze j.                  j1                  d* ed+d,            d-        Ze j.                  j1                  d* ed+d.            d/        Ze j.                  j1                  d0d1d2g      e j.                  j1                  d%d&d'g      d3               Zd4 Z d5 Z!d6 Z"d7 Z#d8 Z$d9 Z%d: Z&e j.                  jO                  d;      d<        Z(d= Z)d> Z*d? Z+d@ Z,dA Z-dB Z.dC Z/dD Z0dE Z1dF Z2e j.                  j1                  dGdHdIdJgfdKdLgfdMdIgfdNdJgfdOdIdLgfdPdLdJgfg      dQ        Z3dR Z4dS Z5dT Z6dU Z7e j.                  j1                  dVdWdXigdIfdYdXigdIfdZdXigd[fd\dXigdIfd]dXigd^fd_dXigd`fdadXigdbfdcdXigddfdedXigdffdgdXigdhfdidXigdjfdkdXigdlfdmdXigdnfdodXigdnfdpdXigd[fdqdXigdrfdsdXigdtfg      du        Z8e j.                  js                  dv      dw        Z:dx Z;dy Z<dz Z=d{ Z>d| Z?d} Z@d~ ZAd ZBd ZCy)    N)Mock)Matcher)DocSpanToken   )clean_underscorec                     ddiggddiddiggddiggd}t        |       }|j                         D ]  \  }}|j                  ||        |S )NORTH
JavaScriptGoogleNowLOWERjavaJS	GoogleNowJava)r   itemsadd)en_vocabrulesmatcherkeypatternss        u/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/matcher/test_matcher_api.pyr   r   
   ss     &'()FE?;<F#$%E
 hG #XC"#N    c                 2   t        |       }ddig}t        |      dk(  sJ |j                  d|g       t        |      dk(  sJ |j                  d       d|vsJ |j                  d|g       d|v sJ |j	                  d      \  }}t        |d         sJ y )Nr   testr   Rule   )r   lenr   removeget)r   r   patternon_matchr   s        r   test_matcher_from_api_docsr'      s    hG Gw<1KK	"w<1NN6   KK	"W V,Hhx{r   c                     t        |       }t        |      dk(  sJ t        | g d      }t        j                  t
              5   ||       d d d        t        |j                        dk(  sJ y # 1 sw Y   $xY w)Nr   )Thisisquite	somethingwords)r   r"   r   pytestwarnsUserWarningents)r   r   docs      r   !test_matcher_empty_patterns_warnsr4   %   si    hGw<1
hB
CC	k	" sxx=A s   	A00A9c                    d}t        | |j                  d            }g d}|D cg c]  }d|ig	 }}d }t        |       }|j                  d||        ||       |j                  d	k7  sJ |d
   j
                  dk(  sJ y c c}w )Nu'   Wow 😀 This is really cool! 😂 😂 r-   )u   😀u   😃u   😂u   🤣u   😊u   😍r   c                 4   ||   \  }}}|j                   j                  |   dk(  r|xj                  dz  c_        ||| }|j                         5 }|j	                  |       d d d        ||   }	d|	j                   |	j
                     _        y # 1 sw Y   -xY w)NHAPPYg?happy emoji)vocabstrings	sentiment
retokenizemergetextnorm_)
r   r3   imatchesmatch_idstartendspanretokenizertokens
             r   label_sentimentz5test_matcher_from_usage_docs.<locals>.label_sentiment4   s    &qz%99X&'1MMS M5~^^ 	$d#	$E
(5EJJ%	$ 	$s   BBr8   r&   r   r!   r9   )r   splitr   r   r<   r@   )r   r?   r3   	pos_emojiemojipos_patternsrI   r   s           r   test_matcher_from_usage_docsrO   .   s    4D
hdjjo
.C@I3<=%fe_%=L=6 hGKKK@CL==Aq6<<=(((! >s   Bc                 h    t        |       dk(  sJ | j                  dddigg       d| v sJ d| vsJ y )N   TESTr   r   TEST2)r"   r   )r   s    r   test_matcher_len_containsrT   E   sI    w<1KK66*+,-W'!!!r   c                 l   t        | ddg      }ddigddiddigg}t        |       }t               }t        |       }|j                  d|       t	         ||            dk(  sJ t        |       }t               }|j                  d||       t	         ||            dk(  sJ |j
                  dk(  sJ y )	Nabr-   TEXTNEW_APIr   NEW_API_CALLBACKrJ   )r   r   r   r   r"   
call_count)r   r3   r   r   r&   s        r   test_matcher_add_new_apir\   L   s    
hsCj
)C#63-&#!?@HhGvHhGKK	8$ws|!!!hGvHKK"HxK@ws|!!!!###r   c                 P    t        | j                  g d      } | |      g k(  sJ y )N)Ilikecheese.r-   )r   r:   r   r3   s     r   test_matcher_no_matchrc   [   s%    
gmm#?
@C3<2r   c                     t        | j                  g d      } | |      | j                  j                  d   ddfgk(  sJ y )N)r   r*   goodr-   r   r   r!   r   r:   r;   rb   s     r   test_matcher_match_startrg   `   s>    
gmm#?
@C3<W]]2248!Q?@@@@r   c                     g d}t        | j                  |      } | |      |j                  j                  d   ddfgk(  sJ y )N)r^   r_   r   r-   r   r   rQ   rf   r   r.   r3   s      r   test_matcher_match_endrj   e   sB    !E
gmm5
)C3<SYY..v61=>>>>r   c                     g d}t        | j                  |      } | |      |j                  j                  d   ddfgk(  sJ y )N)r^   r_   r   r   bestr-   r   r      rf   ri   s      r   test_matcher_match_middlern   k   sB    2E
gmm5
)C3<SYY..{;QBCCCCr   c                     g d}t        | j                  |      } | |      |j                  j                  d   ddf|j                  j                  d   ddfgk(  sJ y )	N)r^   r_   r   r   andr   rl   r-   r   r   rm   r         rf   ri   s      r   test_matcher_match_multirs   q   sd    AE
gmm5
)C3<			;	'A.			6	"Aq)   r   zrules,match_locsr   r   FUZZYr   r   r   rm   r   r   r   rq   rr   r   r   )ru   rv      	   JavascriptsFUZZY5)ABrw   c           	          g d}t        | |      }t        |       }|j                         D ]  \  }}|j                  ||        | ||      D 	
cg c]
  \  }}	}
|	|
f c}
}	}k(  sJ y c c}
}	}w )N)	Theyr_   Goggler   rp   Javbutnot	JvvaScrptr-   )r   r   r   r   )r   r   
match_locsr.   r3   r   r   r   m_idrD   rE   s              r   test_matcher_match_fuzzyr   z   sv    F WE
he
$ChG #XC"#ws|LL+;45#,LLLLLs   A-
set_opINNOT_INc                     dd|ddgiiddggi}t        |       }|j                         D ]  \  }}|j                  ||d        g d	}t        | |
      }t	         ||            dk(  sJ y )Nr   rt   r   r   +r   OPLONGESTgreedyr   r_   r   Noor-   r!   )r   r   r   r   r"   )r   r   r   r   r   r   r.   r3   s           r   'test_matcher_match_fuzzy_set_op_longestr      s     	6He3D*E FcRSTE hG 5XC)45 .E
he
$Cws|!!!r   c                    ddddgidgdddggi}t        |       }|j                         D ]  \  }}|j                  ||d	
        g d}t        |j                  |      } ||      |j                  j
                  d   ddfgk(  sJ y )Nr   r   r   r   r   )rt   r   r   r   r   r   r   r-   rQ   rm   r   r   r   r   r:   r;   r   r   r   r   r   r.   r3   s          r   %test_matcher_match_fuzzy_set_multipler      s     (,h->&?H:V
	E hG 5XC)45 .E
gmm5
)C3<			;	'A.   r   fuzzynr!   
   c                     t        |       }|j                  ddd| diigg       t        dd      D cg c]
  }dd|z  z    }}t        | |      }t	         ||            |dz   k(  sJ y c c}w )Nr   r   rt   r   r   rV   r!   )r   r   ranger   r"   )r   r   r   rA   r.   r3   s         r   (test_matcher_match_fuzzyn_all_insertionsr      s    hGKK5)9;(GHIJK,1!RL9q[37"9E9
h
Cws|
*** :s   A,rr   c                     t        |       }|j                  ddd| diigg       g d}t        | |      }t         ||            |dz   k(  sJ y )Nr   r   rt   )r   	GoogleNuw
GoogleNuewGoogleNoweee
GiggleNuw3gouggle5Newr!   r   r   r   r"   )r   r   r   r.   r3   s        r   'test_matcher_match_fuzzyn_various_editsr      sa    hGKK5)9;(GHIJKE h
Cws|
***r   r   FIRSTr   c                 V   dd|ddgiiddggi}t        |       }|j                         D ]  \  }}|j                  |||        g d}t        |j                  |	      } ||d
      }	t        |	      dk(  sJ |dk(  r|	d   j                  dk(  sJ y |	d   j                  dk(  sJ y )Nr   FUZZY2r   r   r   r   r   r   r-   Tas_spansr!   r   r   z
Goggle Nooz	They like)r   r   r   r   r:   r"   r?   )
r   r   r   r   r   r   r   r.   r3   spanss
             r   (test_matcher_match_fuzzyn_set_op_longestr      s     	FXu4E+F GsSTUE hG 2XC&12 .E
gmm5
)CC$'Eu:??~Qx}},,,Qx}}+++r   c                    ddddgidgdddggi}t        |       }|j                         D ]  \  }}|j                  ||d	
        g d}t        |j                  |      } ||      |j                  j
                  d   ddfgk(  sJ y )Nr   r   r   r   r   )FUZZY1r   r   r   r   r   r   r-   rQ   rm   r   r   s          r   &test_matcher_match_fuzzyn_set_multipler      s     )-x.?'@XJW
	E hG 5XC)45 .E
gmm5
)C3<			;	'A.   r   c                 8   t        |       }t        |j                  g d      }|j                  dddii ddigg        ||      }t	        |      dk(  sJ |d   dd	 d
k(  sJ t        |       }|j                  dddii gg        ||      }|d   dd	 dk(  sJ y	)zBTest matcher allows empty token specs, meaning match on any token.rV   rW   cr-   A.Cr   rV   r   r!   r   Nr   rQ   zA.)r   r   r   r   r:   r   r"   )r   r   r3   rB   s       r   test_matcher_empty_dictr     s    hG
gmm?
3CKK&#VSM:;<clGw<11:ab>V###hGKKr*+,clG1:ab>V###r   c                     t        |       }t        |j                  g d      }ddidddddig}|j                  d	|g        ||      }t	        |      d
k(  sJ |d   d
d  dk(  sJ y )Nr   r-   r   rV   Tr   )IS_ALPHAr   r   r   r!   r   r   r   )r   r   r3   r%   rB   s        r   test_matcher_operator_shadowr     sx    hG
gmm?
3C}4s;fc]KGKKy!clGw<11:ab>V###r   c                    dj                         }dj                         }ddiddddddddig}ddiddiddiddiddig}| j                  d	|g       t        | j                  |
      }t	         | |            dk(  sJ t        | j                  |
      }t	         | |            dk(  sJ | j                  d	|g       t	         | |            dk(  sJ y )NHe said , " some words " ...z"He said , " some three words " ...r   "!Tr   IS_PUNCTr   Quoter-   r!   r   )rK   r   r   r:   r"   )r   words1words2pattern1pattern2r3   s         r   test_matcher_match_zeror   '  s    +113F1779F	%%		H 
	T	T	T	H KK($
gmm6
*Cws|!!!
gmm6
*Cws|!!!KK($ws|!!!r   c                     dj                         }ddidddddig}t        | j                        } | j                  d|g       t	        | j                  |      }t         | |            d	k(  sJ y )
Nr   r   r   *Fr   r   r-   r!   )rK   r   r:   r   r   r"   )r   r.   r%   r3   s       r   test_matcher_match_zero_plusr   @  sn    *002E}Se<vsmLGgmm$GKK'#
gmm5
)Cws|!!!r   c                 $   t        | j                        }|j                  dddigg       t        |j                  ddg      } ||      }t	        |      dk(  sJ ddidddg}| j                  d|g        | |      }t	        |      d	k(  sJ y )
NBasicPhilipper   Philipper-   r   r   r   KleenePhilipper!   )r   r:   r   r   r"   )r   controlr3   mr%   s        r   test_matcher_match_one_plusr   I  s    gmm$GKKFJ#7"8!9:
gmmJ
#;
<CAq6Q;;
#j%DEGKK 7),Aq6Q;;r   c                 (   t        |       }|j                  dddiddigg       t        | g d      } ||      D cg c]  \  }}}||| j                   }}}}t	        |      dk(  sJ |d	   dk(  sJ |d
   dk(  sJ |d   dk(  sJ yc c}}}w )z;Test that patterns with "any token" {} work with operators.rR   r   r   r   r   )r   helloworldr-   rQ   r   r!   z
test hellor   ztest hello worldN)r   r   r   r?   r"   )r   r   r3   _rD   rE   rB   s          r   test_matcher_any_token_operatorr   U  s    hGKK66*T3K89:
h8
9C8?EE}q%s5~""EGEw<11:1:%%%1:++++	 Fs    Br	   c                 &   t        |       }d }t        j                  d|d       ddidddiig}|j                  d|g       t	        | dd	g
      } ||      }t        |      dk(  sJ t	        | ddg
      } ||      }t        |      dk(  sJ y )Nc                     | j                   dv S )N)applebanana)r?   rH   s    r   <lambda>z2test_matcher_extension_attribute.<locals>.<lambda>d  s    /B!B r   is_fruitTgetterforcer   anr   HAVING_FRUITr   r-   r!   aardvarkr   r   r   set_extensionr   r   r"   )r   r   get_is_fruitr%   r3   rB   s         r    test_matcher_extension_attributer   a  s    hGBL	
<tD~j$%789GKK	*
htWo
.CclGw<1
htZ0
1CclGw<1r   c                     t        |       }ddddgiig}|j                  d|g       t        | g d      } ||      }t        |      dk(  sJ t        | d	g      } ||      }t        |      d
k(  sJ y )Nr   r   r   rV   A_OR_AN)r   rV   r   r-   r   r   r   r   r   r   r%   r3   rB   s        r   test_matcher_set_valuer   p  s    hGc{+,-GKK	G9%
h2
3CclGw<1
hzl
+CclGw<1r   c                     t        |       }dddgiddddig}|j                  d|g       t        | g d	
      } ||      }t        |      dk(  sJ t        | ddg
      } ||      }t        |      dk(  sJ y )Nr   rV   the?r   r   house	DET_HOUSE)InrV   r   r-   r   myr!   r   r   s        r   test_matcher_set_value_operatorr   |  s    hGU|,C867:KLGKKgY'
h2
3CclGw<1
htWo
.CclGw<1r   c                 `   t        |       }ddddgiig}|j                  d|g       t        | g d      }t         ||            dk(  sJ |d	   j	                  d       t         ||            dk(  sJ |d	   j	                  d
       t         ||            dk(  sJ |d	   j	                  d       t         ||            dk(  sJ |d	   j	                  d       t         ||            dk(  sJ t        |       }ddddgiig}|j                  d|g       t        | g d      }d|d	   _        t         ||            dk(  sJ t        |       }ddg iig}|j                  d|g       t        | g d      }d|d	   _        t         ||            d	k(  sJ t        j                  dg        t        |       }dddddgiiig}|j                  d|g       t        | g d      }dg|d	   j                  _	        ddg|d   j                  _	        t         ||            dk(  sJ y )NMORPH	IS_SUBSETFeat=Val
Feat2=Val2Mr   r-   rQ   r   Feat=Val|Feat2=Val2Feat=Val|Feat2=Val2|Feat3=Val3r   )Feat=Val|Feat2=Val2|Feat3=Val3|Feat4=Val4TAGr|   r}   r!   extdefaultr   CD
r   r   r   r"   	set_morphtag_r   r   r   r   r   r   r%   r3   s       r   "test_matcher_subset_value_operatorr    sG   hG+
L'ABCDGKKgY
ho
.Cws|!!!FZ ws|!!!F*+ws|!!!F56ws|!!!F@Aws|!!! hGc3Z012GKKgY
ho
.CCFKws|!!! hGR()*GKKgY
ho
.CCFKws|!!! 
r*hGekC:6789GKKgY
ho
.C5CFHHL:CFHHLws|!!!r   c                    t        |       }ddg diig}|j                  d|g       t        | g d      }t         ||            dk(  sJ |d   j	                  d       t         ||            dk(  sJ |d   j	                  d	       t         ||            d
k(  sJ |d   j	                  d       t         ||            d
k(  sJ t        |       }ddddgiig}|j                  d|g       t        | g d      }d|d   _        t         ||            dk(  sJ t        |       }dddgiig}|j                  d|g       t        | g d      }d|d   _        t         ||            d
k(  sJ t        |       }ddg iig}|j                  d|g       t        | g d      }d|d   _        t         ||            dk(  sJ t        j                  dg        t        |       }ddddgiiig}|j                  d|g       t        | g d      }ddg|d   j                  _	        t         ||            d
k(  sJ y )Nr   IS_SUPERSETr   r   z
Feat3=Val3r   r   r-   r   r   r   r!   r   r   r|   r}   rQ   r   r   r   r  r  s       r   $test_matcher_superset_value_operatorr	    se   hG-)QRSTGKKgY
ho
.Cws|!!!F*+ws|!!!F56ws|!!!F@Aws|!!! hGSz234GKKgY
ho
.CCFKws|!!! hGu-./GKKgY
ho
.CCFKws|!!! hGr*+,GKKgY
ho
.CCFKws|!!! 
r*hGemcU3456GKKgY
ho
.C:CFHHLws|!!!r   c                    t        |       }ddg diig}|j                  d|g       t        | g d      }t         ||            dk(  sJ |d   j	                  d       t         ||            d	k(  sJ |d   j	                  d
       t         ||            d	k(  sJ |d   j	                  d       t         ||            d	k(  sJ |d   j	                  d       t         ||            d	k(  sJ t        |       }ddddgiig}|j                  d|g       t        | g d      }d|d   _        t         ||            d	k(  sJ t        |       }ddg iig}|j                  d|g       t        | g d      }d|d   _        t         ||            dk(  sJ t        j                  dg        t        |       }dddddgiiig}|j                  d|g       t        | g d      }ddg|d   j                  _	        t         ||            d	k(  sJ t        |       }dddddgiiig}|j                  d|g       t        | g d      }dgdg|d   j                  _	        t         ||            dk(  sJ ddg|d   j                  _	        t         ||            d	k(  sJ t        |       }dddg iiig}|j                  d|g       t        | g d      }ddg|d   j                  _	        t         ||            dk(  sJ t        |       }dddddgiiig}|j                  d|g       t        | g d      }g |d   j                  _	        t         ||            dk(  sJ y )Nr   
INTERSECTSr  r   r   r-   r   r   r!   r   r   r   r   r|   r}   r   r   r   r   Abxr  r  s       r   %test_matcher_intersect_value_operatorr    s   hG,(PQRSGKKgY
ho
.Cws|!!!FZ ws|!!!F*+ws|!!!F56ws|!!!F@Aws|!!! hGsCj123GKKgY
ho
.CCFKws|!!! hGb)*+GKKgY
ho
.CCFKws|!!! 
r*hGelS#J789:GKKgY
ho
.C:CFHHLws|!!! hGelUCL9:;<GKKgY
ho
.CGS>CFHHLws|!!!3<CFHHLws|!!! hGelB/012GKKgY
ho
.C:CFHHLws|!!! hGelS#J789:GKKgY
ho
.CCFHHLws|!!!r   c                    t        |       }dddgiig}dddgiig}|j                  d|g       |j                  d|g       t        | g d      }t         ||            d	k(  sJ |d	   j	                  d       t         ||            d
k(  sJ |d	   j	                  d       t         ||            d
k(  sJ t        |       }ddddgiig}ddg diig}|j                  d|g       |j                  d|g       t        | g d      }t         ||            d	k(  sJ |d	   j	                  d       t         ||            dk(  sJ |d	   j	                  d       t         ||            d
k(  sJ y )Nr   r   zFeat1=Val1|Feat2=Val2zFeat2=Val2|Feat1=Val1r   Nr   r-   r   r   r  
Feat1=Val1r   )r  z
Feat1=Val3r   zFeat2=Val2,Val3|Feat1=Val1r!   zFeat1=Val1,Val3|Feat2=Val2)r   r   r   r"   r  )r   r   r   r   r3   s        r   test_matcher_morph_handlingr  $  s   hG4"9!:;<=H4"9!:;<=HKKhZ KKhZ 
ho
.Cws|!!!F,-ws|!!!F,-ws|!!! hG=<*FGHIH=*TUVWHKKhZ KKhZ 
ho
.Cws|!!!F12ws|!!!F12ws|!!!r   c                     t        |       }dddiig}|j                  d|g       t        | g d      } ||      }t        |      dk(  sJ t        | dg      } ||      }t        |      d	k(  sJ y )
Nr   REGEXz(?:a|an)r   r   rV   hir-   r   byer   r   r   s        r   test_matcher_regexr  B  s    hG+./0GKK	G9%
h/
0CclGw<1
hug
&CclGw<1r   c                     t        |       }dddddgiiig}|j                  d|g       t        | g d      } ||      }t        |      d	k(  sJ t        | d
g      } ||      }t        |      dk(  sJ y )Nr   r  r   (?:a)(?:an)r   r  r-   r   r  r   r   r   s        r   test_matcher_regex_set_inr  N  s    hG4(I)>"?@ABGKK	G9%
h/
0CclGw<1
hug
&CclGw<1r   c                     t        |       }dddddgiiig}|j                  d|g       t        | g d      } ||      }t        |      d	k(  sJ t        | d
g      } ||      }t        |      d	k(  sJ y )Nr   r  r   r  r  r   r  r-   r!   r  r   r   s        r   test_matcher_regex_set_not_inr  Z  s    hG8h	-B"CDEFGKK	G9%
h/
0CclGw<1
hug
&CclGw<1r   c                     t        |       }dddiig}|j                  d|g       t        | g d      } ||      }t        |      dk(  sJ t        | dg      } ||      }t        |      d	k(  sJ y )
NSHAPEr  z^[^x]+$	NON_ALPHA)99problemsr   r-   r   r  r   r   r   s        r   test_matcher_regex_shaper#  f  s    hG':./0GKKgY'
h5
6CclGw<1
hug
&CclGw<1r   zcmp, badz==rV   aaaz!=aaz>=z<=><c                    t        |       }d|diig}|j                  d|g       t        | g d      } ||      }t        |      t        |      t        |      z
  k(  sJ t        | |      } ||      }t        |      dk(  sJ y )NLENGTHr   LENGTH_COMPARE)rV   r%  r$  r-   r   r   )r   cmpbadr   r%   r3   rB   s          r   test_matcher_compare_lengthr-  r  s     hG3(#$GKK 7),
h0
1CclGw<3s8c#h....
hc
"CclGw<1r   c                 &   t        |       }d }t        j                  d|d       dddddgiiig}|j                  d	|g       t	        | g d
      } ||      }t        |      dk(  sJ t	        | dg      } ||      }t        |      dk(  sJ y )Nc                 J    dj                  t        | j                              S )N )joinreversedr?   r   s    r   r   z7test_matcher_extension_set_membership.<locals>.<lambda>  s    %**)=!> r   r2  Tr   r   r   eybihREVERSED)r  r  r   r-   r   r   r   r   )r   r   get_reversedr%   r3   rB   s         r   %test_matcher_extension_set_membershipr7    s    hG>L	
<tDj4%"789:GKK
WI&
h4
5CclGw<1
hzl
+CclGw<1r   c                    t        |       }t        j                  dg        dddddgiiig}|j                  d|g       t	        | g d	      }dd
g|d   j
                  _        t         ||            dk(  sJ dg|d   j
                  _        t         ||            dk(  sJ d|d   j
                  _        t         ||            dk(  sJ y )Nr   r   r   r   r|   r   r   r   r-   r}   r   r!   )r   r   r   r   r   r   r   r"   r  s       r   'test_matcher_extension_in_set_predicater9    s    hG	r*edS#J/012GKKgY
ho
.C :CFHHLws|!!!5CFHHLws|!!!CFHHLws|!!!r   c                     t        |       }ddiddig}t        j                  t              5  |j	                  d|       d d d        y # 1 sw Y   y xY w)NrX   r   r   rR   )r   r/   raises
ValueErrorr   )r   r   r%   s      r   test_matcher_basic_checkr=    sO    hG 67"34G	z	" %FG$% % %s   A		Ac                 D   t        | dg      }d|d   _        t        | dg      }d|d   _        d|d   _        |d   j	                  d       d|d   _        t        | dg      }t        |       }|j                  d	d
digg        ||       t        j                  t              5   ||       d d d        t        j                  t              5   ||       d d d         ||d        ||d       dD ]  }t        |       }|j                  d	|digg        ||       t        j                  t              5   ||       d d d        t        j                  t              5   ||       d d d         t        |       }|j                  d	ddigg        ||        ||        ||       t        |       }|j                  d	ddigg        ||        ||        ||       y # 1 sw Y   ?xY w# 1 sw Y   "xY w# 1 sw Y   xY w# 1 sw Y   %xY w)NTestr-   ROOTr   r   Xr   LEMMArR   DEPrV   T)allow_missing)r   POSrB  r   rX   )r   dep_r  pos_r  lemma_r   r   r/   r;  r<  )r   doc1doc2doc3r   attrs         r   test_attr_pipeline_checksrM    s   xx(DDGLxx(DDGLDGLGj!DGNxx(DhGKK5#,()DM	z	" 	z	"  D%D%' (#FtSk]O,]]:& 	DM	]]:& 	DM	 	 hGKK63-)*DMDMDMhGKK63-)*DMDMDM5  	 		 	s0   )	G/	G<?	H	)	H/G9<H	H	H	zpattern,textr   TIS_ASCIIIS_DIGIT1IS_LOWERIS_UPPERr|   IS_TITLEAaaar   ra   IS_SPACE

IS_BRACKET[IS_QUOTEr   IS_LEFT_PUNCTz``IS_RIGHT_PUNCTz''IS_STOPr   SPACYLIKE_NUMLIKE_URLzhttp://example.com
LIKE_EMAILzmail@example.comc                     t        |       }t        | |j                  d            }|j                  d|g       t	        |      dk(  sJ  ||      }t	        |      dk(  sJ y )Nr6   r-   r    r!   )r   r   rK   r   r"   )r   r%   r?   r   r3   rB   s         r   $test_matcher_schema_token_attributesrb    s_    . hG
hdjjo
.CKK	"w<1clGw<1r   zignore:\[W036c                     t        |       }t        j                  t              5  |j	                  dddiggg        ddd        |t        | dg             y# 1 sw Y   xY w)z0Test that on_match can only be None or callable.rR   rX   r   rJ   Nr-   )r   r/   r;  r<  r   r   )r   r   s     r   test_matcher_valid_callbackrd    s]     hG	z	" ?Fvv./02>?C)*? ?s   AA$c                     t               }t        |       }ddig}|j                  d|g|       t        | g d      } ||      }|j	                  ||d|       y )Nr   r   r    rJ   r)   r*   rV   r   ra   r-   r   r   r   r   r   assert_called_once_withr   mockr   r%   r3   rB   s         r   test_matcher_callbackrk    s^    6DhG GKK	DK1
h>
?CclG  #q':r   c                     t               }t        |       }ddig}|j                  d|g|       t        | g d      } ||d      }|j	                  ||d	|       y )
Nr   r   r    rJ   rf  r-   T)with_alignmentsr   rg  ri  s         r   %test_matcher_callback_with_alignmentsrn    sa    6DhG GKK	DK1
h>
?Cc40G  #q':r   c                     d}t        | j                  |j                               }|d d }|dd  }t         | |            dk(  sJ t         | |            dk(  sJ t         | |            dk(  sJ y )N%JavaScript is good but Java is betterr-   rQ   rm   r   r!   )r   r:   rK   r"   )r   r?   r3   span_js	span_javas        r   test_matcher_spanrs    sz    2D
gmm4::<
0C"1gGABIws|!!!ww A%%%wy!"a'''r   c                 .   d}t        | j                  |j                               } | |d      }t        |      dk(  sJ t	        |d   t
              sJ |d   j                  dk(  sJ |d   j                  dk(  sJ t	        |d	   t
              sJ |d	   j                  d
k(  sJ |d	   j                  d
k(  sJ  | |d	d d      }t        |      d	k(  sJ t	        |d   t
              sJ |d   j                  d
k(  sJ |d   j                  d
k(  sJ y)zTest the new as_spans=True API.rp  r-   Tr   r   r   r   r   r!   r   N)r   r:   rK   r"   
isinstancer   r?   label_)r   r?   r3   rB   s       r   test_matcher_as_spansrw  "  s%   2D
gmm4::<
0CcD)Gw<1gaj$'''1:??l***1:$$$gaj$'''1:??f$$$1:&&&c!"g-Gw<1gaj$'''1:??f$$$1:&&&r   c                 *   t        | j                  ddg      }t        j                  t              5 }| j                  |g      D ]  } |j                  sJ dt        |j                  d   j                        v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r   r-   z
spaCy v3.0r   )	r   r:   r/   r0   DeprecationWarningpipeliststrmessage)r   r3   recordr   s       r   test_matcher_deprecatedr  6  s    
gmmGW#5
6C	(	) ;Vse$ 	A	{{{s6;;q>#9#9::::	; ; ;s   AB		Bc                     t        |       }ddig}|j                  d|g       t        | g d      } ||      }t        |      dk(  sJ d|v sJ |j	                  d       d|vsJ y )Nr   r   r    rf  r-   r   )r   r   r   r"   r#   r   s        r   !test_matcher_remove_zero_operatorr  ?  sw    hGc{mGKK	"
h>
?CclGw<1WNN6   r   c                     t        | ddgddg      }t        |       }|j                  dddd	gg       t         ||            d
k(  sJ y )NrV   rW   r|   r}   )r.   tagsrR   r   r   )r   r   r   )r   r   r   r"   )r   r3   r   s      r   test_matcher_no_zero_lengthr  K  sR    
hsCjSz
:ChGKK#S1234ws|!!!r   c                 T   t        |       }|j                  dddigg       t        | g d      }t        |ddd	      t        |d
dd	      g|_        t        | g d      }t        |dd
d	      g|_         ||      D cg c]  \  }}}||| j
                   }}}} ||      D cg c]  \  }}}||| j
                   }}}}t        |      dk(  sJ |d   dk(  sJ t        |      dk(  sJ t        |       }|j                  ddddgg       t        | g d      }	t        |	ddd	      g|	_         ||	      D cg c]  \  }}}|	|| j
                   }
}}}t        |
      dk(  sJ |
d   dk(  sJ |
d   dk(  sJ |
d   dk(  sJ yc c}}}w c c}}}w c c}}}w )z0Test that patterns with ent_iob works correctly.r    ENT_IOBr^   )r^   visitedNewYorkrp   
Californiar-   r   rm   GPE)labelrq   rr   )r^   r  r   friendAliciaPERSONr!   r   r  r   )r  r   )r^   r  r   r  AnnaMaria	Esperanza   rQ   r  zMaria Esperanzar  N)r   r   r   r   r2   r?   r"   )r   r   rI  rJ  r   rD   rE   matches1matches2r3   rB   s              r   test_matcher_ent_iob_keyr  R  s   hGKK9c*+,-xSTDdAq.T1au0MNDIxIJDdAq12DI:A$-HHE3U3$$HHH:A$-HHE3U3$$HHHx=AA;&   x=AhGKKc5678
VC S!Qh/0CH8?EE}q%s5~""EGEw<11:   1:****1:$$$! IH Fs   F.FF#c                 J   t        | g d      }t        |       }dddg}|j                  d|g        ||      D cg c]  \  }}}||| j                   }}}}t	        |      dk(  sJ t        |       }dddg}|j                  d|g        ||      D cg c]  \  }}}||| j                   }}}}t	        |      d	k(  sJ t        |       }dd
dg}|j                  d|g        ||      D cg c]  \  }}}||| j                   }	}}}t	        |	      dk(  sJ t        |       }dddg}|j                  d|g        ||      D cg c]  \  }}}||| j                   }
}}}t	        |
      d	k(  sJ y c c}}}w c c}}}w c c}}}w c c}}}w )N)
foobarr  r  r  r  r  r  r  r  r-   r  z{3}r   rR   r!   z{2,}rm   z{,2}ry   z{2,3})r   r   r   r?   r"   )r   r3   r   r%   r   rD   rE   r  r  matches3matches4s              r   test_matcher_min_max_operatorr  m  s   
TC hGU+,GKK	"9@FF5#E###FHFx=A hGV,-GKK	"9@FF5#E###FHFx=A hGV,-GKK	"9@FF5#E###FHFx=A hGW-.GKK	"9@FF5#E###FHFx=A- G G G Gs    F	F<FF)Dr/   rj  r   spacy.matcherr   spacy.tokensr   r   r   doc.test_underscorer	   fixturer   r'   r4   rO   rT   r\   rc   rg   rj   rn   rs   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   usefixturesr   r   r   r  r	  r  r  r  r  r  r#  r-  r7  r9  r=  rM  rb  filterwarningsrd  rk  rn  rs  rw  r  r  r  r  r   r   r   <module>r     s     ! ) ) 2 	 	)."$
A
?D  ((;<vuoNO H		
 7Wf$5678 H		
  '<!89:; &((;<vuoNO"Wf$5678
 %	
 - 89:;= 9:;< H	
/!DME!DM D(#34
" 5
", 5B<0+ 1+ 5A;/+ 0+  GY#78D(#34, 5 9,$,$$"2"		, +, -		'"T,"^@"F"<				 	U|	v	u	w	sDk	tUm
	
	"&%'T t
	s#t
	s#t
	s#t
	s#t
	s#t
	v&t
	s#t
	t$
	%t
	s#D
!	"D)T
"	#T*d
	e$D/	E"t
	s#t
	34
	!34#,-, ,-+ .+;;('(;	!"%6 r   