
    h(e                     h   S SK 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JrJrJr  S SKJr  S S	KJr  S S
KJrJr  SS/r\ R2                  S 5       r\ R2                  \R6                  " S5      S 5       5       r\R:                  " S5      S 5       r\ R>                  RA                  S5      \ R>                  RC                  S\5      S 5       5       r"\ R>                  RA                  S5      \ R>                  RC                  S\5      S 5       5       r#\ R>                  RA                  S5      \ R>                  RC                  S\5      S 5       5       r$\ R>                  RA                  S5      \ R>                  RC                  S\5      S 5       5       r%\ R>                  RA                  S5      \ R>                  RC                  S\5      S 5       5       r&\ R>                  RC                  S\5      S 5       r'\ R>                  RC                  S\5      S 5       r(\ R>                  RC                  S\5      S 5       r)\ R>                  RC                  S\5      S  5       r*\ R>                  RC                  S\5      S! 5       r+\ R>                  RC                  S\5      S" 5       r,\ R>                  RC                  S\5      S# 5       r-\ R>                  RC                  S\5      S$ 5       r.\ R>                  RC                  S\5      S% 5       r/\ R>                  RC                  S\5      S& 5       r0\ R>                  RC                  S\5      S' 5       r1\ R>                  RC                  S\5      S( 5       r2\ R>                  RC                  S\5      S) 5       r3\ R>                  RC                  S\5      S* 5       r4\ R>                  RC                  S\5      S+ 5       r5\ R>                  RC                  S\5      S, 5       r6\ R>                  RC                  S\5      S- 5       r7\ R>                  RC                  S\5      S. 5       r8\ R>                  RC                  S/S0S1/5      \ R>                  RC                  S\5      S2 5       5       r9\ R>                  RC                  S\5      S3 5       r:\ R>                  RC                  S\5      S4 5       r;\ R>                  RC                  S\5      S5 5       r<\ R>                  RC                  S\5      S6 5       r=\ R>                  RC                  S\5      S7 5       r>\ R>                  RC                  S\5      S8 5       r?\ R>                  RC                  S\5      S9 5       r@\ R>                  RC                  S\5      S: 5       rA\ R>                  RC                  S\5      S; 5       rBg)<    N)NumpyOpsget_current_ops)registry)MatchPatternError)EnglishLanguage)EntityRecognizerEntityRuler	SpanRulermerge_entities)DEFAULT_NER_MODEL)make_tempdir)DocSpanentity_rulerfuture_entity_rulerc                      [        5       $ Nr        `/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/pipeline/test_entity_ruler.pynlpr      s
    :r   entity_ruler_patternsc            	      T    SSS.SSS0SS0/S.SSS0/S.SS	S
S./S.SSSS.SSSS./$ )NHELLOhello worldlabelpatternBYELOWERbyeORTHCOMPLEXfoo*)r$   OPTECH_ORGApplea1r   r    id	Microsofta2r   r   r   r   patternsr0      sa     m4gu%57G$HI'8&9:%s)C(DE=DA r   add_entc                 *    [        U SSSS9/U l        U $ )Nr      ORG)r   )r   ents)docs    r   add_ent_componentr7   "   s    S!Qe,-CHJr   i  entity_ruler_factoryc                    [        5       n[        UR                  / SQS9nSUS   l        UR	                  U SS9nUR                  SSS	./5        S
[        0n[        R                  " USS9S
   n[        UR                  U5      nUR                  R                  SS5        UR                  S5        U" U5      nUR                  R                  U/5      S   nUR                  R                  US5        UR                  R                  US5        UR                  R                  US5        UR                  R                  US5      (       d   eg)z8Test case where preset entity crosses sentence boundary.)IliveinNewYork)wordsT   r   nameGPEzNew Yorkr   modelvalidate    r   OzB-GPEN)r   r   vocabis_sent_startadd_pipeadd_patternsr   r   resolver
   moves
add_action	add_label
init_batchapply_transitionis_valid)r8   r   r6   rulercfgrD   nerstates           r   test_issue3345rY   (   s     )C
ciiA
BCCFLL-NLCE	%J?@A%
&CS409E
399e
,CIIBMM%
*CII  #'*EIIuc*IIuc*IIuc*99eW----r   i  c           	      4   [        5       nSSSS.SSSS./nUR                  U SSS	0S
9nUR                  U5        SnSnUR                  U/SS9 H=  nU[	        UR
                   Vs/ s H  owR                  S:  d  M  UPM     sn5      -  nM?     US:X  d   e[        [        [        5      (       a]  SnUR                  U/SS9 H=  nU[	        UR
                   Vs/ s H  owR                  S:  d  M  UPM     sn5      -  nM?     US:X  d   eg g s  snf s  snf )NPERSONz	joe bidenz	joe-bidenr,   zbernie sanderszbernie-sandersr   phrase_matcher_attrr"   rB   configz
    The left is starting to take aim at Democratic front-runner Joe Biden.
    Sen. Bernie Sanders joined in her criticism: "There is no 'middle ground' when it comes to climate policy."
    r      	n_process   )
r   rL   rM   pipelenr5   ent_id
isinstancer   r   )r8   r   r0   rU   text
count_entsr6   ents           r   test_issue4849rj   A   s*    )C{+F'7?OPH LL%w/  E
 
x D
 Jxx!x,c#((E(3jj1n3(EFF
 -??/8,,
88TFa80C#chhIhs**q.shIJJJ 1Q	 - F Js   'D>DD3Di  c                    [        5       nUR                  U SS9nSSS.SSS.SSS./nUR                  U5        SnU" U5      n[        UR                  5      S	:X  d   e[        U5      n[        UR                  5      S	:X  d   eg )
Nr   rA   r4   zDigicon Incr   zRotan Mosle Inc'sz#Rotan Mosle Technology Partners Ltdz
        Digicon Inc said it has completed the previously-announced disposition
        of its computer systems division to an investment group led by
        Rotan Mosle Inc's Rotan Mosle Technology Partners Ltd affiliate.
        r3   )r   rL   rM   rd   r5   r   )r8   r   rU   r0   rg   r6   s         r   test_issue5918rl   `   s     )CLL-NLCEM2$78$IJH
 
x D
 d)Csxx=A 
Csxx=Ar   i  c                     [        5       nUR                  U SS9nSSS.SSS0SS	0/S
S.SSS0SS0/S
S./nUR                  U5        U" S5      n[        S U 5       5      (       d   eg )Nr   rA   r4   r*   r   rC   r"   san	franciscosan-franciscor,   franzSan Francisco San Franc              3   >   #    U  H  oR                   S :H  v   M     g7f)rp   N)ent_id_).0ts     r   	<genexpr>!test_issue8168.<locals>.<genexpr>   s     9SyyO+Ss   )r   rL   rM   all)r8   r   rU   r0   r6   s        r   test_issue8168ry   }   s     )CLL-NLCEG, %(7K*@A!	
  %(7F*;<!	
H 
x 
&
'C9S99999r   i   c                 \   U R                  USSS0S9nUR                  U5        [        S UR                  R                  R                  5        5       5      nUS:  d   eUR                  / 5        [        S UR                  R                  R                  5        5       5      nXT:X  d   eg)	z/Test that patterns don't get added excessively.r   rF   Tr]   c              3   8   #    U  H  n[        U5      v   M     g 7fr   rd   rt   mms     r   rv   ,test_entity_ruler_fix8216.<locals>.<genexpr>   s     K*JBB*J   r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   r|   r}   s     r   rv   r      s     I(H"c"gg(Hr   N)rL   rM   summatcher	_patternsvalues)r   r0   r8   rU   pattern_countafter_counts         r   test_entity_ruler_fix8216r      s     LL>:t:L  E 
x K%--*A*A*H*H*JKKM1	rI(?(?(F(F(HIIK'''r   c                    U R                  USS9nUR                  U5        [        U5      [        U5      :X  d   e[        UR                  5      S:X  d   eSU;   d   eSU;   d   eU R	                  S5        U R                  USS9nUR                  U5        U " S5      n[        UR
                  5      S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S	   R                  S:X  d   eg )
Nr   rA   r@   r   r!   hello world bye byerb   r   r_   )rL   rM   rd   labelsremove_piper5   label_r   r0   r8   rU   r6   s        r   test_entity_ruler_initr      s    LL-NLCE	x u:X&&&u||!!!eE>>OON#LL-NLCE	x 
#
$Csxx=A88A;(((88A;&&&r   c                    U R                  USS9n[        U5      S:X  d   e[        UR                  5      S:X  d   eU R                  S5        U R                  USS9  U R                  S/:X  d   e[
        R                  " [        5         U " S5      nS S S 5        [        WR                  5      S:X  d   eg ! , (       d  f       N*= f)Nr   rA   r   r   )	rL   rd   r   r   
pipe_namespytestwarnsUserWarningr5   )r   r8   rU   r6   s       r   #test_entity_ruler_no_patterns_warnsr      s    LL-NLCEu:??u||!!!OON#LL%NL;>>n----	k	"'( 
#sxx=A 
#	"s   	B88
Cc                    U R                  USS9n[        UR                  5      S:X  d   eUR                  S US9  [        UR                  5      S:X  d   eU " S5      nUR                  S   R
                  S:X  d   eUR                  S	   R
                  S
:X  d   eU R                  S5        SSS00U R                  S   S   S'   U R                  USS9n[        UR                  5      S:X  d   eU R                  5         [        UR                  5      S:X  d   eU " S5      nUR                  S   R
                  S:X  d   eUR                  S	   R
                  S
:X  d   eg )Nr   rA   r   c                      / $ r   r   r   r   r   <lambda>1test_entity_ruler_init_patterns.<locals>.<lambda>       Rr   r0   r@   r   r   r_   r!   r0   @miscr   
initialize
components)rL   rd   r   r   r5   r   r   r^   r   s        r   test_entity_ruler_init_patternsr      s^    LL-NLCEu||!!!	Z(3u||!!!
#
$C88A;(((88A;&&&OON# 	W56>CJJ|\*>: LL-NLCEu||!!!NNu||!!!
#
$C88A;(((88A;&&&r   c                     U R                  USS9nUR                  U5        [        UR                  5      S:X  d   eUR	                  S 5        [        UR                  5      S:X  d   eg))Test that initialization clears patterns.r   rA   r@   c                      / $ r   r   r   r   r   r   .test_entity_ruler_init_clear.<locals>.<lambda>   r   r   r   N)rL   rM   rd   r   r   r   r0   r8   rU   s       r   test_entity_ruler_init_clearr      sa     LL-NLCE	x u||!!!	Z u||!!!r   c                    U R                  USS9nUR                  U5        [        UR                  5      S:X  d   eU " S5      n[        UR                  5      S:X  d   eUR                  5         [        UR                  5      S:X  d   e[        R                  " [        5         U " S5      nSSS5        [        UR                  5      S:X  d   eg! , (       d  f       N*= f)r   r   rA   r@   r   r_   r   N)	rL   rM   rd   r   r5   clearr   r   r   r   s        r   test_entity_ruler_clearr      s     LL-NLCE	x u||!!!
m
Csxx=A	KKMu||!!!	k	"-  
#sxx=A 
#	"s   %	C
C c                 (   U R                  USS9nUR                  U5        U R                  SSS9  U " S5      n[        UR                  5      S:X  d   eUR                  S   R                  S:X  d   eUR                  S	   R                  S
:X  d   eg )Nr   rA   r1   beforeOH HELLO WORLD bye byerb   r   r4   r_   r!   rL   rM   rd   r5   r   r   s        r   test_entity_ruler_existingr      s    LL-NLCE	x LL>L2
&
'Csxx=A88A;&&&88A;&&&r   c                 l   U R                  USSS0S9nUR                  U5        U R                  SSS9  U " S5      n[        UR                  5      S:X  d   eUR                  S	   R                  S
:X  d   eUR                  S	   R
                  S
:X  d   eUR                  S   R                  S:X  d   eg )Nr   overwrite_entsTr]   r1   r   r   rb   r   r   r_   r!   )rL   rM   rd   r5   r   rg   r   s        r   $test_entity_ruler_existing_overwriter      s    LL>;KT:R  E 
x LL>L2
&
'Csxx=A88A;(((88A;w&&&88A;&&&r   c                    U R                  USSS0S9nUR                  U5        U R                  SSS9  U " S5      n[        UR                  5      S:X  d   eUR                  S	   R                  S
:X  d   eUR                  S   R                  S:X  d   e[        UR                  S	   5      S:X  d   e[        UR                  S   5      S:X  d   eg )Nr   r   Tr]   r1   r   zfoo foo bye byerb   r   r%   r_   r!   r   r   s        r   "test_entity_ruler_existing_complexr     s    LL>;KT:R  E 
x LL>L2

 Csxx=A88A;***88A;&&&sxx{q   sxx{q   r   c                    U R                  USSS0S9nUR                  U5        U " S5      n[        UR                  5      S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R
                  S	:X  d   eg )
Nr   r   Tr]   Apple is a technology companyr_   r   r)   r+   )rL   rM   rd   r5   r   rs   r   s        r   test_entity_ruler_entity_idr     s    LL>;KT:R  E 
x 
-
.Csxx=A88A;+++88A;$&&&r   c                 b   SSS.nU R                  USUS9nUR                  U5        U " S5      n[        U[        5      (       a  SUR                  ;   d   e[        UR                  5      S:X  d   eUR                  S	   R                  S
:X  d   eUR                  S	   R                  S:X  d   eg )NTz**)r   
ent_id_sepr   r]   r   zTECH_ORG**a1r_   r   r)   r+   )	rL   rM   rf   r   phrase_patternsrd   r5   r   rs   )r   r0   r8   r^   rU   r6   s         r    test_entity_ruler_cfg_ent_id_sepr   &  s     $D9FLL-N6LRE	x 
-
.C%%%!6!6666sxx=A88A;+++88A;$&&&r   c                    [        XS9n[        U5      [        U5      :X  d   e[        UR                  5      S:X  d   eUR                  5       n[        U 5      n[        U5      S:X  d   e[        UR                  5      S:X  d   eUR	                  U5      n[        U5      [        U5      :X  d   e[        UR                  5      S:X  d   e[        UR
                  5      [        UR
                  5      :X  d   eUR
                   H  nXeR
                  ;   a  M   e   [        UR                  5      [        UR                  5      :X  d   eg )Nr   r@   r   )r   rd   r   to_bytes
from_bytesr0   sorted)r   r0   r8   rU   ruler_bytes	new_rulerr    s          r   !test_entity_ruler_serialize_bytesr   3  s   /Eu:X&&&u||!!!.."KC Iy>Qy A%%%$$[1Iy>S]***y A%%%y!!"c%..&9999>>,,,,, ")""#vell';;;;r   c                    [        U SUS9n[        U5      [        U5      :X  d   e[        UR                  5      S:X  d   eUR                  5       n[        U 5      n[        U5      S:X  d   e[        UR                  5      S:X  d   eUR                  b   eUR                  U5      n[        U5      [        U5      :X  d   e[        UR                  5      S:X  d   eUR                  S:X  d   eg )Nr"   )r\   r0   r@   r   )r   rd   r   r   r\   r   )r   r0   r8   rU   r   r   s         r   5test_entity_ruler_serialize_phrase_matcher_attr_bytesr   E  s     8LEu:X&&&u||!!!.."KC Iy>Qy A%%%((000$$[1Iy>S]***y A%%%((G333r   c                    U R                  USS9n[        U SS9nSSS0/S.nSSS0/S.n[        R                  " [        5         UR                  U/5        S S S 5        UR                  U/5        [        R                  " [        5         UR                  U/5        S S S 5        g ! , (       d  f       NV= f! , (       d  f       g = f)	Nr   rA   TrE   r   r"   r   ASDF)rL   r   r   raises
ValueErrorrM   r   )r   r8   rU   validated_rulervalid_patterninvalid_patterns         r   test_entity_ruler_validater   W  s    LL-NLCE!#5O%GW3E2FGM 'fg5F4GHO 
z	"O,- 
#   -1 
(	)$$o%67 
*	) 
#	" 
*	)s   B(B9(
B69
Cc                     [        XSS9n[        UR                  5      [        / SQ5      :X  d   e[        UR                  5      SS/:X  d   eg )NT)r0   r   )r   r!   r%   r)   r+   r/   )r   r   r   ent_idsr   s       r   test_entity_ruler_propertiesr   k  sF    tDE%,,6*Q#RRRR%-- T4L000r   c                     U R                  USS9nSSS.SSS./nUR                  U5        U " S5      n[        UR                  5      S	:X  d   eUR                  S
   R                  S:X  d   eg )Nr   rA   FOOBARzfoo barr   BARBAZzbar bazzfoo bar bazr_   r   r   r   r8   rU   r0   r6   s        r   #test_entity_ruler_overlapping_spansr   r  sx    LL-NLCEy1y1H 
x 
m
Csxx=A88A;)))r   c                     U R                  USS9nSSSS00/S./nUR                  U5        U " S5      n[        UR                  5      S	:X  d   eUR                  S
   R                  S:X  d   eg Nr   rA   r   r"   FUZZYhellor   helloor_   r   r   r   s        r   test_entity_ruler_fuzzy_piper     x    LL-NLCE!'79K/L.MNOH	x 
h-Csxx=A88A;(((r   c                     U R                  USS9nSSSS00/S./nUR                  U5        U " S5      n[        UR                  5      S	:X  d   eUR                  S
   R                  S:X  d   eg r   r   r   s        r   test_entity_ruler_fuzzyr     r   r   c                     [         R                  " S5      S 5       nU R                  USSSS00S9nSSS	S
00/S./nUR                  U5        U " S5      n[	        UR
                  5      S:X  d   eg )Ntest_fuzzy_compare_disabledc                      S $ )Nc                     g)NFr   )xyzs      r   r   \test_entity_ruler_fuzzy_disabled.<locals>.make_test_fuzzy_compare_disabled.<locals>.<lambda>  s    ur   r   r   r   r    make_test_fuzzy_compare_disabledJtest_entity_ruler_fuzzy_disabled.<locals>.make_test_fuzzy_compare_disabled  s    $$r   r   matcher_fuzzy_comparer   r]   r   r"   r   r   r   r   r   )r   miscrL   rM   rd   r5   )r   r8   r   rU   r0   r6   s         r    test_entity_ruler_fuzzy_disabledr     s    ]]01% 2% LL''3P)QR  E
 "'79K/L.MNOH	x 
h-Csxx=Ar   ra   r_   rb   c                    [        [        [        5      (       d  US:  ah  S/nSSSS./nU R                  USS9nUR	                  U5        U R                  USS	9 H(  nUR                   H  nUR                  S:X  a  M   e   M*     g g )
Nrb   zI enjoy eating Pizza Hut pizza.FASTFOODz	Pizza Hut1234r,   r   rA   r`   )rf   r   r   rL   rM   rc   r5   rs   )r   ra   r8   textsr0   rU   r6   ri   s           r   !test_entity_ruler_multiprocessingr     s     /8,,	A23([OP1G8$88EQ8/Cxx{{f,,,   0 1>r   c                 n   U R                  USS9nUR                  U5        [        5        nUR                  US-  5        UR	                  US-  5        [
        R                  " [        5         UR	                  US-  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rA   ztest_ruler.jsonlznon_existing.jsonlrL   rM   r   to_disk	from_diskr   r   r   r   r0   r8   rU   ds        r   !test_entity_ruler_serialize_jsonlr     s    LL-NLCE	x 	1a,,-../]]:&OOA 445 ' 
 '& 
$   AB&/BB&
B#	B&&
B4c                 n   U R                  USS9nUR                  U5        [        5        nUR                  US-  5        UR	                  US-  5        [
        R                  " [        5         UR	                  US-  5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rA   
test_rulernon_existing_dirr   r   s        r   test_entity_ruler_serialize_dirr     s    LL-NLCE	x 	1a,&'L()]]:&OOA 223 ' 
 '& 
r   c                    U R                  USS9nSSSS.SSS	S.SS
S./nUR                  U5        U " S5      n[        UR                  5      S:X  d   e[        UR                  5      S:X  d   e[        U[        5      (       a  SUR                  ;   d   eUR                  S   R                  S:X  d   eUR                  S   R                  S:X  d   e[        U[        5      (       a  UR                  S5        OUR                  S5        U " S5      n[        UR                  5      S:X  d   e[        U[        5      (       a  SUR                  ;  d   e[        UR                  5      S:X  d   eg )Nr   rA   r[   Dinadinar,   r4   ACMEacmeACMr   Dina went to schoolr3   r_   PERSON||dinar   rb   )rL   rM   rd   r0   r5   rf   r   phrase_matcherr   rg   removeremove_by_idr   s        r   test_entity_ruler_remove_basicr    sY   LL-NLCEvV<F&9E*H
 
x 
#
$Cu~~!###sxx=A%%%!5!555588A;)))88A;v%%%%%%V6"
#
$Csxx=A%%%U%9%9999u~~!###r   c                    U R                  USS9nSSSS.SSSS.SS	S
S./nUR                  U5        U " S5      n[        UR                  5      S:X  d   e[	        U[
        5      (       a$  SUR                  ;   d   eSUR                  ;   d   e[        UR                  5      S:X  d   e[	        U[
        5      (       a  UR                  S5        OUR                  S5        U " S5      n[        UR                  5      S:X  d   e[	        U[
        5      (       a$  SUR                  ;  d   eSUR                  ;  d   e[        UR                  5      S:X  d   eg )Nr   rA   r[   r   r   r,   r4   DinaCorpr   r   zDina founded DinaCorp and ACME.r3   r  z	ORG||dinar_   )
rL   rM   rd   r0   rf   r   r  r5   r  r  r   s        r   2test_entity_ruler_remove_same_id_multiple_patternsr	    sK   LL-NLCEvV<Jf=F&9H
 
x 
/
0Cu~~!###%%%!5!5555e22222sxx=A%%%V6"
/
0Cu~~!###%%%U%9%9999%"6"6666sxx=Ar   c                    U R                  USS9nSSSS.SSS	S.SS
S./nUR                  U5        [        UR                  5      S:X  d   e[        R
                  " [        5         UR                  S5        S S S 5        [        U[        5      (       a5  [        R
                  " [        5         UR                  S5        S S S 5        g g ! , (       d  f       NY= f! , (       d  f       g = f)Nr   rA   r[   r   r   r,   r4   r   r   r   r   r3   	nepattern)rL   rM   rd   r0   r   r   r   r  rf   r   r  )r   r8   rU   r0   s       r   ,test_entity_ruler_remove_nonexisting_patternr     s    LL-NLCEvV<F&9E*H
 
x u~~!###	z	"[! 
#%##]]:&{+ '& $ 
#	" '&s   'C0C
C
C+c                 .   U R                  USS9nSSSS.SSS	S.SS
S./nUR                  U5        U " S5      n[        UR                  5      S:X  d   e[        UR                  5      S:X  d   eUR                  S   R
                  S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R
                  S:X  d   eUR                  S   R                  S:X  d   e[        U[        5      (       a  UR                  S5        OUR                  S5        U " S5      n[        UR                  5      S:X  d   e[        UR                  5      S:X  d   eUR                  S   R
                  S:X  d   eUR                  S   R                  S:X  d   e[        U[        5      (       a  UR                  S	5        OUR                  S	5        U " S5      n[        UR                  5      S:X  d   e[        UR                  5      S:X  d   eg )Nr   rA   r[   r   r   r,   r4   r   r   r   r   zDina founded her company ACME.r3   rb   r   r_   zDina founded her company ACME)rL   rM   rd   r0   r5   r   rg   rf   r   r  r  r   s        r   )test_entity_ruler_remove_several_patternsr    s   LL-NLCEvV<F&9E*H
 
x 
.
/Cu~~!###sxx=A88A;)))88A;v%%%88A;&&&88A;v%%%%%%V6"
-
.Cu~~!###sxx=A88A;&&&88A;v%%%%%%V6"
-
.Cu~~!###sxx=Ar   c                 h   U R                  USS9nSSSS.SSS	S.S
SSS.SSS./nUR                  U5        U " S5      n[        UR                  5      S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R
                  S:X  d   eUR                  S   R                  S:X  d   eUR                  S   R
                  S:X  d   eUR                  S   R                  S
:X  d   eUR                  S   R
                  S:X  d   e[        U[        5      (       a4  UR                  S5        UR                  S	5        UR                  S5        O3UR                  S5        UR                  S	5        UR                  S5        U " S5      n[        UR                  5      S:X  d   eg )Nr   rA   r[   r   r   r,   r4   r   r   DATEher birthdaybdayr   r   -Dina founded her company ACME on her birthdayr3   r   r_   rb   r  )
rL   rM   rd   r5   r   rg   rf   r   r  r  r   s        r   *test_entity_ruler_remove_patterns_in_a_rowr  3  s   LL-NLCEvV<F&9^6BE*	H 
x 
=
>Csxx=A88A;)))88A;v%%%88A;&&&88A;v%%%88A;'''88A;~---%%%VVV6"6"6"
#
$Csxx=Ar   c                 @   U R                  USS9nSSSS.SSS	S.S
SSS./nUR                  U5        [        UR                  5      S:X  d   e[	        U[
        5      (       a  UR                  S5        OUR                  S5        [        UR                  5      S:X  d   e[	        U[
        5      (       a  UR                  S	5        OUR                  S	5        [        UR                  5      S:X  d   e[	        U[
        5      (       a  UR                  S5        OUR                  S5        [        UR                  5      S:X  d   e[        R                  " [        5         U " S5      n[        UR                  5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   rA   r[   r   r   r,   r4   r   r   r  r  r  r3   rb   r_   r   r  )rL   rM   rd   r0   rf   r   r  r  r   r   r   r5   r   s        r   %test_entity_ruler_remove_all_patternsr  Q  sT   LL-NLCEvV<F&9^6BH
 
x u~~!###%%%V6"u~~!###%%%V6"u~~!###%%%V6"u~~!###	k	"AB388}!!! 
#	"	"s   !$F
Fc                 @   U R                  USS9nSSS./nUR                  U5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  S:X  d   eSS	S
S./nUR                  U5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  S	:X  d   e[        U[        5      (       a  UR                  S
5        OUR                  S
5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   eUR
                  S   R                  S:X  d   eUR
                  S   R                  S:X  d   eUR                  U5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   eSSS
S./nUR                  U5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   e[        U[        5      (       a  UR                  S
5        OUR                  S
5        U" U R                  S5      5      n[        UR                  5      S:X  d   e[        UR
                  5      S:X  d   eg )Nr   rA   r  z	last timer   z=I saw him last time we met, this time he brought some flowersr_   r   z	this timettimer,   rb   zanother timez[I saw him last time we met, this time he brought some flowers, another time some chocolate.r3   )rL   rM   make_docrd   r0   r5   r   rg   rf   r   r  r  )r   r8   rU   r0   r6   	patterns1	patterns2s          r    test_entity_ruler_remove_and_addr  o  sN   LL-NLCE [9:H	x 
TUC u~~!###sxx=A88A;'''88A;{***!kIJI	y!
TUC u~~!###sxx=A88A;'''88A;{***88A;'''88A;{***%%%W7#
TUC u~~!###sxx=A88A;'''88A;{***	y!
TUC u~~!###sxx=A!nGLMI	y!
i	
C
 u~~!###sxx=A%%%W7#
i	
C
 u~~!###sxx=Ar   )Cr   	thinc.apir   r   spacyr   spacy.errorsr   spacy.lang.enr   spacy.languager	   spacy.pipeliner
   r   r   r   spacy.pipeline.nerr   spacy.tests.utilr   spacy.tokensr   r   ENTITY_RULERSfixturer   r   r0   	componentr7   markissueparametrizerY   rj   rl   ry   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  r  r  r  r   r   r   <module>r,     s*    /  * ! # S S 0 ) "!67   	&' (  
I 
 4/?. @ .. 4/? @ : 4/? @ 6 4/?: @ :* 4/?
( @ 
( /?' @'  /?	 @	 /?' @'. /?" @" /? @ /?' @' /?
' @
' /?! @! /?' @' /?	' @	' /?< @<" /?4 @4" /?8 @8& /?1 @1 /?	* @	* /?) @) /?) @) /? @  q!f-/?- @ .- /?6 @6 /?4 @4 /?$ @$4 /? @4 /?, @,  /? @B /? @: /?" @": /?: @:r   