
    icf                        d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZmZmZ d dlmZ d dlmZ d	d
lmZ ddlmZ ej.                  d        Zej.                  d        Zej4                  j7                  d      d        Zej4                  j7                  d      d        Zej4                  j7                  d      d        Zej4                  j7                  d      d        Zej4                  j7                  d      d        Z ej4                  jC                  ddg      ej4                  j7                  d      d               Z"ej4                  jC                  ddg      ej4                  j7                  d      d               Z#ej4                  jC                  d d!d"d# e jH                  g d$      fg      ej4                  j7                  d      d%               Z%ej4                  jC                  d&d d  e&d'      d'fdd  e&d(      d(fd	 e&d)       e&d)       e&d*      z   d*fd+g      d,        Z'd- Z(d. Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.ej4                  jC                  d4g d5      d6        Z/d7 Z0d8 Z1d9 Z2d: Z3d; Z4d< Z5d= Z6d> Z7ej4                  jq                  d?      d@        Z9dA Z:dB Z;dC Z<dD Z=dE Z>dF Z?dG Z@dH ZAdI ZBdJ ZCdK ZDej4                  jC                  dLg dM      dN        ZEdO ZFdP ZGdQ ZHdR ZIdS ZJy)T    N)assert_array_equal)get_current_ops)LENGTHORTH)English)DocSpanToken)filter_spans)Vocab   )add_vecs_to_vocab   )clean_underscorec           	      *   d}g d}g d}g d} | |      }|D cg c]  }|j                    }}|D cg c]  }t        |j                         }}t        |j                  |D cg c]  }|j                    c}|||||      S c c}w c c}w c c}w )N:This is a sentence. This is another sentence. And a third.)r   r      r   r      r      r   r      r   r   r   )nsubjROOTdetattrpunctr   r   r   r   r   r   r   npadvmodr   )Or   zB-ENTI-ENTr   r   r   r   r   r   r   r   r   r   )wordsspacesheadsdepsentslemmas)textboolwhitespace_r   vocab)	en_tokenizerr%   r!   r"   r#   tokenstr$   r    s	            j/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/doc/test_span.pydocr-      s     HD:EAD%D $F$%aff%F%+12ad1==!2F2%&!qvv&  &2 's   BB&B
c                     d} | |      }t        |j                  |D cg c]  }|j                   c}      }|S c c}w )Nr   r   )r   r(   r%   r)   r%   r*   r+   r-   s        r,   doc_not_parsedr1   (   s:    GD$F
fll6":a166":
;CJ #;s   <
i  c                     d} t        t               t        | j                                     }d|d   _        |dd D ]/  }|j                  d      j                  dk(  rd|_        )d	|_        1 t        |j                        }|d   j                         }|d   j                         }t        |t               sJ t        |t               sJ y)
z)Test that Span.as_doc() doesn't segfault.z7The sky is blue . The man is pink . The dog is purple .r/   Tr   r   N.F)
r   r   listsplit
sent_startnborr%   sentsas_doc
isinstance)stringr-   wordr9   sent0sent1s         r,   test_issue1537r@   0   s     GF
egT&,,.1
2CCFAB $99R=$"DO#DO	$
 OE!HOOE!HOOEeS!!!eS!!!    iL  c                 T     | d      }|dd }|j                   |j                  k(  sJ y)z.Test that span.orth_ is identical to span.textzThe black cat purrs.r   r   N)orth_r%   r)   r-   spans      r,   test_issue1612rF   B   s0     -
.Cq8D::"""rA   i  c            	          g d} t        t               | dgt        |       z  dgt        |       z        }t        j                  t
              5  t        |dd j                         ddd       y# 1 sw Y   yxY w)zTest that Span.noun_chunks works correctly if no noun chunks iterator
    is available. To make this test future-proof, we're constructing a Doc
    with a new Vocab here and a parse tree to make sure the noun chunks run.
    )Thisisasentencer   depr   r!   r"   r   N)r   r   lenpytestraisesNotImplementedErrorr5   noun_chunks)r   r-   s     r,   test_issue3199rS   J   sg     ,E
egU1#E
*:%3u:AU
VC	*	+ #S1X!!"# # #s   A11A:i   c                     t               }  | d      } | d      } | d      }|dd }|dd }|dd }|d   }t        j                  t              5  |j	                  |      dk(  sJ 	 d d d        |j	                  |      dk(  sJ t        j                  t              5  |j	                  |      dk  sJ 	 d d d        y # 1 sw Y   YxY w# 1 sw Y   y xY w)NzTalk about being boring!zTalk of being boring!Letr   r                 ?)r   rO   warnsUserWarning
similarity)nlpr%   text_varyrE   span_2span_3tokens           r,   test_issue5152ra   V   s     )C)*D*+HE
A!9D!AYFa]FaDE	k	" -u%,,,-??6"c)))	k	" /  (3.../ /- -/ /s   C C C	Cic  c                 b     | d      }|d d }|j                   dk(  sJ |j                  dk(  sJ y )NzThis is a magnificent sentence.r    )text_with_wsr%   rD   s      r,   test_issue6755re   i   s<    
8
9Cr7D"""99??rA   z!sentence, start_idx,end_idx,label)Welcome to Mumbai, my friend      GPEi  c                 x    t               } ||       }|d d  j                  |||      }|j                  |k(  sJ y )Nlabel)r   	char_spanlabel_)rK   	start_idxend_idxrl   r[   r-   rE   s          r,   test_issue6815_1rq   q   sA     )C
h-Cq6Iwe<D;;%rA   z!sentence, start_idx,end_idx,kb_id)rf   rg   rh      c                 x    t               } ||       }|d d  j                  |||      }|j                  |k(  sJ y )Nkb_id)r   rm   ru   )rK   ro   rp   ru   r[   r-   rE   s          r,   test_issue6815_2rv   }   sA    
 )C
h-Cq6Iwe<D::rA   z"sentence, start_idx,end_idx,vectorrf   rg   rh   )g?g?g333333?c                     t               } ||       }|d d  j                  |||      }|j                  |k(  j                         sJ y )N)vector)r   rm   rx   all)rK   ro   rp   rx   r[   r-   rE   s          r,   test_issue6815_3rz      sJ     )C
h-Cq6Iwv>DKK6!&&(((rA   zi_sent,i,j,textz	This is azThis is anotherzAnd za third)r   r   r   Nc                     t        | j                        }||   j                  ||      }|s|rJ y |j                  |k(  sJ y N)r5   r9   rm   r%   )r-   i_sentijr%   r9   rE   s          r,   test_char_spanr      sE     OE=""1a(Dx4yyD   rA   c                 |   d}d}d}| j                  dd|||      }| dd  j                  dd	|||      }|j                  |j                  k(  sJ |j                  |j                  cxk(  r|k(  sJ  J |j                  |j                  cxk(  r|k(  sJ  J |j                  |j                  cxk(  r|k(  sJ  J y )
NLABELKB_IDSPAN_ID   -   )rl   ru   span_idr      (   )rm   r%   rn   kb_id_id_)r-   rl   ru   r   span1span2s         r,   test_char_span_attributesr      s    EEGMM"bUGMLEGb"EPE::###<<5<<0500000<<5<<050000099		,W,,,,,rA   c                     t        | j                        }|d   j                  dk(  sJ |d   j                  dk(  sJ t	        |      dk(  sJ t        d |D              t	        |       k(  sJ y )Nr   rr   r   c              3   2   K   | ]  }t        |        y wr|   )rN   ).0sents     r,   	<genexpr>z(test_spans_sent_spans.<locals>.<genexpr>   s     +Ts4y+s   )r5   r9   startendrN   sumr-   r9   s     r,   test_spans_sent_spansr      sh    OE8>>Q8<<1u:??+U++s3x777rA   c                     | dd }t        |      dk(  sJ |j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  j                  dk(  sJ y )Nr      z
a sentencerK   rI   )rN   r%   rootheadr-   rE   s     r,   test_spans_rootr      sa    q8Dt9>>99$$$99>>Z'''99>>$&&&rA   c                 P    | dd }t        |      dk(  sJ |j                  dk(  sJ y )Nr   r   zThis is a sentence)rN   r%   r   s     r,   test_spans_string_fnr      s0    q8Dt9>>99,,,,rA   c                     d}g d}dgt        |      z  } | |      }t        |j                  |D cg c]  }|j                   c}||      }|dd  j                  j                  dk(  sJ y c c}w )Nz through North and South Carolina)r   r   r   r   r   rL   rM   Carolina)rN   r   r(   r%   r   )r)   r%   r!   r"   r*   r+   r-   s          r,   test_spans_root2r      sl    -DE7SZD$F
fll6":a166":%d
SCrs8==+++ #;s   A.
c                 
   t        t        | j                              sJ | dd j                  j                  j
                  dk(  sJ | dd j                  j
                  dk(  sJ | dd j                  j                  j                  j
                  dk(  sJ | dt        |        j                  t        | j                        d   k(  sJ t        | dt        |        j                        t        | j                        k(  sJ t        j                  t              5  |dd j                   ddd       d	|d   _
        d	|d
   _
        |dd j                  |dd
 k(  sJ |dd j                  |d
d k(  sJ y# 1 sw Y   LxY w)zTest span.sent propertyNr   rI   zThis is a sentence.r      rH   r   Trr   r   r   
      )rN   r5   r9   r   r   r%   	left_edgerO   rP   
ValueErroris_sent_startr-   r1   s     r,   test_spans_span_sentr      sn   tCIIr7<<!!T)))r7<< 5555q8=='',,666q3s8!!T#))_Q%7777AC!''(DO;;;	z	"  r  '+N1#&*N1#!A##~a'::::"R %%);;;;   s   E99Fc                     t        t               t        dj                                     } d| d   _        d| d   _        d| d   _        dg| _        | j
                  d   }t        |j                        }t        |      dk(  sJ y )	Nz5This is a sentence . This is another sentence . Thirdr/   Tr   rr   r   )ENTITYr   	   r   )r   r   r5   r6   r   r#   r9   rN   )r-   entity	ent_sentss      r,   test_issue13769r      s    
JPPRSC  CFCF CG !CHXXa[FV\\"Iy>QrA   zstart,end,expected_sentence))r   r   This is)r   r   r   )r   r   r   )r   r   r   )r   r   zAnd a)r   r   zthird.)r   r   r   c                     d }|| j                   d<   | || j                  j                  |k(  sJ d | j                  d<   | || j                  | || k(  sJ y )Nc                 `    t        dt        |       d      D cg c]
  }| ||dz     c}S c c}w Nr   r   rangerN   r-   iis     r,   	user_hookz2test_spans_span_sent_user_hooks.<locals>.user_hook  .    +0CHa+@ARBa AAA   +r9   c                     | S r|    xs    r,   <lambda>z1test_spans_span_sent_user_hooks.<locals>.<lambda>  s    A rA   r   )
user_hooksr   r%   user_span_hooks)r-   r   r   expected_sentencer   s        r,   test_spans_span_sent_user_hooksr      sm    B (CNN7 uS>##'8888 #.CuS>#eC.000rA   c           	      P    | d      }t        |j                  |D cg c]  }|j                   c}g ddgdz        }|dd j                         }|j                  dk(  sJ |d	   d
k(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |dd j                         }|j                  dk(  sJ |d	   d
k(  sJ |d   dk(  sJ |d   dk(  sJ |dd j                         }|j                  dk(  sJ |d	   d
k(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ  | d      }t        |j                  |D cg c]  }|j                   c}g ddgt        |      z        }|dd j                         }t        |t        j                  g dg dg dg             yc c}w c c}w )z!Test span's lca matrix generationzthe lazy dog slept)r   r   r   r   rL   r   rM   Nr   )r   r   r   r   r   r   r   r3   )r   r   )r   r   r   )r   r   )r   r   zI like New York in Autumn)r   r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )	r   r(   r%   get_lca_matrixshaperN   r   numpyasarray)r)   r*   r+   r-   lcas        r,   test_spans_lca_matrixr     s   ./F
%&!qvv&Wq[	C bq'
 
 
"C99t9>>t9??t9??t9>>
ab'
 
 
"C99t9>>t9>>t9>>
ab'
 
 
"C99t9>>t9>>t9>>t9>> 56F
%&!qvv& Ws6{"	C a(
!
!
#CsEMM9i*KLMC '8 's   F
6F#
c                  H   t        t               g d      } | d d }| dd  }t        j                  t              5  |j                  |      dk(  sJ |j                  |       dk(  sJ |d d j                  | j                  d         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N)rJ   brJ   r   r/   r   rW   rV   r   rJ   )r   r   rO   rX   rY   rZ   r(   r-   r   r   s      r,   test_span_similarity_matchr   9  s    
eg1
2CGEGE	k	" ;&#---$+++Ray##CIIcN3s:::; ; ;s   ABB!c                 |   d} | |      }d|j                   |d   j                     _        d|j                   |d   j                     _        t        |j                   |D cg c]  }|j                   c}      }|dd j                  dk(  sJ |d	d j                  d
k(  sJ |dd j                  dk(  sJ yc c}w ):Test span.sentiment property's default averaging behaviourgood stuff bad stuff      @r          r   r/   Ng      ?r   g      r3   gUUUUUU?)r(   r%   	sentimentr   r0   s        r,   test_spans_default_sentimentr   C  s    !D$F-0FLL *-1FLL *
fll6":a166":
;Cr7'''rs8)))s8!1111 #;s   !B9
c                    d} | |      }d|j                   |d   j                     _        d|j                   |d   j                     _        t        |j                   |D cg c]  }|j                   c}      }d |j                  d<   |d	d j                  d
k(  sJ |dd	 j                  d
k(  sJ |d	d j                  d
k(  sJ y	c c}w )r   r   r   r   r   r   r/   c                      y)N      $@r   )rE   s    r,   r   z/test_spans_override_sentiment.<locals>.<lambda>V  s    rA   r   Nr   r   r3   )r(   r%   r   r   r   r0   s        r,   test_spans_override_sentimentr   O  s    !D$F-0FLL *-1FLL *
fll6":a166":
;C'8C$r7$$$rs8%%%s8%%%	 #;s   !C	
c                     d} | |      }|dd }|dd }t        |      t        |      k7  sJ |dd }t        |      t        |      k(  sJ y)zTest spans can be hashed.r   Nr   r   r   )hash)r)   r%   r*   r   r   span3s         r,   test_spans_are_hashabler   \  s^    !D$F2AJE1QKE;$u+%%%1QKE;$u+%%%rA   c                 8   | dd }| j                  |j                  |j                  d      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ | j                  |j                  |j                  dd      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ | j                  |j                  dz
  |j                  dd      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ | j                  |j                  dz   |j                  dd	      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ t	        j
                  t              5  | j                  |j                  dz   |j                  dd
      }d d d        | dd j                  |j                  dz
  |j                  dd      }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  dk(  sJ y # 1 sw Y   xY w)Nr   r   ri   rk   strict)rl   alignment_moder   contractexpandunkr   r   )rm   
start_charend_charrn   rO   rP   r   r   s      r,   test_spans_by_characterr   g  s   "IE MM%**ENN%MHEu/////>>U^^+++<<5   MM%..h  E u/////>>U^^+++<<5    MM1ennE*  E u/////>>U^^+++<<5    MM1ennE(  E u/////>>U^^+++<<5    
z	" 
q %..e  

 !H1ennE*  E u/////>>U^^+++<<5   
 
s   $-JJc                     | dd }|j                  t        t        g      }|j                  t	        |      dfk(  sJ |d   |d   j
                  k(  sJ |d   t	        |d         k(  sJ y )Nr   r   r   r   r   r   )to_arrayr   r   r   rN   orth)r-   rE   arrs      r,   test_span_to_arrayr     sm    q9D
--v
'C99TA&&&t9Q$$$t9DG$$$rA   c                    | dd }|j                         }|j                  |j                  j                         k(  sJ t        || j                        sJ || usJ |d   j
                  dk(  sJ t        |j                        dk(  sJ | dd j                         }t        |j                        dk(  sJ | dd j                         }t        |j                        dk(  sJ y )Nr   r   r   r   r   rr   )r:   r%   stripr;   	__class__idxrN   r#   )r-   rE   span_docs      r,   test_span_as_docr     s    q9D{{}H99++----h...3A;??a x}}""" 1Ry!Hx}}""" 1Qx Hx}}"""rA   r   c                    d}d}|| j                   |<   t        j                  dd       d| d   j                  _        | dd	 }|j                  d
      }|j                         }| j                   j                  |d      |u sJ |j                   j                  |d      |u sJ |j                   j                  |d      J t        t        |            D ]B  }|dk7  r||   j                  j                  du r$J ||   j                  j                  du rBJ  t        |D cg c]  }|j                  j                   c}      rJ yc c}w )z>Test that the user_data can be preserved (but not by default).my_infoiV  is_xF)defaultTr   r   r   )copy_user_dataNr   )
	user_datar
   set_extension_r   r:   getr   rN   any)r-   my_keymy_valuerE   span_doc_withspan_doc_withoutr~   r+   s           r,   test_span_as_doc_user_datar    sI    FH$CMM&	.CFHHMq9DKKtK4M{{}==VT*h666""&&vt4@@@%%))&$7???3}%& 36 #%%**e333 #%%**d222	3
 &67ACCHH788887s   &Ec                    t        | dddd      }|j                  dk(  sJ |j                  | j                  j                  d   k(  sJ |j
                  dk(  sJ |j                  | j                  j                  d   k(  sJ y )Nr   r   helloQ342)rl   ru   )r	   rn   rl   r(   stringsr   ru   r   s     r,   test_span_string_label_kb_idr    sz    Q7D;;'!!!::**73333;;&   ::**62222rA   c                    t        | dddd      }|j                  dk(  sJ |j                  | j                  j                  d   k(  sJ |j
                  dk(  sJ |j                  | j                  j                  d   k(  sJ y )Nr   r   r  r	  )rl   r   )r	   rn   rl   r(   r
  r   idr   s     r,   test_span_string_label_idr    sz    Q&9D;;'!!!::**7333388v77cii''////rA   c                 H    t        | dd      }d|_        d|_        d|_        y )Nr   r   rl   ru   r  )r	   rn   r   r   r   s     r,   test_span_attrs_writabler    s$    Q?DDKDKDHrA   c                    | j                   j                  d   ddf| j                   j                  d   ddf| j                   j                  d   ddfg| _        t        t	        | j                              dk(  sJ t	        | j
                        }t        |      dk(  sJ t        |d   j                        dk(  sJ |d   j                  d   j                  d	k(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ t        |d   j                        dk(  sJ |d   j                  d   j                  d
k(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ |d   j                  d   j                  dk(  sJ y )NPRODUCTr   r   r   r   rg   r   r   rH   anotherr   za third.)
r(   r
  r#   rN   r5   r9   r%   rn   r   r   )r-   	sentencess     r,   test_span_ents_propertyr    sp   			9	%q!,			9	%q!,			9	%r2.CH
 tCHH~!###SYYIy>Qy|  !Q&&&Q<Q$$...Q<Q&&)333Q<Q%%***Q<Q##q(((y|  !Q&&&Q<Q$$	111Q<Q&&)333Q<Q%%***Q<Q##q(((Q<Q$$
222Q<Q&&)333Q<Q%%+++Q<Q##r)))rA   c                    | dd | dd | dd | dd g}t        |      }t        |      dk(  sJ |d   j                  dk(  r|d   j                  dk(  sJ |d   j                  dk(  r|d   j                  dk(  sJ |d	   j                  dk(  r|d	   j                  dk(  sJ | dd | dd | d
d | dd | dd g}t        |      }t        |      d	k(  sJ t        |d         dk(  sJ t        |d         d
k(  sJ |d   j                  dk(  r|d   j                  dk(  sJ |d   j                  d
k(  r|d   j                  dk(  sJ | dd | d	d
 | d
d | dd | dd g}t        |      }t        |      d	k(  sJ t        |d         dk(  sJ t        |d         d
k(  sJ |d   j                  dk(  r|d   j                  dk(  sJ |d   j                  d
k(  r|d   j                  dk(  sJ y )Nr   r   r   r   r   r   r   r   r   rr   r   r   )r   rN   r   r   )r-   spansfiltereds      r,   test_filter_spansr    sH   1Xs1QxQq3r":6EE"Hx=AA;!hqkoo&:::A;!hqkoo&:::A;"x{"'<<<1Xs1QxQrC!Hc!Ah?EE"Hx=Ax{q   x{q   A;!hqkoo&:::A;!hqkoo&;;;1Xs1QxQrC!Hc!Ah?EE"Hx=Ax{q   x{q   A;!hqkoo&:::A;!hqkoo&;;;&;rA   c                 b   | dd | dd k(  sJ | dd | dd k7  sJ | dd |dd k7  sJ t        | dd       t        | dd       k(  sJ t        | dd       t        | dd       k7  sJ t        | dd       t        |dd       k7  sJ | dt        |        | t        |       t        |       dz    k7  sJ y )Nr   r   r   r   )r   rN   r   s     r,   test_span_eq_hashr    s    q8s1Qxq8s1Qxq8~a****Aa>T#a(^+++Aa>T#a(^+++Aa>T.1"56666 q3s8CHs3x!| <<<<rA   c                    d}d}| || }t        ||      D ]  }|||z
     | |   k(  rJ  t        j                  t              5  |d    d d d        t        j                  t              5  |d    d d d        | dd }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ | dd }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  |j                  k(  sJ | t        |        dz
  t        |        dz
   }|j                  dk(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ | t        |       dz   t        |       dz    }|j                  dk(  sJ |j
                  t        |       k(  sJ |j                  t        |       k(  sJ |j                  t        | j                        k(  sJ |j                  t        | j                        k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   rr   r   rc   r   )
r   rO   rP   
IndexErrorr%   r   r   r   r   rN   )	r-   r   r   rE   r~   empty_span_0empty_span_1oob_span_startoob_span_ends	            r,   test_span_boundariesr#  #  s   E
CuS>D5# )AI#a&((()	z	" R	z	" Q q8L""""""q   ""a'''  A%%%q8L""""""q   ""l&;&;;;;#c(Q#c(R8N"$$$1$$$"""$$)))""a'''s3x!|c#hm4L"""S)))s3x'''""c#((m333  CM111=  s   I+IIIc                     | dd }t        |j                  j                  d            t        |j                  j                  d            k(  sJ y )Nr   rr    )rN   r%   r6   lemma_)r-   sps     r,   test_span_lemmar(  J  s?    	QqBrww}}S!"c"))//#*>&????rA   c                      | d      }|dd }|j                   j                  d      rJ t        j                  t              5  |j
                   d d d        y # 1 sw Y   y xY w)Nz7Check span.sent raises error if doc is not sentencized.r   r   
SENT_START)r-   has_annotationrO   rP   r   r   rD   s      r,   	test_sentr,  P  sX    
P
QCq8Dxx&&|444	z	" 		  s   AA#c           	         t               }| j                  j                  }d|j                  g d      fd|j                  g d      fd|j                  g d      fd|j                  g d      fd	|j                  g d
      fg}t	        | j                  |       t        |j                  | dd j                        t        j                  d             t        |j                  | dd j                        t        j                  d             t        |j                  | dd j                        g d       || j                  _        y )Napple)r   r   r   orange)r3   r   And)r3   r3   r3   juice)rr   rr   r   pie)r   g333333@g!@r   )r   r   r   rg   )
r   r(   vectorsr   r   r   to_numpyrx   r   zeros)r-   opsprev_vectorsr4  s       r,   test_span_with_vectorsr9  X  s    

C99$$L	#++i()	3;;|,-	L)*	#++j)*	M*+G cii)s||C!HOO4ekk$6GHs||C!HOO4ekk$6GHs||C2J$5$56E$CIIrA   c                 P	   t        | dd      t        | dd      k(  sJ t        | ddd      t        | ddd      k(  sJ t        | dddd      t        | dddd      k(  sJ t        | dd      t        | ddd      k7  sJ t        | dd      t        | dddd      k7  sJ t        | ddd      t        | dddd      k7  sJ t        | dd      t        | dd      k  rt        | dd      t        | dd      k\  sJ t        | ddd      t        | ddd      k  rt        | ddd      t        | ddd      k\  sJ t        | dddd      t        | dddd      k  sJ t        | dddd      t        | dddd      k\  sJ t        | dd      t        | dddd      cxk  r&t        | ddd      cxk  rt        | dddd      k  sJ  J t        | dd      t        | dddd      cxk  r&t        | ddd      cxk  rt        | dddd      k  sJ  J t        | dddd      t        | ddd      cxkD  r%t        | dddd      cxkD  rt        | dd      kD  sJ  J t        | dddd      t        | ddd      cxk\  r%t        | dddd      cxk\  rt        | dd      k\  sJ  J t        | dddd      t        | dddd      k  sJ t        | dddd      t        | dd      k  sJ t        | dddd      t        | dd      k  sJ t        | dd      t        | dddd      kD  sJ t        | dd      t        | dddd      k\  sJ t        | dddd      t        | dddd      k7  sJ t        | dddd      t        | dd      k  sJ t        | dddd      t        | dd      k  sJ t        | dd      t        | dddd      kD  sJ t        | dd      t        | dddd      k\  sJ t        | dddd      t        | dddd      k7  sJ t        | dddd      t        | dd      k  sJ t        | dddd      t        | dd      k  sJ t        | dd      t        | dddd      kD  sJ t        | dd      t        | dddd      k\  sJ t        | ddd	
      t        | ddd
      k  sJ y )Nr   r   r   r   rt   rc   r   r   AAA)r   BBB)r	   )r-   s    r,   test_span_comparisonr=  m  s    Q?d31o---Q7#tCAw'????Q7'2d31gU\6]]]]Q?d31g6666Q?d31gWEEEEQ7#tCAwg'NNNNQ?d31o-$sAq/T#qRS_2TTTQ7#tCAw'??DaQRT[D\`dehjkmnpw`xDxxxQ7'2d31gU\6]]]]Q7'2d31gU\6]]]]aOd31b@  F4QPQSZC[  F^bcfhiklnu  ~E  _F  F  G  F  G  FaOtCArA  IT#qRSU\E]  Iaefiklnoqx  AH  bI  I  J  I  J  IaG73d31g6N  FQUVY[\^_ackrQs  Fvz{~  AB  DE  wF  F  G  F  G  FaG73tCAw7O  ISWX[]^`acemtSu  Iy}  B  DE  GH  zI  I  J  I  J  I Q7'2T#q!WT[5\\\\Q7'2T#q!_DDDQ7'2d31oEEEQ?T#q!WGDDDDQ?d31gWEEEE Q7'2d31gU\6]]]]Q7'2T#q!_DDDQ7'2d31oEEEQ?T#q!WGDDDDQ?d31gWEEEE Q7'2d31gU\6]]]]Q7'2T#q!_DDDQ7'2d31oEEEQ?T#q!WGDDDDQ?d31gWEEEE Q5)DaE,JJJJrA   z9start,end,expected_sentences,expected_sentences_with_hook))r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )rg   r   r   r   )r   r   r   r   c                 r   t        t        | || j                              |k(  sJ d }|| j                  d<   t        t        | || j                              |k(  sJ d | j                  d<   t        | || j                        d   | || k(  sJ t        t        | || j                              dk(  sJ y )Nc                 `    t        dt        |       d      D cg c]
  }| ||dz     c}S c c}w r   r   r   s     r,   r   z"test_span_sents.<locals>.user_hook  r   r   r9   c                     | gS r|   r   r   s    r,   r   z!test_span_sents.<locals>.<lambda>  s    aS rA   r   r   )rN   r5   r9   r   r   )r-   r   r   expected_sentencesexpected_sentences_with_hookr   s         r,   test_span_sentsrC    s     tCcN(()*.@@@@B (CNN7tCcN(()*.JJJJ#0C E#$$%a(CcN:::tCcN(()*a///rA   c                     t        j                  t              5  t        t	        | dd      j
                         d d d        y # 1 sw Y   y xY w)Nr   r   )rO   rP   r   r5   r	   r9   )r1   s    r,   test_span_sents_not_parsedrE    s:    	z	" /T.!Q'--./ / /s   !AAc                 |   | dd | dd g| j                   d<   t        | j                   d         dk(  sJ | j                         }t        |j                   d         dk(  sJ | j                   d   j                  | dd        t        | j                   d         dk(  sJ t        |j                   d         dk(  sJ y )Nr   r   r   r   testr   )r  rN   copyappend)r-   doc_copys     r,   test_span_group_copyrK    s    Qq3q8,CIIfsyy !Q&&&xxzHx~~f%&!+++IIfS1X&syy !Q&&&x~~f%&!+++rA   c                      t        t               j                  g dg d      } | j                  t	        | ddd      g       t        | j                  | j                  d   j                        D ]  \  }}||k(  rJ  y)	zSpans may be associated with multiple sentences. These .sents should always be complete, not partial, sentences,
    which this tests for.
    )zMahler'sSymphonyzNo.8wasz
beautiful.)r   r   r   r   r   r   r   sent_startsr   r   WORKr   N)r   r   r(   set_entsr	   zipr9   r#   )r-   doc_sentent_sents      r,   test_for_partial_ent_sentsrW    sv     	G&C
 LL$sAq&)*+ "#))SXXa[->->? $(8###$rA   c                  d   t        t               j                  g dg d      } | j                  t	        | ddd      g       t        | j                  d   j                        }t        |      dk(  sJ t        |d         t        | j                  d   j                        cxk(  rd	k(  sJ  J y
)zySpan.sents() should set .sents correctly, even if Span in question is trailing and doesn't form a full
    sentence.
    )rH   rI   rJ   ztest.r   )r   r   r   r   r   rP  r   rr   rR  r   r   r   N)r   r   r(   rS  r	   r5   r#   r9   rN   strr   r   s     r,   test_for_no_ent_sentsrZ    s     	4#C
 LL$sAq&)*+!""#Eu:??uQx=C 0 01=X=====rA   c                      | d      } | d      }|dd |d   k(  rJ |dd |d   k(  rJ |dd |dd k(  rJ |dd |k(  rJ y )Nza bzb cr   r   r   r   )r)   doc1doc2s      r,   test_span_api_richcmp_otherr^    sw    DDAayDG###AayDG###AayD1I%%%AayD    rA   )Kr   rO   numpy.testingr   	thinc.apir   spacy.attrsr   r   spacy.lang.enr   spacy.tokensr   r	   r
   
spacy.utilr   spacy.vocabr   utilr   test_underscorer   fixturer-   r1   markissuer@   rF   rS   ra   re   parametrizerq   rv   arrayrz   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   usefixturesr  r  r  r  r  r  r  r#  r(  r,  r9  r=  rC  rE  rK  rW  rZ  r^  r   rA   r,   <module>rn     sv     , % $ ! ) ) #  $ -  .   4" "" 4# # 4# # 4/ /$ 4  '45 4  	
  '*U)V 4  ($b"kekk/.JKL 4) 	
) 	
As;-	
As$%'89	
CKVs9~5yA	!!	-8'-,<& !11"&NR;	2
&&,!^%#( +,9 -9.30*8<4	=$2N@%*/Kf ?	00"/

,$ >!rA   