
J]c           @   s`  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l	 m Z d  d l m Z d d l m Z d d	 l m Z d d
 l m Z m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d d l m! Z! d d l m" Z" d d l m# Z# d d l m$ Z$ d d l m% Z% d d l m& Z& d d l' m( Z( d   Z) d   Z* d   Z+ e d d  Z, e d  d!  Z- e d" d#  Z. e d$ d%  Z/ e d& d'  Z0 e d( d)  Z1 d* e j f d+     YZ2 d S(,   iN(   t   defaultdict(   t
   namedtuple(   t   isnan(   t   isinf(   t   warni   (   t   StringIO(   t   force_unicode(   t	   num_typest	   str_types(   t	   xmlwriter(   t   Format(   t   Drawing(   t   Shape(   t	   XMLwriter(   t   xl_rowcol_to_cell(   t   xl_rowcol_to_cell_fast(   t   xl_cell_to_rowcol(   t   xl_col_to_name(   t   xl_range(   t   xl_color(   t   get_sparkline_style(   t   supported_datetime(   t   datetime_to_excel_datetime(   t   quote_sheetname(   t   DuplicateTableNamec            s     f d   } | S(   sn   
    Decorator function to convert A1 notation in cell method calls
    to the default row/col notation.

    c            se   y' t  |  r& | d } t |  n  Wn+ t k
 rT t |  } | | d } n X  |  | |  S(   Ni    i   (   t   lent   intt
   ValueErrorR   (   t   selft   argst   kwargst	   first_argt   new_args(   t   method(    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   cell_wrapper9   s    
(    (   R!   R"   (    (   R!   s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   convert_cell_args3   s    c            s     f d   } | S(   so   
    Decorator function to convert A1 notation in range method calls
    to the default row/col notation.

    c   
         s   y! t  |  r  t | d  n  Wn t k
 r d | d k r | d j d  \ } } t |  \ } } t |  \ } } n# t | d  \ } } | | } } | | | | g }	 |	 j | d  |	 } n X  |  | |  S(   Ni    t   :i   (   R   R   R   t   splitR   t   extend(
   R   R   R   t   cell_1t   cell_2t   row_1t   col_1t   row_2t   col_2R    (   R!   (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR"   P   s    
(    (   R!   R"   (    (   R!   s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   convert_range_argsJ   s    c            s     f d   } | S(   sq   
    Decorator function to convert A1 notation in columns method calls
    to the default row/col notation.

    c   
         s   y! t  |  r  t | d  n  Wn t k
 r g  | d j d  D] } | d ^ qE \ } } t |  \ } } t |  \ } } | | g }	 |	 j | d  |	 } n X  |  | |  S(   Ni    R$   t   1i   (   R   R   R   R%   R   R&   (
   R   R   R   t   colR'   R(   t   _R*   R,   R    (   R!   (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   column_wrappero   s    0
(    (   R!   R1   (    (   R!   s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   convert_column_argsi   s    t   Strings   string, formatt   Numbers   number, formatt   Blankt   formatt   Booleans   boolean, formatt   Formulas   formula, format, valuet   ArrayFormulas   formula, format, value, ranget	   Worksheetc           B   s	  e  Z d  Z d   Z d   Z e d    Z d   Z e e d   Z	 e d  Z
 e e d   Z e d  Z e e d	   Z e d
  Z e e d d   Z e d d  Z e e d d   Z e d d  Z e e d   Z e d  Z e e d   Z e d  Z e e e e d   Z e e e d  Z e d    Z d   Z d   Z e e d   Z e e d   Z e e d   Z e e d   Z  e e d   Z! e e d   Z" d   Z# d    Z$ d!   Z% d"   Z& d#   Z' d$   Z( d%   Z) e* e e e d&   Z+ e e e d'  Z, e e- d(  Z. e e d)   Z/ e d*    Z0 d+   Z1 d,   Z2 e e d-   Z3 e e d.   Z4 e e d/   Z5 e e d0   Z6 e d1    Z7 d2 d2 d2 d d3  Z8 e e e d d4   Z9 e e e d5   Z: d6 d7  Z; d8   Z< d9   Z= d:   Z> d; e d<  Z? e e d=   Z@ d>   ZA d?   ZB d@   ZC dA   ZD dB   ZE dC   ZF dD dD dE dE dF  ZG d; e e dG  ZH d; e e dH  ZI e dI  ZJ e* e dJ   ZK d2 dK  ZL dL   ZM dM   ZN e dN    ZO dO   ZP dP   ZQ dQ   ZR dR   ZS dS   ZT dT   ZU e dU  ZV dV   ZW dW   ZX e- e- dX  ZY dY   ZZ dZ   Z[ d[   Z\ d\   Z] d]   Z^ d^   Z_ d_   Z` d`   Za da   Zb db   Zc dc   Zd dd   Ze de   Zf d df  Zg d dg  Zh dh   Zi di   Zj dj   Zk dk   Zl dl   Zm dm   Zn dn   Zo do   Zp dp   Zq dq   Zr dr   Zs ds   Zt dt   Zu du   Zv dv   Zw dw   Zx dx   Zy e dy  Zz dz   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 d  Z d   Z e e- d  Z e 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 e e e d  Z e e e 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   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   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   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s=   
    A class for writing the Excel XLSX Worksheet file.

    c         C   s  t  t |   j   d |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 t
 |  _ g  |  _ d |  _ d |  _ t
 |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ i  |  _ g  |  _ d |  _ d |  _ d |  _ g  |  _ d |  _ d |  _ t
 |  _ d |  _  d |  _! t
 |  _" t
 |  _# t
 |  _$ t
 |  _% t& |  _' t
 |  _( t
 |  _) t
 |  _* d |  _+ d |  _, t& |  _- t& |  _. g  |  _/ g  |  _0 g  |  _1 d	 |  _2 d	 |  _3 d
 |  _4 d
 |  _5 d |  _6 d |  _7 d |  _8 d |  _9 d |  _: d |  _; d |  _< d |  _= d |  _> d |  _? d |  _@ d |  _A d |  _B g  |  _C g  |  _D i  |  _E i  |  _F tG tH  |  _I d |  _J d |  _K d |  _L d |  _M d |  _N d |  _O d |  _P d |  _Q d |  _R d |  _S d |  _T d |  _U t
 |  _V d |  _W d |  _X d |  _Y d |  _Z d |  _[ d |  _\ i  |  _] g  |  _^ tG tH  |  __ g  |  _` i  |  _a t
 |  _b t
 |  _c t
 |  _d tG tH  |  _e g  |  _f d |  _g d |  _h d |  _i g  |  _j d |  _k d |  _l d |  _m g  |  _n d |  _o i  |  _p i  |  _q i  |  _r i  |  _s i  |  _t t
 |  _u t
 |  _v d |  _w d |  _x d |  _y g  |  _z g  |  _{ g  |  _| g  |  _} g  |  _~ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ g  |  _ i  |  _ d |  _ d |  _ d |  _ g  |  _ i  |  _ g  |  _ t
 |  _ d |  _ d |  _ d |  _ t
 |  _ tG tH  |  _ t
 |  _ t& |  _ t
 |  _ t& |  _ d |  _ d |  _ t
 |  _ d |  _ d |  _ d |  _ d |  _ d |  _i d |  _ d |  _ t
 |  _ d |  _ d |  _ i  |  _ d S(   s   
        Constructor.

        i    i  i   i @  i  i   i   t    gffffff?g      ?g333333?id   i   i   g\( @i@   i   N(   t   superR:   t   __init__t   Nonet   namet   indext	   str_tablet   palettet   constant_memoryt   tmpdirt   Falset   is_chartsheett
   ext_sheetst
   fileclosedt   excel_versiont   excel2003_stylet
   xls_rowmaxt
   xls_colmaxt
   xls_strmaxt
   dim_rowmint
   dim_rowmaxt
   dim_colmint
   dim_colmaxt   colinfot
   selectionst   hiddent   activet	   tab_colort   panest   active_panet   selectedt   page_setup_changedt
   paper_sizet   orientationt   print_options_changedt   hcentert   vcentert   print_gridlinest   Truet   screen_gridlinest   print_headerst   row_col_headerst   header_footer_changedt   headert   footert   header_footer_alignst   header_footer_scalest   header_imagest   footer_imagest   header_images_listt   margin_leftt   margin_rightt
   margin_topt   margin_bottomt   margin_headert   margin_footert   repeat_row_ranget   repeat_col_ranget   print_area_ranget
   page_ordert   black_whitet   draft_qualityt   print_commentst
   page_startt   fit_paget	   fit_widtht
   fit_heightt   hbreakst   vbreakst   protect_optionst   set_colsR    t   dictt   set_rowst   zoomt   zoom_scale_normalt   print_scalet   is_right_to_leftt
   show_zerost   leading_zerost   outline_row_levelt   outline_col_levelt   outline_stylet   outline_belowt   outline_rightt
   outline_ont   outline_changedt   original_row_heightt   default_row_heightt   default_row_pixelst   default_col_widtht   default_col_pixelst   default_row_zeroedt   namest   write_matcht   tablet   merget	   row_spanst   has_vmlt   has_header_vmlt   has_commentst   commentst   comments_listt   comments_authort   comments_visiblet   vml_shape_idt   buttons_listt   vml_header_idt   autofilter_areat   autofilter_reft   filter_ranget	   filter_ont   filter_colst   filter_typet	   col_sizest	   row_sizest   col_formatst   col_size_changedt   row_size_changedt   last_shape_idt	   rel_countt   hlink_countt
   hlink_refst   external_hyper_linkst   external_drawing_linkst   external_comment_linkst   external_vml_linkst   external_table_linkst   drawing_linkst   vml_drawing_linkst   chartst   imagest   tablest
   sparklinest   shapest
   shape_hasht   drawingt   rstringt   previous_rowt   validationst   cond_formatst   data_bars_2010t   use_data_bars_2010t   dxf_priorityt	   page_viewt   vba_codenamet	   date_1904t
   hyperlinkst   strings_to_numberst   strings_to_urlst   nan_inf_to_errorst   strings_to_formulast   default_date_formatt   default_url_formatt   remove_timezonet   row_data_filenamet   row_data_fht   worksheet_metat   vml_data_idt   row_data_fh_closedt   vertical_dpit   horizontal_dpit   write_handlers(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR=      s>   																																																																																																																																																									c         G   s  | d k r |  j  | | |  S|  j rJ | j d  rJ |  j | | |  S| j d  r{ | j d  r{ |  j | | |  Sd | k r|  j r t j d |  r |  j | | |  S|  j r t j d |  r |  j | | |  S|  j rt j d |  r|  j | | |  Sn  |  j	 ryM t
 |  } |  j sOt |  rit |  ri|  j | | | | d	  SWn t k
 r}n X|  j | | |  S|  j | | |  Sd  S(
   NR;   t   =s   {=t   }R$   s   (ftp|http)s?://s   mailto:s   (in|ex)ternal:i   (   t   _write_blankR   t
   startswitht   _write_formulat   endswithR   t   ret   matcht
   _write_urlR   t   floatR   R   R   t   _write_numberR   t   _write_string(   R   t   tokent   rowR/   R   t   f(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _write_token_as_stringi  s.    		c         G   s   |  j  | | |  S(   s  
        Write data to a worksheet cell by calling the appropriate write_*()
        method based on the type of data being passed.

        Args:
            row:   The cell row (zero indexed).
            col:   The cell column (zero indexed).
            *args: Args to pass to sub functions.

        Returns:
             0:    Success.
            -1:    Row or column is out of worksheet bounds.
            other: Return value of called method.

        (   t   _write(   R   R   R/   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write  s    c   	      G   s  t  |  s t d   n  | d } | d  k rD |  j | | |  St |  } | |  j k r |  j | } | |  | | |  } | d  k r q | Sn  | t k r |  j | | |  S| t k r |  j	 | | |  S| t
 k r |  j | | | |  S| t j t j t j t j f k r.|  j | | |  St j d k  r| t k ry  |  j t
 |  | | |  SWqt t f k
 rqXqn  t | t  r|  j	 | | |  St | t  r|  j | | | |  St | t  r|  j | | |  St |  r|  j | | |  Sy* t |  } |  j	 | | | | d  SWn7 t k
 rNn' t k
 rtt d t |    n Xy! t
 |  |  j | | |  SWn' t k
 rt d t |    n Xd  S(   Ns,   write() takes at least 4 arguments (3 given)i    i   i   s   Unsupported type %s in write()(   i   i    i    (   R   t	   TypeErrorR>   R   t   typeR   t   boolt   _write_booleanR   R   t   strR   t   datetimet   datet   timet	   timedeltat   _write_datetimet   syst   version_infot   unicodet   UnicodeEncodeErrort	   NameErrort
   isinstanceR   R   R   R   R   (	   R   R   R/   R   R   t
   token_typet   write_handlert   function_returnR   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR     sd    
	

c         C   s   |  j  | | | |  S(   s  
        Write a string to a worksheet cell.

        Args:
            row:    The cell row (zero indexed).
            col:    The cell column (zero indexed).
            string: Cell data. Str.
            format: An optional cell Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: String truncated to 32k characters.

        (   R   (   R   R   R/   t   stringt   cell_format(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_string  s    c         C   s   d } |  j  | |  r d St |  |  j k rG | |  j  } d } n  |  j se |  j j |  } n | } |  j r | |  j k r |  j |  n  t | |  |  j	 | | <| S(   Ni    ii(
   t   _check_dimensionsR   RM   RC   RA   t   _get_shared_string_indexR   t   _write_single_rowt   cell_string_tupleR   (   R   R   R/   R  R  t	   str_errort   string_index(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR   
  s    		c         C   s   |  j  | | | |  S(   s  
        Write a number to a worksheet cell.

        Args:
            row:         The cell row (zero indexed).
            col:         The cell column (zero indexed).
            number:      Cell data. Int or float.
            cell_format: An optional cell Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R   (   R   R   R/   t   numberR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_number&  s    c         C   s   t  |  s t |  r} |  j rn t  |  rF |  j | | d | d  St |  rz |  j | | d | d  Sq} t d   n  |  j | |  r d S|  j r | |  j k r |  j |  n  t	 | |  |  j
 | | <d S(   Ns   #NUM!s   1/0s   #DIV/0!sU   NAN/INF not supported in write_number() without 'nan_inf_to_errors' Workbook() optionii    (   R   R   R   R   R   R  RC   R   R  t   cell_number_tupleR   (   R   R   R/   R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR   9  s     	
c         C   s   |  j  | | | |  S(   s  
        Write a blank cell with formatting to a worksheet cell. The blank
        token is ignored and the format only is written to the cell.

        Args:
            row:         The cell row (zero indexed).
            col:         The cell column (zero indexed).
            blank:       Any value. It is ignored.
            cell_format: An optional cell Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R   (   R   R   R/   t   blankR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_blankU  s    c         C   si   | d  k r d S|  j | |  r& d S|  j rN | |  j k rN |  j |  n  t |  |  j | | <d S(   Ni    i(   R>   R  RC   R   R  t   cell_blank_tupleR   (   R   R   R/   R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR   i  s    i    c         C   s   |  j  | | | | |  S(   s  
        Write a formula to a worksheet cell.

        Args:
            row:         The cell row (zero indexed).
            col:         The cell column (zero indexed).
            formula:     Cell formula.
            cell_format: An optional cell Format object.
            value:       An optional value for the formula. Default is 0.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R   (   R   R   R/   t   formulaR  t   value(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_formula{  s    c         C   s   |  j  | |  r d S| j d  rS | j d  rS |  j | | | | | | |  S| j d  rt | j d  } n  |  j r | |  j k r |  j |  n  t | | |  |  j	 | | <d S(   Nit   {R   R   i    (
   R  R   R   t   _write_array_formulat   lstripRC   R   R  t   cell_formula_tupleR   (   R   R   R/   R  R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR     s    
c         C   s   |  j  | | | | | | |  S(   sh  
        Write a formula to a worksheet cell.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.
            formula:      Cell formula.
            cell_format:  An optional cell Format object.
            value:        An optional value for the formula. Default is 0.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R  (   R   t	   first_rowt	   first_colt   last_rowt   last_colR  R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_array_formula  s    c         C   s  | | k r | | } } n  | | k r8 | | } } n  |  j  | |  rN d S| | k rx | | k rx t | |  } n  t | |  d t | |  } | d d k r | d } n  | d d k r | d } n  | d d k r | d  } n  |  j r| |  j k r|  j |  n  t | | | |  |  j | | <|  j sxm t | | d  D]U }	 xL t | | d  D]7 }
 |	 | k s|
 | k rn|  j |	 |
 d |  qnqnWqTWn  d S(   NiR$   i    R  i   R   R   (	   R  R   RC   R   R  t   cell_arformula_tupleR   t   rangeR   (   R   R  R  R  R  R  R  R  t
   cell_rangeR   R/   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s6     	$c         C   s   |  j  | | | |  S(   s  
        Write a date or time to a worksheet cell.

        Args:
            row:         The cell row (zero indexed).
            col:         The cell column (zero indexed).
            date:        Date and/or time as a datetime object.
            cell_format: A cell Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R   (   R   R   R/   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_datetime  s    c         C   s   |  j  | |  r d S|  j r> | |  j k r> |  j |  n  |  j |  } | d  k re |  j } n  t | |  |  j | | <d S(   Nii    (	   R  RC   R   R  t   _convert_date_timeR>   R   R  R   (   R   R   R/   R   R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR      s    c         C   s   |  j  | | | |  S(   s  
        Write a boolean value to a worksheet cell.

        Args:
            row:         The cell row (zero indexed).
            col:         The cell column (zero indexed).
            boolean:     Cell data. bool type.
            cell_format: An optional cell Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        (   R   (   R   R   R/   t   booleanR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_boolean  s    c         C   sq   |  j  | |  r d S|  j r> | |  j k r> |  j |  n  | rM d } n d } t | |  |  j | | <d S(   Nii   i    (   R  RC   R   R  t   cell_boolean_tupleR   (   R   R   R/   R"  R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR   )  s    	c         C   s   |  j  | | | | | |  S(   s  
        Write a hyperlink to a worksheet cell.

        Args:
            row:    The cell row (zero indexed).
            col:    The cell column (zero indexed).
            url:    Hyperlink url.
            format: An optional cell Format object.
            string: An optional display string for the hyperlink.
            tip:    An optional tooltip.
        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: String longer than 32767 characters.
            -3: URL longer than Excel limit of 255 characters.
            -4: Exceeds Excel limit of 65,530 urls per worksheet.
        (   R   (   R   R   R/   t   urlR  R  t   tip(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt	   write_urlE  s    c         C   s  |  j  | |  r d S| d  k r+ | } n  d } | j d  rm | j d d  } | j d d  } d } n  t } | j d  r | j d d  } | j d d  } | j d d  } | j d d  } t } n  | j d	 d  } d
 }	 t |  |  j k rt d  d S| }
 | d k rd | k rG| j	 d d  \ } }
 n d  }
 |  j
 |  } |
 d  k	 r| r|  j
 |
  }
 n  t j d |  st j d |  rd | } n  t j d d |  } n  |
 pd } t |  d k st |  d k rt d t |   d S|  j d 7_ |  j d k rHt d t |   d S|  j rp| |  j k rp|  j |  n  | d  k r|  j } n  |  j | | | |  i | d 6| d 6|
 d 6| d 6|  j | | <|	 S(   Nii   s	   internal:R;   i   s	   external:t   /s   \s   mailto:i    sF   Ignoring URL since it exceeds Excel's string limit of 32767 charactersit   #s   \w:s   \\s   file:///s   ^\.\\i   sg   Ignoring URL '%s' with link or location/anchor > 255 characters since it exceeds Excel's limit for URLSii  sN   Ignoring URL '%s' since it exceeds Excel's limit of 65,530 URLS per worksheet.it	   link_typeR%  R   R&  (   R  R>   R   t   replaceRE   Ra   R   RM   R   R%   t   _escape_urlR   R   t   subR   R   RC   R   R  R   R   R   (   R   R   R/   R%  R  R  R&  R*  t   externalR	  t   url_strt   tmp_url_str(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR   \  sj    			
$$c         G   s   |  j  | | |  S(   sI  
        Write a "rich" string with multiple formats to a worksheet cell.

        Args:
            row:          The cell row (zero indexed).
            col:          The cell column (zero indexed).
            string_parts: String and format pairs.
            cell_format:  Optional Format object.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: String truncated to 32k characters.
            -3: 2 consecutive formats used.
            -4: Empty string used.
            -5: Insufficient parameters.

        (   t   _write_rich_string(   R   R   R/   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_rich_string  s    c         G   s  t  |  } d  } d } d } |  j | |  r4 d St | d t  rV | j   } n  t   } t   |  _ |  j j	 |  t   }	 g  }
 d } d } t
 |  d k r t d  d Sx | D] } t | t  s;| d k r |
 j |	  |
 j |  n |
 j |  | d k r"t d  d	 S| t
 |  7} d
 } n9 | d k ra| d k rat d  d S|
 j |  d } | d 7} q Wt |
 d t  s|  j j d  n  x |
 D] } t | t  r|  j j d  |  j |  qg  } t j d |  st j d |  r| j d  n  |  j j d | |  |  j j d  qW|  j j j   } | |  j k rmd S|  j s|  j j |  } n | } |  j r| |  j k r|  j |  n  t | |  |  j | | <d S(   Ni    iR6   i   sf   You must specify more then 2 format/fragments for rich strings. Ignoring input in write_rich_string().iR;   sY   Excel doesn't allow empty strings in rich strings. Ignoring input in write_rich_string().iR  sa   Excel doesn't allow 2 consecutive formats in rich strings. Ignoring input in write_rich_string().ii   t   rs   ^\ss   \s$s	   xml:spacet   preservet   ti(   s	   xml:spaceR4  (   t   listR>   R  R   R
   t   popR   R   R   t   _set_filehandleR   R   t   appendt   _xml_start_tagt   _write_fontR   t   searcht   _xml_data_elementt   _xml_end_tagt   fht   getvalueRM   RC   RA   R  R   R  R  R   (   R   R   R/   R   t   tokensR  t
   str_lengthR
  R?  t   defaultt	   fragmentst   previoust   posR   t
   attributesR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR1    sp    		

	
$	c         C   s   | |  j  | <d S(   s"  
        Add a callback function to the write() method to handle user defined
        types.

        Args:
            user_type:      The user type() to match on.
            user_function:  The user defined function to write the type data.
        Returns:
            Nothing.

        N(   R   (   R   t	   user_typet   user_function(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   add_write_handlerH  s    c         C   sA   x: | D]2 } |  j  | | | |  } | r/ | S| d 7} q Wd S(   s  
        Write a row of data starting from (row, col).

        Args:
            row:    The cell row (zero indexed).
            col:    The cell column (zero indexed).
            data:   A list of tokens to be written with write().
            format: An optional cell Format object.
        Returns:
            0:  Success.
            other: Return value of write() method.

        i   i    (   R   (   R   R   R/   t   dataR  R   t   error(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt	   write_rowW  s    c         C   sA   x: | D]2 } |  j  | | | |  } | r/ | S| d 7} q Wd S(   s  
        Write a column of data starting from (row, col).

        Args:
            row:    The cell row (zero indexed).
            col:    The cell column (zero indexed).
            data:   A list of tokens to be written with write().
            format: An optional cell Format object.
        Returns:
            0:  Success.
            other: Return value of write() method.

        i   i    (   R   (   R   R   R/   RK  R  R   RL  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_columnn  s    c         C   sN  |  j  | | t t  r0 t d | | f  d S| d k rE i  } n  | j d d  } | j d d  } | j d d  } | j d d  } | j d	 d  }	 | j d
 d  }
 | j d d  } | j d d  } | j d |  } | rt j j |  rt d t |   d S|  j	 j
 | | | | | | | |	 |
 | | g  d S(   s  
        Insert an image with its top-left corner in a worksheet cell.

        Args:
            row:      The cell row (zero indexed).
            col:      The cell column (zero indexed).
            filename: Path and filename for image in PNG, JPG or BMP format.
            options:  Position, scale, url and data stream of the image.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        s    Cannot insert image at (%d, %d).it   x_offseti    t   y_offsett   x_scalei   t   y_scaleR%  R&  t   object_positioni   t
   image_datat   positionings   Image file '%s' not found.N(   R  Ra   R   R>   t   gett   ost   patht   existsR   R   R9  (   R   R   R/   t   filenamet   optionsRO  RP  RQ  RR  R%  R&  t   anchorRT  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   insert_image  s&    	c   
   
   C   s   |  j  | | t t  r0 t d | | f  d S| d
 k rE i  } n  | j d d  } | j d d  } | j d d  } | j d d  } | j d	 d  }	 |  j j | | | | | | | |	 | g	  d
 S(   s  
        Insert an textbox with its top-left corner in a worksheet cell.

        Args:
            row:      The cell row (zero indexed).
            col:      The cell column (zero indexed).
            text:     The text for the textbox.
            options:  Textbox options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        s"   Cannot insert textbox at (%d, %d).iRO  i    RP  RQ  i   RR  RS  N(   R  Ra   R   R>   RV  R   R9  (
   R   R   R/   t   textR[  RO  RP  RQ  RR  R\  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   insert_textbox  s    	c   
   	   C   sx  |  j  | | t t  r0 t d | | f  d S| d k rE i  } n  | j sc | j rq | j j rq t d  d St | _ | j r t | j _ n  | j d d  } | j d d  } | j d d	  } | j d
 d	  } | j d d	  }	 | j d	 k r| j } n  | j d	 k r"| j } n  | j	 r7| j	 } n  | j
 rL| j
 } n  |  j j | | | | | | | |	 g  d S(   s  
        Insert an chart with its top-left corner in a worksheet cell.

        Args:
            row:     The cell row (zero indexed).
            col:     The cell column (zero indexed).
            chart:   Chart object.
            options: Position and scale of the chart.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        s    Cannot insert chart at (%d, %d).is7   Chart cannot be inserted in a worksheet more than once.NRO  i    RP  RQ  i   RR  RS  (   R  Ra   R   R>   t   already_insertedt   combinedRV  RQ  RR  RO  RP  R   R9  (
   R   R   R/   t   chartR[  RO  RP  RQ  RR  R\  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   insert_chart  s:    	
				c         C   sw   | d k r i  } n  |  j | |  r+ d St |  |  j k rD d Sd |  _ d |  _ | | | | g |  j | | <d S(   s  
        Write a comment to a worksheet cell.

        Args:
            row:     The cell row (zero indexed).
            col:     The cell column (zero indexed).
            comment: Cell comment. Str.
            options: Comment formatting options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: String longer than 32k characters.

        iii   N(   R>   R  R   RM   R   R   R   (   R   R   R/   t   commentR[  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   write_comment  s    			c         C   s   d |  _  d S(   s   
        Make any comments in the worksheet visible.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   R   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   show_comments/  s    c         C   s   | |  _  d S(   s   
        Set the default author of the cell comments.

        Args:
            author: Comment author name. String.

        Returns:
            Nothing.

        N(   R   (   R   t   author(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_comments_author<  s    c         C   s   |  j  S(   sw   
        Retrieve the worksheet name.

        Args:
            None.

        Returns:
            Nothing.

        (   R?   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   get_nameI  s    c         C   s%   d |  _  d |  _ |  j |  j _ d S(   s  
        Set this worksheet as the active worksheet, i.e. the worksheet that is
        displayed when the workbook is opened. Also set it as selected.

        Note: An active worksheet cannot be hidden.

        Args:
            None.

        Returns:
            Nothing.

        i    i   N(   RT   RY   R@   R   t   activesheet(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   activateW  s    		c         C   s   d |  _  d |  _ d S(   s   
        Set current worksheet as a selected worksheet, i.e. the worksheet
        has its tab highlighted.

        Note: A selected worksheet cannot be hidden.

        Args:
            None.

        Returns:
            Nothing.

        i   i    N(   RY   RT   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   selecti  s    	c         C   s   d |  _  d |  _ d S(   sv   
        Hide the current worksheet.

        Args:
            None.

        Returns:
            Nothing.

        i   i    N(   RT   RY   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   hidez  s    	c         C   s   d |  _  |  j |  j _ d S(   sJ  
        Set current worksheet as the first visible sheet. This is necessary
        when there are a large number of worksheets and the activated
        worksheet is not visible on the screen.

        Note: A selected worksheet cannot be hidden.

        Args:
            None.

        Returns:
            Nothing.

        i    N(   RT   R@   R   t
   firstsheet(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_first_sheet  s    	c         C   s  | d	 k r i  } n  | | k r1 | | } } n  t } | j d t  } | j d t  } | j d d  }	 | s | r | r t }
 n t }
 |  j d | | |
  r d S|  j d | | |
  r d S|	 d k  r d }	 n  |	 d k r d }	 n  |	 |  j k r|	 |  _ n  | | | | | |	 | g |  j d | <t |  _ | d	 k rR|  j } n  xD t	 | | d  D]/ } | | g |  j
 | <| rf| |  j | <qfqfWd S(
   s  
        Set the width, and other properties of a single column or a
        range of columns.

        Args:
            first_col:   First column (zero-indexed).
            last_col:    Last column (zero-indexed). Can be same as first_col.
            width:       Column width. (optional).
            cell_format: Column cell_format. (optional).
            options:     Dict of options such as hidden and level.

        Returns:
            0:  Success.
            -1: Column number is out of worksheet bounds.

        RT   t	   collapsedt   leveli    ii   s   %05di   N(   R>   Ra   RV  RE   R  R   RR   R   R   R  R   R   (   R   R  R  t   widthR  R[  t
   ignore_rowRT   Rp  Rq  t
   ignore_colR/   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   set_column  s@    							c   	      C   s9  | d k r i  } n  |  j d k	 r0 |  j } n d } |  j | |  rL d S| d k rd |  j } n  | j d t  } | j d t  } | j d d  } | d k r d } |  j } n  | d k  r d } n  | d k r d } n  | |  j k r | |  _ n  | | | | | g |  j | <t |  _	 | | g |  j
 | <d S(	   s  
        Set the width, and other properties of a row.

        Args:
            row:         Row number (zero-indexed).
            height:      Row width. (optional).
            cell_format: Row cell_format. (optional).
            options:     Dict of options such as hidden, level and collapsed.

        Returns:
            0:  Success.
            -1: Row number is out of worksheet bounds.

        i    iRT   Rp  Rq  i   i   N(   R>   RP   R  R   RV  RE   R   R   Ra   R   R   (	   R   R   t   heightR  R[  t   min_colRT   Rp  Rq  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_row  s0    				c         C   sR   | d k r |  j } n  | |  j k r< t |  _ | |  _ n  | rN d |  _ n  d S(   s   
        Set the default row properties.

        Args:
            height:           Default height. Optional, defaults to 15.
            hide_unused_rows: Hide unused rows. Optional, defaults to False.

        Returns:
            Nothing.

        i   N(   R>   R   R   Ra   R   R   (   R   Rv  t   hide_unused_rows(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_default_row%  s    	c   	      C   s   | | k r& | | k r& t  d  d S| | k rB | | } } n  | | k r^ | | } } n  |  j | |  d k rz d S|  j j | | | | g  |  j | | | |  xm t | | d  D]X } xO t | | d  D]: } | | k r | | k r q n  |  j | | d |  q Wq Wd S(   s3  
        Merge a range of cells.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.
            data:         Cell data.
            cell_format:  Cell Format object.

        Returns:
             0:    Success.
            -1:    Row or column is out of worksheet bounds.
            other: Return value of write().

        s   Can't merge single cellNii   R;   (   R   R  R   R9  R   R  R   (	   R   R  R  R  R  RK  R  R   R/   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   merge_range<  s     
c         C   s   | | k  r | | } } n  | | k  r8 | | } } n  |  j  | | | |  } t | | | |  } | |  _ | |  _ | | g |  _ d S(   s  
        Set the autofilter area in the worksheet.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.

        Returns:
             Nothing.

        N(   t   _convert_name_areaR   R   R   R   (   R   R  R  R  R  t   areat   ref(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   autofiltero  s    		c         C   s  |  j  s t d  d Sy t |  WnN t k
 ru | } t | d  \ } } | |  j k rv t d |  d Sn X|  j \ } } | | k  s | | k r t d | | | f  d S|  j |  } t |  d k p t |  d k s t d |  n  |  j	 | |  } t |  d	 k rJ| d
 d	 k rJ|  j
 | | d g  n} t |  d k r| d
 d	 k r| d	 d k r| d d	 k r|  j
 | | d | d g  n | |  j | <d
 |  j | <d |  _ d S(   s   
        Set the column filter criteria.

        Args:
            col:       Filter column (zero-indexed).
            criteria:  Filter criteria.

        Returns:
             Nothing.

        s-   Must call autofilter() before filter_column()NR.   s   Invalid column '%s's6   Column '%d' outside autofilter() column range (%d, %d)i   i   s+   Incorrect number of tokens in criteria '%s'i   i    i   i   i   (   R   R   R   R   R   RL   R   t   _extract_filter_tokensR   t   _parse_filter_expressiont   filter_column_listR   R   R   (   R   R/   t   criteriat
   col_letterR0   t	   col_firstt   col_lastRA  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   filter_column  s8    	
$"2!c         C   s   |  j  s t d  d Sy t |  WnN t k
 ru | } t | d  \ } } | |  j k rv t d |  d Sn X|  j \ } } | | k  s | | k r t d | | | f  d S| |  j | <d |  j | <d |  _	 d S(   s   
        Set the column filter criteria in Excel 2007 list style.

        Args:
            col:      Filter column (zero-indexed).
            filters:  List of filter criteria to match.

        Returns:
             Nothing.

        s-   Must call autofilter() before filter_column()NR.   s   Invalid column '%s's5   Column '%d' outside autofilter() column range (%d,%d)i   (
   R   R   R   R   R   RL   R   R   R   R   (   R   R/   t   filtersR  R0   R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s&    	
c         C   s  |  j  | | t t  r d S|  j  | | t t  r8 d S| dN k rM i  } n | j   } i t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d	 6t d
 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6} x2 | j   D]$ } | | k r t d |  d Sq Wd | k r!| d | d <n  d | k r>| d | d <n  d | k rXt d  d Si d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d d! 6d" d" 6} | d | k rt d# | d  d S| | d | d <| d d k r(| j d  dN k r(| j d  dN k r(d S| d d k sX| d d k sX| d d" k rod$ | d <dN | d <n  d | k rt d%  d Si d$ d$ 6d& d' 6d( d) 6d( d* 6d( d+ 6d, d- 6d, d. 6d, d/ 6d0 d1 6d0 d2 6d3 d4 6d3 d5 6d6 d7 6d6 d8 6d9 d: 6d9 d; 6}	 | d |	 k r%t d< | d  d S|	 | d | d <| d d$ k sW| d d& k rtd | k r~t d=  d Sn
 dN | d <i d> d? 6d@ dA 6dB dC 6}
 d | k rd> | d <n8 | d |
 k rt dD | d  d S|
 | d | d <| d d k s
| d d k r| d rKt | d  rK|  j | d  } dE | | d <qKn  | d rt | d  r|  j | d  } dE | | d <qqn  | j d  rt	 | d  dF k rt dG t
 | d   d S| j d  rt	 | d  dF k rt dH t
 | d   d S| j d  rRt	 | d  dI k rRt dJ t
 | d   d S| j d  rt	 | d  dI k rt dK t
 | d   d S| d d k rt | d  t k r|  j | d   } t	 |  dI k rt dL t
 |   d Sn  d | k rd@ | d <n  d	 | k r+d@ | d	 <n  d
 | k rDd@ | d
 <n  d | k r]d@ | d <n  | | | | g g | dM <d | k r| dM j | d  n  |  j j |  dN S(O   s  
        Add a data validation to a worksheet.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.
            options:      Data validation options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: Incorrect parameter or option.
        it   validateR  R  t   sourcet   minimumt   maximumt   ignore_blankt   dropdownt
   show_inputt   input_titlet   input_messaget
   show_errort   error_titlet   error_messaget
   error_typet   other_cellss+   Unknown parameter '%s' in data_validation()is5   Parameter 'validate' is required in data_validation()t   nonet   anys	   any valuet   wholes   whole numbert   integert   decimalR6  R   R   t
   textLengths   text lengtht   lengtht   customsJ   Unknown validation type '%s' for parameter 'validate' in data_validation()t   betweens5   Parameter 'criteria' is required in data_validation()t
   notBetweens   not betweent   equals   equal toR   s   ==t   notEquals   not equal tos   !=s   <>t   greaterThans   greater thant   >t   lessThans	   less thant   <t   greaterThanOrEquals   greater than or equal tos   >=t   lessThanOrEquals   less than or equal tos   <=sH   Unknown criteria type '%s' for parameter 'criteria' in data_validation()sc   Parameter 'maximum' is required in data_validation() when using 'between' or 'not between' criteriai    t   stopi   t   warningi   t   informationsJ   Unknown criteria type '%s' for parameter 'error_type' in data_validation()s   %.16gi    s6   Length of input title '%s' exceeds Excel's limit of 32s6   Length of error title '%s' exceeds Excel's limit of 32i   s9   Length of input message '%s' exceeds Excel's limit of 255s9   Length of error message '%s' exceeds Excel's limit of 255sS   Length of list items '%s' exceeds Excel's limit of 255, use a formula range insteadt   cellsN(   R  Ra   R>   t   copyt   keysR   RV  R   R!  R   R   R   R6  t	   _csv_joinR&   R   R9  (   R   R  R  R  R  R[  t   valid_parameterst	   param_keyt   valid_typest   criteria_typest   error_typest	   date_timeR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   data_validation  s*   	








 

%%&c         C   s  |  j  | | t t  r d S|  j  | | t t  r8 d S| d k rM i  } n | j   } i$ t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d	 6t d
 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d  6t d! 6t d" 6t d# 6t d$ 6t d% 6} x2 | j   D]$ } | | k rht d& |  d' SqhWd | k rt d(  d' Si d) d* 6d+ d+ 6d, d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d3 d5 6d6 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dA 6dB dB 6dC dD 6dE dF 6dG dH 6} | d | k r[t dI | d  d' S| d d5 k rxd5 | dJ <n  | | d | d <i dK dK 6dL dM 6dN dO 6dN dP 6dN dQ 6dR dS 6dR dT 6dR dU 6dV dW 6dV dX 6dY dZ 6dY d[ 6d\ d] 6d\ d^ 6d_ d` 6d_ da 6db dc 6dd de 6df dg 6dh di 6dj dj 6dk dk 6dl dm 6dn do 6dp dq 6dr ds 6dt du 6dv dw 6dx dy 6dr dz 6dx d{ 6}	 d | k r| d |	 k r|	 | d | d <n  | d d+ k s| d d, k rd) | d <d | k rt | d  st d|  d' S|  j | d  }
 d} |
 | d <n  d | k r`t | d  s<t d~  d' S|  j | d  }
 d} |
 | d <n  d | k rt | d  st d  d' S|  j | d  }
 d} |
 | d <qn  i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} | d dG k r| j d"  s[t d  d S| d" | k rt d | d"  d' S| | d" | d" <d | d <| d" j	 d  rd | d <n  | d" j	 d  rd | d <n  |  j
 | j d  | j d%   | d% <n  | | k r$| | } } n  | | k r@| | } } n  | | k rp| | k rpt | |  } | } n$ t | | | |  } t | |  } d | k r| d } | j d d  } n  d | k r| d r| d j   | d <n  |  j | d <|  j d 7_ |  j s| j d!  s| j d  s| j d  s| j d  s| j d  s| j d  s| j d  s| j d  s| j d  s| j d  s| j d  rt | d <n  | d d6 k r| d db k rdb | d <d | d | f | dF <q| d dd k r=d | d <d | d | f | dF <q| d df k rdf | d <d | t | d  | d f | dF <q| d dh k rdh | d <d | t | d  | d f | dF <qt d | d  n  | d d7 k rx
| d dj k r	d | | dF <qx
| d dk k r(	d | | dF <qx
| d d k rI	d | | dF <qx
| d dl k rp	d | | f | dF <qx
| d dn k r	d | | f | dF <qx
| d dp k r	d | | f | dF <qx
| d dr k r	d | | f | dF <qx
| d dt k r
d | | | f | dF <qx
| d dv k r6
d | | f | dF <qx
| d dx k rc
d | | | | f | dF <qx
t d | d  n  | d d9 k r
d | | dF <n  | d d; k r
d | | dF <n  | d d= k r
d | | dF <n  | d d? k r
d | | dF <n  | d dA k rd | d <d | d <d | d
 <d | d <| j d	 d  | j d d  | j d d  | j d d  | j d d  | j d d  t | d  | d <t | d  | d <n  | d dB k rd | d <d | d <| j d	 d  | j d
 d  | j d d  | j d d  | j d d  | j d d  | j d d  | j d d  t | d  | d <t | d  | d <t | d  | d <d | k rd | d <qn  | d dC k rd | d <| j d	  sd | d	 <d | d <n | d	 | d <| j d  s/d | d <d | d <n | d | d <| j d d  | j d d  | j d d  | j d | d  | j d  t  | j d t  | j d t  | j d d  | j d d  | j d d  | j d t  | j d t  | j d d  | j d d  t | d  | d <t | d  | d <t | d  | d <t | d  | d <t | d  | d <n  | j d  rd |  _ | d	 d k r| d d k rd | d <n  | d d k r| d d k rd | d <n  | | d <n  y | d j dP  | d <Wn t t f k
 r;n Xy | d j dP  | d <Wn t t f k
 rpn Xy | d j dP  | d <Wn t t f k
 rn X| |  j k r|  j | j |  n | g |  j | <d S(   s#  
        Add a conditional format to a worksheet.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.
            options:      Conditional format options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: Incorrect parameter or option.
        iR   R6   R  R  R  R  t   stop_if_truet   min_typet   mid_typet   max_typet	   min_valuet	   mid_valuet	   max_valuet	   min_colort	   mid_colort	   max_colort
   min_lengtht
   max_lengtht   multi_ranget	   bar_colort   bar_negative_colort   bar_negative_color_samet	   bar_solidt   bar_border_colort   bar_negative_border_colort   bar_negative_border_color_samet   bar_no_bordert   bar_directiont   bar_axis_positiont   bar_axis_colort   bar_onlyt   data_bar_2010t
   icon_stylet   reverse_iconst
   icons_onlyt   iconss.   Unknown parameter '%s' in conditional_format()is4   Parameter 'type' is required in conditional_format()t   cellIst   cellR   R   t   aboveAveraget   averaget   duplicateValuest	   duplicatet   uniqueValuest   uniquet   top10t   topt   bottomR^  t
   timePeriodt   time_periodt   containsBlankst   blankst   notContainsBlankst	   no_blankst   containsErrorst   errorst   notContainsErrorst	   no_errorst   2_color_scalet   3_color_scalet   dataBart   data_bart
   expressionR  t   iconSett   icon_sets?   Unknown value '%s' for parameter 'type' in conditional_format()t	   directionR  R  s   not betweenR  s   equal toR   s   ==R  s   not equal tos   !=s   <>R  s   greater thanR  R  s	   less thanR  R  s   greater than or equal tos   >=R  s   less than or equal tos   <=t   containsTextt
   containingt   notContainss   not containingt
   beginsWiths   begins witht   endsWiths	   ends witht	   yesterdayt   todayt	   last7Dayss   last 7 dayst   lastWeeks	   last weekt   thisWeeks	   this weekt   nextWeeks	   next weekt	   lastMonths
   last montht	   thisMonths
   this montht	   nextMonths
   next months   continue weeks   continue months5   Conditional format 'value' must be a datetime object.s   %.16gs7   Conditional format 'minimum' must be a datetime object.s7   Conditional format 'maximum' must be a datetime object.t   3Arrowst   3_arrowst   3Flagst   3_flagst   3TrafficLights2t   3_traffic_lights_rimmedt   3Symbolst   3_symbols_circledt   4Arrowst   4_arrowst   4RedToBlackt   4_red_to_blackt   4TrafficLightst   4_traffic_lightst   5ArrowsGrayt   5_arrows_grayt	   5Quarterst
   5_quarterst   3ArrowsGrayt   3_arrows_grayt   3TrafficLightst   3_traffic_lightst   3Signst   3_signst	   3Symbols2t	   3_symbolst   4ArrowsGrayt   4_arrows_grayt   4Ratingt	   4_ratingst   5Arrowst   5_arrowst   5Ratingt	   5_ratingss^   The 'icon_style' parameter must be specified when 'type' == 'icon_set' in conditional_format()is/   Unknown icon_style '%s' in conditional_format()i   t   total_iconst   4i   t   5i   t   $R;   t   priorityi   t   is_data_bar_2010s   NOT(ISERROR(SEARCH("%s",%s)))t   notContainsTexts   ISERROR(SEARCH("%s",%s))s   LEFT(%s,%d)="%s"s   RIGHT(%s,%d)="%s"s2   Invalid text criteria '%s' in conditional_format()s   FLOOR(%s,1)=TODAY()-1s   FLOOR(%s,1)=TODAY()t   tomorrows   FLOOR(%s,1)=TODAY()+1s0   AND(TODAY()-FLOOR(%s,1)<=6,FLOOR(%s,1)<=TODAY())s]   AND(TODAY()-ROUNDDOWN(%s,0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(%s,0)<(WEEKDAY(TODAY())+7))s\   AND(TODAY()-ROUNDDOWN(%s,0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(%s,0)-TODAY()<=7-WEEKDAY(TODAY()))s_   AND(ROUNDDOWN(%s,0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(%s,0)-TODAY()<(15-WEEKDAY(TODAY())))sd   AND(MONTH(%s)=MONTH(TODAY())-1,OR(YEAR(%s)=YEAR(TODAY()),AND(MONTH(%s)=1,YEAR(A1)=YEAR(TODAY())-1)))s4   AND(MONTH(%s)=MONTH(TODAY()),YEAR(%s)=YEAR(TODAY()))se   AND(MONTH(%s)=MONTH(TODAY())+1,OR(YEAR(%s)=YEAR(TODAY()),AND(MONTH(%s)=12,YEAR(%s)=YEAR(TODAY())+1)))s9   Invalid time_period criteria '%s' in conditional_format()s   LEN(TRIM(%s))=0s   LEN(TRIM(%s))>0s   ISERROR(%s)s   NOT(ISERROR(%s))t
   colorScalet   mint   maxi    s   #FF7128s   #FFEF9Ct
   percentiles   #F8696Bs   #FFEB84s   #63BE7Bi2   t   autoMint   x14_min_typet   autoMaxt   x14_max_types   #638EC6s   #FF0000s   #000000i  R  N(   R  Ra   R>   R  R  R   R   R!  RV  R   t   _set_icon_propsR   R   R+  t   _get_dxf_indexR   R   R   t
   setdefaultR   RE   RI   R  t   KeyErrort   AttributeErrorR   R9  (   R   R  R  R  R  R[  t   valid_parameterR  t
   valid_typet   criteria_typeR  t   valid_iconsR  t
   start_cell(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   conditional_format  s   	



 






	
	












	  c         C   s7  i  } i  } | d: k r! i  } n | j   } |  j rD t d  d S|  j | | t t  r` d S|  j | | t t  r| d Si t d 6t d 6t d 6t d 6t d 6t d	 6t d
 6t d 6t d 6t d 6t d 6} x2 | j   D]$ }	 |	 | k r t d |	  d Sq W| j d t  | d <| j d
 t  | d
 <| j d t  | d <| j d	 t  | d <| j d t  | d <| j d t  | d <| j d t  | d <| j d
 d  | d <| j d t  | d <d | k r| d }
 |
 | d <d |
 k rt d t	 |
   d St
 j d |
 t
 j  s9t
 j d |
  rQt d t	 |
   d St
 j d |
  r{t d t	 |
   d St
 j d |
  st
 j d  |
  rt d! t	 |
   d Sn  d | k r| d | d <| d j d d"  | d <n
 d# | d <| | k r| | } } n  | | k r3| | } } n  | } | } | j d
  r[| d$ 7} n  | j d  rw| d$ 8} n  t | | | |  | d% <t | | | |  | d& <| d
 sd | d <n  | d r| d& | d <n  d$ } g  | d <i  } xBt | | d$  D]-} i | d' 6d( t |  d 6d" d) 6d" d* 6d d+ 6d" d, 6d: d- 6d: d. 6} d | k r| t | d  k r| d | d$ } n d: } | r| j d- d:  } | j d/  r| d/ | d <n  | d } | j   }
 |
 | k rt d0 t	 |
   d St | |
 <| j d1  | d. <d, | k r| d, r| d, } | j d2  r`| j d2  } n  | j d3 d4  } | | d, <x4 t | | d$  D] } |  j | | | |  qWn  | j d*  rt| d* } | j   } | j d5 d"  } | j d d"  } | d6 k rd7 } n  | d8 k r&d9 } n  | | d* <|  j | | d  } | j d+ d  } |  j | | | | |  nE | j d)  r| d) } | | d) <|  j | | | | j d-   n  | d: k	 r| j   | d- <n  | | | d$ <qn  | d j |  | d
 r(|  j | | | d | d.  n  | d$ 7} qWd | k r#| d } d } x t | | d$  D] } d } x t | | d$  D] } | t |  k  r| t | |  k  r| | | } | | k r|  j | | | | |  q|  j | | | d:  n  | d$ 7} qW| d$ 7} qfWn  |  j j |  | S(;   sY  
        Add an Excel table to a worksheet.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.
            options:      Table format options. (Optional)

        Returns:
            0:  Success.
            -1: Not supported in constant_memory mode.
            -2: Row or column is out of worksheet bounds.
            -3: Incorrect parameter or option.
        s5   add_table() isn't supported in 'constant_memory' modeiiR  t   banded_columnst   banded_rowst   columnsRK  t   first_columnt
   header_rowt   last_columnR?   t   stylet	   total_rows%   Unknown parameter '%s' in add_table()it   show_first_colt   show_last_colt   show_row_stripest   show_col_stripesi    t   header_row_countt   totals_row_shownt    s.   Name '%s' in add_table() cannot contain spacess   ^[\w\\][\w\\.]*$s   ^\ds-   Invalid Excel characters in add_table(): '%s's"   ^[a-zA-Z][a-zA-Z]?[a-dA-D]?[0-9]+$s0   Name looks like a cell name in add_table(): '%s's   ^[rcRC]$s   ^[rcRC]\d+[rcRC]\d+$s3   Invalid name '%s' like a RC cell ref in add_table()R;   t   TableStyleMedium9i   R  t   a_ranget   idt   Columnt   total_stringt   total_functiont   total_valueR  R6   t   name_formatRf   s*   Duplicate header name in add_table(): '%s't   header_formatR   t   @s   [#This Row],R0   t	   countnumst	   countNumst   stddevt   stdDevN(   R>   R  RC   R   R  Ra   R  RV  RE   R   R   R   t   UNICODER+  R   R  R   R   t   lowerR   R  R   t   _table_function_to_formulaR   R3  R9  R   R   (   R   R  R  R  R  R[  R   R   R7  R  R?   t   first_data_rowt   last_data_rowt   col_idt
   seen_namest   col_numt   col_datat	   user_datat   xformatt   header_nameR  R   t   functionR  RP  RK  t   it   jR/   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt	   add_table	  s@   		




		








		
	



(c         C   s  |  j  | | t t  r d Si t | |  g d 6} | d9 k rJ i  } n  i t d 6t d 6t d 6t d 6t d 6t d 6t d	 6t d
 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6} x2 | j   D]$ } | | k rt d |  d SqWd | k rUt d  d S| j d d   } | d: k rt d#  d S| d" k rd$ } n  | | d <d | k rt | d  t k r| d | d <q| d g | d <n  t | d  t k r| d | d% <n | d g | d% <t	 | d%  } t	 | d  }	 | |	 k rYt d&  d St	 | d  | d' <t
 |  j  }
 g  } x] | d% D]Q } | j d( d)  } | j d*  } d+ | k r|
 d+ | } n  | j |  qW| | d% <g  } x1 | d D]% } | j d( d)  } | j |  qW| | d <| j d  | d, <| j d  | d- <| j d  | d. <| j d	  | d/ <| j d
  | d0 <| j d  | d <| j d  | d <| j d  | d <| j d  | d <| j d  | d <| j d  | d1 <| j d  | d <| j d d)  } | d2 k r?d3 | d4 <n# | d5 k rXd6 | d4 <n
 d7 | d4 <| j d  } | rd+ | k r|
 d+ | } n  | | d <| j d d3  } t |  } | d8 | d <| d. | d <| d | d <| d/ | d <| d0 | d <| d, | d <| d- | d <|  j | | d  |  j | | d  |  j | | d  |  j | | d  |  j | | d  |  j | | d  |  j | | d  |  j j |  d9 S(;   sp  
        Add sparklines to the worksheet.

        Args:
            row:     The cell row (zero indexed).
            col:     The cell column (zero indexed).
            options: Sparkline formatting options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.
            -2: Incorrect parameter or option.

        it	   locationst   locationR  R   t
   high_pointt	   low_pointt   negative_pointst   first_pointt
   last_pointt   markersRC  t   series_colort   negative_colort   markers_colort   first_colort
   last_colort
   high_colort	   low_colorR,  R+  t   axist   reverset   empty_cellst   show_hiddent   plot_hiddent	   date_axist   weights)   Unknown parameter '%s' in add_sparkline()s0   Parameter 'range' is required in add_sparkline()it   linet   columnt   win_losssJ   Parameter 'type' must be 'line', 'column' or 'win_loss' in add_sparkline()t   stackedt   rangessM   Must have the same number of location and range parameters in add_sparkline()t   countR%  R;   R   t   !t   hight   lowt   negativet   firstt   lastRT   t   zeroi    t   emptyt   connectt   spant   gapt   seriesN(   R  R  R  (   R  Ra   R   R>   R  R   RV  R   R6  R   R   R?   R+  R  R9  R   t   _set_spark_colorR   (   R   R   R/   R[  t	   sparklineR  R  t
   spark_typet   range_countt   location_countt	   sheetnamet
   new_rangest   spark_ranget   new_locationsRk  R  t
   date_ranget   style_idRC  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   add_sparkline
  s    	


	





c         C   s   d } t | |  } | | k r1 | | } } n  | | k rM | | } } n  | | k rn | | k rn | } n t | | | |  } | d k r d S| | | g g |  _ d S(   s  
        Set the selected cell or cells in a worksheet

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.

        Returns:
            0:  Nothing.
        t   A1N(   R>   R   R   RS   (   R   R  R  R  R  t   panet   active_cellt   sqref(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_selection  s    	i   c         C   s1   | |  _  | |  _ | |  _ | |  _ t |  _ d S(   s  
        Control outline settings.

        Args:
            visible:       Outlines are visible. Optional, defaults to True.
            symbols_below: Show row outline symbols below the outline bar.
                           Optional, defaults to True.
            symbols_right: Show column outline symbols to the right of the
                           outline bar. Optional, defaults to True.
            auto_style:    Use Automatic style. Optional, defaults to False.

        Returns:
            0:  Nothing.
        N(   R   R   R   R   Ra   R   (   R   t   visiblet   symbols_belowt   symbols_rightt
   auto_style(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   outline_settings  s
    				c         C   sF   | d k r | } n  | d k r* | } n  | | | | | g |  _ d S(   st  
        Create worksheet panes and mark them as frozen.

        Args:
            row:      The cell row (zero indexed).
            col:      The cell column (zero indexed).
            top_row:  Topmost visible row in scrolling region of pane.
            left_col: Leftmost visible row in scrolling region of pane.

        Returns:
            0:  Nothing.

        N(   R>   RW   (   R   R   R/   t   top_rowt   left_colt	   pane_type(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   freeze_panes  s
    		c         C   s   |  j  | | | | d  d S(   s  
        Create worksheet panes and mark them as split.

        Args:
            x:        The position for the vertical split.
            y:        The position for the horizontal split.
            top_row:  Topmost visible row in scrolling region of pane.
            left_col: Leftmost visible row in scrolling region of pane.

        Returns:
            0:  Nothing.

        i   N(   R  (   R   t   xt   yR  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   split_panes  s    id   c         C   sB   | d k  s | d k r/ t  d |  d } n  t |  |  _ d S(   s   
        Set the worksheet zoom factor.

        Args:
            zoom: Scale factor: 10 <= zoom <= 400.

        Returns:
            Nothing.

        i
   i  s/   Zoom factor %d outside range: 10 <= zoom <= 400id   N(   R   R   R   (   R   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_zoom  s    	c         C   s   d |  _  d S(   s   
        Display the worksheet right to left for some versions of Excel.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   R   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   right_to_left  s    c         C   s   d |  _  d S(   s   
        Hide zero values in worksheet cells.

        Args:
            None.

        Returns:
            Nothing.

        i    N(   R   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt	   hide_zero  s    c         C   s   t  |  |  _ d S(   s   
        Set the color of the worksheet tab.

        Args:
            color: A #RGB color index.

        Returns:
            Nothing.

        N(   R   RV   (   R   t   color(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_tab_color&  s    R;   c         C   s  | d k r |  j  |  } n  | s- i  } n  i t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d	 6t d
 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6t d 6} x? | j   D]1 } | | k r | | | | <q t d |  q W| | d <| |  _ d S(   s   
        Set the password and protection options of the worksheet.

        Args:
            password: An optional password string.
            options:  A dictionary of worksheet objects to protect.

        Returns:
            Nothing.

        R;   t   sheett   contentt   objectst	   scenariost   format_cellst   format_columnst   format_rowst   insert_columnst   insert_rowst   insert_hyperlinkst   delete_columnst   delete_rowst   select_locked_cellst   sortR  t   pivot_tablest   select_unlocked_cellss   Unknown protection object: '%s't   passwordN(   t   _encode_passwordRa   RE   R  R   R   (   R   R  R[  t   defaultst   key(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   protect3  s8    	

c         C   sw   |  j  | | t t  r0 t d | | f  d S| d k rE i  } n  |  j | | |  } |  j j |  d |  _ d S(   sM  
        Insert a button form object into the worksheet.

        Args:
            row:     The cell row (zero indexed).
            col:     The cell column (zero indexed).
            options: Button formatting options.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        s!   Cannot insert button at (%d, %d).ii   N(   R  Ra   R   R>   t   _button_paramsR   R9  R   (   R   R   R/   R[  t   button(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   insert_buttonf  s    	c         C   s   d |  _  t |  _ d S(   s   
        Set the page orientation as landscape.

        Args:
            None.

        Returns:
            Nothing.

        i    N(   R\   Ra   RZ   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_landscape  s    	c         C   s   d |  _  t |  _ d S(   s   
        Set the page orientation as portrait.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   R\   Ra   RZ   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_portrait  s    	c         C   s   d |  _  d S(   sr   
        Set the page view mode.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   R   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_page_view  s    c         C   s   | r | |  _  t |  _ n  d S(   s   
        Set the paper type. US Letter = 1, A4 = 9.

        Args:
            paper_size: Paper index.

        Returns:
            Nothing.

        N(   R[   Ra   RZ   (   R   R[   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt	   set_paper  s    	c         C   s   t  |  _ d |  _ d S(   sx   
        Center the page horizontally.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   Ra   R]   R^   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   center_horizontally  s    	c         C   s   t  |  _ d |  _ d S(   sv   
        Center the page vertically.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   Ra   R]   R_   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   center_vertically  s    	gffffff?g      ?c         C   s(   | |  _  | |  _ | |  _ | |  _ d S(   s   
        Set all the page margins in inches.

        Args:
            left:   Left margin.
            right:  Right margin.
            top:    Top margin.
            bottom: Bottom margin.

        Returns:
            Nothing.

        N(   Rm   Rn   Ro   Rp   (   R   t   leftt   rightR  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_margins  s    			c         C   s  | } | j  d d  } t |  d k r8 t d  d S| d k	 rf t | t  sl i | d 6} ql n i  } | j   } | d k	 r | | d <n  g  |  _ | j d  r |  j j	 | j d  | j d  d	 g  n  | j d
  r|  j j	 | j d
  | j d  d g  n  | j d  rQ|  j j	 | j d  | j d  d g  n  | j
 d  } t |  j  } | | k rt d | | | f  g  |  _ d Sd | k r| d |  _ n  d | k r| d |  _ n  | |  _ | j d d  |  _ t |  _ | rt |  _ n  d S(   s   
        Set the page header caption and optional margin.

        Args:
            header:  Header string.
            margin:  Header margin.
            options: Header options, mainly for images.

        Returns:
            Nothing.

        s
   &[Picture]s   &Gi   s.   Header string must be less than 255 charactersNt   margint
   image_leftt   image_data_leftt   LHt   image_centert   image_data_centert   CHt   image_rightt   image_data_rightt   RHsO   Number of header images (%s) doesn't match placeholder count (%s) in string: %st   align_with_marginst   scale_with_docg333333?(   R+  R   R   R>   R   R   R  Rj   RV  R9  R  Rh   Ri   Rf   Rq   Ra   Re   R   (   R   Rf   R[  R  t   header_origt   placeholder_countt   image_count(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   set_header  sR    
				c         C   s  | } | j  d d  } t |  d k r8 t d  d S| d k	 rf t | t  sl i | d 6} ql n i  } | j   } | d k	 r | | d <n  g  |  _ | j d  r |  j j	 | j d  | j d  d	 g  n  | j d
  r|  j j	 | j d
  | j d  d g  n  | j d  rQ|  j j	 | j d  | j d  d g  n  | j
 d  } t |  j  } | | k rt d | | | f  g  |  _ d Sd | k r| d |  _ n  d | k r| d |  _ n  | |  _ | j d d  |  _ t |  _ | rt |  _ n  d S(   s   
        Set the page footer caption and optional margin.

        Args:
            footer:  Footer string.
            margin:  Footer margin.
            options: Footer options, mainly for images.

        Returns:
            Nothing.

        s
   &[Picture]s   &Gi   s.   Footer string must be less than 255 charactersNR  R  R  t   LFR  R  t   CFR  R  t   RFsO   Number of footer images (%s) doesn't match placeholder count (%s) in string: %sR  R  g333333?(   R+  R   R   R>   R   R   R  Rk   RV  R9  R  Rh   Ri   Rg   Rr   Ra   Re   R   (   R   Rg   R[  R  t   footer_origR  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   set_footer:  sR    
				c         C   s]   | d k r | } n  | d 7} | d 7} d | | f } t |  j  } | d | |  _ d S(   s   
        Set the rows to repeat at the top of each printed page.

        Args:
            first_row: Start row for range.
            last_row: End row for range.

        Returns:
            Nothing.

        i   s   $%d:$%dR  N(   R>   R   R?   Rs   (   R   R  R  R}  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   repeat_rows  s    	

c         C   se   | d k r | } n  t | d  } t | d  } | d | } t |  j  } | d | |  _ d S(   s   
        Set the columns to repeat at the left hand side of each printed page.

        Args:
            first_col: Start column for range.
            last_col: End column for range.

        Returns:
            Nothing.

        i   R$   R  N(   R>   R   R   R?   Rt   (   R   R  R  R}  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   repeat_columns  s    	c         C   sa   | d k r* d |  _  d |  _ t |  _ n3 | d k rK d |  _  d |  _ n d |  _  d |  _ d S(   s1  
        Set the option to hide gridlines on the screen and the printed page.

        Args:
            option:    0 : Don't hide gridlines
                       1 : Hide printed gridlines only
                       2 : Hide screen and printed gridlines

        Returns:
            Nothing.

        i    i   N(   R`   Rb   Ra   R]   (   R   t   option(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   hide_gridlines  s    				c         C   s   t  |  _ t  |  _ d S(   s   
        Set the option to print the row and column headers on the printed page.

        Args:
            None.

        Returns:
            Nothing.

        N(   Ra   Rc   R]   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   print_row_col_headers  s    	c         C   s   t  |  _ d S(   s   
        Set the option to hide the row and column headers on the worksheet.

        Args:
            None.

        Returns:
            Nothing.

        N(   Ra   Rd   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   hide_row_col_headers  s    c         C   sg   | d k rB | d k rB | |  j  d k rB | |  j d k rB d S|  j | | | |  } | |  _ d S(   s  
        Set the print area in the current worksheet.

        Args:
            first_row:    The first row of the cell range. (zero indexed).
            first_col:    The first column of the cell range.
            last_row:     The last row of the cell range. (zero indexed).
            last_col:     The last column of the cell range.

        Returns:
            0:  Success.
            -1: Row or column is out of worksheet bounds.

        i    i   N(   RK   RL   R|  Ru   (   R   R  R  R  R  R}  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   print_area  s    c         C   s   d |  _  t |  _ d S(   s   
        Set the order in which pages are printed.

        Args:
            None.

        Returns:
            Nothing.

        i   N(   Rv   Ra   RZ   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   print_across
  s    	c         C   s(   d |  _  | |  _ | |  _ t |  _ d S(   s  
        Fit the printed area to a specific number of pages both vertically and
        horizontally.

        Args:
            width:  Number of pages horizontally.
            height: Number of pages vertically.

        Returns:
            Nothing.

        i   N(   R{   R|   R}   Ra   RZ   (   R   Rr  Rv  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   fit_to_pages  s    			c         C   s   | |  _  d S(   s   
        Set the start page number when printing.

        Args:
            start_page: Start page number.

        Returns:
            Nothing.

        N(   Rz   (   R   t
   start_page(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_start_page*  s    c         C   sO   | d k  s | d k r* t  d |  d Sd |  _ t |  |  _ t |  _ d S(   s   
        Set the scale factor for the printed page.

        Args:
            scale: Print scale. 10 <= scale <= 400.

        Returns:
            Nothing.

        i
   i  s2   Print scale '%d' outside range: 10 <= scale <= 400Ni    (   R   R{   R   R   Ra   RZ   (   R   t   scale(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_print_scale7  s    	c         C   s   | |  _  d S(   s   
        Set the horizontal page breaks on a worksheet.

        Args:
            breaks: List of rows where the page breaks should be added.

        Returns:
            Nothing.

        N(   R~   (   R   t   breaks(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_h_pagebreaksM  s    c         C   s   | |  _  d S(   s   
        Set the horizontal page breaks on a worksheet.

        Args:
            breaks: List of columns where the page breaks should be added.

        Returns:
            Nothing.

        N(   R   (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_v_pagebreaksZ  s    c         C   s(   | d k	 r | |  _ n |  j |  _ d S(   s   
        Set the VBA name for the worksheet. By default this is the
        same as the sheet name: i.e., Sheet1 etc.

        Args:
            name: The VBA name for the worksheet.

        Returns:
            Nothing.

        N(   R>   R   R?   (   R   R?   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   set_vba_nameg  s    c         C   s  | d |  _  | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d |  _ | d	 |  _ | d
 |  _	 | d |  _
 | d |  _ | d |  _ | d |  _ | d |  _ |  j r)d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ n  |  j rt j d |  j  \ } } t j |  | |  _ t j  | d d  |  _! |  j! |  _" n  d  S(   NR?   R@   RA   R   RC   RD   R   R   R   R   R   R   R   RJ   R   g     )@i   g      ?i   g      ?t   dirs   w+s   utf-8(#   R?   R@   RA   R   RC   RD   R   R   R   R   R   R   R   RJ   R   R   R   R   Rm   Rn   Ro   Rp   Rq   Rr   RE   Rh   t   tempfilet   mkstempRW  t   closeR   t   codecst   openR   R?  (   R   t	   init_datat   fdRZ  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _initialize}  s@    												c         C   sA  |  j    |  j   |  j   |  j   |  j   |  j   |  j   |  j s\ |  j   n
 |  j	   |  j
   |  j r |  j   n  |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j   |  j d  |  j   d  S(   Nt	   worksheet(   t   _xml_declarationt   _write_worksheett   _write_sheet_prt   _write_dimensiont   _write_sheet_viewst   _write_sheet_format_prt   _write_colsRC   t   _write_sheet_datat   _write_optimized_sheet_datat   _write_sheet_protectionRJ   t   _write_phonetic_prt   _write_auto_filtert   _write_merge_cellst   _write_conditional_formatst   _write_data_validationst   _write_hyperlinkst   _write_print_optionst   _write_page_marginst   _write_page_setupt   _write_header_footert   _write_row_breakst   _write_col_breakst   _write_drawingst   _write_legacy_drawingt   _write_legacy_drawing_hft   _write_table_partst   _write_ext_listR>  t
   _xml_close(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _assemble_xml_file  s>    






	

	















c         C   s)  | d k  s | d k  r d S| |  j  k s: | |  j k r> d S| rk | rk |  j rk | |  j k  rk d Sn  | s |  j d  k s | |  j k  r | |  _ n  |  j d  k s | |  j k r | |  _ q n  | s%|  j d  k s | |  j k  r | |  _ n  |  j d  k s| |  j k r%| |  _ q%n  d S(   Ni    ii(	   RK   RL   RC   R   RN   R>   RO   RP   RQ   (   R   R   R/   Rs  Rt  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s$    c         C   s   t  | |  j |  j  S(   N(   R   R   R   (   R   t   dt_obj(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR!  "  s    c         C   s%  d } d } d } d } t  | d  }	 t  | d  }
 d t | d  } d t | d  } | d k r | |  j d k r |	 } |
 } d } nH | d k r | |  j d k r | } | } d } n |	 | } |
 | } | | k r | r | } n | d | } t |  j  } | d | } | S(   NR;   i    i   R%  R$   R  (   R   R   RK   RL   R   R?   (   R   t	   row_num_1t	   col_num_1t	   row_num_2t	   col_num_2t   range1t   range2R}  t   row_col_onlyt
   col_char_1t
   col_char_2t
   row_char_1t
   row_char_2R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR|  (  s0    		

	c         C   sq   | s
 d  St  |  } d | k r2 | j d  n  t |  } | j   d } t |  | k rm | |  } n  | S(   Ni    i  (   t   sett   removeR6  R  R   (   R   R  t
   breaks_sett   breaks_listt   max_num_breaks(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _sort_pagebreaksP  s    
c         C   s   | s
 g  St  j d  } | j |  } g  } xe | D]] } | j d  rW | d } n  | j d  rs | d  } n  | j d d  } | j |  q5 W| S(   Ns   "(?:[^"]|"")*"|\S+t   "i   is   ""(   R   t   compilet   findallR   R   R+  R9  (   R   R  t   token_reRA  t
   new_tokensR   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  j  s    c         C   s   t  |  d k r | d } t j d |  r7 d } n/ t j d |  rR d } n t d | | f  |  j | | d d ! } |  j | | d d ! } | | g | S|  j | |  Sd  S(	   Ni   i   s   (and|&&)i    s	   (or|\|\|)i   s?   Token '%s' is not a valid conditional in filter expression '%s'i   (   R   R   R   R   t   _parse_filter_tokens(   R   R  RA  t   conditionalt   expression_1t   expression_2(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    
		c         C   sc  i d d 6d d 6d d 6d d 6d d 6d d 6d d	 6d d
 6d d 6d d 6d d 6d d 6} | j  | d d   } | d } t j d | d j    rat | d  } | d k  s | d k r t d | | f  n  | j   } | d k r| d k rt d | | f  n  | d j   d k r/d } n d } | d d k rR| d 7} n  t |  } n  | r| d rt d | d | f  n  t j d | j    r2| d k r| d k rt d | d | f  n  | j   } | d  k r| d k r/d! } q/q2| d k r#d } d  } q2d } d! } n  | d k rYt j d" |  rYd# } n  | | g S($   Ni   s   ==R   s   =~t   eqi   s   !=s   !~t   nes   <>i   R  i   s   <=i   R  i   s   >=s
   top|bottomi    i  s?   The value '%d' in expression '%s' must be in the range 1 to 500t   itemst   %s>   The type '%s' in expression '%s' must be either 'items' or '%'R  i   i    s<   Token '%s' is not a valid operator in filter expression '%s's   blanks|nonblankssR   The operator '%s' in expression '%s' is not valid in relation to Blanks/NonBlanks'R  RK  s   [*?]i   (	   RV  R>   R   R   R[  R   R   R   R<  (   R   R  RA  t	   operatorst   operatorR   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR9    sb    

				c   
      C   s   d } t  |  } g  } x] | D]U } | d 7} t |  | >} | d @} | d @} | d L} | | B} | j |  q Wd } x | D] }	 | |	 N} q W| | N} | d N} d | S(   Ni    i   i  i   iK  s   %Xi ?(   R   t   ordR9  (
   R   t	   plaintextRg  R  t   digitst   chart   low_15t   high_15t   password_hasht   digit(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s"    






c
         C   s  d }
 |  j  | \ } } } } } } } } } } } | | 9} | | 9} | d | 9} | d |	 9} |  j | | | | | | |  } t d | d  } t d | d  } |  j s t   } d | _ | |  _ |  j j d d t |  d d  g  n	 |  j } |
 g } | j
 |  | j
 | | | d  | | | g  | j |  | rd	 } d
 } t j d |  rv| } n  t j d |  r| j d d  } n  t j d |  r| j d d  } d  } n  |  j j | | | g  n  |  j j d d t |  d | g  d  S(   Ni   g      X@g      ?i5%  i   s   /drawings   ../drawings/drawings   .xmls
   /hyperlinkt   Externals   (ftp|http)s?://s	   external:R;   s	   internal:R)  s   /images   ../media/imaget   .(   R   t   _position_object_emusR   R   R   t   embeddedR   R9  R   R>   R&   t   _add_drawing_objectR   R   R+  R   (   R   R@   t   image_idt
   drawing_idRr  Rv  R?   t
   image_typet   x_dpit   y_dpit   drawing_typeR   R/   R0   RO  RP  RQ  RR  R%  R&  R\  t
   dimensionsR   t   drawing_objectt   rel_typet   target_modet   target(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_image  sD    .

						"		c      	   C   sx  d } |  j  | \	 } } } } } }	 }
 } } | j d |  j d  } | j d |  j d  } | | 9} | |	 9} |  j | | | | | | |  } t d | d  } t d | d  } |  j st   } d | _ | |  _ |  j	 j
 d d	 t |  d
 d  g  n	 |  j } t d d |  } |
 | _ | g } | j |  | j | | d  | d  d  | g  | j |  d  S(   Ni   Rr  Rv  i   g      ?i5%  i   s   /drawings   ../drawings/drawings   .xmlt   rectt   TextBox(   R   RV  R   R   RM  R   R   R   RN  R   R9  R   R>   R   R^  R&   RO  (   R   R@   RQ  RU  R   R/   RO  RP  RQ  RR  R^  R\  R[  Rr  Rv  RV  R   t   shapeRW  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_shapeO  s0    (

							c	   	      C   sc   t  j d d |  } |  j j | | | | | | g  |  j j d d t |  d | g  d  S(   Ns   \..*$R;   s   /images   ../media/imageRL  (   R   R-  Rl   R9  R   R   (	   R   RP  Rr  Rv  R?   RR  t   positionRS  RT  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_header_imagez  s
    c         C   sQ  d } |  j  | \ } } } } }	 }
 } } | d | _ t d | j |
  } t d | j |  } |  j | | | |	 | | |  } | j } |  j s t   } d | _	 | |  _ |  j
 j d d t |  d g  n	 |  j } | g } | j |  | j | | | d  d  d  | g  | j |  |  j j d d t |  d g  d  S(   Ni   g      ?s   /drawings   ../drawings/drawings   .xmls   /charts   ../charts/chart(   R   RN  R   Rr  Rv  RM  t
   chart_nameR   R   RN  R   R9  R   R&   R>   RO  R   (   R   R@   t   chart_idRQ  RU  R   R/   Rb  RO  RP  RQ  RR  R\  Rr  Rv  RV  R?   R   RW  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_chart  s*    %							"c      
   C   s   |  j  | | | | | | |  \
 } } } } } }	 }
 } } } t d d |  } t d d |  } t d d |
  }
 t d d |  } t d d |  } t d d |  } | | | | | |	 |
 | | | f
 S(   Ng      ?i5%  (   t   _position_object_pixelsR   (   R   t	   col_startt	   row_startt   x1t   y1Rr  Rv  R\  t   col_endt   row_endt   x2t   y2t   x_abst   y_abs(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRM    s    
-c      
   C   s  d } d }	 x= | d k  rK | d k rK | |  j  | d  7} | d 8} q Wx= | d k  r | d k r | |  j | d  7} | d 8} qO W| d k  r d } n  | d k  r d } n  |  j r x; t |  D] }
 | |  j  |
  7} q Wn | |  j | 7} | | 7} |  j r=x; t |  D] } |	 |  j |  7}	 qWn |	 |  j | 7}	 |	 | 7}	 |  j  |  d k rx9 | |  j  |  k r| |  j  |  8} | d 7} qpWn  |  j |  d k rx9 | |  j |  k r| |  j |  8} | d 7} qWn  | } | } |  j  |  d k r(| | } n  |  j |  d k rJ| | } n  x< | |  j  | |  k r| |  j  | |  8} | d 7} qMWx< | |  j | |  k r| |  j | |  8} | d 7} qW| } | } | | | | | | | | | |	 g
 S(   Ni    i   (   t	   _size_colt	   _size_rowR   R  R   R   R   (   R   Rf  Rg  Rh  Ri  Rr  Rv  R\  Rn  Ro  R_  t   row_idRj  Rk  Rl  Rm  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRe    s\    			
	
c         C   s   d } d } d } | |  j  k r |  j  | d } |  j  | d } | r^ | d k r^ d } q | d k  r t | | | d  } q t | | d  | } n	 |  j } | S(   Ni   i   i    i   i   g      ?(   R   R   R   (   R   R/   R\  t   max_digit_widtht   paddingt   pixelsRr  RT   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRp  P  s    		c         C   s   d } | |  j  k ri |  j  | d } |  j  | d } | rR | d k rR d } q t d d |  } n t d d |  j  } | S(   Ni    i   i   g      @g      @(   R   R   R   (   R   R   R\  Ru  Rv  RT   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRq  k  s    	c      
   C   s  d } d } d } i d  d 6d d 6d  d 6d  d 6d  d	 6d  d
 6| d 6| d 6d  d 6d d 6d  d 6d d 6d d 6d d 6d d 6} x" | j   D] }	 | |	 | |	 <q W| d s | | d <n  | d s | | d <n  t | d  j   | d <| d j d d d  | d <| d d  k	 rHt | d  \ }
 } |
 | d	 <| | d <n  |  j } |  j } | d	 d  k r| d k rd | d	 <q| | d k r| d | d	 <q| | d k r| d | d	 <q| | d k r| d | d	 <q| d | d	 <n  | d d  k r| d k r d | d <q| | d k r=d | d <q| | d k rZd | d <q| | d k rwd | d <qd  | d <n  | d d  k r| | d k r| d | d <q| | d k r| d | d <q| | d k r| d! | d <q| d | d <n  | d d  k r|| | d k r5d" | d <q|| | d k rRd" | d <q|| | d k rod" | d <q|d# | d <n  | d r| d | d | d <n  | d r| d | d | d <n  t d$ | d  | d <t d$ | d  | d <|  j	 | d | d	 | d | d | d | d |  } | j
 | d  | j
 | d  | | | | d | d
 | d | d | d | d g	 | g S(%   Ni   iJ   i    Rg  s   #ffffe1R  R;  t	   start_colt	   start_rowR  Rr  Rv  RO  i   RQ  RP  RR  t   Tahomat	   font_namei   t	   font_sizei   t   font_familyt   ffR)  i   i   i   i   i   i   i
   i   i1   i   g      ?(   R>   R  R   R[  R+  R   RK   RL   R   Re  R9  (   R   R   R/   R  R[  t   default_widtht   default_heightR\  t   paramsR  Rw  Rv  t   row_maxt   col_maxt   vertices(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _comment_params  s    



		

c         C   s  |  j  } |  j } d } d t |  j  } i | d 6| d 6i  d 6} i  }	 x" | j   D] }
 | |
 |	 |
 <qY W|	 j d  } | d  k r d | } n  | | d d <|	 j d  r d	 |	 d | d <n d
 | | d <|	 j d |  |	 d <|	 j d |  |	 d <|	 j d d  |	 d <|	 j d d  |	 d <|	 d |	 j d d  |	 d <|	 d |	 j d d  |	 d <t d |	 d  |	 d <t d |	 d  |	 d <| |	 d <| |	 d <|  j |	 d |	 d |	 d |	 d |	 d |	 d |  } | j	 |	 d  | j	 |	 d  | | d <| S(   Ni    i   R   R/   t   fontt   captions	   Button %dt   macros   [0]!s   [0]!Button%d_ClickRr  Rv  RO  RP  RQ  RR  g      ?Rw  Rv  R  (
   R   R   R   R   R  RV  R>   R   Re  R9  (   R   R   R/   R[  R~  R}  R\  t   button_numberR  R  R  R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s@    		


c         C   s  g  } t  |  j j    } x | D] } t  |  j | j    } x | D] }	 |  j | |	 }
 |  j |
   } | |  j | |	 <|  j r |  j | |	 d d  k r d |  j | |	 d <q n  |  j | |	 d d  k r |  j |  j | |	 d <n  | j |  j | |	  qH Wq" W|  j j d d t	 |  d g  |  j
 rq| |  _ |  j j d d t	 |  d	 g  n  t |  } | } x6 t t | d
   D] } d | | | d f } qW| |  _ | |  _ | S(   Ni   i   i   s   /vmlDrawings   ../drawings/vmlDrawings   .vmls	   /commentss   ../commentss   .xmli   s   %s,%d(   t   sortedR   R  R  R   R>   R   R9  R   R   R   R   R   R   R  R   R   R   (   R   R   R   t   vml_drawing_idt
   comment_idR   t   row_numsR   t   col_numsR/   t   user_optionsR  R  t   start_data_idRg  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_vml_objects<  s6    	 				c         C   s1   | |  _  |  j j d d t |  d g  d  S(   Ns   /vmlDrawings   ../drawings/vmlDrawings   .vml(   R   R   R9  R   (   R   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_header_vml_objectsp  s    	c         C   s   x |  j  D] } | | d <| j d  d  k rF d t |  | d <n  | d j   } | | k ry t d | d   n
 t | | <|  j j d d t |  d g  | d 7} q
 Wd  S(	   NRN  R?   t   Tables2   Duplicate name '%s' used in worksheet.add_table().s   /tables   ../tables/tables   .xmli   (	   R   RV  R>   R   R[  R   Ra   R   R9  (   R   t   table_idt   seenR   R?   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _prepare_tablesy  s    

c         C   s   d } t  j d d |  } t  j d d |  } t  j d d |  } t  j d d	 |  } i d
 d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6} | | k r | | } d | | f } n t d |  | S(   NR;   t   's   ''R)  s   '#t   ]s   ']s   \[s   '[ie   R  if   RW  ig   R  ih   R,  ii   R+  ik   RY  im   t   sumin   t   vars   SUBTOTAL(%s,[%s])s(   Unsupported function '%s' in add_table()(   R   R-  R   (   R   Rf  t   col_nameR  t	   subtotalst   func_num(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR\    s&    

c         C   s/   | | k r d  Si t  | |  d 6| | <d  S(   Nt   rgb(   R   (   R   R  R[  t
   user_color(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   st  |  j  r d
 Sg  } xZt | | d  D]E} | |  j k rO | j d   q' n  xt | | d  D]} | |  j | k r[|  j | | } t |  j }	 |	 d k r | j d | j  qh|	 d k r | j }
 |  j	 j
 |
  } | j |  qh|	 d k s|	 d k r<| j } | d  k r,d } n  | j |  qh|	 d k rh| j d	  qhqc | j d   qc Wq' W| S(   Ni   R4   s   %.16gR3   R8   R9   i    R5   R;   (    (   RC   R  R   R9  R>   R   t   __name__R  R  RA   t   _get_shared_stringR  (   R   Rg  Rf  Rk  Rj  RK  t   row_numRa  R  t   type_cell_nameR@   R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _get_range_data  s6    				c         G   sA   g  | D]' } t  | t  s( t |  n | ^ q } d j |  S(   Nt   ,(   R   R   R   t   join(   R   R?  t   item(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    1c         C   s   t  j d |  r | S| j d d  } | j d d  } | j d d  } | j d d	  } | j d
 d  } | j d d  } | j d d  } | j d d  } | j d d  } | j d d  } | j d d  } | S(   Ns   %[0-9a-fA-F]{2}R@  s   %25R4  s   %22RK  s   %20R  s   %3cR  s   %3et   [s   %5bR  s   %5dt   ^s   %5et   `s   %60R  s   %7bR   s   %7d(   R   R<  R+  (   R   R%  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR,    s    c         C   s  |  j  } | j d  | j r/ | j d  n  | j rH | j d  n  | j ra | j d  n  | j rz | j d  n  | j r | j d  n  | j r |  j	 | j  n  | j
 d k r |  j d  n  | j
 d	 k r |  j d
  n  | j d d | j f g  | j d k rn| | j r:|  j d | j  n] | j rY|  j d | j  n> | j r|  j | j  } |  j d |  n |  j d d  | j d d | j f g  | j d d | j f g  | j d k r| j r| j d d | j f g  n  | j d  d  S(   Nt   rPrt   bRg  t   striket   outlinet   shadowi   t   superscripti   t	   subscriptt   szt   valit   themet   indexedR  t   rFontt   familyt   Calibrit   scheme(   R   R:  t   boldt   _xml_empty_tagt   italict   font_strikeoutt   font_outlinet   font_shadowt	   underlinet   _write_underlinet   font_scriptt   _write_vert_alignRz  R  t   _write_colort   color_indexedt
   font_colort   _get_palette_colort   _write_rstring_colorRy  R{  t	   hyperlinkt   font_schemeR>  (   R   t	   xf_formatt
   xml_writerR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR;    sF    											c         C   se   g  } | d k r d	 g } n0 | d k r6 d
 g } n | d k rN d g } n  |  j  j d |  d  S(   Ni   R  t   doublei!   t   singleAccountingi"   t   doubleAccountingt   u(   R  R  (   R  R  (   R  R  (   R   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  I  s    c         C   s&   d | f g } |  j  j d |  d  S(   NR  t	   vertAlign(   R   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  W  s    c         C   s&   | | f g } |  j  j d |  d  S(   NR  (   R   R  (   R   R?   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  ]  s    c         C   s+   | d d k r | d } n  d | j    S(   Ni    R)  i   t   FF(   t   upper(   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  c  s    c         C   s&   |  j  s" |  j j   t |  _  n  d  S(   N(   R   R   R  Ra   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt
   _opt_closej  s    	c         C   sF   |  j  rB |  j } t j | d d  |  _ t |  _  |  j |  _ n  d  S(   Ns   a+s   utf-8(   R   R   R  R   R   RE   R?  (   R   RZ  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _opt_reopenp  s
    			c   
      C   se  g  } x6 t  |  D]( } | j i t d 6d d 6d d 6 q W| d k rj d | d d <d | d	 d <n  | d
 k r d | d d <d | d	 d <d | d d <n  | d k r d | d d <d | d	 d <d | d d <d | d d <n  | rat |  } | | k r| d	 } n  xIt  |  D]8} | | j d  d  k	 r| | d | | d <| | d } t | t  r| j d  r| j	 d  | | d <qn  | | j d  r$d } | | d | k rt
 d | | d  q$| | d | | d <| | d d k r$d | | d <q$n  | | j d  }	 |	 r"|	 d k r"t | | d <q"q"Wn  | S(   NR  i    R  t   percentR   i   iC   i!   i   i   iK   i2   i   i   i   iP   i<   i(   i   R   R-  R  R  sO   Unknown icon property type '%s' for sub-property 'type' in conditional_format()t   numR  (   R  R-  R  R  (   R  R9  RE   R   RV  R>   R   R   R   R  R   Ra   (
   R   R"  t
   user_propst   propsR0   t   max_dataRg  t   tmpR  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR2  x  sT       c         C   s   d } | d } | d } | d } d } | d } d | f d | f g } |  j  d	 k r | j d
 | f  | j d | f  | j d  n  |  j d |  d  S(   Ns"   http://schemas.openxmlformats.org/s   spreadsheetml/2006/mains!   officeDocument/2006/relationshipss   markup-compatibility/2006s   http://schemas.microsoft.com/s   office/spreadsheetml/2009/9/act   xmlnss   xmlns:ri  s   xmlns:mcs   xmlns:x14acs   mc:Ignorablet   x14acR  (   s   mc:IgnorableR  (   RI   R9  R:  (   R   t   schemaR  t   xmlns_rt   xmlns_mct	   ms_schemat   xmlns_x14acRG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    



	c         C   s2  |  j  d  k r' |  j d  k r' d } n |  j  d  k r |  j d  k	 r |  j |  j k rl t d |  j  } qt d |  j  } t d |  j  } | d | } nt |  j  |  j k r |  j |  j k r t |  j  |  j  } n8 t |  j  |  j  } t |  j |  j  } | d | } |  j d d | f g  d  S(   NR  i    R$   t	   dimensionR~  (   RN   R>   RP   RQ   R   RO   R  (   R   R~  R'   R(   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   s(   |  j  d  |  j   |  j d  d  S(   Nt
   sheetViews(   R:  t   _write_sheet_viewR>  (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR	    s    
c         C   sx  g  } |  j  s | j d  n  |  j r8 | j d  n  |  j sQ | j d  n  |  j rj | j d  n  |  j r | j d  n  |  j s | j d  n  |  j r | j d  n  |  j d k r|  j s| j d |  j f  |  j	 r| j d |  j f  qqn  | j d  |  j
 s0t |  j  rd|  j d |  |  j   |  j   |  j d  n |  j d |  d  S(   Nt   showGridLinesi    t   showRowColHeaderst	   showZerost   rightToLefti   t   tabSelectedt   showOutlineSymbolst   viewt
   pageLayoutid   t	   zoomScalet   zoomScaleNormalt   workbookViewIdt	   sheetView(   R  i    (   R  i    (   R  i    (   R  i   (   R  i   (   R  i    (   R  R  (   R  i    (   Rb   R9  Rd   R   R   RY   R   R   R   R   RW   R   RS   R:  t   _write_panest   _write_selectionsR>  R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s6    									

c         C   s   |  j  } |  j } |  j } d | f g } |  j  |  j k rL | j d  n  |  j re | j d  n  | r | j d | f  n  | r | j d | f  n  |  j d k r | j d  n  |  j d
 |  d  S(   Nt   defaultRowHeightt   customHeighti   t
   zeroHeightt   outlineLevelRowt   outlineLevelColi  s   x14ac:dyDescents   0.25t   sheetFormatPr(   R  i   (   R  i   (   s   x14ac:dyDescents   0.25(   R   R   R   R   R9  R   RI   R  (   R   R   t	   row_levelt	   col_levelRG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR
  7  s    				c         C   s_   |  j  s d  S|  j d  x1 t |  j  j    D] } |  j |  j  |  q0 W|  j d  d  S(   Nt   cols(   RR   R:  R  R  t   _write_col_infoR>  (   R   R/   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  O  s    	c         C   s  | \ } } } } } } } d }	 d }
 | r< | j    }
 n  | d  k rf | s] d } d }	 q{ d } n | d k r{ d }	 n  | d k rd } d } | d k  r t t | | | d  t |  d  d } qt t | | d  | t |  d  d } n  d | d f d	 | d f d
 d | f g } |
 rN| j d |
 f  n  | rd| j d  n  |	 rz| j d  n  | r| j d | f  n  | r| j d  n  |  j d |  d  S(   Ni   i    g\( @i   i   g      ?g      p@R+  R,  Rr  s   %.16gRC  RT   R.   t   customWidtht   outlineLevelRp  R/   (   RT   R.   (   R  R.   (   Rp  R.   (   t   _get_xf_indexR>   R   R   R9  R  (   R   t   col_infot   col_minR  Rr  R  RT   Rq  Rp  t   custom_widtht   xf_indexRs  Rt  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  ]  sD    			00c         C   sG   |  j  d  k r |  j d  n$ |  j d  |  j   |  j d  d  S(   Nt	   sheetData(   RN   R>   R  R:  t   _write_rowsR>  (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s
    
c         C   s   |  j  d  k r |  j d  n |  j d  d } |  j j d  |  j j |  } x, | r |  j j |  |  j j |  } qW W|  j j	   t
 j |  j  |  j d  d  S(   NR  i   i    (   RN   R>   R  R:  R   t   seekt   readR?  R   R  RW  t   unlinkR   R>  (   R   t	   buff_sizeRK  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   sb   d |  j  f d |  j f d |  j f d |  j f d |  j f d |  j f g } |  j d |  d  S(   NR  R  R  R  Rf   Rg   t   pageMargins(   Rm   Rn   Ro   Rp   Rq   Rr   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s  g  } |  j  s d  S|  j r5 | j d |  j f  n  |  j d k r] | j d |  j f  n  |  j r |  j d k r | j d |  j f  n  |  j r |  j d k r | j d |  j f  n  |  j r | j d  n  |  j d k r | j d	 |  j f  n  |  j	 r| j d  n | j d  |  j d k rE| j d  n  |  j
 r|  j rp| j d |  j f  n  |  j r| j d |  j f  qnD |  j r| j d |  j f  n  |  j r| j d |  j f  n  |  j d |  d  S(   Nt	   paperSizeid   R  i   t
   fitToWidtht   fitToHeightt	   pageOrdert   overThenDownt   firstPageNumberR\   t   portraitt	   landscapei    t   useFirstPageNumberR.   t   horizontalDpit   verticalDpit	   pageSetup(   R  R  (   R\   R  (   R\   R  (   R  R.   (   RZ   R[   R9  R   R{   R|   R}   Rv   Rz   R\   RF   R   R   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s<    									c         C   s   g  } |  j  s d  S|  j r, | j d  n  |  j rE | j d  n  |  j r^ | j d	  n  |  j rw | j d
  n  |  j d |  d  S(   Nt   horizontalCenteredi   t   verticalCenteredt   headingst	   gridLinest   printOptions(   R  i   (   R  i   (   R  i   (   R  i   (   R]   R^   R9  R_   Rc   R`   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    					c         C   s   g  } |  j  s | j d  n  |  j s8 | j d  n  |  j r |  j d |  |  j rg |  j   n  |  j r} |  j   n  |  j	 d  n |  j
 r |  j d |  n  d  S(   Nt   scaleWithDoci    t   alignWithMarginst   headerFooter(   R  i    (   R  i    (   Ri   R9  Rh   Re   R:  Rf   t   _write_odd_headerRg   t   _write_odd_footerR>  RJ   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  &  s    						c         C   s   |  j  d |  j  d  S(   Nt	   oddHeader(   R=  Rf   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  :  s    c         C   s   |  j  d |  j  d  S(   Nt	   oddFooter(   R=  Rg   (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  >  s    c         C   s  |  j    xt |  j |  j d  D]f} | |  j k sU | |  j k sU |  j | r$ t | d  } | |  j k r |  j | } n d  } |  j | rA| |  j k r |  j
 | |  n |  j
 | | |  j |  x[ t |  j |  j d  D]@ } | |  j | k r |  j | | } |  j | | |  q q W|  j d  q| |  j k rm|  j | | |  j |  q|  j | | |  j |  q$ q$ Wd  S(   Ni   i   R   (   t   _calculate_spansR  RN   RO   R   R   R   R   R   R>   t
   _write_rowRP   RQ   t   _write_cellR>  t   _write_empty_row(   R   R  t
   span_indexR  Ra  t   col_ref(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  B  s,    
  c         C   s(  |  j  } | |  _  | |  j k s= | |  j k s= |  j | rd  } |  j | r | |  j k rr |  j | |  n |  j | | |  j |  x[ t |  j |  j d  D]@ } | |  j | k r |  j | | } |  j	 | | |  q q W|  j
 d  q|  j | | |  j |  n  |  j j   d  S(   Ni   R   (   R   R   R   R   R>   R#  R  RP   RQ   R$  R>  R%  t   clear(   R   t   current_row_numR  R  Ra  R'  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  j  s     		 c         C   s  i  } d  } d  } xt |  j |  j d  D]} | |  j k r x t |  j |  j d  D]a } | |  j | k r[ | d  k r | } | } q | | k  r | } n  | | k r | } q q[ q[ Wn  | |  j k rcx t |  j |  j d  D]p } | |  j k r | |  j | k r | d  k r/| } | } q\| | k  rD| } n  | | k r\| } q\q q Wn  | d d d k s| |  j k r, t | d  } | d  k	 r| d 7} | d 7} d | | f | | <d  } qq, q, W| |  _	 d  S(   Ni   i   i    s   %s:%s(
   R>   R  RN   RO   R   RP   RQ   R   R   R   (   R   t   spanst   span_mint   span_maxR  Ra  R&  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR"    sB      		 		#

c         C   s  d } | r$ | \ } } } }	 }
 n d \ } } } }	 }
 | d  k rQ |  j } n  d | d f g } | ry | j   } n  | r | j d | f  n  | r | j d | f  n  | r | j d  n  | |  j k r | j d | f  n  | r| j d  n  | |  j k r!| j d  n  |	 r=| j d
 |	 f  n  |
 rS| j d  n  |  j d k rr| j d  n  | r|  j d |  n |  j d |  d  S(   Ni    R3  i   R*  t   st   customFormatt   htRT   R  R  Rp  i  s   x14ac:dyDescents   0.25R   (   NNi    i    i    (   R.  i   (   RT   i   (   R  i   (   Rp  i   (   s   x14ac:dyDescents   0.25(   R>   R   R  R9  R   RI   t   _xml_empty_tag_unencodedt   _xml_start_tag_unencoded(   R   R   R*  t
   propertiest	   empty_rowR  Rv  R  RT   Rq  Rp  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR#    s<    c         C   s   |  j  | | | d t d  S(   NR3  (   R#  Ra   (   R   R   R*  R2  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR%    s    c         C   s  t  | |  } d | f g } | j rL | j j   } | j d | f  n | |  j k r |  j | d r |  j | d } | j d | j   f  n8 | |  j k r |  j | } | j d | j   f  n  t |  j }	 |	 d k r|  j | j	 |  n|	 d k rD| j
 }
 |  j s3|  j |
 |  qt j d d |
  }
 t j d d	   |
  }
 t j d
 d k rt d  } t d  } n d } d } t j | d |
  }
 t j | d |
  }
 t j d |
  rt j d |
  r|  j |
 |  qd
 } t j d |
  s%t j d |
  r.d } n  |  j |
 | |  n|	 d k r| j } t | j  t k r| j d&  | j rd } qd
 } nG t | j t  rd' } | j | k r| j d(  q| j d)  n  |  j | j | |  n |	 d" k rzy t | j  Wn t k
 r3| j d*  n X|  j d# |  |  j | j | j  |  j  | j  |  j! d#  nh |	 d$ k r|  j" d# |  nI |	 d% k r| j d+  |  j d# |  |  j  | j#  |  j! d#  n  d  S(,   NR3  R-  i   R4   R3   s   (_x[0-9a-fA-F]{4}_)s   _x005F\1s   ([\x00-\x08\x0B-\x1F])c         S   s   d t  |  j d   S(   Ns   _x%04X_i   (   RC  t   group(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   <lambda>!  s   i    i   i  i  s   \uFFFEs   \uFFFFt   _xFFFE_t   _xFFFF_s   ^<r>s   </r>$s   ^\ss   \s$R8   R5  R  s   #DIV/0!s   #N/As   #NAME?s   #NULL!s   #NUM!s   #REF!s   #VALUE!t   eR   R9   t   cR5   R7   (   R5  R  (   s   #DIV/0!s   #N/As   #NAME?s   #NULL!s   #NUM!s   #REF!s   #VALUE!(   R5  R8  (   R5  R   (   R5  R   (   R5  R  ($   R   R6   R  R9  R   R   R   R  t   _xml_number_elementR  R  RC   t   _xml_string_elementR   R-  R   R   t   unichrR<  t   _xml_rich_inline_stringt   _xml_inline_stringR  R   R   R   t   _xml_formula_elementR  R   R   R:  t   _write_cell_array_formulaR  t   _write_cell_valueR>  R  R"  (   R   R   R/   R  R  RG  R  t   row_xft   col_xfR  R  t	   non_char1t	   non_char2R4  R  t   error_codes(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR$    s    	 				$$					 c         C   s)   | d  k r d } n  |  j d |  d  S(   NR;   t   v(   R>   R=  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRA  h  s    	c         C   s)   d d | f g } |  j  d | |  d  S(   NR5  t   arrayR~  R   (   R5  RH  (   R=  (   R   R  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR@  o  s    c         C   s   g  } |  j  r< |  j r< |  j r< |  j r< |  j r< d  S|  j r^ | j d |  j f  n  |  j rw | j d  n  |  j  s |  j s |  j r |  j d |  |  j   |  j   |  j	   |  j
 d  n |  j d |  d  S(   Nt   codeNamet
   filterModei   t   sheetPr(   RJ  i   (   R{   R   RV   R   R   R9  R:  t   _write_tab_colort   _write_outline_prt   _write_page_set_up_prR>  R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  x  s(    




					


c         C   s*   |  j  s d  Sd g } |  j d |  d  S(   Nt	   fitToPagei   t   pageSetUpPr(   RO  i   (   R{   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRN    s    		c         C   s6   |  j  } | s d  Sd | f g } |  j d |  d  S(   NR  t   tabColor(   RV   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRL    s
    	c         C   s   g  } |  j  s d  S|  j r, | j d  n  |  j sE | j d	  n  |  j s^ | j d
  n  |  j sw | j d  n  |  j d |  d  S(   Nt   applyStylesi   t   summaryBelowi    t   summaryRightR  t	   outlinePr(   RR  i   (   RS  i    (   RT  i    (   R  i    (   R   R   R9  R   R   R   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRM    s    					c         C   s   |  j  |  j  } | s d  St |  } d | f d | f g } |  j d |  x | D] } |  j | d  qW W|  j d  d  S(   NR  t   manualBreakCountt	   rowBreaksi?  (   R3  R~   R   R:  t
   _write_brkR>  (   R   t   page_breaksR  RG  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   s   |  j  |  j  } | s d  St |  } d | f d | f g } |  j d |  x | D] } |  j | d  qW W|  j d  d  S(   NR  RV  t	   colBreaksi (   R3  R   R   R:  RX  R>  (   R   RY  R  RG  Ra  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   s/   d | f d | f d g } |  j  d |  d  S(   NRN  R,  t   mani   t   brk(   R[  i   (   R  (   R   t   brk_idt   brk_maxRG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRX    s    			c         C   sm   |  j  } t |  } | s d  Sd | f g } |  j d |  x | D] } |  j |  qE W|  j d  d  S(   NR  t
   mergeCells(   R   R   R:  t   _write_merge_cellR>  (   R   t   merged_cellsR  RG  t   merged_range(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c   
      C   sa   | \ } } } } t  | |  } t  | |  } | d | } d | f g }	 |  j d |	  d  S(   NR$   R~  t	   mergeCell(   R   R  (
   R   Rb  t   row_minR   R  R  R'   R(   R~  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR`    s    c         C   s  g  } d  } t |  j j    } | s+ d  SxC| D];} t |  j | j    } x| D]} |  j | | } | d } |  j r |  j | r |  j | | r |  j | | }	 t |	  j d k r | d } q n  | d k r>|  j d 7_ | j | | | |  j | d | | d g  |  j	 j d | d d g  qX | j | | | | d | d | d g  qX Wq2 W|  j
 d	  xU | D]M }
 |
 j d
  } | d k r|  j |
   q| d k r|  j |
   qqW|  j d	  d  S(   NR*  R3   R%  i   R   R&  s
   /hyperlinkRK  R   i    i   (   R>   R  R   R  R   R   R  R   R9  R   R:  R7  t   _write_hyperlink_externalt   _write_hyperlink_internalR>  (   R   R   t   displayR  R  R  Ra  t   linkR*  R  R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    sR    
			c   
      C   s   t  | |  } d t |  } d | f d | f g }	 | d  k	 rY |	 j d | f  n  | d  k	 r{ |	 j d | f  n  | d  k	 r |	 j d | f  n  |  j d |	  d  S(   Nt   rIdR~  s   r:idRk  Rg  t   tooltipR  (   R   R   R>   R9  R  (
   R   R   R/   t   id_numRk  Rg  Rj  R~  t   r_idRG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRe  S  s    	c         C   sp   t  | |  } d | f d | f g } | d  k	 rI | j d | f  n  | j d | f  |  j d |  d  S(   NR~  Rk  Rj  Rg  R  (   R   R>   R9  R  (   R   R   R/   Rk  Rg  Rj  R~  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRf  f  s    	c         C   sf   |  j  s d  Sd |  j  f g } |  j rR |  j d |  |  j   |  j d  n |  j d |  d  S(   NR~  t
   autoFilter(   R   R   R:  t   _write_autofiltersR>  R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  u  s    		
c         C   sw   |  j  \ } } xa t | | d  D]L } | |  j k r> q# n  |  j | } |  j | } |  j | | | |  q# Wd  S(   Ni   (   R   R  R   R   t   _write_filter_column(   R   t   col1t   col2R/   RA  R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRn    s    c         C   sY   d | f g } |  j  d |  | d k r; |  j |  n |  j |  |  j d  d  S(   Nt   colIdt   filterColumni   (   R:  t   _write_filterst   _write_custom_filtersR>  (   R   R_  R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRo    s    c         C   s   g  | D]$ } t  |  j   d k r | ^ q } g  } t |  t |  k r[ d g } n  t |  d k r t |  d k r |  j d |  nA |  j d |  x! t |  D] } |  j |  q W|  j d  d  S(   NR  R  i   i    R  (   R  i   (   R   R[  R   R  R:  R  t   _write_filterR>  (   R   R  t   filtert
   non_blanksRG  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRt    s    $$c         C   s#   d | f g } |  j  d |  d  S(   NR  Rw  (   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRv    s    c         C   s   t  |  d k r< |  j d  |  j |   |  j d  nx g  } | d d k r^ d g } n	 d	 g } |  j d |  |  j | d | d  |  j | d | d  |  j d  d  S(
   Ni   t   customFiltersi    t   andi   i   i   (   Rz  i   (   Rz  i    (   R   R:  t   _write_custom_filterR>  (   R   RA  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyRu    s    	c         C   s   g  } i d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6} | | d  k	 rZ | | } n t d |  | d k s | j d | f  n  | j d | f  |  j d |  d  S(   NR  i   R  i   R  i   R  i   R  i   R  i   i   s   Unknown operator = %sRB  R  t   customFilter(   R>   R   R9  R  (   R   RB  R  RG  RA  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR{    s     
c         C   s  g  } |  j  s d  S|  j  } | d r@ | j d | d f  n  | d rZ | j d"  n  | d rt | j d#  n  | d s | j d$  n  | d s | j d%  n  | d r | j d&  n  | d
 r | j d'  n  | d r | j d(  n  | d r| j d)  n  | d r*| j d*  n  | d rD| j d+  n  | d r^| j d,  n  | d rx| j d-  n  | d s| j d.  n  | d r| j d/  n  | d r| j d0  n  | d r| j d1  n  | d s| j d2  n  |  j d! |  d  S(3   NR  R  i   R  R  R  R  t   formatCellsi    R  t   formatColumnsR  t
   formatRowsR  t   insertColumnsR  t
   insertRowsR  t   insertHyperlinksR  t   deleteColumnsR  t
   deleteRowsR  t   selectLockedCellsR  R  Rm  R  t   pivotTablesR  t   selectUnlockedCellst   sheetProtection(   R  i   (   R  i   (   R  i   (   R  i   (   R}  i    (   R~  i    (   R  i    (   R  i    (   R  i    (   R  i    (   R  i    (   R  i    (   R  i   (   R  i    (   Rm  i    (   R  i    (   R  i   (   R   R9  R  (   R   RG  R[  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    sR    		

















c         C   s0   |  j  s d  S|  j d 7_ |  j |  j  d  S(   Ni   (   R   R   t   _write_drawing(   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  #  s    	c         C   s3   d t  |  } d | f g } |  j d |  d  S(   NRi  s   r:idR   (   R   R  (   R   RQ  Rl  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  +  s    c         C   sR   |  j  s d  S|  j d 7_ d t |  j  } d | f g } |  j d |  d  S(   Ni   Ri  s   r:idt   legacyDrawing(   R   R   R   R  (   R   Rl  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  3  s    	c         C   sR   |  j  s d  S|  j d 7_ d t |  j  } d | f g } |  j d |  d  S(   Ni   Ri  s   r:idt   legacyDrawingHF(   R   R   R   R  (   R   Rl  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  @  s    	c         C   sm   |  j  } t |  } | s d  Sd | f g } |  j d |  x | D] } |  j |  qE W|  j d  d  S(   NR  t   dataValidations(   R   R   R:  t   _write_data_validationR>  (   R   R   R  RG  t
   validation(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  M  s    	c   	      C   s  d } g  } x | d D] } | d k r6 | d 7} n  | \ } } } } | | k rd | | } } n  | | k r | | } } n  | | k r | | k r | t  | |  7} q | t | | | |  7} q W| d d k r| j d | d f  | d d k r| j d	 | d f  qn  d
 | k rn| d
 d k rK| j d$  n  | d
 d k rn| j d%  qnn  | d r| j d&  n  | d s| j d'  n  | d r| j d(  n  | d r| j d)  n  d | k r| j d | d f  n  d | k r"| j d | d f  n  d | k rH| j d | d f  n  d | k rn| j d | d f  n  | j d  | f  | d d k r|  j d! |  nR |  j d! |  |  j | d"  | d# d  k	 r|  j | d#  n  |  j d!  d  S(*   NR;   R  RK  R  R  R   R  R  RB  R  i   t
   errorStyleR  i   R  R  t
   allowBlankR  t   showDropDownR  t   showInputMessageR  t   showErrorMessageR  t
   errorTitleR  RL  R  t   promptTitleR  t   promptR  t   dataValidationR  R  (   R  R  (   R  R  (   R  i   (   R  i   (   R  i   (   R  i   (	   R   R   R9  R  R:  t   _write_formula_1R>   t   _write_formula_2R>  (	   R   R[  R  RG  R  t	   row_firstR  t   row_lastR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  `  s\    



c         C   s   t  |  t k r. |  j |   } d | } nC y t |  Wn2 t k
 rp | j d  rq | j d  } qq n X|  j d |  d  S(   Ns   "%s"R   t   formula1(   R   R6  R  R   R   R   R  R=  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sW   y t  |  Wn2 t k
 rB | j d  rC | j d  } qC n X|  j d |  d  S(   NR   t   formula2(   R   R   R   R  R=  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sK   t  |  j j    } | s d  Sx% | D] } |  j | |  j |  q& Wd  S(   N(   R  R   R  t   _write_conditional_formatting(   R   R  t
   cond_range(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   sN   d | f g } |  j  d |  x | D] } |  j |  q& W|  j d  d  S(   NR  t   conditionalFormatting(   R:  t   _write_cf_ruleR>  (   R   R  R  RG  t   param(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s
    c         C   s%  d | d f g } d | k rI | d d  k	 rI | j d | d f  n  | j d | d f  | j d  r | j d0  n  | d d k r| j d	 | d
 f  |  j d |  d | k r d | k r |  j | d  |  j | d  n |  j | d  |  j d  n| d d k rt j d | d
  rJ| j d1  n  t j d | d
  rp| j d2  n  t j d | d
  rt j d | d
  } | j d | j d  f  n  |  j	 d |  nS| d d k r\d
 | k r
| d
 d k r
| j d3  n  d | k r&| j d4  n  | d p3d } | j d | f  |  j	 d |  n| d d k r|  j	 d |  n| d d k r|  j	 d |  n| d d  k s| d d! k s| d d" k s| d d# k rA| j d	 | d
 f  | j d$ | d f  |  j d |  |  j | d%  |  j d  n| d d& k r| j d& | d
 f  |  j d |  |  j | d%  |  j d  n| d d' k s| d d( k s| d d) k s| d d* k r
|  j d |  |  j | d%  |  j d  n| d d+ k rG|  j d |  |  j
 |  |  j d  n | d d, k r|  j d |  |  j |  | j d-  r|  j |  n  |  j d  n~ | d d. k r|  j d |  |  j | d
  |  j d  n= | d d/ k r!|  j d |  |  j |  |  j d  n  d  S(5   NR   R6   t   dxfIdR&  R  t
   stopIfTruei   R  RB  R  t   cfRuleR  R  R  R  t   belowi    R  t   equalAverages   [123] std devs   ([123]) std devRY  R  R@  R  R  R  i
   t   rankR  R  R  R(  R  R  R^  R  R  R  R  R  R  R*  R  R'  R  R  (   R  i   (   R  i    (   R  i   (   R  i   (   R  i   (   R>   R9  RV  R:  t   _write_formula_elementR>  R   R<  R4  R  t   _write_color_scalet   _write_data_bart   _write_data_bar_extt   _write_icon_set(   R   R  RG  R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sW   y t  |  Wn2 t k
 rB | j d  rC | j d  } qC n X|  j d |  d  S(   NR   R  (   R   R   R   R  R=  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  I  s    c         C   s   |  j  d  |  j | d | d  | d d  k	 rP |  j | d | d  n  |  j | d | d  |  j d | d	  | d
 d  k	 r |  j d | d
  n  |  j d | d  |  j d  d  S(   NR*  R  R  R  R  R  R  R  R  R  R  (   R:  t   _write_cfvoR>   R  R>  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  V  s    c         C   s   g  } | j  d  r/ | j d | d f  n  | j  d  rX | j d | d f  n  | j  d  rw | j d  n  |  j d |  |  j | d	 | d
  |  j | d | d  |  j d | d  |  j d  d  S(   NR  t	   minLengthR  t	   maxLengthR  t	   showValuei    R  R  R  R  R  R  R  (   R  i    (   RV  R9  R:  R  R  R>  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  k  s    c         C   s   |  j  d } t |  j  d } d | | f } | | d <|  j j |  |  j d  |  j d  |  j d |  |  j d  |  j d  d  S(   Ni   s   {DA7ABA51-AAAA-BBBB-%04X-%012X}t   guidt   extLsts&   {B025F937-C7B1-47D3-B67F-A62EFF666E3E}s   x14:idt   ext(   R@   R   R   R9  R:  t
   _write_extR=  R>  (   R   R  t   worksheet_countt   data_bar_countR  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    

c         C   s   g  } | d d k r, d | d f g } n  | j  d  rK | j d  n  | j  d  rj | j d  n  |  j d |  x7 t | d
  D]% } |  j | d | d | d  q W|  j d  d  S(   NR  R  R  R  R  i    R  Rz  i   R  R   R  R  (   R  i    (   Rz  i   (   RV  R9  R:  t   reversedR  R>  (   R   R  RG  t   icon(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s[   d | f g } | d  k	 r1 | j d | f  n  | rG | j d  n  |  j d |  d  S(   NR   R  t   gtei    t   cfvo(   R  i    (   R>   R9  R  (   R   t   cf_typeR  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s#   | | f g } |  j  d |  d  S(   NR  (   R  (   R   R?   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s%   x |  j  D] } |  j |   q
 Wd  S(   N(   RS   t   _write_selection(   R   t	   selection(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sn   g  } | r" | j  d | f  n  | r> | j  d | f  n  | rZ | j  d | f  n  |  j d |  d  S(   NR  t
   activeCellR  R  (   R9  R  (   R   R  R  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sJ   |  j  } t |  s d  S| d d k r9 |  j |   n |  j |   d  S(   Ni   i   (   RW   R   t   _write_split_panest   _write_freeze_panes(   R   RW   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	c         C   s  g  } | } | } t  | |  }	 d }
 d } d } d } |  j rd |  j d \ } } } g  |  _ n  | r | r d }
 t  | d  } t  d |  } |  j j d | | g  |  j j d | | g  |  j j d | | g  nG | r
d }
 |  j j d | | g  n d }
 |  j j d | | g  | d k r>d } n | d k rSd } n d	 } | ru| j d
 | f  n  | r| j d | f  n  | j d |	 f  | j d |
 f  | j d | f  |  j d |  d  S(   NR;   i    t   bottomRightt   topRightt
   bottomLeftt   frozeni   t   frozenSplitR%   t   xSplitt   ySplitt   topLeftCellt
   activePanet   stateR  (   R   RS   R9  R  (   R   R   R/   R  R  R  RG  t   y_splitt   x_splitt   top_left_cellRX   R  R  R  R0   t   row_cellt   col_cell(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    sH    			c         C   sW  g  } d } d } d }	 d }
 | } | } |  j  r[ |  j  d \ } }	 }
 g  |  _  d } n  | rx t d | d  } n  | r |  j |  } n  | | k r | | k r t d | d d d  } t d | d d d	 d
 d  } n  t | |  } | s| }	 | }
 n  | r| rd } t | d  } t d |  } |  j  j d | | g  |  j  j d | | g  |  j  j d |	 |
 g  nG | rd } |  j  j d |	 |
 g  n d } |  j  j d |	 |
 g  | r| j d d | f  n  | r| j d d | f  n  | j d | f  | rC| j d | f  n  |  j d |  d  S(   Ni    R;   i   i   i,  g      ?i   i  i   i   i@   R  R  R  R  s   %.16gR  R  R  R  (   RS   R   t   _calculate_x_split_widthR   R9  R  (   R   R   R/   R  R  R  RG  t   has_selectionRX   R  R  R  R  R0   R  R  R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    sT    			'	c         C   sq   d } d } | d k  r3 t  | | | d  } n t  | | d  | } | d d } | d } | d } | S(	   Ni   i   i   g      ?i   i   i   i  (   R   (   R   Rr  Rs  Rt  Ru  t   pointst   twips(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  _  s    

c         C   s   |  j  } t |  } | s d  Sd | f g } |  j d |  x- | D]% } |  j d 7_ |  j |  j  qE W|  j d  d  S(   NR  t
   tablePartsi   (   R   R   R:  R   t   _write_table_partR>  (   R   R   R  RG  R0   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  v  s    	c         C   s3   d t  |  } d | f g } |  j d |  d  S(   NRi  s   r:idt	   tablePart(   R   R  (   R   Rl  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   st   t  |  j  } t  |  j  } | r0 | r0 d  S|  j d  | rP |  j   n  | rc |  j   n  |  j d  d  S(   NR  (   R   R   R   R:  t   _write_ext_list_data_barst   _write_ext_list_sparklinesR>  (   R   t   has_data_barst   has_sparklines(    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   sY   |  j  d  |  j d  x |  j D] } |  j |  q$ W|  j d  |  j d  d  S(   Ns&   {78C0D931-6437-407d-A8EE-F0AAD7539E65}s   x14:conditionalFormattingsR  (   R  R:  R   t"   _write_conditional_formatting_2010R>  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s8  d } d | f g } |  j  d |  |  j |  |  j |  |  j | d | d  |  j | d | d  | d s |  j | d	  n  | d
 s |  j | d  n  | d r | d r |  j | d  n  | d d k	 r |  j | d  n  |  j d  |  j d  |  j	 d | d  |  j d  d  S(   Ns3   http://schemas.microsoft.com/office/excel/2006/mains   xmlns:xms   x14:conditionalFormattingR/  R  R1  R  R  R  R  R  R  R  R  R  R  s   x14:dataBars
   x14:cfRules   xm:sqrefR  (
   R:  t   _write_x14_cf_rulet   _write_x14_data_bart   _write_x14_cfvot   _write_x14_border_colort   _write_x14_negative_fill_colort    _write_x14_negative_border_colort   _write_x14_axis_colorR>  R=  (   R   R  t   xmlns_xmRG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s,    

c         C   s<   d } | d } d | f d | f g } |  j  d |  d  S(   NR  R  R   RN  s
   x14:cfRule(   R:  (   R   R  t	   rule_typeR  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    
c         C   s,  d } d } d | f d | f g } | d s> | j  d  n  | d rX | j  d  n  | d
 d k rx | j  d  n  | d
 d k r | j  d  n  | d r | j  d  n  | d r | d r | j  d  n  | d d k r | j  d  n  | d d k r| j  d   n  |  j d |  d  S(!   Ni    id   R  R  R  t   borderi   R  t   gradientR  R  R  t   leftToRightR  R  R  t   negativeBarColorSameAsPositiveR  t$   negativeBarBorderColorSameAsPositiveR  t   middlet   axisPositionR  s   x14:dataBar(   R  i   (   R  i    (   R  R  (   R  R  (   R  i   (   R  i    (   R  R  (   R  R  (   R9  R:  (   R   R  R  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s,    	


c         C   s_   d | f g } | d k r. |  j  d |  n- |  j d |  |  j d |  |  j d  d  S(	   NR   R+  R,  R.  R0  s   x14:cfvos   xm:f(   R+  R,  R.  R0  (   R  R:  R=  R>  (   R   R  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s#   d | f g } |  j  d |  d  S(   NR  s   x14:borderColor(   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s#   d | f g } |  j  d |  d  S(   NR  s   x14:negativeFillColor(   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s#   d | f g } |  j  d |  d  S(   NR  s   x14:negativeBorderColor(   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  $  s    c         C   s#   d | f g } |  j  d |  d  S(   NR  s   x14:axisColor(   R  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  )  s    c         C   s  |  j  d  |  j   x t |  j  D] } |  j |  |  j | d  |  j | d  |  j   |  j | d  |  j	 | d  |  j
 | d  |  j | d  |  j | d  | d	 r |  j d
 | d	  n  |  j |  |  j d  q' W|  j d  |  j d  d  S(   Ns&   {05C60535-1F16-4fd2-B633-F4F36F0B64E0}Rr  Rs  Rt  Ru  Rv  Rw  Rx  R~  s   xm:fs   x14:sparklineGroups   x14:sparklineGroupsR  (   R  t   _write_sparkline_groupsR  R   t   _write_sparkline_groupt   _write_color_seriest   _write_color_negativet   _write_color_axist   _write_color_markerst   _write_color_firstt   _write_color_lastt   _write_color_hight   _write_color_lowR=  t   _write_sparklinesR>  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  .  s$    


c         C   s   |  j  d  xn t | d  D]\ } | d | } | d | } |  j  d  |  j d |  |  j d |  |  j d  q W|  j d  d  S(   Ns   x14:sparklinesR  R  Rj  s   x14:sparklines   xm:fs   xm:sqref(   R:  R  R=  R>  (   R   R  Rg  R  Rk  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  ]  s    c         C   s<   d } | d } d | f d | f g } |  j  d |  d  S(   Ns$   http://schemas.microsoft.com/office/s   spreadsheetml/2009/9/mains	   xmlns:x14t   uriR  (   R:  (   R   R  R  t	   xmlns_x14RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  n  s
    
	c         C   s)   d } d | f g } |  j  d |  d  S(   Ns3   http://schemas.microsoft.com/office/excel/2006/mains   xmlns:xms   x14:sparklineGroups(   R:  (   R   R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR  z  s    c         C   s  | j  d  } g  } | j  d  d  k	 rk | d d k rG d | d <qk | j d | d f  d | d <n  | j  d  d  k	 r | d d k r d | d <q | j d	 | d f  d | d <n  | d
 d k r | j d
 | d
 f  n  | j  d  r| j d | d f  n  | j  d  r3| j d!  n  | rO| j d | f  n  | j  d  rn| j d"  n  | j  d  r| j d#  n  | j  d  r| j d$  n  | j  d  r| j d%  n  | j  d  r| j d&  n  | j  d  r	| j d'  n  | j  d  r(| j d(  n  | j  d  rG| j d)  n  | j  d  rp| j d | d f  n  | j  d  r| j d | d f  n  | j  d  r| j d*  n  |  j d  |  d  S(+   NR  R,  R4  t   cust_maxt	   manualMaxR  R+  t   cust_mint	   manualMinR   R  R  t
   lineWeightR~  t   dateAxisi   t   displayEmptyCellsAsRq  R  R  R  R  R  Ry  t   displayXAxisRT   t   displayHiddent   minAxisTypet   maxAxisTypeRz  R  s   x14:sparklineGroup(   R  i   (   Rq  i   (   R  i   (   R  i   (   R  i   (   R  i   (   R  i   (   R  i   (   R  i   (   R  i   (   RV  R>   R9  R:  (   R   R[  R  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    sV    c         C   s   g  } | j  d  r/ | j d | d f  n  | j  d  rX | j d | d f  n  | j  d  r | j d | d f  n  |  j | |  d  S(   NR  R  t   tint(   RV  R9  R  (   R   t   elementR  RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   _write_spark_color  s    c         C   s   |  j  d |  d  S(   Ns   x14:colorSeries(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorNegative(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d i d d 6 d  S(   Ns   x14:colorAxist   FF000000R  (   R  (   R   (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorMarkers(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorFirst(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorLast(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorHigh(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s   |  j  d |  d  S(   Ns   x14:colorLow(   R  (   R   R  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    c         C   s    d d g } |  j  d |  d  S(   Nt   fontIdt   0R   t   noConversiont
   phoneticPr(   R	  R
  (   R   R  (   R  (   R   RG  (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR    s    	(   R  t
   __module__t   __doc__R=   R   R#   R   R   R>   R  R   R  R   R  R   R  R   R-   R  R  R   R   R#  R   R'  R   R2  R1  RJ  RM  RN  R]  R_  Rc  Re  Rf  Rh  Ri  Rk  Rl  Rm  Ro  R2   Ru  Rx  RE   Rz  R{  R  R  R  R  R<  Ri  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|  R3  R  R  R9  R  R[  R_  Ra  Rd  RM  Re  Rp  Rq  R  R  R  R  R  R\  R  R  R  R,  R;  R  R  R  R  R  R  R2  R  R  R	  R  R
  R  R  R  R  R  R  R  R  R  R  R  R  R"  R#  R%  R$  RA  R@  R  RN  RL  RM  R  R  RX  R  R`  R  Re  Rf  R  Rn  Ro  Rt  Rv  Ru  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  R  R  R  R  R  (    (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyR:      s  		#	V.e	n	* ;!							I;1	;	(  '				3!						KK									)	[!		(		!		R		<	+		+	:	b	|	@	4						8				7						K		$			1			7				J					(&	13	p														G								0						O						h										8	G							-		%						/				Z									(3   R  R   RW  R   R   R  t   collectionsR    R   t   mathR   R   t   warningsR   t   compatibilityR   R   R   R   R;   R	   R6   R
   R   R   R^  R   R   t   utilityR   R   R   R   R   R   R   R   R   R   t
   exceptionsR   R#   R-   R2   R  R  R  R$  R  R  R:   (    (    (    s3   lib/python2.7/site-packages/xlsxwriter/worksheet.pyt   <module>	   sP   				