
}\c        
   @  s  d  d l  m Z d  d l Z d  d l Z d d l m Z m Z m Z d d l Td d l	 Td d l
 Ty d  d l m Z Wn! e k
 r d  d l m Z n Xd  d l Z e j Z e j Z d Z d Z d Z y d  d l Z d Z Wn e k
 r d Z n Xe Z d	 Z e d
  \ Z Z Z Z Z d d d d d d d d f Z 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. 6Z  i  Z! i  Z" xF e  j#   D]8 \ Z$ Z% e& e$  Z$ e& e%  Z% e% e" e$ <e$ e! e% <qW[$ [% [  e' e j( d e e' e' e) e) e) d/ 	 Z* d0 e+ f d1     YZ, d2 e+ f d3     YZ- d4   Z. d5 d6  Z/ d7   Z0 d8   Z1 d S(9   i(   t   print_functionNi   (   t   compdoct
   formattingt   sheet(   t   *(   t   perf_counter(   t   clocki    i i   iP   iF   i2   i-   i(   i   i   i   s    t   Consolidate_Areas   t	   Auto_Opens   t
   Auto_Closes   t   Extracts   t   Databases   t   Criterias   t
   Print_Areas   t   Print_Titless   t   Recorders   	t	   Data_Forms   
t   Auto_Activates   t   Auto_Deactivates   t   Sheet_Titles   t   _FilterDatabasec	         C  sD  t    }	 t r1 t j   }
 |
 r1 t j   q1 n  t   } y| j d |  d | d | d | d | d | d | d | d	 |  	t    } | |	 | _ | j t	  } | s t
 d
   n  | t k r t
 d t |   n  | | _ | d k r"| rt | j d  t | _ } n  | j   n{ | d k ra| j   | rt | j d  t | _ } qn< | j   g  | j D] } d  ^ qu| _ | s| j   n  t | j  | _ | d k r| j d k rt | j d | j  n  t r|
 rt j   qn  t    } | | | _ Wn | j     n X| s@| j   n  | S(   Nt   filenamet   file_contentst   logfilet	   verbosityt   use_mmapt   encoding_overridet   formatting_infot	   on_demandt   ragged_rowss#   Can't determine file's BIFF versions    BIFF version %s is not supportedi(   s`   *** WARNING: on_demand is not supported for this Excel version.
*** Setting on_demand to False.
i-   i   s|   *** WARNING: Excel 4.0 workbook (.XLW) file contains %d worksheets.
*** Book-level data will be that of the last worksheet.
(   R   t	   TOGGLE_GCt   gct	   isenabledt   disablet   Bookt   biff2_8_loadt   load_time_stage_1t   getboft   XL_WORKBOOK_GLOBALSt	   XLRDErrort   SUPPORTED_VERSIONSt   biff_text_from_numt   biff_versiont   fprintfR   t   FalseR   t   fake_globals_get_sheett   parse_globalst   _sheet_namest   Nonet   _sheet_listt
   get_sheetst   lent   nsheetst   enablet   load_time_stage_2t   release_resources(   R   R   R   R   R   R   R   R   R   t   t0t   orig_gc_enabledt   bkt   t1R*   t   sht   t2(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   open_workbook_xlsF   sp    						

	
t   Namec           B  s   e  Z d  Z d g 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 e d  Z RS(   s   
    Information relating to a named reference, formula, macro, etc.

    .. note::

      Name information is **not** extracted from files older than
      Excel 5.0 (``Book.biff_version < 50``)
    t   stacki    t    ic         C  s   |  j  } | r | j } | j } | t k r t |  d k r | d } d | j k oj | j d k n r | j | j d k r | j	 | j
 d k r |  j j | j  } | j | j | j	  Sq n  |  j |  j j d d d d t d   d S(	   s:  
        This is a convenience method for the frequent use case where the name
        refers to a single cell.

        :returns: An instance of the :class:`~xlrd.sheet.Cell` class.

        :raises xlrd.biffh.XLRDError:
          The name is not a constant absolute reference
          to a single cell.
        i   i    t   headers   === Dump of Name object ===t   footers   ======= End of dump =======s2   Not a constant absolute reference to a single cellN(   t   resultt   kindt   valuet   oREFR3   t   shtxlot   shtxhit   rowxlot   rowxhit   colxlot   colxhit   bookt   sheet_by_indext   cellt   dumpR   R'   (   t   selft   resRE   RF   t   ref3dR<   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyRP      s     			
&c         C  s  |  j  } | r| j } | j } | t k rt |  d k r| d } d | j k oj | j d k n r|  j j | j  } | s | | j	 | j
 | j | j f St | j	 | j  } t | t | j
 | j   } t | j | j  }	 t |	 t | j | j   }
 d | k o4| k o4| j k n s?t  d |	 k od|
 k od| j k n sot  | | | |	 |
 f Sqn  |  j |  j j d d d d t d   d S(	   s  
        This is a convenience method for the use case where the name
        refers to one rectangular area in one worksheet.

        :param clipped:
          If ``True``, the default, the returned rectangle is clipped
          to fit in ``(0, sheet.nrows, 0, sheet.ncols)``.
          it is guaranteed that ``0 <= rowxlo <= rowxhi <= sheet.nrows`` and
          that the number of usable rows in the area (which may be zero) is
          ``rowxhi - rowxlo``; likewise for columns.

        :returns: a tuple ``(sheet_object, rowxlo, rowxhi, colxlo, colxhi)``.

        :raises xlrd.biffh.XLRDError:
           The name is not a constant absolute reference
           to a single area in a single sheet.
        i   i    RB   s   === Dump of Name object ===RC   s   ======= End of dump =======sD   Not a constant absolute reference to a single area in a single sheetN(   RD   RE   RF   RG   R3   RH   RI   RN   RO   RJ   RK   RL   RM   t   mint   nrowst   maxt   ncolst   AssertionErrorRQ   R   R'   (   RR   t   clippedRS   RE   RF   RT   R<   RJ   RK   RL   RM   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   area2d   s,    			
&00N(   t   __name__t
   __module__t   __doc__t   _repr_theseR0   RN   t   hiddent   funct   vbasict   macrot   complext   builtint	   funcgroupt   binaryt
   name_indext   UNICODE_LITERALt   namet   raw_formulat   scopeRD   RP   t   TrueR[   (    (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR?      s$   	
	R"   c        
   B  s  e  Z d  Z d Z d Z d Z g  Z d* Z d* Z	 d+ Z
 e d  Z g  Z g  Z g  Z i  Z i  Z i  Z g  Z d Z d Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z i  Z i  Z  d   Z! d* d* e" j# d e$ d* e% e% e% d 	 Z& d   Z' d   Z( d   Z) d   Z* e+ d  Z, d   Z- d   Z. d   Z/ d   Z0 d   Z1 d   Z2 d   Z3 d   Z4 d   Z5 d   Z6 d   Z7 d   Z8 d    Z9 d!   Z: d"   Z; d#   Z< d$   Z= d%   Z> d&   Z? d'   Z@ d(   ZA d)   ZB RS(,   s   
    Contents of a "workbook".

    .. warning::

      You should not instantiate this class yourself. You use the :class:`Book`
      object that was returned when you called :func:`~xlrd.open_workbook`.
    i    RA   g      c         C  s?   x4 t  |  j  D]# } |  j | s |  j |  q q W|  j S(   st   
        :returns: A list of all sheets in the book.

        All sheets not already loaded will be loaded.
        (   t   xrangeR4   R1   t	   get_sheet(   RR   t   sheetx(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   sheets  s    c         C  s   |  j  | p |  j |  S(   sr   
        :param sheetx: Sheet index in ``range(nsheets)``
        :returns: A :class:`~xlrd.sheet.Sheet`.
        (   R1   Ro   (   RR   Rp   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyRO     s    c         C  sG   y |  j  j |  } Wn! t k
 r9 t d |   n X|  j |  S(   sp   
        :param sheet_name: Name of the sheet required.
        :returns: A :class:`~xlrd.sheet.Sheet`.
        s   No sheet named <%r>(   R/   t   indext
   ValueErrorR'   RO   (   RR   t
   sheet_nameRp   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   sheet_by_name  s
    c         C  s   |  j  S(   s   
        :returns:
          A list of the names of all the worksheets in the workbook file.
          This information is available even when no sheets have yet been
          loaded.
        (   R/   (   RR   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   sheet_names  s    c         C  sc   t  | t  r | } n: y |  j j |  } Wn! t k
 rQ t d |   n Xt |  j |  S(   s   
        :param sheet_name_or_index: Name or index of sheet enquired upon
        :returns: ``True`` if sheet is loaded, ``False`` otherwise.

        .. versionadded:: 0.7.1
        s   No sheet named <%r>(   t
   isinstancet   intR/   Rr   Rs   R'   t   boolR1   (   RR   t   sheet_name_or_indexRp   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   sheet_loaded  s    	c         C  sc   t  | t  r | } n: y |  j j |  } Wn! t k
 rQ t d |   n Xd |  j | <d S(   su   
        :param sheet_name_or_index: Name or index of sheet to be unloaded.

        .. versionadded:: 0.7.1
        s   No sheet named <%r>N(   Rw   Rx   R/   Rr   Rs   R'   R0   R1   (   RR   Rz   Rp   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   unload_sheet  s    	c         C  su   d |  _  t |  j d  r+ |  j j   n  d |  _ t |  j d  rV |  j j   n  d |  _ d |  _ d |  _ d S(   s_  
        This method has a dual purpose. You can call it to release
        memory-consuming objects and (possibly) a memory-mapped file
        (:class:`mmap.mmap` object) when you have finished loading sheets in
        ``on_demand`` mode, but still require the :class:`Book` object to
        examine the loaded sheets. It is also called automatically (a) when
        :func:`~xlrd.open_workbook`
        raises an exception and (b) if you are using a ``with`` statement, when
        the ``with`` block is exited. Calling this method multiple times on the
        same object has no ill effect.
        i   t   closeN(   t   _resources_releasedt   hasattrt   memR}   R0   t   filestrt   _sharedstringst   _rich_text_runlist_map(   RR   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR7     s    				c         C  s   |  S(   N(    (   RR   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt	   __enter__  s    c         C  s   |  j    d  S(   N(   R7   (   RR   t   exc_typet	   exc_valuet   exc_tb(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   __exit__!  s    c         C  s  g  |  _  g  |  _ g  |  _ d |  _ g  |  _ g  |  _ i  |  _ t |  _ d |  _	 d |  _
 |  j   d |  _ d |  _ d  |  _ d  |  _ g  |  _ g  |  _ g  |  _ i  |  _ i  |  _ d |  _ g  |  _ d |  _ g  |  _ g  |  _ i  |  _ g  |  _ g  |  _ i  |  _ d |  _ d |  _  d  S(   Ni    iRA   (!   R1   R/   t   _sheet_visibilityR4   t   _sh_abs_posnR   R   R,   t   raw_user_namet   _sheethdr_countt   builtinfmtcountt   initialise_format_infot   _all_sheets_countt   _supbook_countR0   t   _supbook_locals_inxt   _supbook_addins_inxt   _all_sheets_mapt   _externsheet_infot   _externsheet_type_b57t   _extnsht_name_from_numt   _sheet_num_from_namet   _extnsht_countt   _supbook_typesR~   t   addin_func_namest   name_obj_listt
   colour_mapt   palette_recordt   xf_listt   style_name_mapR   R   (   RR   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   __init__2  s>    										
																			c
      	   C  s  | |  _  | |  _ | o t |  _ | |  _ | |  _ | |  _ |	 |  _ | st | d   }
 |
 j	 d d  |
 j
   } |
 j	 d d  | d k r t d   n  |  j r t j |
 j   | d t j |  _ | |  _ n! |
 j   |  _ t |  j  |  _ Wd  QXn | |  _ t |  |  _ d |  _ |  j d  t j k rM|  j |  _ nt j |  j d |  j  } t rx d d	 g D]: } | j t |   \ |  _ |  _ |  _ |  j r{Pq{q{Wt d
   nZ xE d d	 g D]+ } | j t |   |  _ |  j rPqqWt d
   t |  j  |  _ ~ |  j |  j k	 ret |  j d  rY|  j j   n  d |  _ n  |  j |  _ t rt  d t! |  j  |  j |  j f d |  j  n  d  S(   Nt   rbi    i   s   File size is 0 bytest   accessi   R   t   WorkbookR"   s-   Can't find workbook in OLE2 compound documentR}   RA   s   mem: %s, base: %d, len: %dt   file("   R   R   t   MMAP_AVAILABLER   R   R   R   R   t   opent   seekt   tellR'   t   mmapt   filenot   ACCESS_READR   t
   stream_lent   readR3   t   baseR   t	   SIGNATURER   t   CompDoct   USE_FANCY_CDt   locate_named_streamRi   t   get_named_streamR   R}   t	   _positiont   DEBUGt   printt   type(   RR   R   R   R   R   R   R   R   R   R   t   ft   sizet   cdt   qname(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR#   S  sZ    							$		'	 	 c         C  sS   i  |  _  g  |  _ d |  _ d |  _ i t d 6|  _ d |  _ g  |  _ g  |  _ d  S(   Ni    (	   t
   format_mapt   format_listt   xfcountt   actualfmtcountt   XL_CELL_NUMBERt   _xf_index_to_xl_type_mapt   _xf_epilogue_doneR   t	   font_list(   RR   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR     s    						c         C  sl   |  j  } |  j | | d !} t |  } |  j  | 7_  | d k  rH t S| \ } } t |  d >t |  BS(   Ni   i   (   R   R   R3   t   MY_EOFt	   BYTES_ORD(   RR   t   post   buff_twot   lenbufft   lot   hi(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt	   get2bytes  s    	c         C  sg   |  j  } |  j } t d | | | d ! \ } } | d 7} | | | | !} | | |  _  | | | f S(   Ns   <HHi   (   R   R   t   unpack(   RR   R   R   t   codet   lengtht   data(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   get_record_parts  s    		 
c         C  sw   |  j  } |  j } t d | | | d ! \ } } | | k rB d S| d 7} | | | | !} | | |  _  | | | f S(   Ns   <HHi   i    RA   (   Ni    RA   (   R   R   R   R0   (   RR   t   reqd_recordR   R   R   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   get_record_parts_conditional  s    		 
c         C  s~   |  j  r t d   n  | r1 |  j | |  _ n  |  j t  t j |  |  j |  j | |  } | j	 |   | |  j
 | <| S(   Ns,   Can't load sheets after releasing resources.(   R~   R'   R   R   R%   t   XL_WORKSHEETR   t   SheetR/   R   R1   (   RR   t	   sh_numbert
   update_posR<   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyRo     s    	
	c         C  s   t  r( t d |  j |  j d |  j n  xU t t |  j   D]> } t  ro t d | |  j |  j d |  j n  |  j |  q> Wd  S(   Ns   GET_SHEETS:R   s   GET_SHEETS: sheetno =(   R   R   R/   R   R   Rn   R3   Ro   (   RR   t   sheetno(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR2     s     " %c         C  s[   t  j |   t d  } | g |  _ d g |  _ d g |  _ |  j j d   |  j	   d  S(   Ns   Sheet 1i    (
   R   t   initialise_bookRi   R/   R   R   R1   t   appendR0   R2   (   RR   t   fake_sheet_name(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR-     s    c   
      C  s!  |  j  } |  j   t r2 t |  j d | |  n  | d k r t | d |  j d d } d } t } t |  j	  d k r |  j
 |  j } qd } nk t d | d d ! \ } } } | |  j } | t k  r t | d |  j d d } n t | d d d } t s|  j d	 k r;t |  j d
 |  j | | | |  n  |  j d 7_ | t k r|  j j d  i d d 6d d	 6d d 6j | d  } t s|  j d k rt |  j d | | |  qn\ t |  j  }	 |  j j |	  |  j j |  |  j	 j |  |  j j |  |	 |  j | <d  S(   Ns   BOUNDSHEET: bv=%d data %r
i-   i    t   lenleni   is   <iBBi   i   sF   BOUNDSHEET: inx=%d vis=%r sheet_name=%r abs_posn=%d sheet_type=0x%02x
s   Macro sheett   Charts   Visual Basic modulet   UNKNOWNsA   NOTE *** Ignoring non-worksheet data named %r (type 0x%02x = %s)
(   R*   t   derive_encodingR   R+   R   t   unpack_stringt   encodingt   XL_BOUNDSHEET_WORKSHEETR3   R   t   _sheetsoffsetR   R   t   BIFF_FIRST_UNICODEt   unpack_unicodeR   R   R   R   t   getR/   R   R   (
   RR   R   t   bvRt   t
   visibilityt
   sheet_typet   abs_posnt   offsett   descrt   snum(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_boundsheet  sL    	
		
	c         C  sC   t  d | d d ! d } t r6 t |  j d |  n  | |  _ d  S(   Ns   <Hi    i   s   BUILTINFMTCOUNT: %r
(   R   R   R+   R   R   (   RR   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_builtinfmtcount  s     c         C  s  |  j  r |  j  |  _ n	|  j d  k r |  j d k  rR t |  j d  d |  _ q!d |  _ |  j d k r!t |  j d  q!n |  j } | t k r t | } n? d | k o d k n r d	 t	 |  } n d
 t	 |  } t
 s |  j r| |  j k rt |  j d | |  n  | |  _ |  j d k ry t d |  j  Wqt k
 r} t |  j d |  j |  j t |  j j d  d |    qXn  |  j rt |  j d |  j d d } | j   } | |  _ t |  _ n  |  j S(   NiP   s?   *** No CODEPAGE record, no encoding_override: will use 'ascii'
t   asciii  i   s2   *** No CODEPAGE record; assuming 1200 (utf_16_le)
i,  i  t   cpt   unknown_codepage_s%   CODEPAGE: codepage %r -> encoding %r
t   trials/   ERROR *** codepage %r -> encoding %r -> %s: %s
t   .ii    R   i   (   R   R   t   codepageR0   R*   R+   R   R   t   encoding_from_codepaget   strR   t   unicodet   BaseExceptionR   R\   t   splitR   R   t	   user_namet   rstripR,   (   RR   R   R   t   et   strg(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR     sB    						,
		c         C  s1   t  d | d d ! d } | |  _ |  j   d  S(   Ns   <Hi    i   (   R   R   R   (   RR   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_codepageC  s    	c         C  si   t  d | d d ! } |  j r8 t d | d |  j n  |  j d k s\ |  j | k s\ t  | |  _ d  S(   Ns   <HHi    i   s
   Countries:R   (   i    i    (   R   R   R   R   t	   countriesRY   (   RR   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_countryI  s
    	 $c         C  s^   t  d | d d ! d } t s) |  j r? t |  j d |  n  | d k sQ t  | |  _ d  S(   Ns   <Hi    i   s   DATEMODE: datemode %r
i   (   i    i   (   R   R   R   R+   R   RY   t   datemode(   RR   R   R  (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_datemodeP  s
    c         C  s   t  p |  j d k } |  j d k r t d | d   \ } } d } t | | d d \ } } | | } |  j d t k r |  j j |  n  | r t	 |  j
 d |  j d | | | |  q n  d  S(	   Ni   iP   s   <HIi   R   i   isC   EXTERNNAME: sbktype=%d oflags=0x%04x oinfo=0x%08x name=%r extra=%r
(   R   R   R*   R   t   unpack_unicode_update_posR   t   SUPBOOK_ADDINR   R   R+   R   (   RR   R   t   blaht   option_flagst
   other_infoR   Rj   t   extra(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_externnameW  s    
	c         C  s  |  j    |  j d 7_ t p+ |  j d k } t p@ |  j d k } |  j d k rzt d | d d ! d } | d d } xu t |  | k  r | r t |  j d | t |   n  |  j	   \ } } } | t
 k r t d   n  | | 7} q} Wd }	 xt |  D]n }
 t d	 | |	 |	 d ! } | \ } } } |  j j |  |	 d 7}	 | rt |  j d
 |
 | | |  qqWn2t d | d   \ } } | rt d d |  j t | d t |  d |  j i d d 6d d 6d d 6d d 6j | d  } t d | | | f d |  j n  | d k rwt | d | d !|  j  } | |  j |  j <| rwt |  j d |  j qwn  d | k od k n sd } n  |  j j |  d  S(   Ni   i   iP   s   <Hi    i   s*   INFO: EXTERNSHEET needs %d bytes, have %d
s)   Missing CONTINUE after EXTERNSHEET records   <HHHsL   EXTERNSHEET(b8): k = %2d, record = %2d, first_sheet = %5d, last sheet = %5d
s   <BBs   EXTERNSHEET(b7-):R   t   fouts   Encoded URLs   Current sheet!!s   Specific sheet in own doc'ti   s    Nonspecific sheet in own doc't!!i   s   Not encodeds      %3d chars, type is %d (%s)(   R   R   R   R   R*   R   R3   R+   R   R   t   XL_CONTINUER'   Rn   R   R   R   t   hex_char_dumpR   R   R   R   R   (   RR   R   t   blah1t   blah2t   num_refst
   bytes_reqdt   code2t   length2t   data2R   t   kt   infot   ref_recordxt   ref_first_sheetxt   ref_last_sheetxt   nct   tyt   msgRt   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_externsheete  s^    


# 	c         C  s%  |  j  d k r|  j } t | d  t | d t |  d d d | |  j d k rt d | d   \ } | d k r t d | d  \ } } t | d	 | |  q| d
 k rt d | d d ! \ } | d
 k r d } n | d k r d } n d } t | d |  qqn  t d   d  S(   Ni   s
   FILEPASS:
i    R   R
  iP   s   <Hs   <HHs!   weak XOR: key=0x%04x hash=0x%04x
i   i   i   s	   BIFF8 stds   BIFF8 strongs   ** UNKNOWN ENCRYPTION METHOD **s   %s
s   Workbook is encrypted(   R   R   R+   R  R3   R*   R   R'   (   RR   R   t   logft   kind1t   keyt
   hash_valuet   kind2t   caption(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_filepass  s(    	"		c         C  s<  t  p |  j d k } |  j } | d k  r. d  S|  j   t d | d d ! \
 } } } } } }	 }
 } } } t   } |  | _ t |  j  } | | _	 |  j j
 |  | | _ d$ d% d& d' d( d) d* d+ g } x/ | D]' \ } } } t | | | | @| ? q Wd | j } | d k  r<t | d |  j d | \ } } n t | d d | \ } } | | _ |	 | _ d  | _ | rt |  j d | | | | | | |	 | 
 n  | } | j rt j | d  } | rt d | d |  j qn  | | _ | | | _ | | _ d | _ | r8| j |  j d  d! | d" d# n  d  S(,   Ni   i2   s	   <HBBHHH4Bi    i   R`   i   Ra   Rb   i   Rc   i   i   Rd   i   Re   i    i   Rf   i  i   Rg   i   i   s    MiP   t	   known_lensZ   NAME[%d]:%s oflags=%d, name_len=%d, fmla_len=%d, extsht_index=%d, sheet_index=%d, name=%r
s   ??Unknown??s       builtin: %sR   RB   s   --- handle_name: name[%d] ---RC   s   -------------------(   R`   i   i    (   Ra   i   i   (   Rb   i   i   (   Rc   i   i   (   Rd   i   i   (   Re   i    i   (   Rf   i  i   (   Rg   i   i   (    R   R   R*   R   R   R?   RN   R3   R   Rh   R   R  t   setattrRc   t   unpack_string_update_posR   R  t   extn_sheet_numt   excel_sheet_indexR0   Rl   R+   R   Re   t   builtin_name_from_codeR   R   Rj   Rk   t   basic_formula_lent	   evaluatedRQ   (   RR   R   R  R   R  t   kb_shortcutt   name_lent   fmla_lent   extsht_indext   sheet_indext   menu_text_lent   description_text_lent   help_topic_text_lent   status_bar_text_lent   nobjRh   t   attrst   attrt   maskt   nshiftt
   macro_flagt   internal_nameR   Rj   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_name  sb    	
4					$				 				
c         C  s  |  j  d k } |  j } | r t d d | t d t |  j  d | t d t |  j  d | t d t |  j  d | n  t |  j  } xt	 |  D]} |  j | } |  j
 d k r8| j } | d k r d	 } qd
 | k ot |  j  k n r/|  j | d
 } | d	 k r5d } q5qd } nb d |  j
 k oRd k n r| j } | d k rud	 } q|  j | } |  j j | d  } n  | | _ q Wx^ t	 |  D]P } |  j | } | j s| j rqn  | j rqn  t |  | | d | qW|  j  d k rut d d | x8 t	 |  D]* } |  j | } | j | d d | q4Wt d d | n  i  }	 i  }
 x t	 |  D] } |  j | } | j j   } | | j f } | |	 k r|  j  rt | d |  n  | |	 | <| j | | f } | |
 k r#|
 | j |  q| g |
 | <qWxI |
 j   D]; } |
 | } | j   g  | D] } | d ^ qb|
 | <qAW|	 |  _ |
 |  _ d  S(   Ni   s   +++++ names_epilogue +++++R   R   R   R   iP   i    ii   iii2   iF   R  s&   ---------- name object dump ----------RB   s   --- name[%d] ---s&   --------------------------------------s)   Duplicate entry %r in name_and_scope_map
(   R   R   R   t   REPRR   R   R   R3   R   t   rangeR*   R(  R'  R   Rl   Rc   Rg   R+  t   evaluate_name_formulaRQ   Rj   t   lowerR+   R   t   keyst   sortt   name_and_scope_mapt   name_map(   RR   R  R   t	   num_namest   namexR5  R0  t   intl_sheet_indexRt   RC  RD  t
   name_lcaseR  t	   sort_datat   alistt   x(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   names_epilogue  st    			%			 	 


%	c         C  s    t  d | d d ! \ } } d  S(   Ns   <HIi   i
   (   R   (   RR   R   t   obj_typet   obj_id(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt
   handle_obj5  s    c   
      C  s  |  j  j d   t p" |  j d k } | r` t d d |  j t | d t |  d |  j n  t	 d | d d ! d } | r t d | d |  j n  |  j
 } |  j
 d 7_
 | d d	 !d
 k r%t |  j  d <|  j
 d |  _ | r!t d | | f d |  j t d |  j d |  j n  d  S| d d	 !d k ryt |  j  d <|  j
 d |  _ | rut d | d |  j n  d  St | d d d \ } } | d k rt |  j  d <| rt |  j d | |  n  d  St |  j  d <| rt |  j d | |  n  g  } x t |  D] } y t | | d d \ }	 } WnA t j k
 rw|  j rst d | | | f d |  j n  Pn X| j |	  | rt |  j d | t |	  |	 |  qqWd  S(   Ni   s   SUPBOOK:R   i    R
  s   <Hs   num_sheets = %di   i   s   is(   SUPBOOK[%d]: internal 3D refs; %d sheetss       _all_sheets_maps    :s   SUPBOOK[%d]: add-in functionsR   s#   SUPBOOK[%d]: DDE/OLE document = %r
s   SUPBOOK[%d]: url = %r
sK   *** WARNING: unpack failure in sheet %d of %d in SUPBOOK record for file %rs-     sheetx=%d namelen=%d name=%r (next pos=%d)
(   R   R   R0   R   R   R   R   R  R3   R   R   t   SUPBOOK_INTERNALR   R   R  R   R  t   SUPBOOK_DDEOLER+   t   SUPBOOK_EXTERNALR>  t   structt   error(
   RR   R   R  t
   num_sheetst   sbnt   urlR   Rv   RK  t   shname(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_supbook<  s\    " 	   	 c         C  s2  |  j    t d | d   d } t | d |  j d d } |  j } | |  j | k s^ t  |  j d 7_ |  j } | d t |  } t	 r t
 |  j d | | | |  n  |  j   t	 r t d |  j d |  j n  |  j j d   |  j | d	 t t	 r!t d
 |  j d |  j n  | | |  _ d  S(   Ns   <ii   i    R   i   s'   SHEETHDR %d at posn %d: len=%d name=%r
s    SHEETHDR: xf epilogue flag is %dR   R   s"   SHEETHDR: posn after get_sheet() =(   R   R   R   R   R   R/   RY   R   R3   R   R+   R   R   R   R   R1   R   R0   Ro   R,   (   RR   R   t	   sheet_lenRt   R   t   BOF_posnt   posn(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_sheethdrk  s$    
		 
  c         C  s?   t  d |  d } t r2 t d | d |  j n  | |  _ d  S(   Ns   <ii    s   SHEETSOFFSET:R   (   R   R   R   R   R   (   RR   R   R\  (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_sheetsoffset  s     c   
      C  sK  t  r% t d d |  j t   } n  t |  } | g } t d | d d ! d } t  si |  j d k r t |  j d |  n  xh |  j t	  \ } } } | d  k r Pn  | | 7} t  d k r t |  j d	 | |  n  | j |  q Wt | |  \ |  _ } |  j r| |  _ n  t  rGt   }	 t d
 |	 | f d |  j n  d  S(   Ns   SST ProcessingR   s   <ii   i   i    i   s   SST: unique strings: %d
s'   CONTINUE: adding %d bytes to SST -> %d
s    SST processing took %.2f seconds(   R   R   R   R   R3   R   R   R+   R   R  R0   R   t   unpack_SST_tableR   R   R   (
   RR   R   R8   t   nbtt   strlistt   uniquestringsR   t   nbt
   rt_runlistR;   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt
   handle_sst  s,    	
		c         C  s   d } |  j  d k  rR |  j s4 t |  _ | |  _ d  St | d |  j d d } n t | d d d } | r t |  j d t	 |  |  j |  n  | j
   } | |  _ d  S(   Ni    iP   R   i   i   s!   WRITEACCESS: %d bytes; raw=%s %r
(   R*   R   Rm   R   R   R   R   R+   R   R3   R   (   RR   R   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   handle_writeaccess  s    			 %c         C  s  t  j |   x|  j   \ } } } t rE t d | d |  j n  | t k ra |  j |  q | t k sy | t	 k r |  j
 |  q | t k r |  j |  q | t k r |  j |  q | t k r |  j |  q | t k r |  j |  q | t k r|  j |  q | t k r1|  j |  q | t k rM|  j |  q | t k ri|  j |  q | t k r|  j |  q | t k r|  j |  q | t k r|  j  |  q | t! k r|  j" |  q | t# k r|  j$ |  q | t% k r|  j& |  q | t' k r-|  j( |  q | t) k rI|  j* |  q | d @d k r|  j+ rt, |  j d |  j- | d | | |  q | t. k r |  j/   |  j0   |  j1   |  j2 s|  j3   n  |  j4 d k r t r t d |  j- d |  j q n  d  Sq Wd  S(	   Ns$   parse_globals: record code is 0x%04xR   i   i	   s5   *** Unexpected BOF at posn %d: 0x%04x len=%d data=%r
i   i-   s   global EOF: position(5   R   R   R   R   R   R   t   XL_SSTRe  t   XL_FONTt   XL_FONT_B3B4t   handle_fontt	   XL_FORMATt   handle_formatt   XL_XFt	   handle_xft   XL_BOUNDSHEETR   t   XL_DATEMODER  t   XL_CODEPAGER   t
   XL_COUNTRYR   t   XL_EXTERNNAMER	  t   XL_EXTERNSHEETR  t   XL_FILEPASSR#  t   XL_WRITEACCESSRf  t   XL_SHEETSOFFSETR^  t   XL_SHEETHDRR]  t
   XL_SUPBOOKRY  t   XL_NAMER<  t
   XL_PALETTEt   handle_palettet   XL_STYLEt   handle_styleR   R+   R   t   XL_EOFt   xf_epilogueRL  t   palette_epilogueR   R   R*   (   RR   t   rcR   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR.     sn     


	 c         C  s+   |  j  | | | !} | t |  |  _ | S(   N(   R   R3   R   (   RR   R   R   R   (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR     s    c         C  s  t  r  t d | d |  j n  d   } |  j } |  j   } | t k rW | d  n  | t k r | d |  j | | d ! n  |  j   } | t k r | d  n  d | k o d	 k n s | d
 | | f  n  d t d t	 | |  } |  j
 |  j |  } t  r&t |  j d |  n  t |  | k  rE| d  n  | | 7} | d ?} t d | d d ! \ }	 }
 t  rt d | |	 |
 f d |  j n  |  j d | } t  rt d | | f d |  j n  d } } } | d k rt d | d d ! \ } } |	 d k r d } q|	 d k rV| d k  sD| d( k rMd } qd } qi d d 6d d 6d d 6d d 6d  d! 6j |	 d  } n. | d) k ri d  d 6d d" 6d d 6| } n  | d  k r|
 t k rd# } n  t  s|  j d" k rt d$ | |	 |
 | | | f d |  j n  |
 t k p?| d# k o?|
 t k } | t k rT| s`|
 | k rd| S| d k  r|
 t k r| S| d k r|
 d% k r| d&  n  | d' | |	 |
 | | | f  d  S(*   Ns   reqd: 0x%04xR   c         S  s   t  d |    d  S(   Ns%   Unsupported format, or corrupt file: (   R'   (   R  (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt	   bof_error  s    s$   Expected BOF record; met end of files   Expected BOF record; found %ri   s)   Incomplete BOF record[1]; met end of filei   i   s.   Invalid length (%d) for BOF record type 0x%04xs    i    s   
getbof(): data=%r
s)   Incomplete BOF record[2]; met end of files   <HHs5   getbof(): op=0x%04x version2=0x%04x streamtype=0x%04xs+   getbof(): BOF found at offset %d; savpos=%di   iP   i   i  il	  i  i  i2   iF   i   i   i   i   i   i(   i   i   i-   sH   BOF: op=0x%04x vers=0x%04x stream=0x%04x buildid=%d buildyr=%d -> BIFF%di   s%   Workspace file -- no spreadsheet datasX   BOF not workbook/worksheet: op=0x%04x vers=0x%04x strm=0x%04x build=%d year=%d -> BIFF%d(   il	  i  i  (   i   i   i    (   R   R   R   R   R   R   t   bofcodesR   RW   t   boflenR   R+   R3   R   R   t   XL_WORKBOOK_GLOBALS_4WR   R&   R   (   RR   t
   rqd_streamR  t   savpost   opcodeR   t   paddingR   t   version1t   version2t
   streamtypet
   bof_offsett   versiont   buildt   yeart   got_globals(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR%     s     		 

			
"	&N(   i    i    (C   R\   R]   R^   R4   R  R*   R   R0   R   R   R   Ri   R   R   R   R   R   R   R   R   R$   R6   Rq   RO   Ru   Rv   R{   R|   R7   R   R   RC  RD  R   t   syst   stdoutt   USE_MMAPR,   R#   R   R   R   R   Rm   Ro   R2   R-   R   R   R   R   R   R  R	  R  R#  R<  RL  RO  RY  R]  R^  Re  Rf  R.   R   R%   (    (    (    s(   lib/python2.7/site-packages/xlrd/book.pyR"     s~   											!8		
							4		*					3		<	J		/					@	c         C  s   |  } | d @r2 | d k r) | d 8} n  d } n d } | d @} | d @rn | d k re | d 8} n  d } n d } | | | | f S(	   Ni   i   i   i    i   i @  i   i   (    (   t   inrowt   incolt   outrowt   relrowt   outcolt   relcol(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   expand_cell_address@  s    
	

	t   ABCDEFGHIJKLMNOPQRSTUVWXYZc         C  s`   |  d k s t   t d  } x; t |  d  \ } } | | | } | sN | S| d }  q! Wd  S(   Ni    RA   i   i   (   RY   Ri   t   divmod(   t   colxt   _A2ZRj   t   quott   rem(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   colnameR  s    c         C  s{   | r) d d |  d k  t  |   f } n d |  d f } | rc d d | d k  t  |  f } n d t |  } | | S(   Ns   (*%s%d)s   +-i    s   $%di   t   $(   t   absR  (   t   rowxR  R  R  t   rowpartt   colpart(    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   display_cell_address\  s    ##c      	   C  s[  d } t  |   } |  d } t  |  } d } g  } | j } i  }	 t }
 t } t } d } xt |  D]} |
 d | | | d ! d } | d 7} | | |  } | d 7} d } d } | d @r |
 d | | | d ! d } | d 7} n  | d @r&|
 d | | | d ! d } | d 7} n  t d	  } d } x
| | } | d @r| | | d ?|  } | | | d | !} y | t | d
  7} Wn
   n X| d | 7} nA | | | |  } | | | | !} | t | |  7} | | 7} | | 7} | | k rPn  | d 7} |  | } t  |  } | | d  } d } q;W| rg  } xt t |  D]f } | | k rd } | d 7} |  | } t  |  } n  | j |
 d | | | d !  | d 7} q^W| |	 t  |  <n  | | 7} | | k rC| | } | d 7} | | k  r*|  | } t  |  } qC| | d k sCt  n  | |  qh W| |	 f S(   s   Return list of stringsi    i   t   latin_1s   <Hi   i   i   s   <iRA   t	   utf_16_les   <HH(	   R3   R   R   RU   R   Rn   Ri   R   RY   (   t   datatabt   nstringst   datainxt   ndatasR   t   datalenR   t   stringst	   strappendt   richtext_runst   local_unpackt	   local_mint   local_BYTES_ORDR  t	   _unused_it   ncharst   optionst   rtcountt   phoszt   accstrgt   charsgott	   charsneedt
   charsavailt   rawstrgt   runst   runindex(    (    s(   lib/python2.7/site-packages/xlrd/book.pyR_  g  s    
	












!



(2   t
   __future__R    R   R  RA   R   R   R   t   biffht   formulat   timemachinet   timeR   t   ImportErrorR   RS  R   t
   empty_cellR   R   R   R   R   R  R   R>  t   SUPBOOK_UNKRP  RR  R  RQ  R(   t   _code_from_builtin_nameR)  t   code_from_builtin_namet   itemst   _bint   _bicRi   R0   R  R,   R>   t
   BaseObjectR?   R"   R  R  R  R_  (    (    (    s(   lib/python2.7/site-packages/xlrd/book.pyt   <module>   s~   


 		



	E    &	
	