
    i                         d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZ d dlZddlmZmZ ddlmZ erddlmZ dd	lmZ  G d
 de      Zy)    N)UserDict)TYPE_CHECKINGDictIterableListOptionalTupleUnion   )ErrorsWarnings   )	SpanGroup)Doc)Spanc                        e Zd ZdZ ej
                  g       Z e       fdddee	e
ef      ddfdZde
d	eeed
   f   ddfdZde
ded
   defdZdded   dd fdZd fd	ZdefdZdedd fdZddZ xZS )
SpanGroupszDA dict-like proxy held by the Doc, to control access to span groups.docr   itemsreturnNc                 d    t        j                  |      | _        t        j                  | |       y N)weakrefrefdoc_refr   __init__)selfr   r   s      k/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tokens/_dict_proxies.pyr   zSpanGroups.__init__   s$     {{3'$&    keyvaluer   c                     t        |t              s| j                  ||      }|j                  | j	                         u sJ t        j                  | ||       y r   )
isinstancer   _make_span_groupr   r   r   __setitem__)r   r    r!   s      r   r%   zSpanGroups.__setitem__    sH    %+))#u5EyyDLLN***T3.r   namespansc                 >    | j                         }t        |||      S )N)r&   r'   )_ensure_docr   )r   r&   r'   r   s       r   r$   zSpanGroups._make_span_group&   s     4u55r   c                 t    | j                         fd| j                         D        }t        |      S )Nc              3   L   K   | ]  \  }}||j                         f  yw))r   N)copy).0kvr   s      r   	<genexpr>z"SpanGroups.copy.<locals>.<genexpr>-   s$     CdaaC)Cs   !$)r   )r)   r   r   )r   r   	data_copys    ` r   r,   zSpanGroups.copy*   s3    ;""$CCdjjlC	#Y//r   c                 x    t        |t              s|g }n|}| j                  ||      }t        |   ||      S )N)default)r#   r   r$   super
setdefault)r   r    r3   r'   	__class__s       r   r5   zSpanGroups.setdefault0   sC    '9-++C7Gw!#w!77r   c                     t        |       dk(  r| j                  S i }| j                         D ]4  \  }}|j                  |j	                         g       j                  |       6 t        j                  |      S )Nr   )len_EMPTY_BYTESr   r5   to_bytesappendsrslymsgpack_dumps)r   msgr    r!   s       r   r:   zSpanGroups.to_bytes9   sj     t9>$$$&(**, 	=JCNN5>>+R077<	=""3''r   
bytes_datac                 z   |r|| j                   k(  rg nt        j                  |      }| j                          | j	                         }t        |t              r|D ]  }t        |      j                  |      }|j                  | v rKt        j                  t        j                  j                  |j                  | |j                                  || |j                  <    | S |j                         D ]D  \  }}t        |      j                  |      }|| |d   <   |dd  D ]  }|j!                         | |<    F | S )N)
group_namegroup_valuesr   r   )r9   r<   msgpack_loadsclearr)   r#   listr   
from_bytesr&   warningswarnr   W120formatr   r,   )r   r?   r>   r   value_bytesgroupkeysr    s           r   rF   zSpanGroups.from_bytesD   s8    t/@/@!@ $$Z0 	
 	

 c4   # )!#11+>::%
 MM ,,',zzUZZ@P - 
 $)UZZ ),  &)YY[ -!T!#11+> !&T!W8 -C %

DI-- r   c                 \    | j                         }|t        t        j                        |S r   )r   
ValueErrorr   E866)r   r   s     r   r)   zSpanGroups._ensure_docj   s&    lln;V[[))
r   r   )r   r   )__name__
__module____qualname____doc__r<   r=   r9   tupler   r	   strr   r   r
   r%   r$   r   r,   r5   bytesr:   rF   r)   __classcell__)r6   s   @r   r   r      s    N&5&&r*L DI7''!)%Y*?!@'	'/s /5HV<L1L+M /RV /6S 6&1A 6i 60 0< 08	(% 	($U $| $Lr   r   )rG   r   collectionsr   typingr   r   r   r   r   r	   r
   r<   errorsr   r   
span_groupr   r   r   spanr   r    r   r   <module>r_      s7        N N N  % !Y Yr   