
    Nqh"                        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y)    )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_idc                 h    t         t        |   ||       || _        || _        || _        || _        y )N)sheetstyle_array)superr   __init__indexr   r   r   )	selfr    r   r   r   	worksheetvisiblestyle	__class__s	           ^/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/openpyxl/worksheet/dimensions.pyr   zDimension.__init__(   s4    i'iU'K
("    c              #   l   K   | j                   D ]!  }t        | |d       }|s|t        |      f # y wN)
__fields__getattrr   )r!   keyvalues      r&   __iter__zDimension.__iter__1   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__8   sQ    \\$..)"kk{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      sW    FJ IEVFd+L.)MI*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   c                     ||}||}|| _         || }|	|	}|| _        || _        t        t        |   ||||
||       y 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   si    & =EB [F$(L  lD*5&,+4iq 	+ 	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     wwd""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4[FvHvH ""# !JB   # #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        |   ||||||	       y 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__   sm     
 [F G$(L"ot-eV\.7% 	. 	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     DJJr'   c                     t        | j                  | j                  g      s"t        | j                        x| _        | _        yy)z6
        Set boundaries for column definition
        N)allrW   rX   r   r    rO   s    r&   reindexzColumnDimension.reindex   s5     DHHdhh'(":4::"FFDHtx )r'   c                 Z    t        |       }|j                         ddhk7  rt        di |S y )NrW   rX   )col)dictkeysr   )r!   attrss     r&   to_treezColumnDimension.to_tree   s0    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    ?GEfGi IHE
T
"C
T
"CI%% )7 7J
 +# "Q<    
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
    c                 X    || _         d | _        || _        t        t        |   ||       y r)   )r"   max_outlinedefault_factoryr   rh   r   )r!   r"   	referencerk   r%   s       r&   r   zDimensionHolder.__init__   s+    ".ot-iIr'   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   )
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;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)   )r`   rW   )r-   s    r&   sorterz'DimensionHolder.to_tree.<locals>.sorter   s    MMO99r'   cols)r,   )r   setsortedvaluesrf   addr   appendrX   rj   len)r!   r|   rx   outlinesrb   objs         r&   rf   zDimensionHolder.to_tree   s    	 V_5$++-V4 	C++-CS--.		#		 "8}Dr7I r'   )r    N)Nrn   F)r8   r9   r:   r;   r   ry   rf   r=   r>   s   @r&   rh   rh      s    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y)SheetFormatPropertiessheetFormatPrTr   Nc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y r)   )	baseColWidthdefaultColWidthdefaultRowHeightrC   
zeroHeightrF   thickBottomoutlineLevelRowoutlineLevelCol)
r!   r   r   r   rC   r   rF   r   r   r   s
             r&   r   zSheetFormatProperties.__init__  sJ     ). 0($ &..r'   )	   N   NNNNNN)r8   r9   r:   tagnamer	   r   r
   r   r   r   rC   r   rF   r   r   r   r   r0   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   rO   s    r&   
boundarieszSheetDimension.boundaries&  s    ))r'   r)   )	r8   r9   r:   r   r   r   r   rQ   r   r0   r'   r&   r   r     s,    G
(C  * *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 ; *$ $N5#9 5#p=+i =+@:o :z!/L !/H*\ *r'   