o
    i                     @   s   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 ddl
mZ er4ddlmZ ddlmZ ddlmZ G d	d
 d
ZdefddZdd ZdS )    N)TYPE_CHECKINGAnyDictListOptionalTupleUnion   )Errors   )Doc)Span)Tokenc                
   @   s  e Zd ZU eeefZi Zee	e	f e
d< i Zee	e	f e
d< i Zee	e	f e
d< eee	f e
d< ed e
d< ee e
d< ee e
d< 				d&d
eee	f ded dee dee fddZdee fddZdede	fddZdede	fddZdede	fddZdede	fddZdedefddZdedeeeee ee f fdd Zedeee	e	f ee	e	f ee	e	f f fd!d"Zed#eee	e	f ee	e	f ee	e	f f dd	fd$d%Zd	S )'
Underscoredoc_extensionsspan_extensionstoken_extensions_extensions)r   r   r   _obj_start_endN
extensionsobjstartendc                 C   sL   t | d| t | d| t | d|j t | d| t | d| d S )Nr   r   _docr   r   )object__setattr__doc)selfr   r   r   r    r    K/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tokens/underscore.py__init__   s
   zUnderscore.__init__returnc                 C   s   t | j }g d| S )N)setgethas)listr   keys)r   r   r    r    r!   __dir__)   s   zUnderscore.__dir__namec                 C   s   || j vrttjj|d| j | \}}}}|d ur || jS |d ur9t|| j}|jp/d}d}|| |_|S | 	|}	|	| j
jv rJ| j
j|	 S t|| jr]t|}
| ||
 |
S |S )Nr*    zsThis method is a partial function and its first argument (the object it's called on) will be filled automatically. )r   AttributeErrorr
   E046formatr   	functoolspartial__doc___get_keyr   	user_data
isinstancemutable_typescopyr   )r   r*   defaultmethodgettersettermethod_partialmethod_docstringmethod_docstring_prefixkeynew_defaultr    r    r!   __getattr__.   s(   





zUnderscore.__getattr__valuec                 C   sX   || j vrttjj|d| j | \}}}}|d ur!|| j|S || jj| |< d S )Nr+   )	r   r-   r
   E047r/   r   r   r4   r3   )r   r*   rB   r8   r9   r:   r;   r    r    r!   r   J   s   
zUnderscore.__setattr__c                 C   s   |  ||S N)r   )r   r*   rB   r    r    r!   r$   S   s   zUnderscore.setc                 C   s
   |  |S rD   )rA   r   r*   r    r    r!   r%   V      
zUnderscore.getc                 C   s
   || j v S rD   )r   rE   r    r    r!   r&   Y   rF   zUnderscore.hasc                 C   s   d|| j | jfS )Nz._.)r   r   rE   r    r    r!   r3   \   s   zUnderscore._get_keyc                 C   s   | j | j| jfS rD   r   r   r   )clsr    r    r!   	get_state_   s   zUnderscore.get_statestatec                 C   s   |\| _ | _| _d S rD   rG   )rH   rJ   r    r    r!   
load_statec   s   zUnderscore.load_state)NN)__name__
__module____qualname__dictr'   r$   r6   r   r   r   __annotations__r   r   strr   r   intr"   r   r)   rA   r   r%   boolr&   r   r3   classmethodrI   rK   r    r    r    r!   r      sF   
 


	&2$r   kwargsc                  K   s  |  d}|  d}|  d}|  d}|du r!|dur!ttjd| v |du|duf}tdd |D }|dkrBttjj|d	|durWt|d
sWttjjdt	|d|durlt|d
slttjjdt	|d|durt|d
sttjjdt	|d||||fS )z>Validate and convert arguments. Reused in Doc, Token and Span.r8   r:   r;   r9   Nc                 s   s    | ]}|d u V  qdS )TNr    ).0tr    r    r!   	<genexpr>s       zget_ext_args.<locals>.<genexpr>r   )
nr_defined__call__)r*   rB   )
r%   
ValueErrorr
   E089sumE083r/   hasattrE091repr)rU   r8   r:   r;   r9   
valid_optsrZ   r    r    r!   get_ext_argsj   s"   




rd   c                 C   s6   | \}}}}|dus|dust dd | D rdS dS )zCheck if an extension attribute is writable.
    ext (tuple): The (default, getter, setter, method) tuple available  via
        {Doc,Span,Token}.get_extension.
    RETURNS (bool): Whether the attribute is writable.
    Nc                 s   s    | ]}|d u V  qd S rD   r    )rV   er    r    r!   rX      rY   z#is_writable_attr.<locals>.<genexpr>TF)all)extr8   r9   r:   r;   r    r    r!   is_writable_attr   s   "rh   )r7   r0   typingr   r   r   r   r   r   r   errorsr
   r   r   spanr   tokenr   r   rd   rh   r    r    r    r!   <module>   s    $]