o
    i@"                     @   s   d dl Z d dlmZmZ d dlmZ e jddd Zdd Z	e j
d	d
di dfdddddgdidfdddddgdidfdddddgddddgdddgdddfgdd Zdd ZdS )    N)Span	SpanGroup)
SpanGroupsi)  c                    s   | d t  jdksJ  j j  t  jdksJ t d dd gd jd< t d dd gd jd<  fdd	}|   j j  |  d
S )z"Test `SpanGroups` de/serializationWill it blend?r   test   namespans   test2c                      s~   t  jdks	J  jd jdksJ  jd jdksJ t jd  dd gks-J t jd  dd gks=J d S )Nr   r   r   r   r   )lenr
   r	   list docr   d/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/serialize/test_serialize_span_groups.pyassert_spangroups   s
    $z*test_issue10685.<locals>.assert_spangroupsN)r   r
   
from_bytesto_bytesr   )en_tokenizerr   r   r   r   test_issue10685   s   
r   c                 C   sp  | d}|j }t|d|dd |dd gd|d< t|d|dd	 |d	d
 gd|d< t|d|dd |dd gd|d< t|d|dd gd|d< t|d|dd gd|d< t|d|dd gd}||d< ||d< t|d|dd gd}||d< ||d< t|| }| | ksJ | D ]\}}|j|| jksJ t|t|| ksJ qdS )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regroupr   r   r   )test_span_groups_serialization_mismatches&   s&   &&&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                    s   | | |r"t t  j| W d   n1 sw   Y  n j|  j | ks3J | D ]&\}} j| j|d ksGJ  fdd|d D }t j| |ks]J q7dS )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	   c                    s   g | ]
\}}t  ||qS r   )r   ).0startendr   r   r   
<listcomp>   s    z7test_deserialize_span_groups_compat.<locals>.<listcomp>r
   )	pytestwarnsUserWarningr
   r   r'   r(   r	   r   )r   spans_bytesdoc_textexpected_spangroupsexpected_warningr	   spangroup_argsr
   r   r   r   #test_deserialize_span_groups_compatF   s   =r>   c                 C   s   | d}t |}|dd |dd g}t||d}||d< ||d< g |d	< t || }| | ks9J | D ]\}}td
d t|| || D sSJ q=d S )Nz0 1 2 3 4 5 6r   r   r   r   )r
   r   r   r   c                 s   s    | ]	\}}||kV  qd S )Nr   )r2   spanreloaded_spanr   r   r   	<genexpr>   s
    
z1test_span_groups_serialization.<locals>.<genexpr>)r   r   r   r   r'   r(   allzip)r   r   span_groupsr
   sg1reloaded_span_groupsr-   valuer   r   r   test_span_groups_serialization   s   rH   )r6   spacy.tokensr   r   spacy.tokens._dict_proxiesr   markissuer   r/   parametrizer>   rH   r   r   r   r   <module>   s>    

 



- 