o
    g                     @   sB   d dl Z d dlZd dlmZ 	 e dZdd ZG dd dZdS )    N)HeaderFooterz[\\*?:/\[\]]c                    s|    fdd| D }|r<d | } tdt  dtj}|| }|r<dd |D }d}|r4t|}d |d	   S )
z
    Naive check to see whether name already exists.
    If name does exist suggest a name using an incrementer
    Duplicates are case insensitive
    c                    s    g | ]}|     kr|qS  )lower).0nvaluer   Q/var/www/html/api-tag/env/lib/python3.10/site-packages/openpyxl/workbook/child.py
<listcomp>        z(avoid_duplicate_name.<locals>.<listcomp>,z
(?P<title>z)(?P<count>\d*),?c                 S   s    g | ]\}}|  rt|qS r   )isdigitint)r   tidxr   r   r	   r
      r   r   z{0}{1}   )joinrecompileescapeIfindallmaxformat)namesr   matchsheet_title_regexmatchescountshighestr   r   r	   avoid_duplicate_name   s   

r    c                   @   s  e Zd ZdZdZdZdZdZd$ddZdd Z	e
d	d
 Ze
dd Ze
dd Zejdd Ze
dd Zejdd Ze
dd Zejdd Ze
dd Zejdd Ze
dd Zejdd Ze
dd Zejdd Ze
dd  Zejd!d  Ze
d"d# ZdS )%_WorkbookChild Nz{0}Sheetc                 C   s   || _ |p| j| _t | _d S N)_parent_default_titletitler   )selfparentr'   r   r   r	   __init__-   s   z_WorkbookChild.__init__c                 C   s   d | jj| jS )Nz<{0} "{1}">)r   	__class____name__r'   r(   r   r   r	   __repr__3   s   z_WorkbookChild.__repr__c                 C      | j S r$   )r%   r-   r   r   r	   r)   7      z_WorkbookChild.parentc                 C      | j jS r$   )r%   encodingr-   r   r   r	   r2   <      z_WorkbookChild.encodingc                 C   r/   r$   )_WorkbookChild__titler-   r   r   r	   r'   A   r0   z_WorkbookChild.titlec                 C   s   | j sdS |stdt|dr(t|ts(z|d}W n ty'   tdw t|}|r;d	|
d}t|| jdurL| j|krLt| jj|}t|dkrWtd	 || _dS )
z
        Set a sheet title, ensuring it is valid.
        Limited to 31 characters, no special characters.
        Duplicate titles will be incremented numerically
        Nz&Title must have at least one characterdecodeasciizWorksheet titles must be strz*Invalid character {0} found in sheet titler      zTTitle is more than 31 characters. Some applications may not be able to read the file)r%   
ValueErrorhasattr
isinstancestrr5   UnicodeDecodeErrorINVALID_TITLE_REGEXsearchr   groupr'   r    r)   
sheetnameslenwarningswarnr4   )r(   r   mmsgr   r   r	   r'   F   s(   




c                 C   r1   r$   r   	oddHeaderr-   r   r   r	   rG   h   r3   z_WorkbookChild.oddHeaderc                 C      || j _d S r$   rF   r(   r   r   r   r	   rG   m      c                 C   r1   r$   r   	oddFooterr-   r   r   r	   rL   r   r3   z_WorkbookChild.oddFooterc                 C   rH   r$   rK   rI   r   r   r	   rL   w   rJ   c                 C   r1   r$   r   
evenHeaderr-   r   r   r	   rN   |   r3   z_WorkbookChild.evenHeaderc                 C   rH   r$   rM   rI   r   r   r	   rN      rJ   c                 C   r1   r$   r   
evenFooterr-   r   r   r	   rP      r3   z_WorkbookChild.evenFooterc                 C   rH   r$   rO   rI   r   r   r	   rP      rJ   c                 C   r1   r$   r   firstHeaderr-   r   r   r	   rR      r3   z_WorkbookChild.firstHeaderc                 C   rH   r$   rQ   rI   r   r   r	   rR      rJ   c                 C   r1   r$   r   firstFooterr-   r   r   r	   rT      r3   z_WorkbookChild.firstFooterc                 C   rH   r$   rS   rI   r   r   r	   rT      rJ   c                 C   s   | j | jS r$   )_pathr   _idr-   r   r   r	   path   s   z_WorkbookChild.path)NN)r,   
__module____qualname__r4   rV   rU   r%   r&   r*   r.   propertyr)   r2   r'   setterrG   rL   rN   rP   rR   rT   rW   r   r   r   r	   r!   %   sT    




!











r!   )r   rB    openpyxl.worksheet.header_footerr   r   r=   r    r!   r   r   r   r	   <module>   s   
