B
    P\H                 @   s^   d dl mZ d dlZd dlZd dlmZmZ d dlmZ e	dZ
dd ZG dd	 d	eZdS )
    )absolute_importN)unicode	safe_repr)HeaderFooterz[\\*?:/\[\]]c                sx    fdd| D }|rtd | } tdt  tj}|| }|rtdd |D }d}|rdt|}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   6lib/python3.7/site-packages/openpyxl/workbook/child.py
<listcomp>   s    z(avoid_duplicate_name.<locals>.<listcomp>,z(?P<title>%s)(?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_regexZmatchesZ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__0   s    z_WorkbookChild.__init__c             C   s   d | jjt| jS )Nz<{0} "{1}">)r   	__class____name__r   r"   )r#   r   r   r   __repr__6   s    z_WorkbookChild.__repr__c             C   s   | j S )N)r    )r#   r   r   r   r$   :   s    z_WorkbookChild.parentc             C   s   | j jS )N)r    encoding)r#   r   r   r   r)   ?   s    z_WorkbookChild.encodingc             C   s   | j S )N)_WorkbookChild__title)r#   r   r   r   r"   D   s    z_WorkbookChild.titlec             C   s   | j s
dS |stdt|drVt|tsVy|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 unicodez*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
isinstancer   r+   UnicodeDecodeErrorINVALID_TITLE_REGEXsearchr   groupr"   r   r$   Z
sheetnameslenwarningswarnr*   )r#   r
   mmsgr   r   r   r"   I   s&    



c             C   s   | j jS )N)r   	oddHeader)r#   r   r   r   r:   k   s    z_WorkbookChild.oddHeaderc             C   s   || j _d S )N)r   r:   )r#   r
   r   r   r   r:   p   s    c             C   s   | j jS )N)r   	oddFooter)r#   r   r   r   r;   u   s    z_WorkbookChild.oddFooterc             C   s   || j _d S )N)r   r;   )r#   r
   r   r   r   r;   z   s    c             C   s   | j jS )N)r   
evenHeader)r#   r   r   r   r<      s    z_WorkbookChild.evenHeaderc             C   s   || j _d S )N)r   r<   )r#   r
   r   r   r   r<      s    c             C   s   | j jS )N)r   
evenFooter)r#   r   r   r   r=      s    z_WorkbookChild.evenFooterc             C   s   || j _d S )N)r   r=   )r#   r
   r   r   r   r=      s    c             C   s   | j jS )N)r   firstHeader)r#   r   r   r   r>      s    z_WorkbookChild.firstHeaderc             C   s   || j _d S )N)r   r>   )r#   r
   r   r   r   r>      s    c             C   s   | j jS )N)r   firstFooter)r#   r   r   r   r?      s    z_WorkbookChild.firstFooterc             C   s   || j _d S )N)r   r?   )r#   r
   r   r   r   r?      s    c             C   s   | j | jS )N)_pathr   _id)r#   r   r   r   path   s    z_WorkbookChild.path)NN)r'   
__module____qualname__r*   rA   r@   r    r!   r%   r(   propertyr$   r)   r"   setterr:   r;   r<   r=   r>   r?   rB   r   r   r   r   r   (   s0   
"r   )Z
__future__r   r   r6   Zopenpyxl.compatr   r   Z openpyxl.worksheet.header_footerr   r   r2   r   objectr   r   r   r   r   <module>   s   
