
    .i                    x    d dl mZ d dlmZ d dlmZ d dlmZ erd dlm	Z	 d dl
mZmZmZmZ  G d ded	         Zy
)    )annotations)TYPE_CHECKING)import_optional_dependency)BaseExcelReaderWorkbook)FilePath
ReadBufferScalarStorageOptionsc                       e Zd Z	 	 d		 	 	 	 	 	 	 d
 fdZedd       Z	 	 	 	 ddZedd       ZddZddZ	ddZ
	 d	 	 	 ddZ xZS )PyxlsbReaderc                @    t        d       t        | 	  |||       y)a  
        Reader using pyxlsb 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/docs/user_guide/io.html?
            highlight=storage_options#reading-writing-remote-files>`_.
        engine_kwargs : dict, optional
            Arbitrary keyword arguments passed to excel engine.
        pyxlsb)storage_optionsengine_kwargsN)r   super__init__)selffilepath_or_bufferr   r   	__class__s       U/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/io/excel/_pyxlsb.pyr   zPyxlsbReader.__init__   s*    2 	#8, 	+' 	 	
    c                    ddl m} |S )Nr   r   )r   r   )r   r   s     r   _workbook_classzPyxlsbReader._workbook_class8   s
    #r   c                     ddl m}  ||fi |S )Nr   )open_workbook)r   r   )r   r   r   r   s       r   load_workbookzPyxlsbReader.load_workbook>   s     	) /A=AAr   c                .    | j                   j                  S N)booksheets)r   s    r   sheet_nameszPyxlsbReader.sheet_namesI   s    yyr   c                Z    | j                  |       | j                  j                  |      S r    )raise_if_bad_sheet_by_namer!   	get_sheet)r   names     r   get_sheet_by_namezPyxlsbReader.get_sheet_by_nameM   s%    ''-yy""4((r   c                `    | j                  |       | j                  j                  |dz         S )N   )raise_if_bad_sheet_by_indexr!   r&   )r   indexs     r   get_sheet_by_indexzPyxlsbReader.get_sheet_by_indexQ   s+    ((/ yy""519--r   c                    |j                   yt        |j                   t              r;t        |j                         }||j                   k(  r|S t        |j                         S |j                   S )N )v
isinstancefloatint)r   cellvals      r   _convert_cellzPyxlsbReader._convert_cellW   sR     66>dffe$dff+Cdff}
TVV}$vvr   c                   g }d}|j                  d      D ]  }|d   j                  }|D cg c]  }| j                  |       }}|r#|d   dk(  r|j                          |r	|d   dk(  r|r.|j	                  g g||z
  dz
  z         |j                  |       |}|t        |      |k\  s n |rKt        d |D              }	t        d |D              |	k  r$dg}
|D cg c]  }||	t        |      z
  |
z  z    }}|S c c}w c c}w )	NT)sparser   r/   r*   c              3  2   K   | ]  }t        |        y wr    len.0data_rows     r   	<genexpr>z.PyxlsbReader.get_sheet_data.<locals>.<genexpr>|   s     ?hCM?   c              3  2   K   | ]  }t        |        y wr    r;   r=   s     r   r@   z.PyxlsbReader.get_sheet_data.<locals>.<genexpr>}   s     6X3x=6rA   )	rowsrr6   popextendappendr<   maxmin)r   sheetfile_rows_neededdataprevious_row_numberrow
row_numberr4   converted_row	max_width
empty_cellr?   s               r   get_sheet_datazPyxlsbReader.get_sheet_datae   s?   
 $&  ::T:* 	CQJBEF$T//5FMFM"$5$;!!#  M"$5$; RDJ1D$Dq$HIJM*&0#+D	=M0M	 ?$??I666B,.4
 %)  	CM 9ZGG  ' Gs   D !D)NN)r   FilePath | ReadBuffer[bytes]r   zStorageOptions | Noner   zdict | NonereturnNone)rU   ztype[Workbook])r   rT   rU   r   )rU   z	list[str])r'   str)r,   r3   )rU   r   r    )rK   z
int | NonerU   zlist[list[Scalar]])__name__
__module____qualname__r   propertyr   r   r#   r(   r-   r6   rS   __classcell__)r   s   @r   r   r      s     26%)	 
8 
 / 
 #	 

 
 
D  
	B">	B		B    )." (, % 
	r   r   r   N)
__future__r   typingr   pandas.compat._optionalr   pandas.io.excel._baser   r   r   pandas._typingr	   r
   r   r   r    r   r   <module>rc      s4    "   > 1 n?:. nr   