o
    q¨Êhê±  ã                   @   sî  d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZ ddlT dZe	eeeeeeee
eiZdZedd	… Zd
ZeeeeeeeedœZg d¢Zdd„ Z d�dd„Z!G dd„ de"ƒZ#G dd„ dee#ƒZ$dd„ Z%dd„ Z&G dd„ dee#ƒZ'i dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d	d9“i d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdO“dPdQ“dRdS“dTdU“dVdW“dXdY“dZd[“¥d\d]d^œ¥Z(ddefdd3e	fd5dDefd_d`efdFdTe	fdVdZefdadae	fdbdbe
fdcddefdedfe	fdgdhe	fdidjefgZ)i Z*e)D ]\Z+Z,Z-e.e+e,d ƒD ]Z/e-e*e/< �q?�q3[+[,[-[/e0dkƒZ1i Z2e1e1 3¡  D ]Z4d#e2e4< �qY[4[1i Z5e0dlƒD ]Z4de5e4< �qie0dƒd#e0dmƒd#e0dnƒd#iZ6e0d0ƒde0d\ƒde0dƒde0doƒde0dpƒde0d]ƒdiZ7e 8dq¡j9Z:drds„ Z;efdtdu„Z<dvdw„ Z=dxdy„ Z>dzd{„ Z?d|d}„ Z@d~d„ ZAd€d�„ ZBd‚dƒ„ ZCd„d…„ ZDG d†d‡„ d‡ee#ƒZEG dˆd‰„ d‰ee#ƒZFG dŠd‹„ d‹ee#ƒZGG dŒd�„ d�ee#ƒZHG dŽd�„ d�eƒZIdS )‘z$
Module for formatting information.
é    )Úprint_functionN)Úunpacké   )ÚFDTÚFGEÚFNUÚFTXÚFUNÚXL_CELL_DATEÚXL_CELL_NUMBERÚXL_CELL_TEXTÚ	XL_FORMATÚ
XL_FORMAT2Ú
BaseObjectÚ	XLRDErrorÚfprintfÚunpack_stringÚunpack_unicodeÚupkbitsÚupkbitsL)Ú*)8©r   r   r   ©éÿ   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©r   r   r   ©é€   r   r   ©r   r!   r   ©r   r   r!   ©r!   r!   r   ©r!   r   r!   ©r   r!   r!   ©éÀ   r(   r(   ©r!   r!   r!   ©é™   r+   r   ©r+   é3   éf   ©r   r   éÌ   ©r0   r   r   ©r.   r   r.   ©r   r!   r!   ©r   r.   r0   ©r0   r0   r   r#   r   r   r   r%   r    r&   r   ©r   r0   r   r1   ©r0   r   r0   ©r   r   r+   ©r+   r0   r   ©r   r+   r0   ©r0   r+   r   )éã   r<   r<   ©r-   r.   r   ©r-   r0   r0   ©r+   r0   r   ©r   r0   r   ©r   r+   r   ©r   r.   r   ©r.   r.   r+   ©é–   rE   rE   ©r   r-   r.   ©r-   r+   r.   ©r   r-   r   ©r-   r-   r   ©r+   r-   r   r,   ©r-   r-   r+   ©r-   r-   r-   é   )8r   r   r   r   r   r   r   r   r    r"   r#   r$   r%   r&   r'   r)   r*   r,   r/   r1   r2   r3   r4   r5   r#   r   r   r   r%   r    r&   r   r6   r1   r7   r8   r9   r:   r;   )r   r0   r+   r=   r>   r?   r@   rA   rB   rC   rD   rF   rG   rH   rI   rJ   r,   rK   rL   )éP   éF   é2   é-   é(   é   é   é   )
ÚNormalÚ	RowLevel_Ú	ColLevel_ÚCommaÚCurrencyÚPercentz	Comma [0]zCurrency [0]Ú	HyperlinkzFollowed Hyperlinkc                 C   sœ   i | _ i | _| jsd S tdƒD ]	}t| | j |< qt| j }t|ƒ}t|ƒD ]}|| | j |d < q&d | j |d < d | j |d d < d | j d< d | j d< d S )Né   r   éQ   éÿ  )Ú
colour_mapÚcolour_indexes_usedÚformatting_infoÚxrangeÚexcel_default_palette_b8Údefault_paletteÚbiff_versionÚlen)ÚbookÚiÚdpalÚndpal© rl   úA/var/www/html/env/lib/python3.10/site-packages/xlrd/formatting.pyÚinitialise_colour_mapi   s   

rn   c           
      C   sr   d}d}|   ¡ D ]-\}}|du rqd}t||ƒD ]\}}	|||	 ||	  7 }q||k r5|}|}|dkr5 nq	 |S )z®
    General purpose function. Uses Euclidean distance.
    So far used only for pre-BIFF8 ``WINDOW2`` record.
    Doesn't have to be fast.
    Doesn't have to be fancy.
    i   r   N)ÚitemsÚzipÚprint)
r`   ÚrgbÚdebugÚbest_metricÚbest_colourxÚcolourxÚcand_rgbÚmetricÚv1Úv2rl   rl   rm   Únearest_colour_index�   s    €r{   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	EqNeAttrszš
    This mixin class exists solely so that :class:`Format`, :class:`Font`, and
    :class:`XF` objects can be compared by value of their attributes.
    c                 C   s   | j |j kS ©N©Ú__dict__©ÚselfÚotherrl   rl   rm   Ú__eq__    ó   zEqNeAttrs.__eq__c                 C   s   | j |j kS r}   r~   r€   rl   rl   rm   Ú__ne__£   r„   zEqNeAttrs.__ne__N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rƒ   r…   rl   rl   rl   rm   r|   š   s    r|   c                   @   sP   e Zd ZdZdZdZdZdZdZdZ	dZ
dZedƒZdZdZdZdZdZdZdS )ÚFontz÷
    An Excel "font" contains the details of not only what is normally
    considered a font, but also several other display attributes.
    Items correspond to those in the Excel UI's Format -> Cells -> Font tab.

    .. versionadded:: 0.6.1
    r   Ú é�  N)r†   r‡   rˆ   r‰   ÚboldÚcharacter_setÚcolour_indexÚ
escapementÚfamilyÚ
font_indexÚheightÚitalicÚUNICODE_LITERALÚnameÚ
struck_outÚunderline_typeÚ
underlinedÚweightÚoutlineÚshadowrl   rl   rl   rm   rŠ   ¦   s"    	
rŠ   c                 C   s$   | j sd S td|ƒd | jd _d S )Nú<Hr   éÿÿÿÿ)rb   r   Ú	font_listr�   )rh   Údatarl   rl   rm   Úhandle_efontþ   s   r¡   c              	   C   s®  | j sd S | js|  ¡  tp| jdk}| j}t| jƒ}|dkr4tƒ }t	dƒ|_
||_| j |¡ |d7 }tƒ }||_| j |¡ |dkrœtd|dd… ƒ\|_}|_|_|_|_|_|_|d@ |_|d@ d? |_|d@ d? |_|d	@ d
? |_|d@ d? |_|d@ d? |_|dkr‘t|ddd�|_
n³t|d| jdd�|_
n¨|dkrötd|dd… ƒ\|_}|_|d@ |_|d@ d? |_|d@ d? |_|d	@ d
? |_|d@ d? |_|d@ d? |_t|d| jdd�|_
ddg|j |_d|_|j|_d|_d|_nNtd|dd… ƒ\|_}d|_|d@ |_|d@ d? |_|d@ d? |_|d	@ d
? |_d|_d|_t|d| jdd�|_
ddg|j |_d|_|j|_d|_d|_|�rU|j| jd|j dd� d S d S )Né   é   z
Dummy Fontr   rP   z	<HHHHHBBBr   é   r]   é   rM   é    é   rN   é   ©ÚlenlenrS   z<HHHé   rŒ   i¼  z<HHr_   z--- handle_font: font[%d] ---z-------------------©ÚheaderÚfooter)rb   ÚencodingÚderive_encodingÚDEBUGÚ	verbosityrf   rg   rŸ   rŠ   r•   r–   r’   Úappendr   r“   r�   rš   r�   r˜   r‘   rŽ   r�   r”   r™   r—   r›   rœ   r   r   ÚdumpÚlogfile)rh   r    ÚblahÚbvÚkÚfÚoption_flagsrl   rl   rm   Úhandle_font  s„   

ü



ýÿr»   c                   @   s(   e Zd ZdZdZeZedƒZdd„ Z	dS )ÚFormatz\
    "Number format" information from a ``FORMAT`` record.

    .. versionadded:: 0.6.1
    r   r‹   c                 C   s   || _ || _|| _d S r}   )Ú
format_keyÚtypeÚ
format_str)r�   r½   Útyr¿   rl   rl   rm   Ú__init__d  s   
zFormat.__init__N)
r†   r‡   rˆ   r‰   r½   r	   r¾   r•   r¿   rÁ   rl   rl   rl   rm   r¼   L  s    r¼   ÚGeneralÚ0r¢   z0.00r¥   z#,##0r£   z#,##0.00r§   z$#,##0_);($#,##0)r«   z$#,##0_);[Red]($#,##0)é   z$#,##0.00_);($#,##0.00)r]   z$#,##0.00_);[Red]($#,##0.00)é	   z0%é
   z0.00%é   z0.00E+00é   z# ?/?r¤   z# ??/??r¨   zm/d/yyé   zd-mmm-yyzd-mmmé   zmmm-yyé   z
h:mm AM/PMé   zh:mm:ss AM/PMrU   zh:mmrT   zh:mm:ssé   zm/d/yy h:mmé%   z#,##0_);(#,##0)é&   z#,##0_);[Red](#,##0)é'   z#,##0.00_);(#,##0.00)rR   z#,##0.00_);[Red](#,##0.00)é)   z'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)é*   z*_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)é+   z/_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)é,   z2_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)rQ   zmm:ssé.   z	[h]:mm:ssé/   zmm:ss.0z##0.0E+0ú@)é0   é1   é   é$   rØ   rÙ   rP   é:   é;   é>   éC   rO   éG   r^   Úymdhsz$-+/(): ú#ú?ÚGENERALÚgeneralz	\[[^]]*\]c           	      C   s|  d}d}|D ]C}|dkr(|t dƒkrd}n&|t dƒv rd}n|tv r#n||7 }n|dkr5|t dƒkr4d}n|dkr;d}d|  krFdksIJ ‚ J ‚q| jdkrZtdt|ƒ | jd	� td|ƒ}|tv red
S d}d}d}d }}|D ]}|tv r~|t| 7 }qq|t	v r‰|t	| 7 }qq||kr�d}qq|r–|s–dS |rœ|sœd
S |r®| jrªt
| jd|||ƒ ||kS |sº| jrºt
| jd|ƒ ||kS )Nr   r‹   ú"r   z\_*r¢   r£   z+is_date_format_string: reduced format is %s©ÚfileFú;Tz7WARNING *** is_date_format: ambiguous d=%d n=%d fmt=%r
z/WARNING *** format %r produces constant result
)r•   Úskip_char_dictr²   rq   ÚREPRrµ   Úfmt_bracketed_subÚnon_date_formatsÚdate_char_dictÚnum_char_dictr   )	rh   ÚfmtÚstateÚsÚcÚ	separatorÚgot_sepÚ
date_countÚ	num_countrl   rl   rm   Úis_date_format_stringË  sj   

€

€þûþrø   c                 C   s’  d}| j }|tkrt|dƒ}| js|  ¡  d}|dkr'td|dd… ƒd }n	| j}|dkr0d}|  jd7  _|dkrAt|dƒ}n	t||| jdd�}|pP| j	d	k}|r^t
| jd
| j|||ƒ |  |¡}	ttg|	 }
|dks˜|dk s˜t |t¡}|tk}| j	r˜d|  k rˆdk r˜n n||	A r˜d}t
| jd||ƒ |dkr¦t
| jd|
||	|ƒ t||
|ƒ}|r¼|j| jd| jd f d� || j|< | j |¡ d S )Nr   rS   r¢   rP   r�   r   rN   r©   r¥   z)FORMAT: count=%d fmtkey=0x%04x (%d) s=%r
é£   zHWARNING *** Conflict between std format key %d and its format string %r
z2ty: %d; is_date_c: %r; is_date_s: %r; fmt_strg: %rz--- handle_format [%d] ---)r­   )rf   r   Úminr¯   r°   r   Úactualfmtcountr   r   r²   r   rµ   rø   r   r   Ústd_format_code_typesÚgetr	   r¼   r´   Ú
format_mapÚformat_listr³   )r�   r    Úrectyper±   r·   ÚstrposÚfmtkeyÚunistrgr¶   Ú	is_date_srÀ   Ústd_tyÚ	is_date_cÚfmtobjrl   rl   rm   Úhandle_format
  sZ   

þ
&ýþÿ
r  c                 C   sn  | j sd S tp| jdk}td|d d… ƒ\}d| jdk }ts$| jdkr1||kr1t| jd||ƒ n	|r:t| jd|ƒ d| }d	| d }t|ƒ}d	}||  krV|| ks_n td
||f ƒ‚t||d |… ƒ}	| j	g ksoJ ‚t
|ƒD ]A}
|	|
 }|d@ }|d? d@ }|d? d@ }| jd|
  }|||f}| j	 |¡ || jd|
 < |r´||kr´td|
||f | jd� qsd S )Nr¢   r�   )rM   é8   rP   r   z9NOTE *** Expected %d colours in PALETTE record, found %d
zPALETTE record with %d colours
z<xx%dir£   z0PALETTE record: expected size %d, actual size %dr   r]   rM   z%2d: %r -> %rrç   )rb   r±   r²   r   rf   r   rµ   rg   r   Úpalette_recordrc   r`   r³   rq   )rh   r    r¶   Ú	n_coloursÚexpected_n_coloursrð   Úexpected_sizeÚactual_sizeÚ	toleranceÚcoloursri   ró   ÚredÚgreenÚblueÚold_rgbÚnew_rgbrl   rl   rm   Úhandle_palette>  sH   þÿ
€õr  c                 C   s¢   | j D ]4}|jdkrq|j}|dkrq|| jv rd| j|< q| jr7tdt| jƒ| jd� t	| jd|j|j
|ƒ q| jdkrOt| j ¡ ƒ}td| | jd� d S d S )Nr£   r_   r   zSize of colour table:rç   z2*** Font #%d (%r): colour index 0x%04x is unknown
z
Colour indexes used:
%r
)rŸ   r’   r�   r`   ra   r²   rq   rg   rµ   r   r–   ÚsortedÚkeys)rh   ÚfontÚcxÚusedrl   rl   rm   Úpalette_epilogueb  s$   



ÿ€
þr  c           
   	   C   sj  | j sd S tp| jdk}| j}td|d d… ƒ\}}}|d@ }|dkr3d| jvr3d}d}d}d}	d	}nj|d
@ rRd}t| }	d|  krGdkrQn nT|	t|d ƒ7 }	nKd}d}d}|dkr‰z	t|ddd�}	W n, t	yˆ   t
d||||f | jd� t
dt|dd … ƒ| jd� ‚ w t|d| jdd�}	|r�|	s�t
d| jd� ||f| j|	< |r³t| jd|||||	ƒ d S d S )Nr¢   z<HBBr£   éÿ  s       rV   r   r   r   i €  rN   r©   z6STYLE: built_in=%d xf_index=%d built_in_id=%d level=%drç   z
raw bytes:z7WARNING *** A user-defined style has a zero-length namez?STYLE: built_in=%d xf_index=%d built_in_id=%d level=%d name=%r
)rb   r±   r²   rf   r   Ústyle_name_mapÚbuilt_in_style_namesÚstrr   ÚUnicodeDecodeErrorrq   rµ   Úreprr   r¯   r   )
rh   r    r¶   r·   Úflag_and_xfxÚbuilt_in_idÚlevelÚxf_indexÚbuilt_inr–   rl   rl   rm   Úhandle_stylev  sT   €
ÿÿü
ÿÿr(  c                 C   s~   t |j ¡ ƒ}|D ]3\}}t|dƒrt| ||ƒ q	| d¡dkr<|| jv r+d| j|< q	|jj	}t
d||||f | jd� q	d S )Nr´   r�   r   r   z&*** xf #%d : %s.%s =  0x%04x (unknown)rç   )r  r   ro   ÚhasattrÚcheck_colour_indexes_in_objÚfindr`   ra   Ú	__class__r†   rq   rµ   )rh   ÚobjÚ
orig_indexÚalistÚattrÚnobjÚonamerl   rl   rm   r*  ¡  s    



ÿÿ€ør*  c                 C   sD   t  ¡ D ]}|| jvrt | }t |¡}t|||ƒ}|| j|< qd S r}   )rü   r  rþ   Ústd_format_stringsrý   r¼   )rh   ÚxrÀ   Úfmt_strr  rl   rl   rm   Úfill_in_standard_formats®  s   


€ør6  c           "      C   s  t p| jdk}| j}tƒ }tƒ |_d|j_d|j_d|j_t	ƒ |_
d|j
_d|j
_d|j
_d|j
_tƒ |_tƒ |_|dkrD| jsDt| ƒ |dkr¹d}t||dd… ƒ\
|_|_}}|j_}}	}
}}t|j|dƒ t||dƒ t|j|d	ƒ t|j|d
ƒ |	d? }g d¢}|D ]}d| d }t|||d@ ƒ |dL }q†t|j
|
dƒ t|j
|dƒ t|j|dƒ t|j|dƒ �nÉ|dk�r(d}t||dd… ƒ\|_|_}}}}
}t|j|dƒ t||dƒ t|j|d	ƒ |d@ }g d¢| |j_|d? }g d¢}|D ]}d| d }t|||d@ ƒ |dL }qüt|j|
dƒ t|j
|
dƒ t|j
|dƒ �nZ|dk�r’d}t||dd… ƒ\|_|_}}}	}}t|j|dƒ t||dƒ t|j|dƒ |d@ d? }g d¢| |j_|	d? }g d¢}|D ]}d| d }t|||d@ ƒ |dL }�qmt|j|d ƒ t|j
|d!ƒ nð|d"k�rüd#}t||dd… ƒ\|_|_}}	}}}t|j|dƒ t||d$ƒ t|j|d%ƒ t||d&ƒ |	d? }g d¢}|D ]}d| d }t|||d@ ƒ |dL }�qÏt|j|d ƒ t|j
|d!ƒ d|j_d|j_n†|d'k�r|td(|ƒ\|_}}|d)@ |_t|j|d*ƒ t|j|d+ƒ d,D ]%\}}||@ �r-d-\}}nd.\}}t|j
|d/ |ƒ t|j
|d0 |ƒ �q|j}|d1@ �rQd2|_nd|_d3|_d4|_d|_ d|j_d|j_g d¢}|D ]}d| d }t||dƒ �qknt!d5| ƒ‚t"| j#ƒ|_$| j# %|¡ |  jd7  _|�r¤|j&| j'd6|j$ d7d8� z| j(|j }t)|j* } W n t+�y½   t,} Y nw | | j-|j$< | j.�ré| j�râ|j/�râ|j d9k�râd:}!t0| j'|!|j$|j ƒ t1| ||j$ƒ |j| j(v�rd;}!| j�rt0| j'|!|j$|j|jƒ d|_d S d S )<Nr¥   r   rP   rN   z<HHHBBBBIiHrU   ))r   r   Úcell_locked)r   r¢   Úformula_hidden)©r¢   r£   Úis_style©r¥   r]   Úlotus_123_prefix©r£   iðÿ  Úparent_style_index)©r   rÄ   Ú	hor_align©r¥   r]   Útext_wrapped)r£   ép   Ú
vert_align))r   rÉ   Úindent_level)r£   rM   Úshrink_to_fit)r«   r(   Útext_directionr¢   )Úformatr  Ú	alignmentÚborderÚ
backgroundÚ
protectionÚ_Ú_flagr   ))r   rÉ   Úleft_line_style)r£   éð   Úright_line_style)r]   i   Útop_line_style)rÈ   i ð  Úbottom_line_style©rM   i   Úleft_colour_index©é   i  €?Úright_colour_index)rS   i   @Ú	diag_down)é   l        Údiag_up))r   é   Útop_colour_index)rÄ   é€?  Úbottom_colour_index)r¨   i À Údiag_colour_index)rT   i  àÚdiag_line_style))é   l      x Úfill_pattern)©r   r\  Úpattern_colour_index©rÄ   r^  Úbackground_colour_indexz<HHHBBIirM   )r   r   éZ   é´   )rd  rf  )rM   i  ? rc  ))rÍ   i  ÀrS  )é   l      | r_  )©r   rÄ   rR  )r¥   r	  rO  )r«   iÀ  rQ  )rÅ   i þ  r]  rT  rV  rR   z<BBHBBHIrÈ   )r?  rA  )r£   rØ   rD  r(   r«   ))r   é?   rc  )r«   iÀ  re  )rÇ   é ø  rg  )rk  )r¥   éø   r]  )r]   i   rO  )rÇ   rm  rU  )rM   i   rS  )rÌ   i  ø r_  )é   i   rQ  )rÚ   l      p rX  rS   z<BBBBHHI)r9  r;  )r?  rA  )r=  rT   z<BxBBrl  ))r«   é@   r7  )rÄ   r!   r8  )r?  ))r]   Úleft)rM   Úright)r¦   Útop)rp  Úbottom)r]   r   )r   r   Ú_colour_indexÚ_line_styler!   rÊ   rÅ   r]   zprogrammer stuff-up: bv=%dz--- handle_xf: xf[%d] ---ú r¬   r  zNWARNING *** XF[%d] is a style XF but parent_style_index is 0x%04x, not 0x0fff
z9WARNING *** XF[%d] unknown (raw) format key (%d, 0x%04x)
)2r±   r²   rf   ÚXFÚXFAlignmentrI  rE  rF  rG  ÚXFBorderrJ  r[  rY  r`  ra  ÚXFBackgroundrK  ÚXFProtectionrL  Úxfcountr6  r   r’   r½   Úrotationr   Úsetattrr   rD  rc  rg  re  r>  r   rg   Úxf_listr&  r³   r´   rµ   rþ   Ú_cellty_from_fmttyr¾   ÚKeyErrorr   Ú_xf_index_to_xl_type_maprb   r:  r   r*  )"r�   r    r¶   r·   ÚxfÚ
unpack_fmtÚpkd_type_parÚ
pkd_align1Ú
pkd_align2Úpkd_usedÚpkd_brdbkg1Úpkd_brdbkg2Úpkd_brdbkg3ÚregÚ
attr_stemsÚ	attr_stemr0  Úpkd_orient_usedÚorientationÚpkd_align_orientÚ
pkd_bkg_34Ú
pkd_brd_34Úpkd_type_protÚpkd_align_parÚ
format_etcÚ
halign_etcÚmaskÚsider�   Ú
line_styleÚbgrð   ÚcelltyÚmsgrl   rl   rm   Ú	handle_xf¹  s4  ü




ü


ü


ü







þýÿÿ
ûrŸ  c           
      C   s~  d| _ t| jƒ}tp| jdk}tp| jdk}|rt| jdƒ dd„ }t|ƒD �]}| j| }z| j|j	 }t
|j }W n tyF   t}Y nw || j|j< | jsQq&|jrUq&d|j  kr`|k srn |rot| jd|j|j|jƒ d|_| jdk�r<|rœ|j|jkr‹t| jd	|j|jƒ n| j|j jsœt| jd
|j|jƒ |r®|j|jkr®t| jd|j|jƒ | j|j }	|jsÃ|	jsÃ|rÃ|| ||	dƒ |jsÒ|	jsÒ|rÒ|| ||	dƒ |jsá|	jsá|rá|| ||	dƒ |jsð|	jsð|rð|| ||	dƒ |j�s|	j�s|�r|j	|	j	k�rt| jd|j|j	|	j|	j	| j|j	 j| j|	j	 jƒ |j�s<|	j�s<|�r<|j|	jk�r<t| jd|j|j|	j|	jƒ q&d S )Nr   r¥   zxf_epilogue called ...
c                 S   s2   t ||ƒt ||ƒkrt| jd|j|j|ƒ d S d S )Nz(NOTE !!! XF[%d] parent[%d] %s different
)Úgetattrr   rµ   r&  )Úbook_argÚxf_argÚ
parent_argr0  rl   rl   rm   Ú
check_sameþ  s   
þÿzxf_epilogue.<locals>.check_samer   z:WARNING *** XF[%d]: is_style=%d but parent_style_index=%d
rS   z/NOTE !!! XF[%d]: parent_style_index is also %d
z>NOTE !!! XF[%d]: parent_style_index is %d; style flag not set
z9NOTE !!! XF[%d]: parent_style_index is %d; out of order?
rI  rK  rJ  rL  z4NOTE !!! XF[%d] fmtk=%d, parent[%d] fmtk=%r
%r / %r
z.NOTE !!! XF[%d] fontx=%d, parent[%d] fontx=%r
)Ú_xf_epilogue_donerg   r€  r±   r²   r   rµ   rc   rþ   r½   r�  r¾   r‚  r   rƒ  r&  rb   r:  r>  rf   Ú_alignment_flagÚ_background_flagÚ_border_flagÚ_protection_flagÚ_format_flagr¿   Ú
_font_flagr’   )
r�   Únum_xfsr¶   Úblah1r¤  Úxfxr„  rð   r�  Úparentrl   rl   rm   Úxf_epilogueõ  sŠ   

ÿþþþþüþ€Ër°  c              	   C   sB   t | ƒ d| _tttttttt	t
f	}|D ]
}t| j|j|ƒ qd S )Nr   )rn   r¥  r»   r¡   r  rø   r  r  r(  rŸ  r°  r  r,  r†   )rh   ÚmethodsÚmethodrl   rl   rm   Úinitialise_book>  s   ÷ÿr³  c                   @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdS )rz  ao  
    A collection of the border-related attributes of an ``XF`` record.
    Items correspond to those in the Excel UI's Format -> Cells -> Border tab.

    An explanations of "colour index" is given in :ref:`palette`.

    There are five line style attributes; possible values and the
    associated meanings are::

      0 = No line,
      1 = Thin,
      2 = Medium,
      3 = Dashed,
      4 = Dotted,
      5 = Thick,
      6 = Double,
      7 = Hair,
      8 = Medium dashed,
      9 = Thin dash-dotted,
      10 = Medium dash-dotted,
      11 = Thin dash-dot-dotted,
      12 = Medium dash-dot-dotted,
      13 = Slanted medium dash-dotted.

    The line styles 8 to 13 appear in BIFF8 files (Excel 97 and later) only.
    For pictures of the line styles, refer to OOo docs s3.10 (p22)
    "Line Styles for Cell Borders (BIFF3-BIFF8)".</p>

    .. versionadded:: 0.6.1
    r   N)r†   r‡   rˆ   r‰   r]  r_  rU  rX  r`  rR  rS  rO  rQ  ra  rY  r[  rl   rl   rl   rm   rz  O  s     rz  c                   @   s   e Zd ZdZdZdZdZdS )r{  a  
    A collection of the background-related attributes of an ``XF`` record.
    Items correspond to those in the Excel UI's Format -> Cells -> Patterns tab.

    An explanations of "colour index" is given in :ref:`palette`.

    .. versionadded:: 0.6.1
    r   N)r†   r‡   rˆ   r‰   rc  rg  re  rl   rl   rl   rm   r{  ’  s
    
r{  c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
dS )ry  zÂ
    A collection of the alignment and similar attributes of an ``XF`` record.
    Items correspond to those in the Excel UI's Format -> Cells -> Alignment tab.

    .. versionadded:: 0.6.1
    r   N)r†   r‡   rˆ   r‰   r@  rD  r~  rB  rE  rF  rG  rl   rl   rl   rm   ry  ¦  s    ry  c                   @   s   e Zd ZdZdZdZdS )r|  ad  
    A collection of the protection-related attributes of an ``XF`` record.
    Items correspond to those in the Excel UI's Format -> Cells -> Protection tab.
    Note the OOo docs include the "cell or style" bit in this bundle of
    attributes. This is incorrect; the bit is used in determining which bundles
    to use.

    .. versionadded:: 0.6.1
    r   N)r†   r‡   rˆ   r‰   r7  r8  rl   rl   rl   rm   r|  È  s    r|  c                   @   sL   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZdS )rx  a¿  
    eXtended Formatting information for cells, rows, columns and styles.

    Each of the 6 flags below describes the validity of
    a specific group of attributes.

    In cell XFs:

    - ``flag==0`` means the attributes of the parent style ``XF`` are
      used, (but only if the attributes are valid there);

    - ``flag==1`` means the attributes of this ``XF`` are used.

    In style XFs:

    - ``flag==0`` means the attribute setting is valid;
    - ``flag==1`` means the attribute should be ignored.

    .. note::
      the API provides both "raw" XFs and "computed" XFs. In the latter case,
      cell XFs have had the above inheritance mechanism applied.

    .. versionadded:: 0.6.1
    r   N)r†   r‡   rˆ   r‰   r:  r>  rª  r«  r¦  r¨  r§  r©  r&  r’   r½   rL  rK  rI  rJ  rl   rl   rl   rm   rx  Û  s"    rx  )r   )Jr‰   Ú
__future__r   ÚreÚstructr   Úbiffhr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Útimemachiner±   r�  Úexcel_default_palette_b5Úexcel_default_palette_b2rd   re   r  rn   r{   Úobjectr|   rŠ   r¡   r»   r¼   r3  Úfmt_code_rangesrü   ÚloÚhirÀ   rc   r4  r•   Ú
date_charsrî   ÚupperÚ_crê   rï   rí   ÚcompileÚsubrì   rø   r  r  r  r(  r*  r6  rŸ  r°  r³  rz  r{  ry  r|  rx  rl   rl   rl   rm   Ú<module>   sB  Lûø
XIüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ù-ñÿýú	?4$+  >IC"