o
    ðäjŽ#  ã                   @   sò   d dl m Z  d dlmZ d dlmZmZmZm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 d d	lmZ G d
d„ deeƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Úcopy)Úsafe_string)Úget_column_letterÚget_column_intervalÚcolumn_index_from_stringÚrange_boundaries)ÚDEFAULT_COLUMN_WIDTH)ÚIntegerÚFloatÚBoolÚStrictÚStringÚAlias)ÚSerialisable)ÚStyleableObject)ÚBoundDictionary)ÚElementc                       sl   e Zd ZdZdZeƒ Zeƒ Zedd�Z	e
dƒZeƒ Ze
dƒZ	d‡ fdd	„	Zd
d„ Zdd„ Zdd„ Z‡  ZS )Ú	Dimensionz<Information about the display properties of a row or column.)ÚhiddenÚoutlineLevelÚ	collapsedT©Ú
allow_noner   Ústyle_idNc                    s,   t ƒ j||d� || _|| _|| _|| _d S )N)ÚsheetÚstyle_array)ÚsuperÚ__init__Úindexr   r   r   )Úselfr   r   r   r   Ú	worksheetÚvisibleÚstyle©Ú	__class__© úa/var/www/ticemtrilhas/avaliacao_env/lib/python3.10/site-packages/openpyxl/worksheet/dimensions.pyr   )   s
   
zDimension.__init__c                 c   s0   � | j D ]}t| |d ƒ}|r|t|ƒfV  qd S ©N)Ú
__fields__Úgetattrr   )r   ÚkeyÚvaluer%   r%   r&   Ú__iter__2   s   €
€ýzDimension.__iter__c                 C   s<   |   | j¡}| j}| j|d< |jdi |¤Ž t| jƒ|_|S )Nr    r%   )Ú__new__r$   Ú__dict__Úparentr   r   Ú_style)r   ÚcpÚattribr%   r%   r&   Ú__copy__9   s   
zDimension.__copy__c                 C   s   d| j j› dt| ƒ› d�S )Nú<z Instance, Attributes=ú>)r$   Ú__name__Údict©r   r%   r%   r&   Ú__repr__B   s   zDimension.__repr__)TN)r6   Ú
__module__Ú__qualname__Ú__doc__r(   r	   r   r   r   r   r   Úoutline_levelr   r"   r   r,   r3   r9   Ú__classcell__r%   r%   r#   r&   r      s    
ÿ		r   c                       s�   e Zd ZdZejd ZedƒZedƒZe	dd�Z
edƒZeƒ Zeƒ Z										
				
												d‡ fdd„	Zedd„ ƒZedd„ ƒZ‡  ZS )ÚRowDimensionz2Information about the display properties of a row.)ÚhtÚcustomFormatÚcustomHeightÚsÚthickBotÚthickTopr   r   Tr   r@   r   NFc                    s`   |d ur|}|d ur|}|| _ |d ur| }|	d ur|	}|| _|| _tƒ j||||
||d� d S ©N)r"   )r@   rD   rE   r   r   )r   r    r   r@   rB   rC   rA   r   r   r=   r   r!   ÚheightÚrÚspansrD   rE   Úkwr#   r%   r&   r   R   s   
ÿzRowDimension.__init__c                 C   s   | j S )z+Always true if there is a style for the row)Ú	has_styler8   r%   r%   r&   rA   s   s   zRowDimension.customFormatc                 C   s
   | j duS )z,Always true if there is a height for the rowN)r@   r8   r%   r%   r&   rB   x   ó   
zRowDimension.customHeight)r   NNNNFr   NFNNNNNN)r6   r:   r;   r<   r   r(   r   rH   rC   r
   r@   rG   r   rD   rE   r   ÚpropertyrA   rB   r>   r%   r%   r#   r&   r?   F   s:    

ð!
r?   c                       s¢   e Zd ZdZeƒ Zeƒ ZedƒZ	e
ƒ Zedd�Zedd�Zeƒ Zejd Zdedddd	dd	d	d	dd	d	f‡ fd
d„	Zedd„ ƒZdd„ Zedd„ ƒZdd„ Z‡  ZS )ÚColumnDimensionz5Information about the display properties of a column.ÚbestFitTr   )ÚwidthrO   ÚcustomWidthr"   ÚminÚmaxÚAFr   Nc                    s`   || _ |
| _|| _|d ur| }|d ur|}|| _|d ur|}|| _tƒ j||||||	d� d S rF   )rP   rR   rS   rO   r   r   r   )r   r    r   rP   rO   r   r   r=   r   r"   rR   rS   rQ   r!   Ú	auto_sizer#   r%   r&   r   Œ   s   
ÿzColumnDimension.__init__c                 C   ó
   t | jƒS )z.Always true if there is a width for the column)ÚboolrP   r8   r%   r%   r&   rQ   ª   rL   zColumnDimension.customWidthc                 C   s*   t | j| jgƒst| jƒ | _| _dS dS )z6
        Set boundaries for column definition
        N)ÚallrR   rS   r   r   r8   r%   r%   r&   Úreindex°   s   ÿzColumnDimension.reindexc                 C   s   t | jƒ› dt | jƒ› �S )z*Return the range of cells actually coveredú:)r   rR   rS   r8   r%   r%   r&   Úrange·   s   zColumnDimension.rangec                 C   s*   t | ƒ}| ¡ ddhkrtdi |¤ŽS d S )NrR   rS   Úcol)r\   )r7   Úkeysr   )r   Úattrsr%   r%   r&   Úto_tree½   s   ÿzColumnDimension.to_tree)r6   r:   r;   r<   r
   rP   r   rO   r   rU   r   r   r	   rR   rS   r   r   r(   r   r   rM   rQ   rY   r[   r_   r>   r%   r%   r#   r&   rN   ~   s<    


ò

rN   c                       s4   e Zd ZdZd‡ fdd„	Zddd	„Zd
d„ Z‡  ZS )ÚDimensionHolderz%
    Allow columns to be grouped
    r   Nc                    s$   || _ d | _|| _tƒ  ||¡ d S r'   )r    Úmax_outlineÚdefault_factoryr   r   )r   r    Ú	referencerb   r#   r%   r&   r   È   s   zDimensionHolder.__init__é   Fc           	      C   s´   |du r|}t |  ¡ tƒr9| | }||_||_t||ƒdd… }|D ]	}|| v r+| |= q"tt||fƒ\|_|_	dS t |  ¡ t
ƒrVt||d ƒD ]}| jj| }||_||_qGdS dS )aT  allow grouping a range of consecutive rows or columns together

        :param start: first row or column to be grouped (mandatory)
        :param end: last row or column to be grouped (optional, default to start)
        :param outline_level: outline level
        :param hidden: should the group be hidden on workbook open or not
        Nrd   )Ú
isinstancerb   rN   r=   r   r   Úmapr   rR   rS   r?   r[   r    Úrow_dimensions)	r   ÚstartÚendr=   r   Únew_dimÚwork_sequenceÚcolumn_letterÚelr%   r%   r&   ÚgroupÏ   s&   €üzDimensionHolder.groupc                 C   sp   dd„ }t dƒ}tƒ }t|  ¡ |d�D ]}| ¡ }|d ur(| |j¡ | |¡ q|r0t|ƒ| _	t
|ƒr6|S d S )Nc                 S   s   |   ¡  | jS r'   )rY   rR   )r+   r%   r%   r&   Úsorterì   s   z'DimensionHolder.to_tree.<locals>.sorterÚcols)r*   )r   ÚsetÚsortedÚvaluesr_   Úaddr   ÚappendrS   ra   Úlen)r   ro   rm   Úoutlinesr\   Úobjr%   r%   r&   r_   ê   s   
€
ÿzDimensionHolder.to_tree)r   N)Nrd   F)r6   r:   r;   r<   r   rn   r_   r>   r%   r%   r#   r&   r`   Ã   s
    
r`   c                   @   s‚   e Zd ZdZedd�Zed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									d	dd„ZdS )
ÚSheetFormatPropertiesÚsheetFormatPrTr   é   Né   c
           
      C   s:   || _ || _|| _|| _|| _|| _|| _|| _|	| _d S r'   )	ÚbaseColWidthÚdefaultColWidthÚdefaultRowHeightrB   Ú
zeroHeightrE   ÚthickBottomÚoutlineLevelRowÚoutlineLevelCol)
r   r}   r~   r   rB   r€   rE   r�   r‚   rƒ   r%   r%   r&   r     s   
zSheetFormatProperties.__init__)	r{   Nr|   NNNNNN)r6   r:   r;   Útagnamer	   r}   r
   r~   r   r   rB   r€   rE   r�   r‚   rƒ   r   r%   r%   r%   r&   ry      s*    







÷ry   c                   @   s.   e Zd ZdZeƒ Z	ddd„Zedd„ ƒZdS )ÚSheetDimensionÚ	dimensionNc                 C   s
   || _ d S r'   )Úref)r   r‡   r%   r%   r&   r   *  rL   zSheetDimension.__init__c                 C   rV   r'   )r   r‡   r8   r%   r%   r&   Ú
boundaries0  s   
zSheetDimension.boundariesr'   )	r6   r:   r;   r„   r   r‡   r   rM   rˆ   r%   r%   r%   r&   r…   $  s    
ÿr…   N)r   Úopenpyxl.compatr   Úopenpyxl.utilsr   r   r   r   Úopenpyxl.utils.unitsr   Úopenpyxl.descriptorsr	   r
   r   r   r   r   Ú!openpyxl.descriptors.serialisabler   Úopenpyxl.styles.styleabler   Úopenpyxl.utils.bound_dictionaryr   Úopenpyxl.xml.functionsr   r   r?   rN   r`   ry   r…   r%   r%   r%   r&   Ú<module>   s    +8E=$