
}\c           @  sT  d  d l  m Z d  d l m Z d  d l m Z m Z d d l Td d l m Z m	 Z	 d d l
 m Z m Z m Z m Z m Z d d l Td Z d Z d	 d f d
 d f d d f d d f d d f d d f d d f d d f d d f d d f d d f d d f f Z d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d      YZ d!   Z i e e 6e e 6e e 6e  e! 6e e" 6Z# i d" e$ 6d# e% 6d$ e 6d% e  6d& e& 6d' e' 6d( e( 6Z) d) e f d*     YZ* e* e$ e+ d+   Z, d, e f d-     YZ- d Z. d. e f d/     YZ/ d0 S(1   i(   t   print_function(   t   array(   t   calcsizet   unpacki   (   t   *(   t   Formatt   nearest_colour_index(   t   FMLA_TYPE_CELLt   FMLA_TYPE_SHAREDt   decompile_formulat   dump_formulat   rangename2di    t   show_formulast   show_grid_linest   show_sheet_headerst   panes_are_frozent   show_zero_valuest   automatic_grid_line_colourt   columns_from_right_to_leftt   show_outline_symbolst'   remove_splits_if_pane_freeze_is_removedt   sheet_selectedt   sheet_visiblet   show_in_page_break_previewt   Sheetc           B  s  e  Z d  Z d Z e Z d Z d Z i  Z i  Z	 g  Z
 g  Z g  Z i  Z e Z e Z e Z e Z e Z e Z e Z d Z d f d Z g  Z i  Z i  Z d Z d Z d Z d Z d Z d Z g  Z  g  Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d	   Z' d
   Z( d   Z) d e d  Z* d e d  Z+ d e d  Z, d e d  Z- d e d  Z. d e d  Z/ e- Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d   Z6 e d  Z7 d d  Z8 d d  Z9 d   Z: d   Z; d   Z< d   Z= d   Z> d    Z? d!   Z@ d"   ZA d#   ZB RS($   sj  
    Contains the data for one worksheet.

    In the cell access functions, ``rowx`` is a row index, counting from
    zero, and ``colx`` is a column index, counting from zero.
    Negative values for row/column indexes and slice positions are supported in
    the expected fashion.

    For information about cell types and cell values, refer to the documentation
    of the :class:`Cell` class.

    .. warning::

      You don't instantiate this class yourself. You access :class:`Sheet`
      objects via the :class:`~xlrd.book.Book` object that
      was returned when you called :func:`xlrd.open_workbook`.
    t    i    i   c         C  s  | |  _  | j |  _ | |  _ | j |  _ t d t g  |  _ t d d g  |  _ | |  _ | |  _	 | j
 |  _
 | j |  _ | j |  _ |  j r |  j |  _ n |  j |  _ | j |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ g  |  _ g  |  _ g  |  _ d  |  _ d  |  _ d  |  _ d |  _ d |  _ d |  _  d |  _! i  |  _" i  |  _# g  |  _$ g  |  _% g  |  _& i  |  _' g  |  _( g  |  _) d d d d g |  _* | j+ | |  _, x$ t- D] \ } } t. |  | |  qWd |  _/ d |  _0 d |  _1 d  |  _2 g  |  _3 i  |  _4 i  |  _5 d |  _6 d |  _7 d |  _8 d |  _9 d  |  _: d  |  _; i  |  _< |  j d k rwd	 |  _= n	 d
 |  _= d |  _> d |  _? d  S(   Nt   Bt   hii    i@   i<   id   iP   i   i @  i   (@   t   bookt   biff_versiont	   _positiont   logfileR   t   XL_CELL_EMPTYt   btt   bft   namet   numbert	   verbosityt   formatting_infot   ragged_rowst   put_cell_raggedt   put_cellt   put_cell_unraggedt   _xf_index_to_xl_type_mapt   nrowst   ncolst   _maxdatarowxt   _maxdatacolxt	   _dimnrowst	   _dimncolst   _cell_valuest   _cell_typest   _cell_xf_indexest   Nonet   defcolwidtht   standardwidtht   default_row_heightt   default_row_height_mismatcht   default_row_hiddent   default_additional_space_abovet   default_additional_space_belowt   colinfo_mapt   rowinfo_mapt   col_label_rangest   row_label_rangest   merged_cellst   rich_text_runlist_mapt   horizontal_page_breakst   vertical_page_breakst   _xf_index_statst   _sheet_visibilityt
   visibilityt   _WINDOW2_optionst   setattrt   first_visible_rowxt   first_visible_colxt   gridline_colour_indext   gridline_colour_rgbt   hyperlink_listt   hyperlink_mapt   cell_note_mapt$   cooked_page_break_preview_mag_factort   cooked_normal_view_mag_factort$   cached_page_break_preview_mag_factort   cached_normal_view_mag_factort   scl_mag_factort   _ixfet   _cell_attr_to_xfxt   utter_max_rowst   utter_max_colst   _first_full_rowx(   t   selfR   t   positionR#   R$   t   attrt   defval(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   __init__?  s|    																																														c         C  sJ   |  j  r |  j | |  } n d } t |  j | | |  j | | |  S(   sC   
        :class:`Cell` object in the given row and column.
        N(   R&   t   cell_xf_indexR5   t   CellR3   R2   (   R[   t   rowxt   colxt   xfx(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   cell  s    	c         C  s   |  j  | | S(   s.   Value of the cell in the given row and column.(   R2   (   R[   Rb   Rc   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt
   cell_value  s    c         C  s   |  j  | | S(   s   
        Type of the cell in the given row and column.

        Refer to the documentation of the :class:`Cell` class.
        (   R3   (   R[   Rb   Rc   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt	   cell_type  s    c         C  s   |  j    |  j | | } | d k r> |  j d c d 7<| Sy7 |  j | j } | d k rt |  j d c d 7<| SWn t k
 r n Xy@ |  j | j } | d k r d } n  |  j d c d 7<| SWn% t k
 r |  j d c d 7<d SXd S(   s   
        XF index of the cell in the given row and column.
        This is an index into :attr:`~xlrd.book.Book.xf_list`.

        .. versionadded:: 0.6.1
        ii    i   i   i   i   N(   t   req_fmt_infoR4   RE   R>   t   xf_indext   KeyErrorR=   (   R[   Rb   Rc   Rd   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR`     s*    
 	c         C  s   t  |  j |  S(   s   
        Returns the effective number of cells in the given row. For use with
        ``open_workbook(ragged_rows=True)`` which is likely to produce rows
        with fewer than :attr:`~Sheet.ncols` cells.

        .. versionadded:: 0.7.2
        (   t   lenR2   (   R[   Rb   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   row_len  s    c         C  s6   g  t  t |  j |   D] } |  j | |  ^ q S(   sS   
        Returns a sequence of the :class:`Cell` objects in the given row.
        (   t   xrangeRk   R2   Re   (   R[   Rb   Rc   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   row  s    c           s     f d   t    j  D S(   s3   Returns a generator for iterating through each row.c         3  s   |  ] }   j  |  Vq d  S(   N(   Rn   (   t   .0t   index(   R[   (    s)   lib/python2.7/site-packages/xlrd/sheet.pys	   <genexpr>  s    (   t   rangeR,   (   R[   (    (   R[   s)   lib/python2.7/site-packages/xlrd/sheet.pyt   get_rows  s    c         C  s-   | d k r |  j | | S|  j | | | !S(   sM   
        Returns a slice of the types of the cells in the given row.
        N(   R5   R3   (   R[   Rb   t
   start_colxt   end_colx(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt	   row_types  s    c         C  s-   | d k r |  j | | S|  j | | | !S(   sN   
        Returns a slice of the values of the cells in the given row.
        N(   R5   R2   (   R[   Rb   Rs   Rt   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt
   row_values  s    c         C  s   t  |  j |  } | d k  rA | | 7} | d k  rA d } qA n  | d k sY | | k rb | } n | d k  r{ | | 7} n  g  t | |  D] } |  j | |  ^ q S(   sP   
        Returns a slice of the :class:`Cell` objects in the given row.
        i    N(   Rk   R2   R5   Rm   Re   (   R[   Rb   Rs   Rt   t   ncRc   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt	   row_slice  s    
	c         C  s   |  j  } | d k  r7 | | 7} | d k  r7 d } q7 n  | d k sO | | k rX | } n | d k  rq | | 7} n  g  t | |  D] } |  j | |  ^ q S(   sS   
        Returns a slice of the :class:`Cell` objects in the given column.
        i    N(   R,   R5   Rm   Re   (   R[   Rc   t
   start_rowxt   end_rowxt   nrRb   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt	   col_slice  s    	
	c         C  s   |  j  } | d k  r7 | | 7} | d k  r7 d } q7 n  | d k sO | | k rX | } n | d k  rq | | 7} n  g  t | |  D] } |  j | | ^ q S(   sQ   
        Returns a slice of the values of the cells in the given column.
        i    N(   R,   R5   Rm   R2   (   R[   Rc   Ry   Rz   R{   Rb   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt
   col_values  s    	
	c         C  s   |  j  } | d k  r7 | | 7} | d k  r7 d } q7 n  | d k sO | | k rX | } n | d k  rq | | 7} n  g  t | |  D] } |  j | | ^ q S(   sP   
        Returns a slice of the types of the cells in the given column.
        i    N(   R,   R5   Rm   R3   (   R[   Rc   Ry   Rz   R{   Rb   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt	   col_types)  s    	
	c      	   C  s  |  j  d k r. t |  j d |  j |  j  n  d rw|  j rwd } } |  j } |  j } x |  j D] } | \ } } } }	 d | k o | k  o | k n s d | k o |	 k  o | k n r t |  j d |  j |  j	 |  n  | | k r| } n  |	 | k rc |	 } qc qc W| |  j k r?| |  _ d |  _
 n  | |  j k rw|  j | d d t t d  d  qwn  |  j  d k r|  j |  j k s|  j |  j k rt |  j d	 |  j |  j	 |  j |  j |  j |  j  n  |  j s|  j }
 |  j } |  j } |  j } |  j } |  j
 d k r2|  j } n	 |  j
 } x t |  D] } | | } t |  } |
 | } | d k rHt d  g | | | | )|  j | | | )| r|  j | | | | )qqHqHWn  d  S(
   Ni   s$   tidy_dimensions: nrows=%d ncols=%d 
i   i    s6   *** WARNING: sheet #%d (%r), MERGEDCELLS bad range %r
iR   is?   NOTE *** sheet %d (%r): DIMENSIONS R,C = %d,%d should be %d,%d
(   R%   t   fprintfR   R,   R-   RA   RX   RY   R$   R#   RZ   R)   R    t   UNICODE_LITERALR0   R1   R'   R3   R2   R4   R&   Rm   Rk   R!   R"   (   R[   R{   Rw   t   umaxrowst   umaxcolst   cranget   rlot   rhit   clot   chiR-   t   s_cell_typest   s_cell_valuest   s_cell_xf_indexest
   s_fmt_infot   uboundRb   t   trowt   rlent   nextra(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   tidy_dimensions@  sj    
		P	 	 	)$							

c         C  se  | d  k r |  j | } n  d | k o6 |  j k  n sA t  d | k o[ |  j k  n sf t  |  j } y| d } |  j | k  r|  j j } |  j	 j }	 |  j
 j }
 |  j } |  j } xI t |  j |  D]5 } | | d  |	 g   | r |
 | d  q q W| |  _ n  |  j | } |  j	 | } | rI|  j
 | } n  t |  } | |  j k rt| d |  _ n  | | } | s| j |  | j |  | r| j |  n  d  S| d k r| d 7} |  j | | | )t d  g | | | )| r|  j | | | )qn  | | | <| | | <| r:| | | <n  Wn# t d | | d |  j   n Xd  S(   Ni    i   R   R)   t   file(   R5   R+   RY   t   AssertionErrorRX   R&   R,   R3   t   appendR2   R4   R!   R"   Rm   Rk   R-   R   t   printR   (   R[   Rb   Rc   t   ctypet   valueRi   t   fmt_infoR{   t   sctat   scvat   scxaR!   R"   t   _unusedt	   types_rowt
   values_rowt   fmt_rowt   ltrt	   num_empty(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR(   }  s\    %%	
		




c         C  s  | d  k r |  j | } n  yC | |  j | | <| |  j | | <|  j r^ | |  j | | <n  Wnt k
 r| d } | d } d | k o |  j k n s t  d | k o |  j	 k n s t  | |  j
 k r.| |  _
 | |  j k  r d |  _ q.| |  j k od k n r.| |  _ q.n  | |  j k r|  j | } |  j
 t |  }	 |	 d k ru| j |  j |	  |  j r|  j | j |  j |	  n  |  j | j t d  g |	  qun |  j j }
 |  j j } |  j j } |  j } |  j
 } |  j } |  j } xV t |  j |  D]B } |
 | |  | t d  g |  | r&| | |  q&q&W| |  _ yC | |  j | | <| |  j | | <|  j r| |  j | | <n  Wqt d | | d |  j   qXn# t d | | d |  j   n Xd  S(   Ni   ii    R   R)   R   (   R5   R+   R3   R2   R&   R4   t
   IndexErrorRY   R   RX   R-   R,   RZ   Rk   t   extendR!   R"   R   R   Rm   R   R   (   R[   Rb   Rc   R   R   Ri   R{   Rw   R   R   R   R   R   R   R!   R"   R   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR*     sd    	

%%		'						
c   t      C  s$  d } | p |  j  d k } | p- |  j  d k } d o9 | } d } | j } |  j | _ t t t t t t f } |  j }	 t	 }
 | j
 } |  j } |  j } | o | j } i  } i  } d } x#|   \ } } } | t k r|
 d | d   \ } } } } |	 | | d  | |  q | t k r|
 d |  \ } } } } |	 | | t | j | |  | r#| j j |  } | r| |  j | | f <qq#q | t k r |
 d | d d ! \ } } } | t k  rt | d | j p| j   d	 d } n t | d d	 d } |	 | | t | |  q | t k r|
 d | d d ! \ } } } | t k  rt | d | j pr| j   d	 d \ } } t | |  } | d
 7} g  } x? t |  D]1 } | j t	 d | | | d !  | d 7} qW| t  |  k st!  n t" | d d	 d \ } } t	 d | | | d ! d } | d 7} g  } x? t |  D]1 } | j t	 d | | | d !  | d 7} qWW| t  |  k st!  |	 | | t | |  | |  j | | f <q | t# k r$|
 d | d   \ } } } t$ | d d ! } |	 | | d  | |  q | t% k r|
 d | d d ! \ } }  |
 d | d  \ }! d } xat |  |! d
  D]^ } |
 d | | | d ! \ } t$ | | d | d ! } | d 7} |	 | | d  | |  q|Wq | t& k r| sq n  |
 d | d d ! \ } }" }# d | k o2|  j' k  n s]t( d | |  j' f d |  j) q n  |" |# f }$ | j |$  }% |% d  k rOt*   | |$ <}% |" d @|% _+ |" d ?d
 @|% _, |# d @|% _- |# d ?d
 @|% _. |# d ?d
 @|% _/ |# d ?d
 @|% _0 |# d ?d
 @|% _1 |# d ?d @|% _2 |# d ?d
 @|% _3 |# d ?d
 @|% _4 |% j1 sOd |% _2 qOn  |% |  j5 | <d r|% j2 d k rt6 |  j) d |  j7 | |% j2  n  | r#t( d | |" |# d |  j) |% j8 |  j) d d |  j7 | f q#q | t9 k r
| d  k r|
 d! | d d ! \ } } } }& }' nn | d" k rR|
 d! | d d ! \ } } } }& }' n: |
 d# | d d ! \ } } }( }& }' |  j: |( | |  } | rt6 |  j) d$ | |  |
 d | d% d& ! d }) t; | | d& |) t< d' | d( | d) d
 d* | n  |& d d+ !d, k ru
t |& d  }* |* d k r	d }+ | j
   \ }, }- }. |, t= k sV|, t> k r_d
 }+ n|, t k r|
 d- |. d   \ }/ }0 }1 }2 }3 }4 | re	t6 |  j) d. |/ |0 |1 |2 |3  qe	n |, t k rF	|
 d/ |. d   \ }/ }0 }1 }2 }5 }4 | re	t6 |  j) d0 |/ |0 |1 |2 |5  t; | |. d |4 t? d) d
 d' | d( | d* | qe	n |, | k re	t@ d1 |,   n  |+ s	| j
   \ }, }6 }. |, t= t> f k r	t@ d2 |,   q	n  |  jA |.  } |  j | | t | |  q
|* d
 k r
t |& d  }7 |	 | | tB |7 |  q
|* d k r=
t |& d  }7 |	 | | tC |7 |  q
|* d3 k rb
|	 | | t d4 |  q
t@ d5 |*   q#|
 d6 |&  d } |	 | | d  | |  q | tD k r
|
 d7 | d+   \ } } } }7 }8 tB tC f |8 }9 |	 | | |9 |7 |  q | tE k r2| sq n  tF   }: |
 d8 | d   \ }; }< |: _G |: _2 }' d |; k oc|< k ocd9 k n st( d: |; |< f d |  j) ~: q n  tH |: |' d d d d f  x8 t |; |< d
  D]# } | dB k rPn  |: |  jI | <qW| r#t6 |  j) dC |  j7 |; |< |: jG |: j2 |'  |: j8 |  j) d dD q#q | tJ k rZ|
 d | d   \ |  _K q | tL k r| d k rt( dE | tM |  d |  j) n  |
 d | d   \ |  _N q | tO k rd| sq n  | dF k st!  | d d !dG k st!  t	 dH | d dF ! }= g  }> x@ |= D]8 }? x/ t dI  D]! }@ |> j |? d
 @ |? d
 L}? q)WqWtP |>  |  _Q q | tR k r| s|q n  |
 d | d   \ } } } |	 | | tS d4 |  q | tT k re| sq n  | d
 ?}A |
 dJ |A |  }B |B d  \ } }C |B d }D |A |D d |C k st!  d } xt |C |D d
  D]* } |	 | | tS d4 |B |  | d
 7} q4Wq | tU k s}| tV k rW| d k rq n  | dK k  r|
 dL | d d+ ! }E n |
 dM | d d? ! }E d \ |  _W |  _X |E \ |  _Y |  _Z | d k r#|  j[ j\ r#|  j[ j] r#|  j[ j^   n  | r#t6 |  j) dP |  j7 |  j_ |  jZ |  jY  q#q | t` k rs|  ja |  q | tb k r|  jc |  q | td k rd } | rt( dQ d |  j) n  d
 } Pq | te k r|  jf |  }F |F r|F jg }G q#d  }G q | th k r|  ji | | |  q | tj k r\|  jk |  }H |H r#|G r#|H | |G <d  }G q#q | tl k r{|  jm | |  q | tn k r|  jo |  q | tp k rG|
 d | d d ! \ }I }J |J dI k rt( dR | | j | d |I |J f d |  j) n  x) | j
   \ }K } } |K td k rPqqW| r#t( dS d |  j) q#q | tq k rc| jr |  q | ts k rd } tt |  ju | | | dT d+ } tt |  jv | | | dT d+ } | | k s#t!  q | t k r%|
 d- | d   \ }/ }0 }1 }2 }3 }4 | r#t( dU |/ |0 |1 |2 |3 d |  j) q#q | t k r|
 d/ | d   \ }/ }0 }1 }2 }5 }4 | r#t( dV |/ |0 |1 |2 |5 d |  j) t; | | d |4 t? d) d
 d' | d( | d* | q#q | tw k r| sq n  | dK k st!  t	 dW | d d? ! \ }L }M }N }O }P }Q |  j  d
 k rSt6 |  j) dX |  j7 |  j_ |L |M tx |N |O d
 |P |Q d
   n  g  }R tt |R | d? | dT d+ } |  j  d
 k r#t6 |  j) dY t  |R  dZ jy d[   |R D   q#q | tz k r| sq n  t	 d\ | d d ! \ }S }T }U }V }' |' d] ?d
 @}W |' d ?d
 @}X |' d ?d
 @}Y |  j  d
 k rYt6 |  j) d^ |S |T |U |V |' |W |X |Y 
 n  d? } |W r*t	 d_ | | | d` ! \	 }Z }[ }\ }] }^ }_ }` }a }b |` d
 k d
 @}c |[ d
 k d
 @}d |` d k d
 @}e |[ d k d
 @}f |  j  d
 k rt6 |  j) da |Z |\ |] |^ |_ |a |b |c |d |e |f  n  | d` 7} n  |X r=| d+ 7} n  |Y rP| d 7} n  | | | |U !}g | |U 7} | r|U rt6 |  j) db  t{ | |g |U | dc d d) d
 n  | | | |V !}h | |V 7} | | k st!  | r#|V r#t6 |  j) dd  t{ | |h |V | dc d d) d
 q#q | t| k r| d k rNt	 d | d   \ }? |  _} nS | d k rt	 d |  \ |  _} d }? t6 |  j) de  n d }? t6 |  j) df |  |? d
 @|  _~ |? d
 ?d
 @|  _ |? d ?d
 @|  _ |? d3 ?d
 @|  _ q | t k rc| sq n  tt |  j | d | dT d+ } | r>t6 |  j) dg | d d+  n  | | k s#t! dh | | f   q | t k rd| dK k r| d k rt	 di | d   \ }i |  _ |  _ |  _ |  _ |  _ nn | d" k st!  t	 d | d   \ }i |  _ |  _ t	 dj | d dk ! |  _ t |  j[ j |  j dl d |  _ xt D]* \ }j }k t |  |j |i d
 @ |i d
 L}i q3Wq | t k rt	 d |  \ }l }m d }B |m r|l dm |m }B n  d |B k odn k n s| s|  j  d k rt( do |  j7 |l |m f d |  j) n  dm }B n  |B |  _ q | t k rWt	 dp | dk   \ |  _ |  _ |  _ |  _ |  _ d
 |  _ q | t k rT| soq n  |
 d | d   \ }n |n d d | dK k d | k st!  d } | dK k  rx | | k  r|  j j |
 d | | | d ! d d dB f  | d 7} qWq#x	| | k  rP|  j j |
 d | | | d !  | d 7} qWq | t k rQ| slq n  |
 d | d   \ }n |n d d | dK k d | k st!  d } | dK k  rx | | k  r	|  j j |
 d | | | d ! d d dq f  | d 7} qWq#x| | k  rM|  j j |
 d | | | d !  | d 7} qWq | dr k r | t k su| t k r| j | |  q#| t k s| t k r| j |  q#| t k r|  j[ j] s|  j[ j^   n  | j |  q#| t k r| j |  q#| t k r | j |  q#| t k sD| t k sD| t k rT| j |  q#| t k rp| j |  q#| t k r| j |  q#| t k r| j |  q#| t k r| j |  q#| t k r|
 d |  d |  _ q#| t k r8|
 ds |  \ } } }( } |	 | | d  | |  j: |( | |   q#| t k r|
 dt |  \ } } }( } |	 | | d  t |  |  j: |( | |   q#| t k r|
 du | d d ! \ } } }( t | d | j p| j   d	 d
 } |	 | | t | |  j: |( | |   q#| t k ri|
 dv |  \ } } }( }7 }8 tB tC f |8 }9 |	 | | |9 |7 |  j: |( | |   q#| t k r| sq n  |
 du | d   \ } } }( |	 | | tS d4 |  j: |( | |   q#| t k r| j |  q#| t k r | sq n  |
 dw | d dx ! \ } }" }# d | k o2|  j' k  n s]t( dy | |  j' f d |  j) q n  |# d
 @spd } nr | dz k r|
 d | d dz ! d }o |  j: d{ d  d| | d} d d~ |o  } n% | d d !}( |  j: |( | d} d } |" |# | f }$ | j |$  }% |% d  k rT t*   | |$ <}% |" d @|% _+ |" d ?d
 @|% _, |# d
 @|% _1 | |% _2 n  |% |  j5 | <d r |% j2 d k r t6 |  j) d |  j7 | |% j2  n  | r#t( d | |" d |  j) |% j8 |  j) d d |  j7 | f q#q#| t k r!| s q n  |
 d | d   \ }; }< }p |; |< k sC!t( d |; |< f d |  j) q n  xY t |; |< d
  D]D } | |  jI k r|!|  jI | }: n tF   }: |: |  jI | <|p |: _G qW!W| r#t6 |  j) d |  j7 |; |< |p  q#q#| t k r#| s!q n  |
 d | d   \ }; }< | r "t6 |  j) d |  j7 |; |<  n  d |; k oB"|< k  oB"d9 k n sv"t( d |; |< f d |  j) t |< d9  }< n  xPt |; |<  D] } d d3 | |; }q | |q |q d3 !}( |  j: |( d| d d} | } | |  jI k r"|  jI | }: n tF   }: |: |  jI | <| |: _2 q"Wq#| t k r#d }r x@ t |r | d d ! D]( \ }j }s t |  |j t |s d k   q8#Wt	 d | d d ! \ |  _ |  _ |  _ t	 dj | d d ! |  _ t |  j[ j |  j dl d |  _ q#q q W| s#t@ d |  j7 |  j_ f   n  |  j   |  j   | | _ d
 S(   Ni    i   i   s   <HHHdi   s   <HHHis   <HHHi   t   lenleni   s   <BBs   <Hs   <HHi
   is   <H4xH4xii   sT   *** NOTE: ROW record has row index %d; should have 0 <= rowx < %d -- record ignored!R   i  i   i   i   i  i   i   is   **ROW %d %d %d
t   ROWt   headers   --- sh #%d, rowx=%d ---i2   s   <HHH8sHi   s   <HH3s8sBs   FORMULA: rowx=%d colx=%d
i   i   t   browxt   bcolxt   blaht   r1c1i   s   s   <HHBBBxxxxxHs   ARRAY: %d %d %d %d %d
s   <HHBBxBHs   SHRFMLA (sub): %d %d %d %d %d
s@   Expected SHRFMLA, ARRAY, TABLEOP* or STRING record; found 0x%04xs$   Expected STRING record; found 0x%04xi   R   s+   unexpected special case (0x%02x) in FORMULAs   <ds   <HHHBBs   <HHHHHi   sr   *** NOTE: COLINFO record has first col index %d, last %d; should have 0 <= first <= last <= 255 -- record ignored!t   hiddent	   bit1_flagi   t   outline_leveli   i   t	   collapsedi   s>   COLINFO sheet #%d cols %d-%d: wid=%d xf_index=%d flags=0x%04x
s   ===s   *** ERROR *** STANDARDWIDTHi"   s     s   <8ii    s   <%dHiP   s   <HxxHs   <ixxHi   i(   s+   sheet %d(%r) DIMENSIONS: ncols=%d nrows=%d
s   SHEET.READ: EOFsM   *** Unexpected embedded BOF (0x%04x) at offset %d: version=0x%04x type=0x%04xs   ---> found EOFt	   addr_sizes   ARRAY:s   SHRFMLA (main):s   <6Hs   
*** WARNING: Ignoring CONDFMT (conditional formatting) record
*** in Sheet %d (%r).
*** %d CF record(s); needs_recalc_or_redraw = %d
*** Bounding box is %s
s#   *** %d individual range(s):
*** %s
s   , c         s  s   |  ] } t  |   Vq d  S(   N(   R   (   Ro   t   coords(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pys	   <genexpr>  s    s   <BBHHii   s   
*** WARNING: Ignoring CF (conditional formatting) sub-record.
*** cf_type=%d, cmp_op=%d, sz1=%d, sz2=%d, flags=0x%08x
*** optional data blocks: font=%d, border=%d, pattern=%d
s    <64x i i H H B 3x i 4x i i i 18xiv   s   *** Font info: height=%d, weight=%d, escapement=%d,
*** underline=%d, colour_index=%d, esc=%d, underl=%d,
*** style=%d, posture=%d, canc=%d, cancellation=%d
s   *** formula 1:
t   reldeltas   *** formula 2:
sR   *** WARNING: DEFAULTROWHEIGHT record len is 2, should be 4; assuming BIFF2 format
sR   *** WARNING: DEFAULTROWHEIGHT record len is %d, should be 4; ignoring this record
s   MERGEDCELLS: %d ranges
s   MERGEDCELLS: pos=%d data_len=%ds	   <HHHHxxHHs   <BBBi	   t   debugid   i  sH   WARNING *** SCL rcd sheet %d: should have 0.1 <= num/den <= 4; got %d/%ds   <HHHHBi  i-   s   <HH3sds   <HH3sHs   <HH3ss   <HH3sBBs   <H4xH2xBi   sW   *** NOTE: ROW_B2 record has row index %d; should have 0 <= rowx < %d -- record ignored!i   t	   cell_attrRb   Rc   t   true_xfxi   t   ROW_B2s   <BBHsg   *** NOTE: COLWIDTH record has first col index %d, last %d; should have first <= last -- record ignored!s&   COLWIDTH sheet #%d cols %d-%d: wid=%d
s.   COLUMNDEFAULT sheet #%d cols in range(%d, %d)
sd   *** NOTE: COLUMNDEFAULT record has first col index %d, last %d; should have 0 <= first < last <= 256R   R   R   R   R   s    s   <HHBs    Sheet %d (%r) missing EOF record(   i    i   R   (   i   i   R   (   i   i   R   (   i   i   R   (   i    i    (   i   i   i(   (   R   R   R   R   R   (   R%   R   t
   XL_SHRFMLAt   XL_ARRAYt
   XL_TABLEOPt   XL_TABLEOP2t	   XL_ARRAY2t   XL_TABLEOP_B2R)   R   t   get_record_partsR   R&   t   _rich_text_runlist_mapt	   XL_NUMBERR5   t   XL_LABELSSTt   XL_CELL_TEXTt   _sharedstringst   getRB   t   XL_LABELt   BIFF_FIRST_UNICODEt   unpack_stringt   encodingt   derive_encodingt   unpack_unicodet
   XL_RSTRINGt   unpack_string_update_post	   BYTES_ORDRm   R   Rk   R   t   unpack_unicode_update_post   XL_RKt	   unpack_RKt   XL_MULRKt   XL_ROWRX   R   R   t   Rowinfot   heightt   has_default_heightR   t   outline_group_starts_endsR   t   height_mismatcht   has_default_xf_indexRi   t   additional_space_abovet   additional_space_belowR>   R   R$   t   dumpt   XL_FORMULA_OPCODESt   fixed_BIFF2_xfindexR	   R   t	   XL_STRINGt   XL_STRING_B2R   t	   XLRDErrort   string_record_contentst   XL_CELL_BOOLEANt   XL_CELL_ERRORt
   XL_BOOLERRt
   XL_COLINFOt   Colinfot   widtht   upkbitsR=   t   XL_DEFCOLWIDTHR6   t   XL_STANDARDWIDTHt   reprR7   t   XL_GCWt   tuplet   gcwt   XL_BLANKt   XL_CELL_BLANKt   XL_MULBLANKt   XL_DIMENSIONt   XL_DIMENSION2R,   R-   R0   R1   R   t   xf_listt   _xf_epilogue_donet   xf_epilogueR#   t   XL_HLINKt   handle_hlinkt   XL_QUICKTIPt   handle_quicktipt   XL_EOFt   XL_OBJt
   handle_objt   idt   XL_MSO_DRAWINGt   handle_msodrawingetct   XL_TXOt
   handle_txot   XL_NOTEt   handle_notet	   XL_FEAT11t   handle_feat11t   bofcodest
   XL_COUNTRYt   handle_countryt   XL_LABELRANGESt)   unpack_cell_range_address_list_update_posR@   R?   t
   XL_CONDFMTR   t   joint   XL_CFR
   t   XL_DEFAULTROWHEIGHTR8   R9   R:   R;   R<   t   XL_MERGEDCELLSRA   t
   XL_WINDOW2RJ   RK   RL   RS   RT   RM   R   t
   colour_mapRH   RI   t   XL_SCLRU   t   XL_PANEt   vert_split_post   horz_split_post   horz_split_first_visiblet   vert_split_first_visiblet   split_active_panet   has_pane_recordt   XL_HORIZONTALPAGEBREAKSRC   t   XL_VERTICALPAGEBREAKSRD   t	   XL_FORMATt
   XL_FORMAT2t   handle_formatt   XL_FONTt   XL_FONT_B3B4t   handle_fontt   XL_STYLEt   handle_stylet
   XL_PALETTEt   handle_palettet   XL_BUILTINFMTCOUNTt   handle_builtinfmtcountt   XL_XF4t   XL_XF3t   XL_XF2t	   handle_xft   XL_DATEMODEt   handle_datemodet   XL_CODEPAGEt   handle_codepaget   XL_FILEPASSt   handle_filepasst   XL_WRITEACCESSt   handle_writeaccesst   XL_IXFERV   t   XL_NUMBER_B2t
   XL_INTEGERt   floatt   XL_LABEL_B2t   XL_BOOLERR_B2t   XL_BLANK_B2t   XL_EFONTt   handle_efontt	   XL_ROW_B2t   XL_COLWIDTHt   XL_COLUMNDEFAULTt   mint   XL_WINDOW2_B2t   zipt   intR   R   t   update_cooked_mag_factors(t   R[   t   bkt   DEBUGR   t	   blah_rowst   blah_formulasR   t   oldpost   XL_SHRFMLA_ETC_ETCt   self_put_cellt   local_unpackt   bk_get_record_partst   bvR   t   do_sst_rich_textt   rowinfo_sharing_dictt   txost	   eof_foundt   rct   data_lent   dataRb   Rc   Ri   t   dt   sstindext   runlistt   strgt   post   nrtR   t	   mulrk_rowt   mulrk_firstt
   mulrk_lastt   bits1t   bits2t   keyt   rt
   result_strt   flagsR   t   fmlalent
   first_bytet	   gotstringt   rc2t	   data2_lent   data2t   row1xt   rownxt   col1xt   colnxt   array_flagst   tokslent   nfmlast   _unused_lenR   t   is_errt   celltyt   ct
   first_colxt	   last_colxt   iguffR   t   bitst   jt   nitemst   resultt	   mul_firstt   mul_lastt	   dim_tuplet	   saved_objt   saved_obj_idt   txot   versiont   boftypet   codet   num_CFst   needs_recalct   browx1t   browx2t   bcolx1t   bcolx2t   olistt   cf_typet   cmp_opt   sz1t   sz2t
   font_blockt
   bord_blockt
   patt_blockt   font_heightt   font_optionst   weightt
   escapementt	   underlinet   font_colour_indext   two_bitst   font_esct   font_underlt
   font_stylet   posturet	   font_canct   cancellationt   fmla1t   fmla2t   optionsR]   t   _unused_defvalt   numt   dent
   num_breaksRd   R   t   offsett
   attr_namest   char(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   read  sv   					*-
!
!
 		((%	%%" 	('	
 "   

%"  	
+ %(%" (!	  %5	
"
%	
	 	7"	1 (1$ (1$$(.'(( ( 
	'	 	 '	 # ($

	c         C  se  |  j  } |  j } | d k d } t d d | d | |   d } | } | d k  ro | j pi | j   } n  d } t d  }	 x | d k r t | |  d @}
 d |
 } | d 7} n  t | | |  } |	 | 7}	 | t |  7} | | k r |	 S| | k r#d
 | | f } t	 |   n  | j
   \ } } } | t k rWt	 d |   n  d } q Wd  S(   Ni   i   t   <t   BHi    iP   R   t   latin_1t	   utf_16_les,   STRING/CONTINUE: expected %d chars, found %ds2   Expected CONTINUE record; found record-type 0x%04X(   R  R  (   R   R   R   R   R   R   R   t   unicodeRk   R   R   t   XL_CONTINUE(   R[   RS  RL  RC  R   t   nchars_expectedR  t   enct   nchars_foundRz  t   flagt   chunkt   msgRQ  Rp  (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR     s8    		#

c         C  sN  t  p |  j d k } |  j r |  j d  k r9 d |  _ n |  j |  _ |  j } d | k oe d k n s | r t d |  j |  j f d |  j	 n  |  j } n  | |  _
 n |  j d  k r d |  _
 n |  j |  _
 |  j } | s d } nT d | k od k n sA| r5t d |  j |  j f d |  j	 n  |  j
 } n  | |  _ d  S(	   Ni    id   i
   i  sG   WARNING *** WINDOW2 rcd sheet %d: Bad cached_normal_view_mag_factor: %dR   i<   sN   WARNING *** WINDOW2 rcd sheet %r: Bad cached_page_break_preview_mag_factor: %r(   RD  R%   R   RU   R5   RQ   RT   R   R$   R   RR   RS   (   R[   R   t   zoom(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyRB    s8    					c   	      C  sq  d } | p |  j  d k } |  j d k r |  j j r | d  k	 rK | } n t | d  d @} | d k r |  j d  k r t d   n  |  j } n  | Sd |  _ |  j _ n  t | d  d @} | d k s t  |  j	 j
 |  } | d  k	 r | S| rt |  j d | | |  n  |  j j s[x3 t d  D]" } |  j d	 d
 d | d k   q2Wn  |  j d	 |  } | S(   Ni    i   i   i?   s?   BIFF2 cell record has XF index 63 but no preceding IXFE record.i   s   New cell_attr %r at (%r, %r)
i   R   s   @  t   stylei   (   R%   R   R   R   R5   R   RV   R   R   RW   R   R   R   Rm   t   insert_new_BIFF20_xf(	   R[   R   Rb   Rc   R   RD  R   Rd   t   xfx_slot(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR     s2    	#c         C  sr  d } | p |  j  d k } |  j } t | j  } |  j | |  } | | _ | j j |  | r | j |  j d d | d d n  | j	 | j
 k r| j	 r d } t |  j | | j | j	 | j	  n  t | j	 t t d   }	 |	 | j
 | j	 <| j j |	  n  i t t 6t t 6t t 6t t 6t t 6}
 | j
 | j	 }	 |
 |	 j } | |  j | j <| |  j | <| S(	   Ni    i   R   s   === Faked XF %d ===t   footers   ======s1   ERROR *** XF[%d] unknown format key (%d, 0x%04x)
t   General(   R%   R   Rk   R   t   fake_XF_from_BIFF20_cell_attrRi   R   R   R   t
   format_keyt
   format_mapR   R   t   FUNR   t   format_listt   XL_CELL_NUMBERt   FNUt   FGEt   XL_CELL_DATEt   FDTt   FTXt   typeR+   RW   (   R[   R   R  RD  R   R   Rd   t   xfR  t   fmtt   cellty_from_fmttyRr  (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR  A  s8    		#	
c         C  s4  d d l  m } m } m } m } m } |   } |   | _ d | j _ d | j _ d | j _	 |   | _
 d | j
 _ d | j
 _ d | j
 _ d | j
 _ |   | _ |   | _ t d |  \ }	 }
 } |
 d @| _ |
 d @d ?| _ t | j |	 d" d# f  | d
 @| j _ xs d$ d% d& d' f D]_ \ } } | | @rLd( \ } } n d) \ } } t | j
 | d |  t | j
 | d |  q'W| j } | d @rd | _ n	 d | _ d | _ d | _ d* | | _ d | j _ d | j _ d d d d d d g } x, | D]$ } d  | d! } t | | d  qW| S(+   Ni   (   t   XFt   XFAlignmentt   XFBordert   XFBackgroundt   XFProtectioni    s   <BBBi?   i   i   i@   t   cell_lockedi   i   t   formula_hiddeni   t   lefti   t   righti    t   topt   bottomt   _colour_indext   _line_stylei   i	   i  i   t   formatt   fontt	   alignmentt   bordert
   backgroundt
   protectiont   _t   _flag(   i   i@   R  (   i   i   R  (   i   R  (   i   R  (   i    R  (   i@   R  (   i   i   (   i    i    (   i  i    (   t
   formattingR  R  R  R  R  R  t   indent_levelt   shrink_to_fitt   text_directionR  t   diag_upt	   diag_downt   diag_colour_indext   diag_line_styleR  R  R   R  t
   font_indexR   t	   hor_alignRI   t   fill_patternt   background_colour_indext   pattern_colour_indext   parent_style_indext
   vert_alignt   rotation(   R[   R   R  R  R  R  R  R  R  t	   prot_bitst   font_and_formatt
   halign_etct   maskt   sidet   colour_indext
   line_stylet   bgt
   attr_stemst	   attr_stemR]   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR  `  sZ    (	

	
				c         C  s   |  j  s t d   n  d  S(   Ns9   Feature requires open_workbook(..., formatting_info=True)(   R&   R   (   R[   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyRh     s    	c         C  s  |  j    |  j d k rZ |  j j | d  } | d k	 rA | j S|  j d k	 r |  j Sn |  j d k r |  j | r |  j d k	 r |  j Sq |  j j | d  } | d k	 r | j Sn: |  j d k r |  j j | d  } | d k	 r | j Sn  |  j d k	 r|  j d Sd S(   s  
        Determine column display width.

        :param colx:
          Index of the queried column, range 0 to 255.
          Note that it is possible to find out the width that will be used to
          display columns with no cell information e.g. column IV (colx=255).

        :return:
          The column width that will be used for displaying
          the given column by Excel, in units of 1/256th of the width of a
          standard character (the digit zero in the first font).

        .. versionadded:: 0.6.1
        iP   i(   i   i   i   Ni   (	   Rh   R   R=   R   R5   R   R7   R   R6   (   R[   Rc   t   colinfo(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   computed_column_width  s*    




c      	   C  s  t  r t d d |  j n  t |  } t   } t d | d   \ | _ | _ | _ | _	 } } } | d k sw t
  | d k s t
  t  r t d | d |  j n  d } d   } | d	 @r | | |  \ | _ } n  | d
 @r| | |  \ | _ } n  | d @r| d @rt d | | | d ! \ }	 t  rPt |  j d |	  n  | d 7} |	 d k rt d  | _ t d | | | d ! d }
 | d 7} t | | | |
 !d  | _ t  rt |  j d | j t | j   n  | j j d  } t  rt d | d |  j n  | j |  | _ d | d } | | 7} |
 | } | | | | !} | | 7} t  rt |  j d | j | |
 | |  n  | d1 k st
  qv|	 d k rt d  | _ t d | | | d ! \ } }
 | d 7} d  | | | | |
 d !} t  r%t |  j d! | |  n  | |
 7} | d 7} t d" | | | d ! d } t  rwt d# | d |  j n  | d 7} | rt d" | | | d ! d } | d 7} | d 7} t | | | | !d  } | | 7} | | _ q| | _ qvt |  j d$ |	  nk | d% @d& k rEt d'  | _ | | |  \ | _ } n1 | d( @d) k rgt d*  | _ n t d+  | _ | d) @r| | |  \ | _ } n  t  r| j d, d-  t d. | | f  n  | | } | d k rt |  j d/ | j d | j d | t | |   n | d k  r1t d0   n  |  j j |  xX t | j | j d  D]= } x4 t | j | j	 d  D] } | |  j | | f <q{Wq[Wd  S(2   Ns   
=== hyperlink ===R   s   <HHHH16s4sii    s   y  Ks      s   options: %08Xc         S  s^   t  d |  | | d ! d d } | d 7} t |  | | | !d  d  } | | 7} | | f S(   Ns   <Li   i    i   s   UTF-16lei(   R   R  (   t   buft   ofst   nbt   uc(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   get_nul_terminated_unicode  s
    "

i   i   i   i   s   <16si   s	   clsid=%r
s   y  Kt   urls   <Li   i    s   UTF-16les   initial url=%r len=%d
s    s	   endpos=%di   s9   url=%r
extra=%r
nbytes=%d true_nbytes=%d extra_nbytes=%d
i   s               Fs
   local files   <Hii   s   ..\s   uplevels=%d shortpath=%r
s   <is   sz=%ds   *** unknown clsid %r
ic  i  t   uncik  i   t   workbookt   unknownR   s   ... object dump ...s   offset=%d record_size=%ds=   *** WARNING: hyperlink at R%dC%d has %d extra data bytes: %s
s:   Bug or corrupt file, send copy of input file for debugging(   i   i    (   RD  R   R   Rk   t	   HyperlinkR   t   frowxt   lrowxt   fcolxt   lcolxR   t   desct   targetR   R   R  R  t   url_or_patht   findt   textmarkR   t   REPRR   RN   R   Rm   RO   (   R[   RS  t   record_sizeR   t   guid0t   dummyR  R  R   t   clsidt   nbytest   endpost   true_nbytest   extra_nbytest
   extra_datat   uplevelst	   shortpatht   szt   xlt   extended_pathRb   Rc   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR     s     	4 	

 

 % 


 
 

 







  c         C  s   t  d | d   \ } } } } } | t k s4 t  |  j sC t  |  j d } | | | | f | j | j | j | j f k s t  | d d k s t  t | d d !d  | _	 d  S(   Ns   <5Hi
   iis     R  (
   R   R   R   RN   R  R  R  R	  R  t   quicktip(   R[   RS  t   rcxR  R  R  R	  R   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   0  s    "6c         C  s  t  s
 d  Sd } |  j d k  r# d  St   } d } xi| | k  rt d | | | d ! \ } } }	 | d @}
 | d ?d @} |
 d k r d } n |	 } | r t | | | d d	 d d
 |  j t |  j d | | |
 |	 |	  n  | d k rC| d k s t  t d | | d | d | ! \ | _ | _	 | _
 | _ | _ n7 | d k rz|	 d k sat  | d | k szt  n  | | d 7} q5 W| | k st  | r| j |  j d d d d n  d  S(   Ni   iP   i    s   <HHIi   i   i   i  t   baset   fouts.   fbt:0x%04X  inst:%d  ver:0x%X  cb:%d (0x%04X)
i  i   s   <Hiiiii  R   s   === MSODrawing ===R  t    (   t   OBJ_MSO_DEBUGR   t
   MSODrawingR   t   hex_char_dumpR   R   R   t
   anchor_unkt   anchor_colx_lot   anchor_rowx_lot   anchor_colx_hit   anchor_rowx_hiR   (   R[   t   recidRR  RS  RD  t   oRX  t   tmpt   fbtt   cbt   vert   instt   ndb(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   9  s:    	#
	#	Cc         C  s  |  j  d k  r d  St   } t |  } d } t rJ t |  j d |  n  xT| | k  rt d | | | d ! \ } } t r t |  j d | | |  t | | | d d d d |  j n  | d k r| d	 k o | d
 k r|  j	 r t |  j d  n  d  S| d	 k rs| d k s!t
  t d | | d | d ! \ | _ | _ } t | | d/ d0 d1 d2 d3 d4 f  n| d k r| | | !d | | k rPn  d } t |  j d  |  t | | | | d d d |  j t |   n | d! k rKt d" | | d | d
 ! }	 xx t |	 d5  D]  \ }
 } t | d( | |
  q$WnD | d k rst rt |  j d)  qn | d* k r| j rPqn  | | d 7} qM Wt r| j |  j d+ d, d- d. n  | S(6   NiP   i    s   ... OBJ record len=%d...
s   <HHi   s   pos=%d ft=0x%04X cb=%d
R   R!  i   i   s6   *** WARNING Ignoring antique or corrupt OBJECT record
s   <HHHi
   i   t   lockedi   t	   printablei   i   t
   autofilteri	   i   t   scrollbar_flagi   i    t   autofilli   i @  t   autolines    s'   Unexpected data at end of OBJECT records   *** ERROR %s
i   s   <5HR   R>  t   maxt   inct   paget
   scrollbar_s.   *** OBJ record has ft==0x0D 'notes' structure
i   R   s   === MSOBj ===R  R"  (   i    i   R3  (   i   i   R4  (   i   i   R5  (   i	   i   R6  (   i   i    R7  (   i   i @  R8  (   R   R>  R9  R:  R;  (   R   R5   t   MSObjRk   R#  R   R   R   R%  R%   R   R  R   R   R   R@  RI   R5  R   (   R[   RS  R,  RR  RX  t   ftR/  t   option_flagsR  t   valuesR   t   tag(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   a  s^    	 &%	-	# 	c         C  s  t  r> t |  j d  t | d t |  d d d |  j n  t   } t |  } |  j d k  rt d | d   \ | _ | _	 } t |  d } | | k s t
  | d g } | | 8} x | d k rU|  j j   \ } }	 }
 | t k s t
  t d |
 d   \ } } | d	 k s!t
  | |	 d k s7t
  | j |
 d  | | 8} q W| d k sht
  |  j j p|  j j   } t d
 j |  |  | _ d g | _ d | _ d | _ d | _ t d
  | _ d  | _ | |  j | j | j	 f <d  St d | d   \ | _ | _	 } | _ | d ?d @| _ | d ?d @| _ | d ?d @| _ t | d d d \ | _ } | | d k st
  t  r| j |  j d d d d n  | j | j  } | r| j | _ | j | _ | |  j | j | j	 f <n  d  S(   Ns   ... NOTE record ...
i    R   R!  iP   s   <HHHi   s   <H2xHi  R   s   <4Hi   i   i   R   i   R   s   === Note ===R  R"  (   i    i    (   i    i   (    R#  R   R   R%  Rk   t   NoteR   R   Rb   Rc   R   R   R   R   R   R   R   R  R
  t   textt   rich_text_runlistt   showt
   row_hiddent
   col_hiddenR   t   authorR5   t
   _object_idRP   R   R   R   (   R[   RS  RO  R,  RR  t   expected_bytesR  t   piecesRf  Rg  Rh  t
   dummy_rowxR  R?  R  R  (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR    sV    (	"
				(c      
   C  s  |  j  d k  r d  St   } d } t |  } t | | |   \ } | _ } } } | _ | | | _ t | | d  d! d" d# d$ f  d }	 t d  | _	 x |	 | k  r|  j
 j   \ }
 } } |
 t k s t  t r t | d | d d d |  j n  t | d  } | d } | r>| d d k s1t  | d } n  t | d d | \ } } | | k skt  | j	 | 7_	 |	 | 7}	 q Wg  | _ d } x | | k  r:|  j
 j   \ } } } | t k st  | d d k st  xN t d | d  D]: } t d | | | d ! } | j j |  | d 7} qWqWx. | j rk| j d d | k rk| j d =q>Wt r| j |  j d d d d t | j d |  j n  | S(%   NiP   s   <HH6sHHHi   i   t
   horz_aligni   ip   R  i	   i   t	   lock_texti @  t	   just_lasti   i   t   secret_editi    R   R   R!  i   i   t	   known_leni   s   <HH4xiR   s   === MSTxo ===R  R"  R   (   i   i   RM  (   i   ip   R  (   i	   i   RN  (   i   i @  RO  (   i   i   RP  (   R   t   MSTxoR   R   t   rott	   ifntEmptyt   fmlaR   R   RC  R   R   R  R   R#  R%  R   R   R   RD  Rm   R   R   R   (   R[   RS  R,  R  t   fmtsizeR?  t   controlInfot   cchTextt   cbRunst   totcharsRf  Rg  Rh  R  t   ncharst   utextR  t   totrunst   rc3t	   data3_lent   data3RX  t   run(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR     sZ    	+	
"
	#c         C  sQ  t  s
 d  St d | d d ! \
 } } } } } } } }	 }
 } | d k sP t  |
 d k sb t  | d k st t  | d k s t  | d k s t  | | k s t  t |  j d | | | |	  t d | d d ! \ } } } } } } } } } } } } } } } t d	 | | | | | | | | | | | | | | | f d
 |  j d  S(   Ns   <HH8sHBiHiH8si    i#   i   ir  s3   FEAT11: grbitFrt=%d  Ref0=%r cref=%d cbFeatData=%d
s   <iiiiiiHHiiiii16sHiB   s   lt=%d  idList=%d crwHeader=%d  crwTotals=%d  idFieldNext=%d cbFSData=%d
rupBuild=%d  unusedShort=%d listFlags=%04X  lPosStmCache=%d  cbStmCache=%d
cchStmCache=%d  lem=%d  rgbHashParam=%r  cchName=%dR   ie   (   R#  R   R   R   R   (   R[   RS  t   rtt   grbitFrtt   Ref0t   isft   fHdrt	   reserved0t   creft
   cbFeatDatat	   reserved1t   Ref1t   ltt   idListt	   crwHeadert	   crwTotalst   idFieldNextt   cbFSDatat   rupBuildt   unusedShortt	   listFlagst   lPosStmCachet
   cbStmCachet   cchStmCachet   lemt   rgbHashParamt   cchName(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR    s    4C(C   t   __name__t
   __module__t   __doc__R#   R5   R   R,   R-   R=   R>   R?   R@   RA   RB   R6   R7   R8   R9   R:   R;   R<   RG   R   RN   RO   RP   R  R  R  R  R  R  RC   RD   R_   Re   Rf   Rg   R`   Rl   Rn   Rr   Ru   Rv   Rx   R|   R}   R~   t   colR   R(   R*   R  R   RB  R   R  R  Rh   R  R   R   R   R   R  R   R  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   2   s   			T					
				=	;	K	  		-"4		(	p			(	8	3	2R$  c           B  s   e  Z RS(    (   R{  R|  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR$  /  s   R=  c           B  s   e  Z RS(    (   R{  R|  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR=  3  s   RR  c           B  s   e  Z RS(    (   R{  R|  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyRR  7  s   RB  c           B  sJ   e  Z d  Z e d  Z d Z d Z d Z d Z	 d Z
 d Z e d  Z RS(   s   
    Represents a user "comment" or "note".
    Note objects are accessible through :attr:`Sheet.cell_note_map`.

    .. versionadded:: 0.7.2
    R   i    N(   R{  R|  R}  R   RH  RG  Rc   R5   RD  RF  Rb   RE  RC  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyRB  ;  s   R  c           B  sJ   e  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   
    Contains the attributes of a hyperlink.
    Hyperlink objects are accessible through :attr:`Sheet.hyperlink_list`
    and :attr:`Sheet.hyperlink_map`.

    .. versionadded:: 0.7.2
    N(   R{  R|  R}  R5   R  R  R  R	  R  R  R
  R  R  R  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR  ^  s   c         C  s   t  |  d  } | d @rR t d |   \ } | d L} | d @rH | d St |  St d d t t | d @  |  d d	 ! \ } | d @r | d S| Sd  S(
   Ni    i   s   <ii   g      Y@s   <ds       i   i   (   R   R   R5  t   BYTES_LITERALt   chr(   t   rk_strRb  t   iRT  (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR     s    



1
t   emptyRC  R$   t   xldatet   boolt   errort   blankRa   c           B  s2   e  Z d  Z d d d g Z d d  Z d   Z RS(   s  
    Contains the data for one cell.

    .. warning::
      You don't call this class yourself. You access :class:`Cell` objects
      via methods of the :class:`Sheet` object(s) that you found in the
      :class:`~xlrd.book.Book` object that was returned when you called
      :func:`~xlrd.open_workbook`

    Cell objects have three attributes: ``ctype`` is an int, ``value``
    (which depends on ``ctype``) and ``xf_index``.
    If ``formatting_info`` is not enabled when the workbook is opened,
    ``xf_index`` will be ``None``.

    The following table describes the types of cells and how their values
    are represented in Python.

    .. raw:: html

        <table border="1" cellpadding="7">
        <tr>
        <th>Type symbol</th>
        <th>Type number</th>
        <th>Python value</th>
        </tr>
        <tr>
        <td>XL_CELL_EMPTY</td>
        <td align="center">0</td>
        <td>empty string ''</td>
        </tr>
        <tr>
        <td>XL_CELL_TEXT</td>
        <td align="center">1</td>
        <td>a Unicode string</td>
        </tr>
        <tr>
        <td>XL_CELL_NUMBER</td>
        <td align="center">2</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_DATE</td>
        <td align="center">3</td>
        <td>float</td>
        </tr>
        <tr>
        <td>XL_CELL_BOOLEAN</td>
        <td align="center">4</td>
        <td>int; 1 means TRUE, 0 means FALSE</td>
        </tr>
        <tr>
        <td>XL_CELL_ERROR</td>
        <td align="center">5</td>
        <td>int representing internal Excel codes; for a text representation,
        refer to the supplied dictionary error_text_from_code</td>
        </tr>
        <tr>
        <td>XL_CELL_BLANK</td>
        <td align="center">6</td>
        <td>empty string ''. Note: this type will appear only when
        open_workbook(..., formatting_info=True) is used.</td>
        </tr>
        </table>
    R   R   Ri   c         C  s   | |  _  | |  _ | |  _ d  S(   N(   R   R   Ri   (   R[   R   R   Ri   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR_     s    		c         C  sI   |  j  d  k r' d t |  j |  j f Sd t |  j |  j |  j  f Sd  S(   Ns   %s:%rs   %s:%r (XF:%r)(   Ri   R5   t
   ctype_textR   R   (   R[   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   __repr__	  s    N(   R{  R|  R}  t	   __slots__R5   R_   R  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyRa     s   @R   R   c           B  s2   e  Z d  Z d Z d Z d Z d Z d Z d Z RS(   sR  
    Width and default formatting information that applies to one or
    more columns in a sheet. Derived from ``COLINFO`` records.

    Here is the default hierarchy for width, according to the OOo docs:

      In BIFF3, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``DEFCOLWIDTH`` is used instead.

      In BIFF4-BIFF7, the width set in this ``COLINFO`` record is only used,
      if the corresponding bit for this column is cleared in the ``GCW``
      record, otherwise the column width set in the ``DEFCOLWIDTH`` record
      is used (the ``STANDARDWIDTH`` record is always ignored in this case [#f1]_).

      In BIFF8, if a ``COLINFO`` record is missing for a column,
      the width specified in the record ``STANDARDWIDTH`` is used.
      If this ``STANDARDWIDTH`` record is also missing,
      the column width of the record ``DEFCOLWIDTH`` is used instead.

    .. [#f1] The docs on the ``GCW`` record say this:

      If a bit is set, the corresponding column uses the width set in the
      ``STANDARDWIDTH`` record. If a bit is cleared, the corresponding column
      uses the width set in the ``COLINFO`` record for this column.

      If a bit is set, and the worksheet does not contain the ``STANDARDWIDTH``
      record, or if the bit is cleared, and the worksheet does not contain the
      ``COLINFO`` record, the ``DEFCOLWIDTH`` record of the worksheet will be
      used instead.

    xlrd goes with the GCW version of the story.
    Reference to the source may be useful: see
    :meth:`Sheet.computed_column_width`.

    .. versionadded:: 0.6.1
    i    i(	   R{  R|  R}  R   Ri   R   R   R   R   (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   	  s   $R   c        
   B  s8   e  Z d  Z e r d Z n  d   Z d   Z d   Z RS(   s   
    Height and default formatting information that applies to a row in a sheet.
    Derived from ``ROW`` records.

    .. versionadded:: 0.6.1
    R   R   R   R   R   R   R   Ri   R   R   c         C  s^   d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  S(   N(   R5   R   R   R   R   R   R   R   Ri   R   R   (   R[   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR_   c	  s    									c      
   C  s@   |  j  |  j |  j |  j |  j |  j |  j |  j |  j |  j	 f
 S(   N(
   R   R   R   R   R   R   R   Ri   R   R   (   R[   (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   __getstate__	  s    c         C  sF   | \
 |  _  |  _ |  _ |  _ |  _ |  _ |  _ |  _ |  _ |  _	 d  S(   N(
   R   R   R   R   R   R   R   Ri   R   R   (   R[   t   state(    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   __setstate__	  s    (
   R   R   R   R   R   R   R   Ri   R   R   (   R{  R|  R}  t
   _USE_SLOTSR  R_   R  R  (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyR   M	  s            		(	N(0   t
   __future__R    R   t   structR   R   t   biffhR  R   R   t   formulaR   R   R	   R
   R   t   timemachineRD  R#  RH   t
   BaseObjectR   R$  R=  RR  RB  R  R   R  R  R  R  R  R  R  R  R    R   R   R   R   R  Ra   R   t
   empty_cellR   R  R   (    (    (    s)   lib/python2.7/site-packages/xlrd/sheet.pyt   <module>   sl   
(
											        #8	

O;