ó
    Î’Œjá"  ã                   ó  • 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   €Ú¾C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\spacy/tests/serialize/test_serialize_span_groups.pyÚassert_spangroupsÚ*test_issue10685.<locals>.assert_spangroups   s›   ø€ Ü�3—9‘9‹~ Ó"Ð"Ð"Ø�y‰y˜Ñ ×%Ñ%¨Ó/Ð/Ð/Ø�y‰y˜Ñ!×&Ñ&¨&Ó0Ð0Ð0Ü�C—I‘I˜fÑ%Ó&¨3¨q°¨8¨*Ó4Ð4Ð4Ü�C—I‘I˜gÑ&Ó'¨C°°!¨H¨:Ó5Ð5Ñ5ó    N)r   r   Ú
from_bytesÚto_bytesr   )Úen_tokenizerr   r   s     @r   Útest_issue10685r      sÑ   ø€ ñ Ð'Ó
(€Cô ˆs�y‰y‹>˜QÓÐÐØ‡I�I×Ñ˜Ÿ™×+Ñ+Ó-Ô.Üˆs�y‰y‹>˜QÓÐÐô " #¨F¸3¸qÀ¸8¸*ÑE€C‡I�IˆfÑÜ" 3¨V¸CÀÀ!¸H¸:ÑF€C‡I�IˆgÑõ6ñ Ôð ‡I�I×Ñ˜Ÿ™×+Ñ+Ó-Ô.áÕ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ð �Y‰Y€FÜ˜s¨¸¸A¸a¸À#ÀaÈÀ(Ð7KÑL€Fˆ6�NÜ˜s¨°s¸1¸Q°xÀÀQÀqÀÐ6JÑK€Fˆ6�NÜ˜s¨°s¸1¸Q°xÀÀQÀqÀÐ6JÑK€Fˆ6�NÜ˜s¨¸¸A¸a¸°zÑB€Fˆ6�NÜ˜s¨¸¸A¸a¸°zÑB€Fˆ6�NÜ
�C˜f¨S°°1¨X¨JÑ
7€CØˆ6�NØˆ6�NÜ
�C˜f¨S°°1¨X¨JÑ
7€CØˆ6�NØˆ6�Nä˜#‹×)Ñ)¨&¯/©/Ó*;Ó<€Hð �=‰=‹?˜fŸk™k›mÓ+Ð+Ð+Ø Ÿ™Ö(‰ˆà�|‰|˜v™{×/Ñ/Ó/Ð/Ð/Ü�G‹}¤ V¡[Ó 1Õ1Ð1Ð1ò )r   z9spans_bytes,doc_text,expected_spangroups,expected_warningó   �Ú FsF   ‘ÄCƒ¤name¤test¥attrs€¥spans‘Ä(                                      r   r   )r   r	   r
   s‹   ’ÄCƒ¤name¤test¥attrs€¥spans‘Ä(                                      ÄCƒ¤name¤test¥attrs€¥spans‘Ä(                                    )r	   r   TsÖ  •Ämƒ¤name¤key1¥attrs€¥spans’Ä(                                      Ä(                                    Älƒ¤name£too¥attrs€¥spans’Ä(                                 	   Ä(                                    Älƒ¤name£too¥attrs€¥spans’Ä(                                    Ä(                                      ÄCƒ¤name¤key4¥attrs€¥spans‘Ä(                                      ÄCƒ¤name¤key4¥attrs€¥spans‘Ä(                                      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æÜ�\Š\œ+Õ&Ø�I‰I× Ñ  Ô-÷ 'Ð&ð 	�	‰	×Ñ˜[Ô)à�9‰9�>‰>ÓÐ2×7Ñ7Ó9Ó9Ð9Ð9Ø 3× 9Ñ 9Ö ;ÑˆØ�y‰y˜‰×#Ñ# ~°fÑ'=Ó=Ð=Ð=Ø9GÈÒ9PÔQÒ9P©:¨5”�c #Ö&Ñ9PˆÑQÜ�C—I‘I˜d‘OÓ$¨Õ-Ð-Ð-ò !<÷ 'Õ&üó 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Ñ#�ð Ö!Ú'Wùs   ‚)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Ø��1ˆX�s˜1˜Q�xÐ €EÜ
�CÑ
%€CØ�ÑØ�ÑØ€K�ÑÜ% c›?×5Ñ5°k×6JÑ6JÓ6LÓ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Ø!à!'°6¸6Ð2BÑCØ %°¸Ð0@ÑAØ!'°6°(Ñ;ñð
 ð		
ð9&ó,ñZ.ó[,ðZ.ó@
r   