Sindbad~EG File Manager
�
Mٜg� � � � d dl mZ d dlmZ d dlZd dlmZ d dlZd dl m
Z
d dlmZ d dl
mZ d dlmZ erd d lmZ d d
lmZmZ G d� ded
� Zy)� )�annotations)�timeN)�
TYPE_CHECKING)�import_optional_dependency)�doc)�_shared_docs)�BaseExcelReader��Book)�Scalar�StorageOptionsc � � � e Zd Z eed �� d
d� fd�
� Zedd�� Zd
d�Zed� � Z d� Z
d� Z d dd �Z� xZ
S )�
XlrdReader�storage_options)r c �H �� d}t d|�� t �| � |||�� y)a.
Reader using xlrd engine.
Parameters
----------
filepath_or_buffer : str, path object or Workbook
Object to be parsed.
{storage_options}
engine_kwargs : dict, optional
Arbitrary keyword arguments passed to excel engine.
z+Install xlrd >= 2.0.1 for xls Excel support�xlrd)�extra)r �
engine_kwargsN)r �super�__init__)�self�filepath_or_bufferr r �err_msg� __class__s ��@/usr/local/lib/python3.12/site-packages/pandas/io/excel/_xlrd.pyr zXlrdReader.__init__ s0 �� �$ @��"�6��9�
����+�'� �
� c � � ddl m} |S )Nr r
)r r )r r s r �_workbook_classzXlrdReader._workbook_class4 s
� ���r c �l � ddl m} t |d� r|j � } |dd|i|��S ||fi |��S )Nr )�
open_workbook�read�
file_contents� )r r �hasattrr! )r r r r �datas r �
load_workbookzXlrdReader.load_workbook: sB � �&��%�v�.�%�*�*�,�D� �E�t�E�}�E�E� �!3�E�}�E�Er c �6 � | j j � S �N)�book�sheet_names)r s r r* zXlrdReader.sheet_namesC s � ��y�y�$�$�&�&r c �Z � | j |� | j j |� S r( )�raise_if_bad_sheet_by_namer) �
sheet_by_name)r �names r �get_sheet_by_namezXlrdReader.get_sheet_by_nameG s% � ��'�'��-��y�y�&�&�t�,�,r c �Z � | j |� | j j |� S r( )�raise_if_bad_sheet_by_indexr) �sheet_by_index)r �indexs r �get_sheet_by_indexzXlrdReader.get_sheet_by_indexK s% � ��(�(��/��y�y�'�'��.�.r c �z �
���
��� ddl m�
m�m�m�
m� | j j ��
���
��fd�}g }|j }|�t ||� }t |� D ]V }t |j |� |j |� � D ��cg c] \ }} |||� �� } }}|j | � �X |S c c}}w )Nr )�XL_CELL_BOOLEAN�XL_CELL_DATE�
XL_CELL_ERROR�XL_CELL_NUMBER�xldatec � �� |�k( rl � j | �� } | j � dd }�s|dk( s�r;|dk( r6t | j | j
| j | j � } | S |�k( rt j } | S |�k( r
t | � } | S |�k( r't j | � rt | � }|| k( r|} | S # t $ r | cY S w xY w)z\
converts the contents of the cell into a pandas appropriate object
r � )ik � � )ip � r? )�xldate_as_datetime�
OverflowError� timetupler �hour�minute�second�microsecond�np�nan�bool�math�isfinite�int)
�
cell_contents�cell_typ�year�valr6 r7 r8 r9 � epoch1904r: s
������r �_parse_cellz.XlrdReader.get_sheet_data.<locals>._parse_cell\ s �� � �<�'�)�$*�$=�$=�m�Y�$W�M� &�/�/�1�1�Q�7��!�d�n�&<��$�,�"6�$(�%�*�*�%�,�,�%�,�,�%�1�1� %�M�&