
    i(e                     h   d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZmZ ddgZe j2                  d        Ze j2                   ej6                  d      d               Z ej:                  d      d        Ze j>                  jA                  d      e j>                  jC                  de      d               Z"e j>                  jA                  d      e j>                  jC                  de      d               Z#e j>                  jA                  d      e j>                  jC                  de      d               Z$e j>                  jA                  d      e j>                  jC                  de      d               Z%e j>                  jA                  d      e j>                  jC                  de      d               Z&e j>                  jC                  de      d        Z'e j>                  jC                  de      d        Z(e j>                  jC                  de      d        Z)e j>                  jC                  de      d         Z*e j>                  jC                  de      d!        Z+e j>                  jC                  de      d"        Z,e j>                  jC                  de      d#        Z-e j>                  jC                  de      d$        Z.e j>                  jC                  de      d%        Z/e j>                  jC                  de      d&        Z0e j>                  jC                  de      d'        Z1e j>                  jC                  de      d(        Z2e j>                  jC                  de      d)        Z3e j>                  jC                  de      d*        Z4e j>                  jC                  de      d+        Z5e j>                  jC                  de      d,        Z6e j>                  jC                  de      d-        Z7e j>                  jC                  de      d.        Z8e j>                  jC                  d/d0d1g      e j>                  jC                  de      d2               Z9e j>                  jC                  de      d3        Z:e j>                  jC                  de      d4        Z;e j>                  jC                  de      d5        Z<e j>                  jC                  de      d6        Z=e j>                  jC                  de      d7        Z>e j>                  jC                  de      d8        Z?e j>                  jC                  de      d9        Z@e j>                  jC                  de      d:        ZAe j>                  jC                  de      d;        ZBy)<    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                      t               S Nr        w/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/pipeline/test_entity_ruler.pynlpr      s
    :r   entity_ruler_patternsc            	      T    ddddddiddigddddigddd	d
dgdddddddddg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                 0    t        | ddd      g| _        | S )Nr      ORG)r   )r   ents)docs    r   add_ent_componentr7   "   s    S!Qe,-CHJr   i  entity_ruler_factoryc                    t               }t        |j                  g d      }d|d   _        |j	                  | d      }|j                  ddd	g       d
t        i}t        j                  |d      d
   }t        |j                  |      }|j                  j                  dd       |j                  d        ||      }|j                  j                  |g      d   }|j                  j                  |d       |j                  j                  |d       |j                  j                  |d       |j                  j                  |d      sJ y)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           	          t               }ddddddddg}|j                  | ddd	i
      }|j                  |       d}d}|j                  |gd      D ]8  }|t	        |j
                  D cg c]  }|j                  dkD  s| c}      z  }: |dk(  sJ t        t        t              rYd}|j                  |gd      D ]8  }|t	        |j
                  D cg c]  }|j                  dkD  s| c}      z  }: |dk(  sJ y y c c}w c c}w )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   s1    )C{+F'7?OPH LL%w/  E
 
x D
 Jxx!x, Gc#((E3cjj1n3EFF
G??/8,
88TFa80 	KC#chhIs#**q.sIJJJ	KQ	 - F Js   -DDD.Di  c                    t               }|j                  | d      }dddddddddg}|j                  |       d} ||      }t        |j                        d	k(  sJ t        |      }t        |j                        d	k(  sJ y )
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                     t               }|j                  | d      }ddddddidd	igd
ddddiddigd
dg}|j                  |        |d      }t        d |D              sJ y )Nr   rA   r4   r*   r   rC   r"   san	franciscosan-franciscor,   franzSan Francisco San Franc              3   :   K   | ]  }|j                   d k(    yw)rp   N)ent_id_).0ts     r   	<genexpr>z!test_issue8168.<locals>.<genexpr>   s     9qyyO+9s   )r   rL   rM   all)r8   r   rU   r0   r6   s        r   test_issue8168rx   }   s     )CLL-NLCEG, %(7K*@A!	
  %(7F*;<!	
H 
x 
&
'C9S9999r   i   c                 `   | j                  |dddi      }|j                  |       t        d |j                  j                  j                         D              }|dkD  sJ |j                  g        t        d |j                  j                  j                         D              }||k(  sJ y)	z/Test that patterns don't get added excessively.r   rF   Tr]   c              3   2   K   | ]  }t        |        y wr   rd   rt   mms     r   rv   z,test_entity_ruler_fix8216.<locals>.<genexpr>   s     KBBK   r   c              3   2   K   | ]  }t        |        y wr   r{   r|   s     r   rv   z,test_entity_ruler_fix8216.<locals>.<genexpr>   s     I"c"gIr~   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                    | j                  |d      }|j                  |       t        |      t        |      k(  sJ t        |j                        dk(  sJ d|v sJ d|v sJ | j	                  d       | j                  |d      }|j                  |        | d      }t        |j
                        dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d	   j                  dk(  sJ y )
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                    | j                  |d      }t        |      dk(  sJ t        |j                        dk(  sJ | j                  d       | j                  |d       | j                  dgk(  sJ t        j                  t              5   | d      }d d d        t        j                        dk(  sJ y # 1 sw Y   $xY w)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   	B99Cc                    | j                  |d      }t        |j                        dk(  sJ |j                  d |       t        |j                        dk(  sJ  | d      }|j                  d   j
                  dk(  sJ |j                  d	   j
                  d
k(  sJ | j                  d       dddii| j                  d   d   d<   | j                  |d      }t        |j                        dk(  sJ | j                          t        |j                        dk(  sJ  | d      }|j                  d   j
                  dk(  sJ |j                  d	   j
                  d
k(  sJ y )Nr   rA   r   c                      g S r   r   r   r   r   <lambda>z1test_entity_ruler_init_patterns.<locals>.<lambda>       R r   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                     | j                  |d      }|j                  |       t        |j                        dk(  sJ |j	                  d        t        |j                        dk(  sJ y))Test that initialization clears patterns.r   rA   r@   c                      g S r   r   r   r   r   r   z.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                    | j                  |d      }|j                  |       t        |j                        dk(  sJ  | d      }t        |j                        dk(  sJ |j                          t        |j                        dk(  sJ t        j                  t              5   | d      }ddd       t        |j                        dk(  sJ y# 1 sw Y   $xY w)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                 .   | j                  |d      }|j                  |       | j                  dd        | d      }t        |j                        dk(  sJ |j                  d   j                  dk(  sJ |j                  d	   j                  d
k(  sJ y )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                 p   | j                  |dddi      }|j                  |       | j                  dd        | d      }t        |j                        dk(  sJ |j                  d	   j                  d
k(  sJ |j                  d	   j
                  d
k(  sJ |j                  d   j                  dk(  sJ y )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                    | j                  |dddi      }|j                  |       | j                  dd        | d      }t        |j                        dk(  sJ |j                  d	   j                  d
k(  sJ |j                  d   j                  dk(  sJ t        |j                  d	         dk(  sJ t        |j                  d         dk(  sJ y )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                    | j                  |dddi      }|j                  |        | d      }t        |j                        dk(  sJ |j                  d   j                  dk(  sJ |j                  d   j
                  d	k(  sJ y )
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                 T   ddd}| j                  |d|      }|j                  |        | d      }t        |t              rd|j                  v sJ t        |j                        dk(  sJ |j                  d	   j                  d
k(  sJ |j                  d	   j                  dk(  sJ y )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                    t        | |      }t        |      t        |      k(  sJ t        |j                        dk(  sJ |j                         }t        |       }t        |      dk(  sJ t        |j                        dk(  sJ |j	                  |      }t        |      t        |      k(  sJ t        |j                        dk(  sJ t        |j
                        t        |j
                        k(  sJ |j
                  D ]  }||j
                  v rJ  t        |j                        t        |j                        k(  sJ y )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&   h/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                    t        | d|      }t        |      t        |      k(  sJ t        |j                        dk(  sJ |j                         }t        |       }t        |      dk(  sJ t        |j                        dk(  sJ |j                  J |j                  |      }t        |      t        |      k(  sJ t        |j                        dk(  sJ |j                  dk(  sJ y )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                    | j                  |d      }t        | d      }dddigd}dddigd}t        j                  t              5  |j                  |g       d d d        |j                  |g       t        j                  t              5  |j                  |g       d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)	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 
(	) 8$$o%678 8. .8 8s   
B,B8,B58Cc                     t        | |d      }t        |j                        t        g d      k(  sJ t        |j                        ddgk(  sJ y )NT)r0   r   )r   r!   r%   r)   r+   r/   )r   r   r   ent_idsr   s       r   test_entity_ruler_propertiesr   k  sH    htDE%,,6*Q#RRRR%-- T4L000r   c                     | j                  |d      }ddddddg}|j                  |        | d      }t        |j                        d	k(  sJ |j                  d
   j                  dk(  sJ y )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                     | j                  |d      }ddddiigdg}|j                  |        | d      }t        |j                        d	k(  sJ |j                  d
   j                  dk(  sJ y 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                     | j                  |d      }ddddiigdg}|j                  |        | d      }t        |j                        d	k(  sJ |j                  d
   j                  dk(  sJ y r   r   r   s        r   test_entity_ruler_fuzzyr     r   r   c                     t        j                  d      d        }| j                  |ddddii      }ddd	d
iigdg}|j                  |        | d      }t	        |j
                        dk(  sJ y )Ntest_fuzzy_compare_disabledc                      d S )Nc                      y)NFr   )xyzs      r   r   z\test_entity_ruler_fuzzy_disabled.<locals>.make_test_fuzzy_compare_disabled.<locals>.<lambda>  s    r   r   r   r   r    make_test_fuzzy_compare_disabledzJtest_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                    t        t        t              s|dk  ridg}ddddg}| j                  |d      }|j	                  |       | j                  |d	      D ]$  }|j                  D ]  }|j                  dk(  rJ  & y y )
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,,,-	- 1>r   c                 ^   | j                  |d      }|j                  |       t               5 }|j                  |dz         |j	                  |dz         t        j                  t              5  |j	                  |dz         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)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 	 61a,,-../]]:& 	6OOA 445	66 6	6 	66 6$   AB#1BB#B 	B##B,c                 ^   | j                  |d      }|j                  |       t               5 }|j                  |dz         |j	                  |dz         t        j                  t              5  |j	                  |dz         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rA   
test_rulernon_existing_dirr   r   s        r   test_entity_ruler_serialize_dirr     s    LL-NLCE	x 	 41a,&'L()]]:& 	4OOA 223	44 4	4 	44 4r   c                    | j                  |d      }ddddddd	ddd
dg}|j                  |        | d      }t        |j                        dk(  sJ t        |j                        dk(  sJ t        |t              rd|j                  v sJ |j                  d   j                  dk(  sJ |j                  d   j                  dk(  sJ t        |t              r|j                  d       n|j                  d        | d      }t        |j                        dk(  sJ t        |t              rd|j                  vsJ t        |j                        dk(  sJ y )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     sP   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                    | j                  |d      }dddddddddd	d
dg}|j                  |        | d      }t        |j                        dk(  sJ t	        |t
              r d|j                  v sJ d|j                  v sJ t        |j                        dk(  sJ t	        |t
              r|j                  d       n|j                  d        | d      }t        |j                        dk(  sJ t	        |t
              r d|j                  vsJ d|j                  vsJ t        |j                        dk(  sJ y )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    sB   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                    | j                  |d      }ddddddd	ddd
dg}|j                  |       t        |j                        dk(  sJ t	        j
                  t              5  |j                  d       d d d        t        |t              r4t	        j
                  t              5  |j                  d       d d d        y y # 1 sw Y   NxY w# 1 sw Y   y xY w)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+CCCc                    | j                  |d      }ddddddd	ddd
dg}|j                  |        | d      }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  d   j
                  dk(  sJ |j                  d   j                  dk(  sJ |j                  d   j
                  dk(  sJ |j                  d   j                  dk(  sJ t        |t              r|j                  d       n|j                  d        | d      }t        |j                        dk(  sJ t        |j                        dk(  sJ |j                  d   j
                  dk(  sJ |j                  d   j                  dk(  sJ t        |t              r|j                  d	       n|j                  d	        | d      }t        |j                        dk(  sJ t        |j                        dk(  sJ y )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                 T   | j                  |d      }ddddddd	dd
ddddddg}|j                  |        | d      }t        |j                        dk(  sJ |j                  d   j                  dk(  sJ |j                  d   j
                  dk(  sJ |j                  d   j                  dk(  sJ |j                  d   j
                  dk(  sJ |j                  d   j                  d
k(  sJ |j                  d   j
                  dk(  sJ t        |t              r4|j                  d       |j                  d	       |j                  d       n3|j                  d       |j                  d	       |j                  d        | d      }t        |j                        dk(  sJ y )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                    | j                  |d      }ddddddd	dd
dddg}|j                  |       t        |j                        dk(  sJ t	        |t
              r|j                  d       n|j                  d       t        |j                        dk(  sJ t	        |t
              r|j                  d	       n|j                  d	       t        |j                        dk(  sJ t	        |t
              r|j                  d       n|j                  d       t        |j                        dk(  sJ t        j                  t              5   | d      }t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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   #E==Fc                 
   | j                  |d      }dddg}|j                  |        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d   j                  dk(  sJ dd	d
dg}|j                  |        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d   j                  d	k(  sJ t        |t              r|j                  d
       n|j                  d
        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ |j
                  d   j                  dk(  sJ |j
                  d   j                  dk(  sJ |j                  |        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ ddd
dg}|j                  |        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ t        |t              r|j                  d
       n|j                  d
        || j                  d            }t        |j                        dk(  sJ t        |j
                        dk(  sJ y )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  sH   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   rx   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   