o
    g#                     @   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__ W/var/www/html/api-tag/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=$