o
    g                     @   s   d dl m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 d dlmZ d dlmZ d dlmZ eg dZd	eZed
eZG dd deZG dd deZG dd deZdS )    )defaultdictN)Serialisable)AliasStringIntegerBoolSequence
Descriptor)safe_string)	Tokenizer)SHEETRANGE_RE)
Print_AreaPrint_TitlesCriteria_FilterDatabaseExtractConsolidate_AreaSheet_Title|z^_xlnm\.(?P<name>{0})c                   @   s  e Zd ZdZe ZeddZeddZeddZeddZ	eddZ
eddZeddZeddZeddZeddZeddZeddZeddZeddZe ZedZ																dddZedd	 Zed
d Zedd Zedd Zdd Z dS )DefinedNamedefinedNameT)
allow_none	attr_textNc                 C   sd   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _|| _|| _|| _|| _d S N)namecomment
customMenudescriptionhelp	statusBarlocalSheetIdhiddenfunctionvbProcedurexlmfunctionGroupIdshortcutKeypublishToServerworkbookParameterr   )selfr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r    r*   X/var/www/html/api-tag/env/lib/python3.10/site-packages/openpyxl/workbook/defined_name.py__init__2   s    
zDefinedName.__init__c                 C   s.   t d| j }|jd }|jdkr|jS |jS )N=r   OPERAND)r   valueitemstypesubtype)r)   tokparsedr*   r*   r+   r1   V   s
   

zDefinedName.typec                 c   sh    | j dkr0td| j }|jD ]!}|jdkr/t|j}|dp&|d}||dfV  qd S d S )NRANGEr-   	notquotedquotedcells)r1   r   r/   r0   r2   r   matchgroup)r)   r3   partm	sheetnamer*   r*   r+   destinations_   s   


zDefinedName.destinationsc                 C   s   t | j}|r|dS d S )Nr   )RESERVED_REGEXr9   r   r:   )r)   r<   r*   r*   r+   is_reservedj   s   
zDefinedName.is_reservedc                 C   s   t d| jd uS )Nz
^\[\d+\].*)recompiler9   r/   r)   r*   r*   r+   is_externalq   s   zDefinedName.is_externalc                 c   sL    | j D ]}|dkrqt| |}|d ur#|tv rd| }|t|fV  qd S )Nr   z_xlnm.)	__attrs__getattrRESERVEDr
   )r)   keyvr*   r*   r+   __iter__v   s   

zDefinedName.__iter__)NNNNNNNNNNNNNNNN)!__name__
__module____qualname__tagnamer   r   r   r   r   r   r   r   r    r   r!   r"   r#   r$   r%   r&   r'   r(   r	   r   r   r/   r,   propertyr1   r>   r@   rD   rJ   r*   r*   r*   r+   r      sZ    














$




r   c                       s(   e Zd ZdZ fddZdd Z  ZS )DefinedNameDictzv
    Utility class for storing defined names.
    Allows access by name and separation of global and scoped names
    c                    s6   t |ts	td|j|krtdt || d S )Nz*Value must be a an instance of DefinedNamez Key must be the same as the name)
isinstancer   	TypeErrorr   
ValueErrorsuper__setitem__)r)   rH   r/   	__class__r*   r+   rU      s
   

zDefinedNameDict.__setitem__c                 C   s   || |j < dS )zI
        Add names without worrying about key and name matching.
        N)r   )r)   r/   r*   r*   r+   add   s   zDefinedNameDict.add)rK   rL   rM   __doc__rU   rX   __classcell__r*   r*   rV   r+   rP      s    rP   c                   @   s<   e Zd ZdZeedZdddZdd Zdd	 Z	d
d Z
dS )DefinedNameListdefinedNames)expected_typer*   c                 C   s
   || _ d S r   )r   )r)   r   r*   r*   r+   r,         
zDefinedNameList.__init__c                 C   sV   t t}| jD ]!}|jdu r|jdv rq||d |j< qt|j}||| |j< q|S )z@
        Break names down into sheet locals and globals
        N)z_xlnm.Print_Titlesz_xlnm.Print_Areaz_xlnm._FilterDatabaseglobal)r   rP   r   r    r   int)r)   namesdefnsheetr*   r*   r+   by_sheet   s   



zDefinedNameList.by_sheetc                 C   s.   | j D ]}|j|jkr|j|jkr dS qdS )zc
        Check for whether DefinedName with the same name and scope already
        exists
        TN)r   r   r    )r)   rb   dr*   r*   r+   
_duplicate   s
   
zDefinedNameList._duplicatec                 C   s
   t | jS r   )lenr   rC   r*   r*   r+   __len__   r^   zDefinedNameList.__len__N)r*   )rK   rL   rM   rN   r   r   r   r,   rd   rf   rh   r*   r*   r*   r+   r[      s    


r[   )collectionsr   rA   !openpyxl.descriptors.serialisabler   openpyxl.descriptorsr   r   r   r   r   r	   openpyxl.compatr
   openpyxl.formular   openpyxl.utils.cellr   	frozensetrG   join_namesrB   formatr?   r   dictrP   r[   r*   r*   r*   r+   <module>   s    
f