
    Mwg#                        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ee      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )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                        e Zd ZdZdZ e       Z e       Z ed      Z	 e
d      Z e       Z e
d      Z	 d fd	Zd Zd	 Zd
 Z xZS )	Dimensionz<Information about the display properties of a row or column.)hiddenoutlineLevel	collapsedT
allow_noner   style_idc                 `    t         |   ||       || _        || _        || _        || _        y )N)sheetstyle_array)super__init__indexr   r   r   )	selfr!   r   r   r   	worksheetvisiblestyle	__class__s	           T/var/www/horilla/myenv/lib/python3.12/site-packages/openpyxl/worksheet/dimensions.pyr    zDimension.__init__)   s2    ye<
("    c              #   l   K   | j                   D ]!  }t        | |d       }|s|t        |      f # y wN)
__fields__getattrr   )r"   keyvalues      r'   __iter__zDimension.__iter__2   s:     ?? 	.CD#t,E;u---	.s   44c                     | j                  | j                        }| j                  }| j                  |d<    |j                  di | t        | j                        |_        |S )Nr#    )__new__r&   __dict__parentr    r   _style)r"   cpattribs      r'   __copy__zDimension.__copy__9   sQ    \\$..)"kk{f%		r(   c                 N    d| j                   j                   dt        |        dS )N<z Instance, Attributes=>)r&   __name__dictr"   s    r'   __repr__zDimension.__repr__B   s'    4>>**++A$t*QOOr(   )TN)r<   
__module____qualname____doc__r+   r
   r!   r   r   r   r   outline_levelr   r%   r    r/   r8   r?   __classcell__r&   s   @r'   r   r      s]    FJ IEVFd+L.)MI*E <@#.Pr(   r   c                        e Zd ZdZej
                  dz   Z ed      Z ed      Z e	d      Z
 ed      Z e       Z e       Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fd	Zed	        Zed
        Z xZS )RowDimensionz2Information about the display properties of a row.)htcustomFormatcustomHeightsthickBotthickTopr!   r   Tr   rH   c                 |    ||}||}|| _         || }|	|	}|| _        || _        t        |   ||||
||       y N)r%   )rH   rL   rM   r   r    )r"   r#   r!   rH   rJ   rK   rI   r   r   rC   r   r$   heightrspansrL   rM   kwr&   s                     r'   r    zRowDimension.__init__R   sg    & =EB [F$(L  +4iq 	 	Jr(   c                     | j                   S )z+Always true if there is a style for the row)	has_styler>   s    r'   rI   zRowDimension.customFormats   s     ~~r(   c                     | j                   duS )z,Always true if there is a height for the rowN)rH   r>   s    r'   rJ   zRowDimension.customHeightx   s     wwd""r(   )r   NNNNFr   NFNNNNNN)r<   r@   rA   rB   r   r+   r   rQ   rK   r   rH   rP   r   rL   rM   r    propertyrI   rJ   rD   rE   s   @r'   rG   rG   F   s    <%% )A AJgAjA	$	B4[FvHvH ""# !JB   # #r(   rG   c                        e Zd ZdZ e       Z e       Z ed      Z	 e
       Z ed      Z ed      Z e       Zej"                  dz   Zdedddd	dd	d	d	dd	d	f fd
	Zed        Zd Zed        Zd Z xZS )ColumnDimensionz5Information about the display properties of a column.bestFitTr   )widthrZ   customWidthr%   minmaxAFr   Nc                     || _         |
| _        || _        || }||}|| _        ||}|| _        t
        |   ||||||	       y rO   )r[   r]   r^   rZ   r   r   r    )r"   r#   r!   r[   rZ   r   r   rC   r   r%   r]   r^   r\   r$   	auto_sizer&   s                  r'   r    zColumnDimension.__init__   sk     
 [F G$(L".7% 	 	Qr(   c                 ,    t        | j                        S )z.Always true if there is a width for the column)boolr[   r>   s    r'   r\   zColumnDimension.customWidth   s     DJJr(   c                     t        | j                  | j                  g      s"t        | j                        x| _        | _        yy)z6
        Set boundaries for column definition
        N)allr]   r^   r   r!   r>   s    r'   reindexzColumnDimension.reindex   s5     DHHdhh'(":4::"FFDHtx )r(   c                 \    t        | j                         dt        | j                         S )z*Return the range of cells actually covered:)r   r]   r^   r>   s    r'   rangezColumnDimension.range   s*     $DHH-.a0A$((0K/LMMr(   c                 Z    t        |       }|j                         ddhk7  rt        di |S y )Nr]   r^   )col)r=   keysr   )r"   attrss     r'   to_treezColumnDimension.to_tree   s0    T
::<E5>)*E** *r(   )r<   r@   rA   rB   r   r[   r   rZ   r   ra   r   r!   r
   r]   r^   r   r   r+   r	   r    rW   r\   rf   ri   rn   rD   rE   s   @r'   rY   rY   ~   s    ?GEfGi IHE
T
"C
T
"CI%% )7 7J
 +# "Q<    
G N N
+r(   rY   c                   2     e Zd ZdZd fd	ZddZd Z xZS )DimensionHolderz%
    Allow columns to be grouped
    c                 P    || _         d | _        || _        t        |   ||       y r*   )r#   max_outlinedefault_factoryr   r    )r"   r#   	referencers   r&   s       r'   r    zDimensionHolder.__init__   s)    ".O4r(   c                    ||}t        | j                         t              rQ| |   }||_        ||_        t        ||      dd }|D ]
  }|| v s| |=  t        t        ||f      \  |_        |_	        yt        | j                         t              r<t        ||dz         D ])  }| j                  j                  |   }||_        ||_        + yy)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
        N   )
isinstancers   rY   rC   r   r   mapr   r]   r^   rG   ri   r#   row_dimensions)	r"   startendrC   r   new_dimwork_sequencecolumn_letterels	            r'   groupzDimensionHolder.group   s     ;Cd**,o>5kG$1G!#GN/s;AB?M!. , D(]+, (++CeS\'R$GK,,.=E37+ (..77;(5%!'( >r(   c                 0   d }t        d      }t               }t        | j                         |      D ]A  }|j	                         }||j                  |j                         |j                  |       C |rt        |      | _	        t        |      r|S y )Nc                 :    | j                          | j                  S r*   )rf   r]   )r.   s    r'   sorterz'DimensionHolder.to_tree.<locals>.sorter   s    MMO99r(   cols)r-   )r   setsortedvaluesrn   addr   appendr^   rr   len)r"   r   r   outlinesrk   objs         r'   rn   zDimensionHolder.to_tree   s    	 V_5$++-V4 	C++-CS--.		#		 "8}Dr7I r(   )r!   N)Nrv   F)r<   r@   rA   rB   r    r   rn   rD   rE   s   @r'   rp   rp      s    5(6r(   rp   c                       e Zd ZdZ ed      Z ed      Z e       Z e	d      Z
 e	d      Z e	d      Z e	d      Z ed      Z ed      Z	 	 	 	 	 	 	 	 	 ddZy)SheetFormatPropertiessheetFormatPrTr   Nc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y r*   )	baseColWidthdefaultColWidthdefaultRowHeightrJ   
zeroHeightrM   thickBottomoutlineLevelRowoutlineLevelCol)
r"   r   r   r   rJ   r   rM   r   r   r   s
             r'   r    zSheetFormatProperties.__init__  sJ     ). 0($ &..r(   )	   N   NNNNNN)r<   r@   rA   tagnamer
   r   r   r   r   r   rJ   r   rM   r   r   r   r    r1   r(   r'   r   r      s    Gd+Lt,Ow4(L&Jt$H$'K.O.O  !%"$" !!%!%/r(   r   c                   8    e Zd ZdZ e       Z	 ddZed        Zy)SheetDimension	dimensionNc                     || _         y r*   )ref)r"   r   s     r'   r    zSheetDimension.__init__*  s     r(   c                 ,    t        | j                        S r*   )r   r   r>   s    r'   
boundarieszSheetDimension.boundaries0  s    ))r(   r*   )	r<   r@   rA   r   r   r   r    rW   r   r1   r(   r'   r   r   $  s,    G
(C  * *r(   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   rG   rY   rp   r   r   r1   r(   r'   <module>r      s     '  6  ; 5 ; *(P (PV5#9 5#pB+i B+J:o :z!/L !/H*\ *r(   