
    h@"                        S SK r S SKJrJr  S SKJr  \ R                  R                  S5      S 5       rS r	\ R                  R                  SSS	0 S
4SSSSS/S.0S
4SSSSS/S.0S4SSSSS/S.SSS/S.SS/S.S.S4/5      S 5       rS rg)    N)Span	SpanGroup)
SpanGroupsi)  c                   ^ U " S5      m[        TR                  5      S:X  d   eTR                  R                  TR                  R                  5       5        [        TR                  5      S:X  d   e[	        TSTSS /S9TR                  S'   [	        TSTSS /S9TR                  S'   U4S jnU" 5         TR                  R                  TR                  R                  5       5        U" 5         g	)
z"Test `SpanGroups` de/serializationWill it blend?r   test   namespans   test2c                  @  > [        T R                  5      S:X  d   eT R                  S   R                  S:X  d   eT R                  S   R                  S:X  d   e[        T R                  S   5      T SS /:X  d   e[        T R                  S   5      T SS /:X  d   eg )Nr   r   r   r   r	   )lenr   r   list)docs   j/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/serialize/test_serialize_span_groups.pyassert_spangroups*test_issue10685.<locals>.assert_spangroups   s    399~"""yy %%///yy!&&&000CIIf%&3q8*444CIIg&'C!H:555    N)r   r   
from_bytesto_bytesr   )en_tokenizerr   r   s     @r   test_issue10685r      s     '
(C syy>QII++-.syy>Q "#F3q8*ECIIf"3VC!H:FCIIg6  II++-.r   c                    U " S5      nUR                   n[        USUSS USS /S9US'   [        USUSS	 US	S
 /S9US'   [        USUSS USS /S9US'   [        USUSS /S9US'   [        USUSS /S9US'   [        USUSS /S9nX2S'   X2S'   [        USUSS /S9nXBS'   XBS'   [        U5      R                  UR	                  5       5      nUR                  5       UR                  5       :X  d   eUR                  5        H?  u  pgUR                  X&   R                  :X  d   e[        U5      [        X&   5      :X  a  M?   e   g)zVTest the serialization of multiple mismatching `SpanGroups` keys and `SpanGroup.name`sHow now, brown cow?key1r   r	   r   r
   too         key2key3key4key5key6key7alsokey8key9N)	r   r   r   r   r   keysitemsr   r   )r   r   groupssg6sg8regroupskeyregroups           r   )test_span_groups_serialization_mismatchesr3   &   sz   
,
-C YYFsAa#a(7KLF6Nss1QxQq6JKF6Nss1QxQq6JKF6NsAazBF6NsAazBF6N
CfS1XJ
7C6N6N
CfS1XJ
7C6N6N#))&//*;<H ==?fkkm+++ (||v{/////G}V[ 1111 )r   z9spans_bytes,doc_text,expected_spangroups,expected_warning    FsF   Cnametestattrsspans(                                      r   r   )r   r	   r
   s   Cnametestattrsspans(                                      Cnametestattrsspans(                                    )r	   r   Ts  mnamekey1attrsspans(                                      (                                    lnametooattrsspans(                                 	   (                                    lnametooattrsspans(                                    (                                      Cnamekey4attrsspans(                                      Cnamekey4attrsspans(                                      r   r   r   r$   )r   r   r$   c           
      X   U " U5      nU(       a?  [         R                  " [        5         UR                  R	                  U5        SSS5        OUR                  R	                  U5        UR                  R                  5       UR                  5       :X  d   eUR                  5        Hh  u  pgUR                  U   R                  US   :X  d   eUS    VV	s/ s H  u  p[        XXU	5      PM     n
nn	[        UR                  U   5      U
:X  a  Mh   e   g! , (       d  f       N= fs  sn	nf )a~  Test backwards-compatibility of `SpanGroups` deserialization.
This uses serializations (bytes) from a prior version of spaCy (before 3.3.1).

spans_bytes (bytes): Serialized `SpanGroups` object.
doc_text (str): Doc text.
expected_spangroups (dict):
    Dict mapping every expected (after deserialization) `SpanGroups` key
    to a SpanGroup's "args", where a SpanGroup's args are given as a dict:
      {"name": span_group.name,
       "spans": [(span0.start, span0.end), ...]}
expected_warning (bool): Whether a warning is to be expected from .from_bytes()
    --i.e. if more than 1 SpanGroup has the same .name within the `SpanGroups`.
Nr   r   )
pytestwarnsUserWarningr   r   r+   r,   r   r   r   )r   spans_bytesdoc_textexpected_spangroupsexpected_warningr   r   spangroup_argsstartendr   s              r   #test_deserialize_span_groups_compatrA   F   s    z x
 C\\+&II  - '& 			[)99>>2779999 3 9 9 ;yy##~f'====9G9PQ9P:5c#&9PQCIIdO$--- !< '& Rs   DD&
D#c           	         U " S5      n[        U5      nUSS USS /n[        XS9nXBS'   XBS'   / US	'   [        U5      R                  UR                  5       5      nUR	                  5       UR	                  5       :X  d   eUR                  5        H,  u  pg[        S
 [        X&   XV   5       5       5      (       a  M,   e   g )Nz0 1 2 3 4 5 6r   r   r	   r   )r   r   r"   r#   c              3   .   #    U  H  u  pX:H  v   M     g 7f)N ).0spanreloaded_spans      r   	<genexpr>1test_span_groups_serialization.<locals>.<genexpr>   s      
'W# !'Ws   )r   r   r   r   r+   r,   allzip)r   r   span_groupsr   sg1reloaded_span_groupsr1   values           r   test_span_groups_serializationrP      s    

'CS/K1Xs1Qx E
C
%CK%c?55k6J6J6LM!5!:!:!<<<<!'')
 
'*;+;=Q=V'W
 
 
 	
 
 *r   )r7   spacy.tokensr   r   spacy.tokens._dict_proxiesr   markissuer   r3   parametrizerA   rP   rD   r   r   <module>rV      s     ( 1 5 <2@ ? 
"b%  lfx89		
 D fx89	
 w!!'662BC %0@A!'6(;
 		
9&,Z.[,Z.@
r   