
    4i                        S SK Jr  S SKJr  S SKrS SKJr  S SKrS SK	J
r
  S SKJr  \(       a  S SKJr  S SKJrJr   " S	 S
\S   5      rg)    )annotations)timeN)TYPE_CHECKING)import_optional_dependency)BaseExcelReaderBook)ScalarStorageOptionsc                     ^  \ rS rSr  S
     SU 4S jjjr\SS j5       rSS jr\S 5       rS r	S r
 S   SS jjrS	rU =r$ )
XlrdReader   c                <   > Sn[        SUS9  [        TU ]	  UUUS9  g)aE  
Reader using xlrd engine.

Parameters
----------
filepath_or_buffer : str, path object or Workbook
    Object to be parsed.
storage_options : dict, optional
    Extra options that make sense for a particular storage connection,
    e.g. host, port, username, password, etc. For HTTP(S) URLs the
    key-value pairs are forwarded to ``urllib.request.Request`` as
    header options. For other URLs (e.g. starting with "s3://", and
    "gcs://") the key-value pairs are forwarded to ``fsspec.open``.
    Please see ``fsspec`` and ``urllib`` for more details, and for more
    examples on storage options refer `here <https://pandas.pydata.org/
    pandas-docs/stable/user_guide/io.html?
    highlight=storage_options#reading-writing-remote-files>`__.
engine_kwargs : dict, optional
    Arbitrary keyword arguments passed to excel engine.
z+Install xlrd >= 2.0.1 for xls Excel supportxlrd)extra)storage_optionsengine_kwargsN)r   super__init__)selffilepath_or_bufferr   r   err_msg	__class__s        W/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/io/excel/_xlrd.pyr   XlrdReader.__init__   s0    4 @"69+' 	 	
    c                    SSK Jn  U$ )Nr   r   )r   r	   )r   r	   s     r   _workbook_classXlrdReader._workbook_class9   s
    r   c                v    SSK Jn  [        US5      (       a  UR                  5       nU" SSU0UD6$ U" U40 UD6$ )Nr   )open_workbookreadfile_contents )r   r!   hasattrr"   )r   r   r   r!   datas        r   load_workbookXlrdReader.load_workbook?   sE    &%v..%**,D EtE}EE !3E}EEr   c                6    U R                   R                  5       $ N)booksheet_names)r   s    r   r,   XlrdReader.sheet_namesH   s    yy$$&&r   c                Z    U R                  U5        U R                  R                  U5      $ r*   )raise_if_bad_sheet_by_namer+   sheet_by_name)r   names     r   get_sheet_by_nameXlrdReader.get_sheet_by_nameL   s%    ''-yy&&t,,r   c                Z    U R                  U5        U R                  R                  U5      $ r*   )raise_if_bad_sheet_by_indexr+   sheet_by_index)r   indexs     r   get_sheet_by_indexXlrdReader.get_sheet_by_indexP   s%    ((/yy''..r   c                ~  ^^	^
^^^ SSK JmJm	Jm
JmJm  U R                  R                  mUU	U
UUU4S jnUR                  nUb  [        XB5      n[        U5       VVVs/ s HG  n[        UR                  U5      UR                  U5      SS9 VVs/ s H  u  pgU" Xg5      PM     snnPMI     snnn$ s  snnf s  snnnf )Nr   )XL_CELL_BOOLEANXL_CELL_DATEXL_CELL_ERRORXL_CELL_NUMBERxldatec                  > UT:X  ax   T	R                  U T5      n U R                  5       SS nT(       d  US:X  d  T(       a<  US:X  a6  [        U R                  U R
                  U R                  U R                  5      n U $ UT:X  a  [        R                  n U $ UT:X  a  [        U 5      n U $ UT:X  a-  [        R                  " U 5      (       a  [        U 5      nX0:X  a  Un U $ ! [         a    U s $ f = f)zD
converts the contents of the cell into a pandas appropriate object
r      )ik        )ip     rD   )xldate_as_datetimeOverflowError	timetupler   hourminutesecondmicrosecondnpnanboolmathisfiniteint)
cell_contentscell_typyearvalr;   r<   r=   r>   	epoch1904r?   s
       r   _parse_cell.XlrdReader.get_sheet_data.<locals>._parse_cella   s	    <')$*$=$=mY$WM &//11Q7!dn&<$,"6$(%**%,,%,,%11	%M& !  ]* " !  _, $] 3 !  ^+ ==//m,C+(+  ; % )(()s   C   C/.C/T)strict)r   r;   r<   r=   r>   r?   r+   datemodenrowsminrangezip
row_values	row_types)r   sheetfile_rows_neededrW   r[   ivaluetypr;   r<   r=   r>   rV   r?   s           @@@@@@r   get_sheet_dataXlrdReader.get_sheet_dataT   s    	
 	
 II&&	%	! %	!N '0E 5\
 "	 #&$$Q');D##JE E'# "
 	

s   2B8B2%B82B8r$   )NN)r   zStorageOptions | Noner   zdict | NonereturnNone)rh   z
type[Book])rh   r	   r*   )rb   z
int | Nonerh   zlist[list[Scalar]])__name__
__module____qualname____firstlineno__r   propertyr   r'   r,   r2   r8   rf   __static_attributes____classcell__)r   s   @r   r   r      s     26%)	 
 / 
 #	 

 
 
  
D  
F ' '-/
 59?
'1?
	?
 ?
r   r   r	   )
__future__r   datetimer   rO   typingr   numpyrL   pandas.compat._optionalr   pandas.io.excel._baser   r   r	   pandas._typingr
   r   r   r$   r   r   <module>rx      s8    "      > 1}
( }
r   