
    ^b"                     8   d dl m Z  d dlmZ d dl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dS )    )copy)safe_string)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 xZS )	Dimensionz<Information about the display properties of a row or column.)hiddenoutlineLevel	collapsedT
allow_noner   style_idNc                     t          t          |                               ||           || _        || _        || _        || _        d S )N)sheetstyle_array)superr   __init__indexr   r   r   )	selfr    r   r   r   	worksheetvisiblestyle	__class__s	           =lib/python3.11/site-packages/openpyxl/worksheet/dimensions.pyr   zDimension.__init__(   sG    i''iU'KKK
("    c              #   j   K   | j         D ](}t          | |d           }|r|t          |          fV  )d S N)
__fields__getattrr   )r!   keyvalues      r&   __iter__zDimension.__iter__1   sT      ? 	. 	.CD#t,,E .;u------	. 	.r'   c                     |                      | 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__8   sV    \\$.))"k{f%%		r'   )TN)__name__
__module____qualname____doc__r*   r	   r    r   r   r   r   outline_levelr   r$   r   r.   r7   __classcell__r%   s   @r&   r   r      s        FFJ GIIETVVF7d+++LE.))MIE*E <@# # # # # #. . .      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   rA   r   NFc                     ||}||}|| _         || }|	|	}|| _        || _        t          t          |                               ||||
||           d S N)r$   )rA   rE   rF   r   r@   r   )r!   r"   r    rA   rC   rD   rB   r   r   r<   r   r#   heightrspansrE   rF   kwr%   s                     r&   r   zRowDimension.__init__M   s    &  	E 	B 	! [F 	)(L  lD!!**5&,+4iq 	+ 	J 	J 	J 	J 	Jr'   c                     | j         S )z+Always true if there is a style for the row)	has_styler!   s    r&   rB   zRowDimension.customFormatn   s     ~r'   c                     | j         duS )z,Always true if there is a height for the rowN)rA   rO   s    r&   rC   zRowDimension.customHeights   s     wd""r'   )r   NNNNFr   NFNNNNNN)r8   r9   r:   r;   r   r*   r   rJ   rD   r
   rA   rI   r   rE   rF   r   propertyrB   rC   r=   r>   s   @r&   r@   r@   A   s       <<% )A AJgAjA	$			BU4[[FtvvHtvvH ""# !J J J J J JB   X # # X# # # # #r'   r@   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d Z xZS )ColumnDimensionz5Information about the display properties of a column.bestFitTr   )widthrT   customWidthr$   minmaxAFr   Nc                     || _         |
| _        || _        || }||}|| _        ||}|| _        t          t          |                               ||||||	           d S rH   )rU   rW   rX   rT   r   r   rS   r   )r!   r"   r    rU   rT   r   r   r<   r   r$   rW   rX   rV   r#   	auto_sizer%   s                  r&   r   zColumnDimension.__init__   s     
 	! [F 	 G 	)(L"ot$$--eV\.7% 	. 	Q 	Q 	Q 	Q 	Qr'   c                 *    t          | j                  S )z.Always true if there is a width for the column)boolrU   rO   s    r&   rV   zColumnDimension.customWidth   s     DJr'   c                     t          | j        | j        g          s"t          | j                  x| _        | _        dS dS )z6
        Set boundaries for column definition
        N)allrW   rX   r   r    rO   s    r&   reindexzColumnDimension.reindex   sF     DHdh'(( 	G":4:"F"FFDHtxxx	G 	Gr'   c                 p    t          |           }|                                ddhk    rt          di |S d S )NrW   rX   col)rb   )dictkeysr   )r!   attrss     r&   to_treezColumnDimension.to_tree   sD    T

::<<E5>) 	+**E***	+ 	+r'   )r8   r9   r:   r;   r
   rU   r   rT   r   r[   r   r    r	   rW   rX   r   r   r*   r   r   rQ   rV   r`   rf   r=   r>   s   @r&   rS   rS   y   s       ??EGGEdffGi  IFHHE
'T
"
"
"C
'T
"
"
"CI% )7 7J
 +# "Q Q Q Q Q Q<     X 
G G G+ + + + + + +r'   rS   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
    r    Nc                     || _         d | _        || _        t          t          |                               ||           d S r)   )r"   max_outlinedefault_factoryr   rh   r   )r!   r"   	referencerk   r%   s       r&   r   zDimensionHolder.__init__   s@    ".ot$$--iIIIIIr'      Fc                    ||}t          |                                 t                    r`| |         }||_        ||_        t          ||          dd         }|D ]	}|| v r| |= 
t          t          ||f          \  |_        |_	        dS t          |                                 t                    r6t          ||dz             D ]$}| j        j        |         }||_        ||_        #d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
        Nrm   )
isinstancerk   rS   r<   r   r   mapr   rW   rX   r@   ranger"   row_dimensions)	r!   startendr<   r   new_dimwork_sequencecolumn_letterels	            r&   groupzDimensionHolder.group   s     	Cd**,,o>> 	(5kG$1G!#GN/s;;ABB?M!. , , D( ,]+'*+CeS\'R'R$GK,,..== 	(E37++ ( (.7;(5%!'		( 	(( (r'   c                 j   d }t          d          }t                      }t          |                                 |          D ]G}|                                }|/|                    |j                   |                    |           H|rt          |          | _	        t          |          r|S d S )Nc                 8    |                                   | j        S r)   )r`   rW   )r-   s    r&   sorterz'DimensionHolder.to_tree.<locals>.sorter   s    MMOOO9r'   cols)r,   )r   setsortedvaluesrf   addr   appendrX   rj   len)r!   r|   rx   outlinesrb   objs         r&   rf   zDimensionHolder.to_tree   s    	 	 	 V__55$++--V444 	 	C++--C S-...		# 	-"8}}Dr77 	I	 	r'   )r    N)Nrm   F)r8   r9   r:   r;   r   ry   rf   r=   r>   s   @r&   rh   rh      sp         J J J J J J( ( ( (6      r'   rh   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dS )	SheetFormatPropertiessheetFormatPrTr      N   c
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        d S r)   )	baseColWidthdefaultColWidthdefaultRowHeightrC   
zeroHeightrF   thickBottomoutlineLevelRowoutlineLevelCol)
r!   r   r   r   rC   r   rF   r   r   r   s
             r&   r   zSheetFormatProperties.__init__  sP     ). 0($ &..r'   )	r   Nr   NNNNNN)r8   r9   r:   tagnamer	   r   r
   r   r   r   rC   r   rF   r   r   r   r   r0   r'   r&   r   r      s        G7d+++Let,,,Ouww44(((L&&&Jtt$$$H$$'''Kg...Og...O  !%"$" !!%!%/ / / / / /r'   r   c                   F    e Zd ZdZ e            Z	 ddZed             ZdS )SheetDimension	dimensionNc                     || _         d S r)   )ref)r!   r   s     r&   r   zSheetDimension.__init__   s     r'   c                 *    t          | j                  S r)   )r   r   rO   s    r&   
boundarieszSheetDimension.boundaries&  s    )))r'   r)   )	r8   r9   r:   r   r   r   r   rQ   r   r0   r'   r&   r   r     sX        G
&((C     * * X* * *r'   r   N)r   openpyxl.compatr   openpyxl.utilsr   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@   rS   rh   r   r   r0   r'   r&   <module>r      s         ' ' ' ' ' '         
 6 5 5 5 5 5                ; : : : : : 5 5 5 5 5 5 ; ; ; ; ; ; * * * * * *$ $ $ $ $ $ $ $N5# 5# 5# 5# 5#9 5# 5# 5#p=+ =+ =+ =+ =+i =+ =+ =+@: : : : :o : : :z!/ !/ !/ !/ !/L !/ !/ !/H* * * * *\ * * * * *r'   