U
    d                  %   @   sn  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ddddddddddg
Zdd Z dd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'd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdH$Z(ddefddIe	fdJdKefdLdMefdNdOe	fdPdQefdRdRe	fdSdSe
fdTdUefdVdWe	fdXdYe	fdZd[efgZ)i Z*e)D ]*\Z+Z,Z-e.e+e,d D ]Z/e-e*e/< qq[+[,[-[/e0d\Z1i Z2e1e13  D ]Z4d]e2e4< q2[4[1i Z5e0d^D ]Z4de5e4< qRe0d%d]e0d_d]e0d`d]iZ6e0d/de0dFde0d$de0dade0dbde0dGdiZ7e8dcj9Z:ddde Z;efdfdgZ<dhdi Z=djdk Z>dldm Z?dndo Z@dpdq ZAdrds ZBdtdu ZCdvdw ZDG dxdy dyee#ZEG dzd{ d{ee#ZFG d|d} d}ee#ZGG d~d dee#ZHG dd de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   -   (            NormalZ	RowLevel_Z	ColLevel_ZCommaZCurrencyZPercentz	Comma [0]zCurrency [0]Z	HyperlinkzFollowed Hyperlinkc                 C   s   i | _ i | _| jsd S tdD ]}t| | j |< qt| j }t|}t|D ]}|| | j |d < qLd | 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iZdpalZndpal rd   3/tmp/pip-unpacked-wheel-zwq1az3t/xlrd/formatting.pyinitialise_colour_mapi   s    

rf   c           
      C   s   d}d}|   D ]Z\}}|dkr"qd}t||D ]\}}	|||	 ||	  7 }q0||k r|}|}|dkr qlqdr|rtd||| | |f  |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   Nz:nearest_colour_index for %r is %r -> %r; best_metric is %d)itemszipprint)
rZ   ZrgbdebugZbest_metricZbest_colourxZcolourxZcand_rgbZmetricZv1Zv2rd   rd   re   nearest_colour_index   s$    rk   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otherrd   rd   re   __eq__   s    zEqNeAttrs.__eq__c                 C   s   | j |j kS rm   rn   rp   rd   rd   re   __ne__   s    zEqNeAttrs.__ne__N)__name__
__module____qualname____doc__rs   rt   rd   rd   rd   re   rl      s   rl   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)ru   rv   rw   rx   boldcharacter_setcolour_index
escapementfamily
font_indexheightitalicUNICODE_LITERALname
struck_outunderline_type
underlinedweightoutlineshadowrd   rd   rd   re   ry      s    	ry   c                 C   s$   | j s
d S td|d | jd _d S )N<Hr   )r\   r   	font_listr~   )rb   datard   rd   re   handle_efont  s    r   c              	   C   s  | j s
d S | js|   tp$| jdk}| j}t| j}|dkrht }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|_
nR|dkrt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|_nt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|_|r|j| jd|j dd d S )N      z
Dummy Fontr   rP   z	<HHHHHBBBr      rW      rM          rN      ZlenlenrS   z<HHH   r{   i  z<HHrY   z--- handle_font: font[%d] ---z-------------------headerfooter)r\   encodingderive_encodingDEBUG	verbosityr`   ra   r   ry   r   r   r   appendr   r   r~   r   r   r   r   r}   r|   r   r   r   r   r   r   r   dumplogfile)rb   r   blahbvkfZoption_flagsrd   rd   re   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   rz   c                 C   s   || _ || _|| _d S rm   )
format_keytype
format_str)rq   r   tyr   rd   rd   re   __init__g  s    zFormat.__init__N)
ru   rv   rw   rx   r   r	   r   r   r   r   rd   rd   rd   re   r   O  s
   r   ZGeneral0z0.00z#,##0z#,##0.00z$#,##0_);($#,##0)z$#,##0_);[Red]($#,##0)z$#,##0.00_);($#,##0.00)z$#,##0.00_);[Red]($#,##0.00)z0%z0.00%z0.00E+00z# ?/?z# ??/??zm/d/yyzd-mmm-yyzd-mmmzmmm-yyz
h:mm AM/PMzh:mm:ss AM/PMzh:mmzh:mm:sszm/d/yy h:mmz#,##0_);(#,##0)z#,##0_);[Red](#,##0)z#,##0.00_);(#,##0.00)z#,##0.00_);[Red](#,##0.00)z'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)z*_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)z/_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)z2_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)zmm:ssz	[h]:mm:sszmm:ss.0z##0.0E+0@)$r   r   r   r   r   r   r      rW   	   
         r   r      rM            rU   rT      %   &   '   rR   )   *   +   ,   rQ   .   /   0   1   r   r   r      $   r   r   rQ   r   r   r   rP   :   ;   >   C   rO   G   rX   Zymdhsr   z$-+/(): #?ZGENERALZgeneralz	\[[^]]*\]c           	      C   s  d}d}|D ]}|dkrP|t dkr*d}qv|t dkr<d}qv|tkrFqv||7 }n&|dkrj|t dkrvd}n|dkrvd}d|  krdksn tq| jdkrtdt| | jd	 td|}|tkrd
S d}d}d}d }}|D ]>}|t	kr|t	| 7 }q|t
kr|t
| 7 }q||krd}q|r0|s0dS |r@|s@d
S |rb| jr~t| jd||| n|s~| jr~t| jd| ||kS )Nr   rz   "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_dictAssertionErrorr   ri   ZREPRr   fmt_bracketed_subnon_date_formatsdate_char_dictnum_char_dictr   )	rb   fmtstatesc	separatorZgot_sepZ
date_countZ	num_countrd   rd   re   is_date_format_string  sh    




  r   c                 C   s  d}| j }|tkrt|d}| js*|   d}|dkrNtd|dd d }n| j}|dkr`d}|  jd7  _|dkrt|d}nt||| jdd}|p| j	d	k}|rt
| 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rZt
| 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   )r`   r   minr   r   r   Zactualfmtcountr   r   r   r   r   r   r   r   std_format_code_typesgetr	   r   r   
format_mapformat_listr   )rq   r   Zrectyper   r   ZstrposZfmtkeyZunistrgr   Z	is_date_sr   Zstd_tyZ	is_date_cfmtobjrd   rd   re   handle_format  sh    
   
. 
   
r   c                 C   sn  | j s
d S tp| jdk}td|d d \}d| jdk }tsH| jdkrb||krbt| jd|| n|rtt| jd| d| }d	| d }t|}d	}||  kr|| ksn td
||f t||d | }	| j	g kst
t|D ]}
|	|
 }|d@ }|d? d@ }|d? d@ }| jd|
  }|||f}| j	| || jd|
 < |r||krtd|
||f | jd qd 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   rW   rM   z%2d: %r -> %rr   )r\   r   r   r   r`   r   r   ra   r   Zpalette_recordr   r]   rZ   r   ri   )rb   r   r   Z	n_coloursZexpected_n_coloursr   Zexpected_sizeZactual_sizeZ	toleranceZcoloursrc   r   ZredZgreenZblueZold_rgbZnew_rgbrd   rd   re   handle_paletteA  sH      
r   c                 C   s   | j D ]h}|jdkrq|j}|dkr&q|| jkr<d| j|< q| jrtdt| j| jd t	| jd|j|j
| q| jdkrt| j }td| | jd d S )Nr   rY   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~   rZ   r[   r   ri   ra   r   r   r   sortedkeys)rb   fontZcxusedrd   rd   re   palette_epiloguee  s$    


  
r   c           
   	   C   sx  | j s
d S tp| jdk}| j}td|d d \}}}|d@ }|dkrfd| jkrfd}d}d}d}	d	}n|d
@ rd}t| }	d|  krdkrn n|	t|d 7 }	nd}d}d}|dkrzt|ddd}	W nN t	k
r   t
d||||f | jd t
dt|dd  | jd  Y nX nt|d| jdd}	|rJ|	sJt
d| jd ||f| j|	< |rtt| jd|||||	 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
)r\   r   r   r`   r   Zstyle_name_mapbuilt_in_style_namesstrr   UnicodeDecodeErrorri   r   reprr   r   r   )
rb   r   r   r   Zflag_and_xfxZbuilt_in_idlevelxf_indexZbuilt_inr   rd   rd   re   handle_styley  sV    


    r   c                 C   s~   t |j }|D ]f\}}t|dr2t| || q|ddkr|| jkrVd| 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   ro   rg   hasattrcheck_colour_indexes_in_objfindrZ   r[   	__class__ru   ri   r   )rb   objZ
orig_indexalistattrZnobjZonamerd   rd   re   r     s    



r   c                 C   sD   t  D ]6}|| jkrt | }t|}t|||}|| j|< qd S rm   )r   r   r   std_format_stringsr   r   )rb   xr   Zfmt_strr   rd   rd   re   fill_in_standard_formats  s    

r   c           "      C   sJ  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r| jst|  |dkr~d}t||dd \
|_|_}}|j_}}	}
}}t|j|d t||d t|j|d	 t|j|d
 |	d? }ddddddg}|D ]*}d| d }t|||d@  |dL }qt|j
|
d t|j
|d t|j|d t|j|d n|dkrjd}t||dd \|_|_}}}}
}t|j|d t||d t|j|d	 |d@ }ddddg| |j_|d? }ddddddg}|D ]*}d| d }t|||d@  |dL }qt|j|
d t|j
|
d t|j
|d  n|d!krLd"}t||dd# \|_|_}}}	}}t|j|d t||d t|j|d$ |d%@ d&? }ddddg| |j_|	d? }ddddddg}|D ]*}d| d }t|||d@  |dL }q t|j|d' t|j
|d( n|d)kr*d*}t||dd# \|_|_}}	}}}t|j|d t||d+ t|j|d, t||d- |	d? }ddddddg}|D ]*}d| d }t|||d@  |dL }qt|j|d' t|j
|d( d|j_d|j_n|d.kr2td/|\|_}}|d0@ |_t|j|d1 t|j|d2 d3D ]J\}}||@ rd4\}}nd5\}}t|j
|d6 | t|j
|d7 | qp|j}|d8@ rd9|_nd|_d:|_d;|_d|_ d|j_d|j_ddddddg}|D ]}d| d }t||d qnt!d<| t"| j#|_$| j#%| |  jd7  _|r|j&| j'd=|j$ d>d? z| j(|j }t)|j* } W n t+k
r   t,} Y nX | | j-|j$< | j.r| jr |j/r |j d@kr dA}!t0| j'|!|j$|j  t1| ||j$ |j| j(krFdB}!| jr@t0| j'|!|j$|j|j d|_d S )CNr   r   rP   rN   z<HHHBBBBIiHrU   ))r   r   cell_locked)r   r   formula_hidden)r   r   is_styler   rW   Zlotus_123_prefixr   i  parent_style_index)r   r   	hor_alignr   rW   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)rW   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   Z      )r,  r.  )rM   i  ? r+  ))r   i  r  )   l      | r'  )r   r   r  )r   r   r  )r   i  r  )r   i   r%  r  r  rR   z<BBHBBHIr   )r  r	  )r   r   r  r(   r   ))r   ?   r+  )r   i  r-  )r      r/  )r3  )r      r%  )rW   i   r  )r   r5  r  )rM   i   r  )r   i   r'  )   i   r  )r   l      p r   rS   z<BBBBHHI)r  r  )r  r	  )r  rT   z<BxBBr4  ))r   @   r   )r   r!   r  )r  ))rW   left)rM   right)r   top)r8  Zbottom)rW   r   )r   r   Z_colour_indexZ_line_styler!   r   r   rW   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   r`   XFXFAlignmentr  r  r  r  XFBorderr  r#  r!  r(  r)  XFBackgroundr  XFProtectionr  Zxfcountr   r   r   r   rotationr   setattrr   r  r+  r/  r-  r  r   ra   xf_listr   r   r   r   r   _cellty_from_fmttyr   KeyErrorr   _xf_index_to_xl_type_mapr\   r  r   r   )"rq   r   r   r   xfZ
unpack_fmtZpkd_type_parZ
pkd_align1Z
pkd_align2Zpkd_usedZpkd_brdbkg1Zpkd_brdbkg2Zpkd_brdbkg3regZ
attr_stemsZ	attr_stemr   Zpkd_orient_usedZorientationZpkd_align_orientZ
pkd_bkg_34Z
pkd_brd_34Zpkd_type_protZpkd_align_parZ
format_etcZ
halign_etcmaskZsider~   Z
line_stylebgr   celltymsgrd   rd   re   	handle_xf  s   
       

    
    

    






  rN  c           
      C   s  d| _ t| j}tp| jdk}tp*| jdk}|r<t| jd dd }t|D ]D}| j| }z| j|j	 }t
|j }W n tk
r   t}Y nX || j|j< | jsqL|jrqLd|j  kr|k sn |rt| jd|j|j|j d|_| jdkrL|r>|j|jkrt| jd	|j|j n$| j|j js>t| jd
|j|j |rf|j|jkrft| 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sZ|	jsZ|rZ|j	|	j	krZt| jd|j|j	|	j|	j	| j|j	 j| j|	j	 j |jsL|	jsL|rL|j|	jkrLt| jd|j|j|	j|	j qLd S )Nr   r   zxf_epilogue called ...
c                 S   s.   t ||t ||kr*t| jd|j|j| d S )Nz(NOTE !!! XF[%d] parent[%d] %s different
)getattrr   r   r   )Zbook_argZxf_argZ
parent_argr   rd   rd   re   
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?
r  r  r  r  z4NOTE !!! XF[%d] fmtk=%d, parent[%d] fmtk=%r
%r / %r
z.NOTE !!! XF[%d] fontx=%d, parent[%d] fontx=%r
)_xf_epilogue_donera   rD  r   r   r   r   r]   r   r   rE  r   rF  r   rG  r   r\   r  r  r`   _alignment_flag_background_flag_border_flag_protection_flag_format_flagr   
_font_flagr   )
rq   Znum_xfsr   Zblah1rP  ZxfxrH  r   rL  parentrd   rd   re   xf_epilogue  s    


  
             rY  c              	   C   sB   t |  d| _tttttttt	t
f	}|D ]}t| j|j| q(d S )Nr   )rf   rQ  r   r   r   r   r   r   r   rN  rY  rC  r   ru   )rb   methodsmethodrd   rd   re   initialise_bookA  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 )r?  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)ru   rv   rw   rx   r%  r'  r  r   r(  r  r  r  r  r)  r!  r#  rd   rd   rd   re   r?  R  s    r?  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)ru   rv   rw   rx   r+  r/  r-  rd   rd   rd   re   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 )r>  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)ru   rv   rw   rx   r  r  rB  r
  r  r  r  rd   rd   rd   re   r>    s   r>  c                   @   s   e Zd ZdZdZdZdS )rA  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)ru   rv   rw   rx   r   r  rd   rd   rd   re   rA    s   rA  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 )r=  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)ru   rv   rw   rx   r  r  rV  rW  rR  rT  rS  rU  r   r   r   r  r  r  r  rd   rd   rd   re   r=    s    r=  )r   )Jrx   
__future__r   restructr   Zbiffhr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Ztimemachiner   rE  Zexcel_default_palette_b5Zexcel_default_palette_b2r^   r_   r   rf   rk   objectrl   ry   r   r   r   r   Zfmt_code_rangesr   lohir   r]   r   r   Z
date_charsr   upperZ_cr   r   r   compilesubr   r   r   r   r   r   r   r   rN  rY  r\  r?  r@  r>  rA  r=  rd   rd   rd   re   <module>   s(  L     
[I!-         	?4$+  >IC"