U
    d                     @   sB   d dl Z d dlZd dlmZ e dZdd ZG dd deZdS )    N)HeaderFooterz[\\*?:/\[\]]c                    s|    fdd| D }|rxd | } tdt  dtj}|| }|rxdd |D }d}|rht|}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   ;/tmp/pip-unpacked-wheel-rwywncvq/openpyxl/workbook/child.py
<listcomp>   s      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
      s      r   z{0}{1}   )joinrecompileescapeIfindallmaxformat)namesr   matchZsheet_title_regexmatchescountsZ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}Z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   s   | j S r    )r!   r)   r   r   r	   r%   7   s    z_WorkbookChild.parentc                 C   s   | j jS r    )r!   encodingr)   r   r   r	   r+   <   s    z_WorkbookChild.encodingc                 C   s   | j S r    )_WorkbookChild__titler)   r   r   r	   r#   A   s    z_WorkbookChild.titlec                 C   s   | j s
dS |stdt|drVt|tsVz|d}W n tk
rT   tdY nX t|}|r|d	|
d}t|| jdk	r| j|krt| jj|}t|dkrt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strr-   UnicodeDecodeErrorINVALID_TITLE_REGEXsearchr   groupr#   r   r%   Z
sheetnameslenwarningswarnr,   )r$   r   mmsgr   r   r	   r#   F   s&    



c                 C   s   | j jS r    r   	oddHeaderr)   r   r   r	   r>   h   s    z_WorkbookChild.oddHeaderc                 C   s   || j _d S r    r=   r$   r   r   r   r	   r>   m   s    c                 C   s   | j jS r    r   	oddFooterr)   r   r   r	   rA   r   s    z_WorkbookChild.oddFooterc                 C   s   || j _d S r    r@   r?   r   r   r	   rA   w   s    c                 C   s   | j jS r    r   
evenHeaderr)   r   r   r	   rC   |   s    z_WorkbookChild.evenHeaderc                 C   s   || j _d S r    rB   r?   r   r   r	   rC      s    c                 C   s   | j jS r    r   
evenFooterr)   r   r   r	   rE      s    z_WorkbookChild.evenFooterc                 C   s   || j _d S r    rD   r?   r   r   r	   rE      s    c                 C   s   | j jS r    r   firstHeaderr)   r   r   r	   rG      s    z_WorkbookChild.firstHeaderc                 C   s   || j _d S r    rF   r?   r   r   r	   rG      s    c                 C   s   | j jS r    r   firstFooterr)   r   r   r	   rI      s    z_WorkbookChild.firstFooterc                 C   s   || j _d S r    rH   r?   r   r   r	   rI      s    c                 C   s   | j | jS r    )_pathr   _idr)   r   r   r	   path   s    z_WorkbookChild.path)NN)r(   
__module____qualname__r,   rK   rJ   r!   r"   r&   r*   propertyr%   r+   r#   setterr>   rA   rC   rE   rG   rI   rL   r   r   r   r	   r   %   sR   




!











r   )	r   r9   Z openpyxl.worksheet.header_footerr   r   r5   r   objectr   r   r   r   r	   <module>   s
   
