Ë
    	êñiÄ  ã                  ó 	  — d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d d	lmZmZmZmZmZmZ d dlmZ d d
lmZ d dlmZ  d dl!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZB d dlCmDZD erd dlmEZE d dlmFZF d dlGmHZHmIZImJZJ dJd„ZKdKd„ZL	 	 	 	 	 	 dLd„ZMeddddddddddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dMd„«       ZNeddddddddddddddd œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dNd!„«       ZNeddddddddddddd"œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dOd#„«       ZNedddddddddddddd$œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd%„«       ZNedddddddddddddd$œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd&„«       ZNeddddddddddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd'„«       ZN e%d(dd)¬*«       e%d+dd,¬*«      dddd-ddd.dde,dd.d.d.d/œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dSd0„«       «       ZNedddddddddd1œ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTd2„«       ZOeddddddddddd3œ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dUd4„«       ZOeddddddddd5œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dVd6„«       ZOedddddddddd7œ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dWd8„«       ZOedddddddddd7œ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dXd9„«       ZOedddddddddd1œ		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dYd:„«       ZOddd.dde,dd.d.d.d3œ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dZd;„ZOddde,ddd.d.d.d.d<œ
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d[d=„ZP	 	 	 	 	 	 	 	 	 	 	 	 d\d>„ZQ	 	 	 	 	 	 	 	 	 	 d]d?„ZR	 	 	 	 	 	 	 	 d^d@„ZS	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d_dA„ZTd.d.dBœ	 	 	 	 	 	 	 	 	 d`dC„ZUdadD„ZV	 	 	 	 	 	 dbdE„ZWddFœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dcdG„ZXddFœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dcdH„ZYddFœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dcdI„ZZy)dé    )ÚannotationsN)Údefaultdict)ÚSequence)Útime)Úglob)ÚBufferedReaderÚBytesIOÚStringIOÚTextIOWrapper)ÚPath)ÚIOÚTYPE_CHECKINGÚAnyÚNoReturnÚcastÚoverload)Ú
from_arrow)Ú	functions)Ú_PYARROW_AVAILABLEÚimport_optional)Údeprecate_renamed_parameterÚissue_deprecation_warning)Údeduplicate_namesÚnormalize_filepathÚparse_version)
ÚN_INFER_DEFAULTÚBooleanÚDateÚDatetimeÚDurationÚInt64ÚNullÚStringÚTimeÚUInt8)ÚFLOAT_DTYPESÚINTEGER_DTYPESÚNUMERIC_DTYPES)ÚModuleUpgradeRequiredErrorÚNoDataErrorÚParameterCollisionError)Úconcat)Úlooks_like_urlÚprocess_file_url)Úread_csv)ÚCallable)ÚLiteral)ÚExcelSpreadsheetEngineÚ
FileSourceÚ
SchemaDictc                ó„  — d}g }t        | t        «      r| j                  «       } t        | t        «      rt        | t        t
        f«      rd}| g} | D ]é  }t        |t
        t        j                  f«      r‘t        |«      j                  «       sxt        j                  j                  t        |«      «      }t        |«      r|j                  |«       Œ�|j                  t        |d¬«      x}«       |sd|›�}t!        |«      ‚d}Œ´t        |t        j                  «      rt        |«      }|j                  |«       Œë ||fS )z1Unpack any glob patterns, standardise file paths.TF)Ú	recursivezno workbook found at path )Ú
isinstanceÚ
memoryviewÚtobytesr   ÚbytesÚstrÚosÚPathLiker   ÚexistsÚpathÚ
expanduserr-   ÚappendÚextendr   ÚFileNotFoundError)ÚsourceÚread_multiple_workbooksÚsourcesÚsrcÚfilesÚmsgs         úa/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/io/spreadsheet/functions.pyÚ_sourcesrK   4   s  € à"ÐØ€Gä�&œ*Ô%Ø—‘Ó!ˆÜ�fœhÔ'¬:°f¼uÄc¸lÔ+KØ"'ÐØ�ˆàò  ˆÜ�cœC¤§¡Ð-Ô.´t¸C³y×7GÑ7GÔ7IÜ—'‘'×$Ñ$¤S¨£XÓ.ˆCÜ˜cÔ"Ø—‘˜sÔ#ØØ�N‰N¤D¨¸Ô$=Ð=˜5Ô>ÙØ2°3°'Ð:�Ü'¨Ó,Ð,Ø&*Ñ#ä˜#œrŸ{™{Ô+Ü˜#“h�Ø�N‰N˜3Õð ð  Ð+Ð+Ð+ó    c                ó2   — t        j                  dd| ¬«      S )z/Standardize columns with '_duplicated_n' names.z_duplicated_(\d+)z\1)ÚreplÚstring)ÚreÚsub)Úss    rJ   Ú_standardize_duplicatesrS   R   s   € ä�6‰6Ð&¨U¸1Ô=Ð=rL   c          	     óp  — | sd}t        |«      ‚|s| d   S t        | d   t        j                  «      rt	        | d¬«      S t        t        «      }| D ].  }|j                  «       D ]  \  }}||   j                  |«       Œ Œ0 |j                  «       D ��ci c]  \  }}|t	        |d¬«      “Œ c}}S c c}}w )Nz3no data found in the given workbook(s) and sheet(s)r   Úvertical_relaxed)Úhow)	r*   r7   ÚplÚ	DataFramer,   r   ÚlistÚitemsrA   )	ÚframesrE   rI   Úsheet_framesÚresÚsheetÚdfÚkÚvs	            rJ   Ú_unpack_read_resultsrb   W   s½   € ñ
 ØCˆÜ˜#ÓÐá"à�a‰yÐä�&˜‘)œRŸ\™\Ô*ä�fÐ"4Ô5Ð5ô #¤4Ó(ˆØò 	/ˆCØ ŸY™Y›[ò /‘	��rØ˜UÑ#×*Ñ*¨2Õ.ñ/ð	/ð BN×ASÑASÓAU×V¹¸¸A�”6˜!Ð!3Ô4Ñ4ÓVÐVùÓVs   ÂB2.)Úsheet_idÚ
table_nameÚengineÚengine_optionsÚread_optionsÚ
has_headerÚcolumnsÚschema_overridesÚinfer_schema_lengthÚinclude_file_pathsÚdrop_empty_rowsÚdrop_empty_colsÚraise_if_emptyrf   rg   c                ó   — y ©N© ©rD   rc   Ú
sheet_namerd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   s                  rJ   Ú
read_excelru   p   ó   € ð$ rL   )rc   rt   rd   re   rf   rh   rg   ri   rj   rk   rl   rm   rn   ro   c                ó   — y rq   rr   )rD   rc   rt   rd   re   rf   rh   rg   ri   rj   rk   rl   rm   rn   ro   s                  rJ   ru   ru   …   rv   rL   )rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   c                ó   — y rq   rr   rs   s                  rJ   ru   ru   š   s   € ð$ rL   )rt   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   c                ó   — y rq   rr   rs   s                  rJ   ru   ru   ±   ó   € ð$ "rL   c                ó   — y rq   rr   rs   s                  rJ   ru   ru   Æ   rv   rL   c                ó   — y rq   rr   rs   s                  rJ   ru   ru   Û   rz   rL   Úxlsx2csv_optionsz0.20.6©ÚversionÚread_csv_optionsz0.20.7ÚcalamineT)rc   rt   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   c               ó�   — t        | «      \  }}|D �cg c]  }t        ||||||||	|
||||||¬«      ‘Œ }}t        ||¬«      S c c}w )al  
    Read Excel spreadsheet data into a DataFrame.

    .. versionadded:: 1.20
        Support loading data from named table objects with `table_name` parameter.
    .. versionadded:: 1.18
        Support loading data from a list (or glob pattern) of multiple workbooks.
    .. versionchanged:: 1.0
        Default engine is now "calamine" (was "xlsx2csv").
    .. versionchanged:: 0.20.7
        The `read_csv_options` parameter was renamed `read_options`.
    .. versionchanged:: 0.20.6
        The `xlsx2csv_options` parameter was renamed `engine_options`.

    Parameters
    ----------
    source
        Path(s) to a file or a file-like object (by "file-like object" we refer to
        objects that have a `read()` method, such as a file handler like the builtin
        `open` function, or a `BytesIO` instance). For file-like objects, the stream
        position may not be updated after reading.
    sheet_id
        Sheet number(s) to convert (set `0` to load all sheets as DataFrames) and
        return a `{sheetname:frame,}` dict. (Defaults to `1` if neither this nor
        `sheet_name` are specified). Can also take a sequence of sheet numbers.
    sheet_name
        Sheet name(s) to convert; cannot be used in conjunction with `sheet_id`. If
        more than one is given then a `{sheetname:frame,}` dict is returned.
    table_name
        Name of a specific table to read; note that table names are unique across
        the workbook, so additionally specifying a sheet id or name is optional;
        if one of those parameters *is* specified, an error will be raised if
        the named table is not found in that particular sheet.
    engine : {'calamine', 'openpyxl', 'xlsx2csv'}
        Library used to parse the spreadsheet file; defaults to "calamine".

        * "calamine": this engine can be used for reading all major types of Excel
          Workbook (`.xlsx`, `.xlsb`, `.xls`) and is dramatically faster than the
          other options, using the `fastexcel` module to bind the Rust-based Calamine
          parser.
        * "openpyxl": this engine is significantly slower than both `calamine` and
          `xlsx2csv`, but can provide a useful fallback if you are otherwise unable
          to read data from your workbook.
        * "xlsx2csv": converts the data to an in-memory CSV before using the native
          polars `read_csv` method to parse the result.
    engine_options
        Additional options passed to the underlying engine's primary parsing
        constructor (given below), if supported:

        * "calamine": n/a (can only provide `read_options`)
        * "openpyxl": `load_workbook <https://openpyxl.readthedocs.io/en/stable/api/openpyxl.reader.excel.html#openpyxl.reader.excel.load_workbook>`_
        * "xlsx2csv": `Xlsx2csv <https://github.com/dilshod/xlsx2csv/blob/f35734aa453d65102198a77e7b8cd04928e6b3a2/xlsx2csv.py#L157>`_
    read_options
        Options passed to the underlying engine method that reads the sheet data.
        Where supported, this allows for additional control over parsing. The
        specific read methods associated with each engine are:

        * "calamine": `load_sheet_by_name <https://fastexcel.toucantoco.dev/fastexcel.html#ExcelReader.load_sheet_by_name>`_
          (or `load_table <https://fastexcel.toucantoco.dev/fastexcel.html#ExcelReader.load_table>`_
          if using the `table_name` parameter).
        * "openpyxl": n/a (can only provide `engine_options`)
        * "xlsx2csv": see :meth:`read_csv`
    has_header
        Indicate if the first row of the table data is a header or not. If False,
        column names will be autogenerated in the following format: `column_x`, with
        `x` being an enumeration over every column in the dataset, starting at 1.
    columns
        Columns to read from the sheet; if not specified, all columns are read. Can
        be given as a sequence of column names or indices, or a single column name.
    schema_overrides
        Support type specification or override of one or more columns.
    infer_schema_length
        The maximum number of rows to scan for schema inference. If set to `None`, the
        entire dataset is scanned to determine the dtypes, which can slow parsing for
        large workbooks. Note that only the "calamine" and "xlsx2csv" engines support
        this parameter.
    include_file_paths
        Include the path of the source file(s) as a column with this name.
    drop_empty_rows
        Indicate whether to omit empty rows when reading data into the DataFrame.
    drop_empty_cols
        Indicate whether to omit empty columns (with no headers) when reading data into
        the DataFrame (note that empty column identification may vary depending on the
        underlying engine being used).
    raise_if_empty
        When there is no data in the sheet,`NoDataError` is raised. If this parameter
        is set to False, an empty DataFrame (with no columns) is returned instead.

    Returns
    -------
    DataFrame
        If reading a single sheet.
    dict
        If reading multiple sheets, a "{sheetname: DataFrame, ...}" dict is returned.

    See Also
    --------
    read_ods

    Notes
    -----
    * Where possible, prefer the default "calamine" engine for reading Excel Workbooks,
      as it is significantly faster than the other options.
    * When using the `xlsx2csv` engine the target Excel sheet is first converted
      to CSV using `xlsx2csv.Xlsx2csv(source).convert()` and then parsed with Polars'
      :func:`read_csv` function. You can pass additional options to `read_options`
      to influence this part of the parsing pipeline.
    * If you want to read multiple sheets and set *different* options (`read_options`,
      `schema_overrides`, etc), you should make separate calls as the options are set
      globally, not on a per-sheet basis.

    Examples
    --------
    Read the "data" worksheet from an Excel file into a DataFrame.

    >>> pl.read_excel(
    ...     source="test.xlsx",
    ...     sheet_name="data",
    ... )  # doctest: +SKIP

    If the correct dtypes can't be determined, use the `schema_overrides` parameter
    to specify them, or increase the inference length with `infer_schema_length`.

    >>> pl.read_excel(
    ...     source="test.xlsx",
    ...     schema_overrides={"dt": pl.Date},
    ...     infer_schema_length=None,
    ... )  # doctest: +SKIP

    Using the `xlsx2csv` engine, read table data from sheet 3 in an Excel workbook as a
    DataFrame while skipping empty lines in the sheet. As sheet 3 does not have a header
    row, you can pass the necessary additional settings for this to the `read_options`
    parameter; these will be passed to :func:`read_csv`.

    >>> pl.read_excel(
    ...     source="test.xlsx",
    ...     sheet_id=3,
    ...     engine="xlsx2csv",
    ...     engine_options={"skip_empty_lines": True},
    ...     read_options={"has_header": False, "new_columns": ["a", "b", "c"]},
    ... )  # doctest: +SKIP
    )rc   rt   rd   re   rf   rg   rj   rk   rl   ro   rh   ri   rm   rn   ©r[   rE   ©rK   Ú_read_spreadsheetrb   )rD   rc   rt   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rF   rE   rG   r[   s                      rJ   ru   ru   ð   s†   € ôD (0°Ó'7Ñ$€GÐ$ð& ö%Bð$ ô# 	ØØØ!Ø!ØØ)Ø%Ø-Ø 3Ø1Ø)Ø!ØØ+Ø+ö	
ðB€Fð Bô(  ØØ 7ôð ùò)Bó   “!A)	rc   rh   ri   rj   rk   rl   rm   rn   ro   c       
         ó   — y rq   rr   ©rD   rc   rt   rh   ri   rj   rk   rl   rm   rn   ro   s              rJ   Úread_odsr‰   ­  ó   € ð rL   )
rc   rt   rh   ri   rj   rk   rl   rm   rn   ro   c       
         ó   — y rq   rr   rˆ   s              rJ   r‰   r‰   ¾  rŠ   rL   )rh   ri   rj   rk   rl   rm   rn   ro   c       
         ó   — y rq   rr   rˆ   s              rJ   r‰   r‰   Ï  s   € ð rL   )	rt   rh   ri   rj   rk   rl   rm   rn   ro   c       
         ó   — y rq   rr   rˆ   s              rJ   r‰   r‰   à  ó   € ð "rL   c       
         ó   — y rq   rr   rˆ   s              rJ   r‰   r‰   ñ  rŠ   rL   c       
         ó   — y rq   rr   rˆ   s              rJ   r‰   r‰     rŽ   rL   c       
        ó�   — t        | «      \  }}|D �cg c]  }t        |||ddi d||||
||	||¬«      ‘Œ }}t        ||¬«      S c c}w )a”  
    Read OpenOffice (ODS) spreadsheet data into a DataFrame.

    Parameters
    ----------
    source
        Path to a file or a file-like object (by "file-like object" we refer to objects
        that have a `read()` method, such as a file handler like the builtin `open`
        function, or a `BytesIO` instance). For file-like objects, the stream position
        may not be updated accordingly after reading.
    sheet_id
        Sheet number(s) to convert, starting from 1 (set `0` to load *all* worksheets
        as DataFrames) and return a `{sheetname:frame,}` dict. (Defaults to `1` if
        neither this nor `sheet_name` are specified). Can also take a sequence of sheet
        numbers.
    sheet_name
        Sheet name(s) to convert; cannot be used in conjunction with `sheet_id`. If
        more than one is given then a `{sheetname:frame,}` dict is returned.
    has_header
        Indicate if the first row of the table data is a header or not. If False,
        column names will be autogenerated in the following format: `column_x`, with
        `x` being an enumeration over every column in the dataset, starting at 1.
    columns
        Columns to read from the sheet; if not specified, all columns are read. Can
        be given as a sequence of column names or indices.
    schema_overrides
        Support type specification or override of one or more columns.
    infer_schema_length
        The maximum number of rows to scan for schema inference. If set to `None`, the
        entire dataset is scanned to determine the dtypes, which can slow parsing for
        large workbooks.
    include_file_paths
        Include the path of the source file(s) as a column with this name.
    drop_empty_rows
        Indicate whether to omit empty rows when reading data into the DataFrame.
    drop_empty_cols
        Indicate whether to omit empty columns (with no headers) when reading data into
        the DataFrame (note that empty column identification may vary depending on the
        underlying engine being used).
    raise_if_empty
        When there is no data in the sheet,`NoDataError` is raised. If this parameter
        is set to False, an empty DataFrame (with no columns) is returned instead.

    Returns
    -------
    DataFrame, or a `{sheetname: DataFrame, ...}` dict if reading multiple sheets.

    See Also
    --------
    read_excel

    Examples
    --------
    Read the "data" worksheet from an OpenOffice spreadsheet file into a DataFrame.

    >>> pl.read_ods(
    ...     source="test.ods",
    ...     sheet_name="data",
    ... )  # doctest: +SKIP

    If the correct dtypes can't be determined, use the `schema_overrides` parameter
    to specify them, or increase the inference length with `infer_schema_length`.

    >>> pl.read_ods(
    ...     source="test.ods",
    ...     sheet_id=3,
    ...     schema_overrides={"dt": pl.Date},
    ...     raise_if_empty=False,
    ... )  # doctest: +SKIP
    Nr�   )rc   rt   rd   re   rf   rg   rj   rk   rl   ro   rm   rn   rh   ri   rƒ   r„   )rD   rc   rt   rh   ri   rj   rk   rl   rm   rn   ro   rF   rE   rG   r[   s                  rJ   r‰   r‰     s†   € ôh (0°Ó'7Ñ$€GÐ$ð& ö%Bð$ ô# 	ØØØ!ØØØØØ-Ø 3Ø1Ø)Ø+Ø+Ø!Øö	
ðB€Fð Bô(  ØØ 7ôð ùò)Br†   )
rf   rg   rj   rk   rl   ri   rh   ro   rm   rn   c               ól  — t        | t        «      r!t        | «      } t        | «      rt	        | «      } t        |
t        «      r|
g}
t        |||
||¬«      }|xs i j                  «       }t        |xs i «      }t        || |«      \  }}}	 t        ||||«      \  }}|D �ci c]  }| |||||||
|||¬«	      “Œ }}t        |d«      r|j                  «        	 |s |€d|fnd|f\  }}d|› d|›�}t        |«      ‚|	rht        | t        «      r| nd}|j                  «       D ��ci c]9  \  }}||j                  t        j                   |«      j#                  |	«      «      “Œ; }}}|r|S t%        t'        |j)                  «       «      «      S c c}w # t        |d«      r|j                  «        w w xY wc c}}w )	N)re   ri   rh   rk   )	Úparserrt   rj   rg   ro   ri   rd   rm   rn   ÚcloseÚidÚnamez%no matching sheets found when `sheet_z` is zin-mem)r7   r;   r   r-   r.   Ú_get_read_optionsÚcopyÚdictÚ_initialise_spreadsheet_parserÚ_get_sheet_namesÚhasattrr”   Ú
ValueErrorrZ   Úwith_columnsÚFÚlitÚaliasÚnextÚiterÚvalues)rD   rc   rt   rd   re   rf   rg   rj   rk   rl   ri   rh   ro   rm   rn   Ú	reader_fnr“   Ú
worksheetsÚsheet_namesÚreturn_multiple_sheetsr–   Úparsed_sheetsÚparamÚvaluerI   ÚworkbookÚframes                              rJ   r…   r…   ‚  sõ  € ô$ �&œ#ÔÜ# FÓ+ˆÜ˜&Ô!Ü% fÓ-ˆFä�'œ3ÔØ�)ˆä$ØØØØØ/ô€Lð %Ò*¨×0Ñ0Ó2€NÜÐ,Ò2°Ó3Ðô %CØ�˜ó%Ñ!€Iˆv�zðä.>Ø�j *¨jó/
Ñ+ˆÐ+ð $ö
ð ð ‘)ØØØ!1Ø)Ø-ØØ%Ø /Ø /ô
ñ 
ð
ˆð 
ô �6˜7Ô#Ø�L‰L�NáØ+5Ð+=˜˜hÑ'ÀFÈJÐCW‰ˆˆuØ5°e°W¸EÀ%ÀÐKˆÜ˜‹oÐáÜ'¨´Ô4‘6¸(ˆð  -×2Ñ2Ó4÷
á��eð �%×$Ñ$¤Q§U¡U¨8£_×%:Ñ%:Ð;MÓ%NÓOÑOð
ˆñ 
ñ ØÐÜ”�]×)Ñ)Ó+Ó,Ó-Ð-ùò?
øô �6˜7Ô#Ø�L‰L�Nð $üó
s$   Â
F ÂF	Â8F Ä">F0Æ	F ÆF-c               óÆ  — | xs i j                  «       } |dk(  rcd| v r|rd}t        |«      ‚| j                  d«      �|du rd}t        |«      ‚d| v r|t        k7  rd	}t        |«      ‚|| d<   |du r	d| vrd| d<   | S |d
k(  rUd| v r|rd}t        |«      ‚d| v r| d   |urd}t        |«      ‚d| v r|t        k7  rd}t        |«      ‚|| d<   d| vr|| d<   | S || d<   || d<   | S )zFNormalise top-level parameters to engine-specific 'read_options' dict.r�   Úuse_columnsz?cannot specify both `columns` and `read_options["use_columns"]`Ú
header_rowNFzNthe values of `has_header` and `read_options["header_row"]` are not compatibleÚschema_sample_rowszRcannot specify both `infer_schema_length` and `read_options["schema_sample_rows"]`Úxlsx2csvri   z;cannot specify both `columns` and `read_options["columns"]`rh   zNthe values of `has_header` and `read_options["has_header"]` are not compatiblerk   zScannot specify both `infer_schema_length` and `read_options["infer_schema_length"]`)r˜   r+   Úgetr   )rg   re   ri   rk   rh   rI   s         rJ   r—   r—   Ñ  sY  € ð !Ò& B×,Ñ,Ó.€Là�ÒØ˜\Ñ)©wØSˆCÜ)¨#Ó.Ð.Ø×Ñ˜lÓ+Ð7¸JÈ%Ñ<OØbˆCÜ)¨#Ó.Ð.Ø" lÑ2Ø¤?Ò2àfˆCÜ)¨#Ó.Ð.à-@ˆÐ)Ñ*Ø˜Ñ <°|Ñ#CØ)-ˆL˜Ñ&ð2 Ðð/ 
�:Ò	Ø˜Ñ%©7ØOˆCÜ)¨#Ó.Ð.à˜LÑ(Ø˜\Ñ*°*Ñ<àbˆCÜ)¨#Ó.Ð.Ø# |Ñ3Ø¤?Ò2àgˆCÜ)¨#Ó.Ð.à.AˆÐ*Ñ+Ø˜|Ñ+Ø)3ˆL˜Ñ&ð
 Ðð /BˆÐ*Ñ+Ø%/ˆ�\Ñ"àÐrL   c                ó.  — | �|�d|›d| ›d�}t        |«      ‚g }| €%|€#|rdn|d   d   }|j                  |«       d}||fS | dk(  r|j                  d„ |D «       «       d	}||fS t        |t        «      xr t        |t
        «       xs t        | t        «      xs | dk(  }t        |t
        «      r|fn|xs d
x}rB|D �	ch c]  }	|	d   ’Œ	 }
}	|D ]'  }||
vrd|›�}t        |«      ‚|j                  |«       Œ) ||fS t        | t        «      r| fn| xs d
}t        |d¬«      D ��	ci c]  \  }}	| dk(  s|	d   |v s|	d   |v r||	d   “Œ  }}}	|D ]6  }|j                  |«      x}€d|› �}t        |«      ‚|j                  |«       Œ8 ||fS c c}	w c c}	}w )zEEstablish sheets to read; indicate if we are returning a dict frames.Nz"cannot specify both `sheet_name` (z) and `sheet_id` (ú)r   r–   Fc              3  ó&   K  — | ]	  }|d    –— Œ y­w)r–   Nrr   )Ú.0Úwss     rJ   ú	<genexpr>z#_get_sheet_names.<locals>.<genexpr>  s   è ø€ Ò;¨"˜2˜f�:Ñ;ùó   ‚Trr   z-no matching sheet found when `sheet_name` is é   )ÚstartÚindexz+no matching sheet found when `sheet_id` is )	r�   rA   rB   r7   r   r;   ÚintÚ	enumerater³   )rc   rt   rd   r¦   rI   r§   r–   r¨   Únamesr¸   Úknown_sheet_namesÚidsÚidxÚsheet_names_by_idxs                 rJ   r›   r›     s6  € ð Ð 
Ð 6Ø2°:°.Ð@RÐS[ÐR^Ð^_Ð`ˆÜ˜‹oÐà€KØÐ˜JÐ.Ù!‰t z°!¡}°VÑ'<ˆØ×Ñ˜4Ô Ø!&Ðð@ Ð.Ð.Ð.ð? 
�QŠØ×ÑÑ;°
Ô;Ô;Ø!%Ðð: Ð.Ð.Ð.ô5 ˜
¤HÓ-ÒQ´jÀÌSÓ6QÐ2Qò Ü˜(¤HÓ-òà˜1‰}ð 	ô (¨
´CÔ8ˆZ‰M¸jÒ>NÈBð
ˆ5ð 
ð 7AÖ A°  F£Ð AÐÐ AØò )�ØÐ0Ñ0ØIÈ$ÈÐR�CÜ$ S›/Ð)Ø×"Ñ" 4Õ(ð	)ð$ Ð.Ð.Ð.ô ",¨H´cÔ!:�8‘+ÀÂÈBˆCô  )¨¸1Ô=÷"á�C˜Ø ’M R¨¡[°CÑ%7¸2¸f¹:ÈÑ;Nð �R˜‘Z‘ð"Ðñ "ð
 ò )�Ø.×2Ñ2°3Ó7Ð7�DÐ@ØGÈÀuÐM�CÜ$ S›/Ð)Ø×"Ñ" 4Õ(ð	)ð Ð.Ð.Ð.ùò' !Bùó"s   Ã FÄ'#Fc                ó  — t        |t        «      r$t        |«      j                  «       st	        |«      ‚| dk(  r‡t        d«      }dddddœj                  «       D ]  \  }}|j                  ||«       Œ t        |t        «      rt        |«      } |j                  |fi |¤Ž}|j                  j                  }t        ||fS | dk(  rqt        d«      }t        |t        «      rt        |«      } |j                  |fddi|¤Ž}t        |«      D �	�
cg c]  \  }	}
|	dz   |
j                   d	œ‘Œ }}	}
t"        ||fS | d
k(  �r1t        dd¬«      }t        |t        «      t        |t        «      }}|s|r+t%        |j&                  x}«      dk  rd|› d�}t)        |«      ‚|r|j+                  «       }nyt        |t,        t.        f«      rcd|j0                  vrd|j2                  ›d�}t5        |«      ‚|j2                  x}rt        |«      j                  «       r|}n|j7                  «       } |j8                  |fi |¤Ž}t        |j:                  «      D �	�cg c]  \  }	}|	dz   |d	œ‘Œ }}	}t<        ||fS d| ›�}t?        |«      ‚c c}
}	w c c}}	w )zNInstantiate the indicated spreadsheet parser and establish related properties.r²   Fz%f)Úexclude_hidden_sheetsÚskip_empty_linesÚskip_hidden_rowsÚfloatformatÚopenpyxlÚ	data_onlyTr»   )r½   r–   r�   Ú	fastexcelz0.7.0)Úmin_version©r   é
   z5`fastexcel` >= 0.10 is required to read bytes; found rµ   Úbzfile z must be opened in binary modezunrecognized engine: ) r7   r;   r   r>   rC   r   rZ   Ú
setdefaultr:   r	   ÚXlsx2csvr¬   ÚsheetsÚ_read_spreadsheet_xlsx2csvÚload_workbookr¿   ÚtitleÚ_read_spreadsheet_openpyxlr   Ú__version__r)   Úgetvaluer   r   Úmoder–   ÚOSErrorÚreadru   r§   Ú_read_spreadsheet_calamineÚNotImplementedError)re   rD   rf   r²   Úoptionr«   r“   rÓ   rÊ   Úir¸   rÌ   Úreading_bytesioÚreading_bytesÚmodule_versionrI   ÚfilenameÚnms                     rJ   rš   rš   9  s˜  € ô �&œ#Ô¤t¨F£|×':Ñ':Ô'<Ü Ó'Ð'à�ÒÜ" :Ó.ˆð &+Ø %Ø %Øñ	
÷
 ‰%‹'ò	5‰MˆF�Eð ×%Ñ% f¨eÕ4ð	5ô �fœeÔ$Ü˜V“_ˆFà"�×"Ñ" 6Ñ<¨^Ñ<ˆØ—‘×'Ñ'ˆÜ)¨6°6Ð9Ð9à	�:Ò	Ü" :Ó.ˆÜ�fœeÔ$Ü˜V“_ˆFà'�×'Ñ'¨ÑQ¸$ÐQÀ.ÑQˆÜBKÈFÓBS×T¹¸¸B˜A ™E¨2¯8©8Ó4ÐTˆÑTÜ)¨6°6Ð9Ð9à	�:Ó	Ü# K¸WÔEˆ	ä�vœwÓ'Ü�vœuÓ%ð 'ˆñ ™}´-Ø'×3Ñ3Ð3ˆNó3
àò3ð JÈ.ÐIYÐYZÐ[ˆCÜ,¨SÓ1Ð1áØ—_‘_Ó&‰FÜ˜¤´Ð ?Ô@Ø˜&Ÿ+™+Ñ%Ø˜fŸk™k˜_Ð,JÐK�Ü˜c“lÐ"Ø$Ÿk™kÐ)�(Ð)¬t°H«~×/DÑ/DÔ/FØ!‘àŸ™›�à%�×%Ñ% fÑ?°Ñ?ˆä6?À×@RÑ@RÓ6S÷
Ù-2¨Q°�a˜!‘e RÓ(ð
ˆñ 
ô *¨6°6Ð9Ð9à! & Ð
,€CÜ
˜cÓ
"Ð"ùóC Uùó6
s   ÄI>ÉJc               ó  — | j                  «       dk(  rt        |«      S | j                  d«       |€i }g }|r¯|j                  di «      x}rt	        dd¬«       |j                  d|«      }	t        |	«      j                  |«      rd}
t        |
«      ‚i |	¥|¥i }}|j                  «       D ]%  \  }}|t        k7  r|||<   Œ|j                  |«       Œ' |j                  «       }||d<   t        t        | fd|i|¤Ž|||¬	«      }|r€i |j                  }}|D ]Y  }||   t        k(  sŒt!        j"                  |«      j$                  j'                  d
d«      j$                  j)                  «       ||<   Œ[ |r |j*                  di |¤Ž}|S )zCTranslate StringIO buffer containing delimited data as a DataFrame.r   Údtypesz_the `dtypes` parameter for `read_csv` is deprecated. It has been renamed to `schema_overrides`.z0.20.31r~   rj   zNcannot specify columns in both `schema_overrides` and `read_options['dtypes']`Ú	separator)r_   ro   rm   rn   ú(?:[ T]00:00:00(?:\.0+)?)$Ú rr   )ÚtellÚ_empty_frameÚseekr³   r   ÚsetÚintersectionr+   rZ   r   rA   r˜   Ú_drop_null_datar/   Úschemar#   rŸ   Úcolr;   ÚreplaceÚto_daterž   )Úcsvrè   rg   rj   rm   rn   ro   Ú	date_colsÚ
csv_dtypesÚcsv_schema_overridesrI   Ú	overridesrå   Údtyper_   Ú
date_castsrñ   s                    rJ   Ú_csv_buffer_to_framerü     sµ  € ð ‡x�xƒz�Q‚Ü˜NÓ+Ð+ð ‡H�HˆQ„KàÐØˆà€IÙØ%×)Ñ)¨(°BÓ7Ð7ˆ:Ð7Ü%ØqØ!õð
  ,×/Ñ/Ð0BÀJÓOÐÜÐ#Ó$×1Ñ1Ð2BÔCØbˆCÜ)¨#Ó.Ð.à&RÐ)=Ð&RÐAQÐ&RÐTVÐ#ˆ	Ø"Ÿ™Ó*ò 	%‰IˆB�ØœŠ}Ø',Ð  Ò$à× Ñ  Õ$ð		%ð $×(Ñ(Ó*ˆØ+;ˆÐ'Ñ(ä	ÜØñ
àð
ð ñ
ð
 &Ø'Ø'ô	
€Bñ Ø §¡�Fˆ
Øò 	ˆBØ�b‰zœVÓ#ä—E‘E˜"“Iß‘SŸ™Ð!>ÀÓCß‘SŸ™›ð ˜2’ð	ñ Ø �—‘Ñ. :Ñ.ˆBØ€IrL   )rm   rn   c               ó|  — g }|rÅ| j                   D ]¥  }|dk(  st        j                  d|«      sŒ| |   }|j                  t        k(  s^|j                  «       | j                  k(  sA|j                  t        v sŒg|j                  dd«      j                  «       | j                  k(  sŒ•|j                  |«       Œ§ |r | j                  |Ž } | j                  | j                  cxk(  rdk(  rt        |«      S  |rE| j                  t        j                  t        j                   «       j#                  «       «       «      S | S )zFIf DataFrame contains columns/rows that contain only nulls, drop them.rê   z(_duplicated_|__UNNAMED__)\d+$r   N)ri   rP   Úmatchrú   r"   Ú
null_countÚheightr(   ró   rA   ÚdropÚwidthrì   ÚfilterrŸ   Úall_horizontalÚallÚis_null)r_   ro   rm   rn   Ú	null_colsÚcol_namerò   s          rJ   rð   rð   Ã  s  € ð €IÙØŸ
™
ò 	/ˆHð ˜2Š~¤§¡Ð*KÈXÕ!VØ˜‘l�à—I‘I¤Ò%Ø—~‘~Ó'¨2¯9©9Ò4àŸ	™	¤^Ò3ØŸK™K¨¨4Ó0×;Ñ;Ó=ÀÇÁÓJð ×$Ñ$ XÕ.ð	/ñ Ø�—‘˜)Ð$ˆBà	‡y�y�B—H‘HÔ! Ò!Ü˜NÓ+Ð+ð "áØ�y‰yœ!×*Ñ*¬1¯5©5«7¯?©?Ó+<Ó=Ð=Ó>Ð>Ø€IrL   c                óH   — | rd}t        |«      ‚t        j                  «       S )Nz^empty Excel sheet

If you want to read this as an empty DataFrame, set `raise_if_empty=False`.)r*   rW   rX   )ro   rI   s     rJ   rì   rì   å  s)   € Ùð^ð 	ô ˜#ÓÐÜ�<‰<‹>ÐrL   c                óv   — |r6ddl m}m} t        |d   t        «      r ||Ž n ||Ž }| j                  |«      } | S )Nr   )Úby_indexÚby_name)Úpolars.selectorsr  r  r7   r¾   Úselect)r_   ri   r  r  Úcolss        rJ   Ú_reorder_columnsr  ï  s:   € ñ ß6ä%/°¸±
¼CÔ%@‰x˜Ñ!ÁgÈwÐFWˆØ�Y‰Y�t‹_ˆØ€IrL   )rd   c               ó˜  ‡&— t        d«      }	t        |	j                  x}
«      }|dk  rd|v rd|
› d�}t        |«      ‚|dk  rd|v rd|
› d�}t        |«      ‚|r|d	k  rd
|
› d�}t	        |«      ‚|r t        |t        «      st        |«      }||d<   |xs i }|j                  d«      dk(  r-|d= |dk\  rdnt        j                  t        d«      d«      |d<   n”|r’|dk\  r�|j                  di «      }|j                  «       D ]c  \  }}||vsŒ|j                  «       x}t        v rd||<   Œ)|t        v rd||<   Œ7|t        k(  rd||<   ŒF|t         k(  rd||<   ŒU|t"        k(  sŒ_d||<   Œe ||d<   |dk  r& | j$                  d*d|i|¤Ž}|j'                  «       }�n|rn|j                  d«      x}rt)        |«      Š&ˆ&fd„|d<    | j*                  |fi |¤Ž}|r"||j,                  k7  rd|›d|›�}t/        |«      ‚|j'                  «       }nWt0        r) | j2                  |fi |¤Ž}t5        dt7        |«      «      }n( | j8                  |fi |¤Ž}t5        dt7        |«      «      }|j                  dd«      €@|j                  d«      s/t        d|j:                  dz   «      D �cg c]  }d|› �‘Œ	 c}|_        t?        ||||¬ «      }|�rŽ|jA                  «       |jB                  }}g i }}|j                  «       D �]%  \  }}||   t        k7  r|||<   Œ|tD        k(  rV|jG                  tI        jJ                  |«      jL                  jO                  tQ        |d!d «      tQ        |d"d «      ¬#«      «       Œx|tR        k(  rYtI        jJ                  |«      jL                  jU                  d$d%«      }|jG                  |jL                  jW                  «       «       ŒÚ|tX        k(  r>|jG                  tI        jJ                  |«      jL                  j[                  «       «       �Œ!|||<   �Œ( |r |j\                  |Ž }|r|j5                  |¬&«      }|j_                  «       }|ja                  «       r|j5                  tb        t        i«      }g }|jB                  j                  «       D �]@  \  }}||vsŒ|t        v r£tI        jJ                  |«      je                  «       jg                  tI        jJ                  |«      «      tI        jJ                  |«      ji                  «       z  tI        jJ                  |«      j5                  tj        «      g} |jG                  | «       Œ·|tD        k(  sŒÁtI        jJ                  |«      jl                  jo                  «       jq                  to        ddd«      «      tI        jJ                  |«      j5                  tR        «      g} |jG                  | «       �ŒC |r`|js                  d'„ |D «       «      ju                  d«      }!tw        |!|d(¬)«      D �"�#�$cg c]  \  }"\  }#}$|"r|$‘Œ c}$}#}"x}%r |j\                  |%Ž }|S c c}w c c}$}#}"w )+NrÌ   )r   é	   r±   zYa more recent version of `fastexcel` is required for 'schema_sample_rows' (>= 0.9; found rµ   )r   rÏ   é   r¯   zUa more recent version of `fastexcel` is required for 'use_columns' (>= 0.10.2; found )r   é   zTa more recent version of `fastexcel` is required for 'table_name' (>= 0.12.0; found r   )r   r  r»   rO   i @  rç   rÎ   r¾   ÚfloatÚdurationÚboolean)r   é   r  r–   c                ó    •— | j                   ‰v S rq   ©r–   )rò   Úselected_col_namess    €rJ   ú<lambda>z,_read_spreadsheet_calamine.<locals>.<lambda>;  s   ø€ ¸#¿(¹(ÐFXÐ:X€ rL   útable named ú not found in sheet úpl.DataFramer°   FÚcolumn_namesr»   Úcolumn_©ro   rm   rn   Ú	time_unitÚ	time_zone©r#  r$  ré   rê   )rç   c              3  óF   K  — | ]  }|d    j                  d¬«      –— Œ y­w)r   T)Úignore_nullsN)r  )r·   Úds     rJ   r¹   z-_read_spreadsheet_calamine.<locals>.<genexpr>�  s   è ø€ ÒP¸q˜q ™tŸx™x°T˜x×:ÑPùs   ‚!T©Ústrictrr   )<r   r   rØ   r)   r�   r7   rY   r³   r™   ÚfromkeysÚrangerZ   Ú	base_typer'   r&   r#   r    r   Úload_sheet_by_nameÚ	to_polarsrî   Ú
load_tablert   ÚRuntimeErrorr   Úload_sheet_eagerr   r   Ú
load_sheetr  ri   rð   Úlazyrñ   r   rA   rŸ   rò   r;   Úto_datetimeÚgetattrr   ró   rô   r$   Úto_timerž   ÚcollectÚis_emptyr"   ÚfloorÚ
eq_missingÚ
is_not_nanr!   Údtr   Úeqr  ÚrowÚzip)'r“   rt   rg   rj   ri   rd   rm   rn   ro   rÌ   Úoriginal_versionÚfastexcel_versionrI   Úparser_dtypesr–   rú   Ú
base_dtyper¸   r_   Ú	col_namesÚxl_tableÚws_arrowrà   Úlfrñ   Ústr_to_temporalÚupdated_overridesrå   ÚtpÚdt_strÚtype_checksÚcÚ
check_castÚ
apply_castÚapplyÚ_r   Údowncastr  s'                                         @rJ   rÝ   rÝ   ú  s  ø€ ô   Ó,€IÜ%¸)×:OÑ:OÐ&OÐ&6ÓPÐà˜6Ò!Ð&:¸lÑ&JØiÐjzÐi{Ð{|Ð}ˆÜ(¨Ó-Ð-Ø˜:Ò%¨-¸<Ñ*GØeÐfvÐewÐwxÐyˆÜ(¨Ó-Ð-ÙÐ'¨'Ò1ØdÐeuÐdvÐvwÐxˆÜ˜‹oÐáÜ˜'¤4Ô(Ü˜7“mˆGØ&-ˆ�]Ñ#à'Ò-¨2ÐØ×ÑÐ,Ó-°Ò2àÐ-Ð.ð ! JÒ.ñ ä—‘œu U›|¨XÓ6ð 	�XÒñ
 
Ð/°7Ò:Ø$×(Ñ(¨°2Ó6ˆØ+×1Ñ1Ó3ò 	4‰KˆD�%Ø˜=Ò(Ø"'§/¡/Ó"3Ð3�J¼ÑFØ*/�M $Ò'Ø¤<Ñ/Ø*1�M $Ò'Ø¤6Ò)Ø*2�M $Ò'Ø¤8Ò+Ø*4�M $Ò'Ø¤7Ó*Ø*3�M $Ò'ð	4ð "/ˆ�XÑà˜:Ò%Ø&ˆV×&Ñ&ÑG¨JÐG¸,ÑGˆØŸ<™<›>ŠáØ(×,Ñ,¨]Ó;Ð;ˆyÐ;Ü%(¨£^Ð"Û.X�˜]Ñ+à(�v×(Ñ(¨ÑD°|ÑDˆHá˜j¨H×,?Ñ,?Ò?Ø$ Z NÐ2FÀzÀnÐU�Ü" 3Ó'Ð'Ø×#Ñ#Ó%‰Båà.�v×.Ñ.¨zÑJ¸\ÑJˆHÜ�n¤j°Ó&:Ó;‰Bà(�v×(Ñ(¨ÑD°|ÑDˆHÜ�n¤j°Ó&:Ó;ˆBà×Ñ˜L¨%Ó0Ð8À×AQÑAQØôB
ô 27°q¸"¿(¹(ÀQ¹,Ó1GÖH¨A˜G A 3š-ÒHˆBŒJä	Ø
Ø%Ø'Ø'ô	
€Bò Ø—W‘W“Y §	¡	ˆFˆØ-/°Ð*ˆØ&×,Ñ,Ó.ó 	+‰FˆB�Ø�b‰zœVÒ#Ø(*Ð! "Ò%Ø”x’Ø×&Ñ&Ü—E‘E˜"“I—M‘M×-Ñ-Ü")¨"¨k¸4Ó"@Ü")¨"¨k¸4Ó"@ð .ó õð ”t’ÜŸ™˜r›Ÿ™×.Ñ.Ð/LÈbÓQ�Ø×&Ñ& v§z¡z×'9Ñ'9Ó';Õ<Ø”t’Ø×&Ñ&¤q§u¡u¨R£y§}¡}×'<Ñ'<Ó'>Ö?à(*Ð! "Ó%ð!	+ñ$ Ø �—‘ /Ð2ˆBÙØ—‘Ð 1�Ó2ˆBØ�Z‰Z‹\ˆð 
‡{�{„}Ø�W‰W”dœF�^Ó$ˆð €KØ—I‘I—O‘OÓ%ó /‰ˆˆ5ØÐ$Ò$àœÑ$ä—E‘E˜!“H—N‘NÓ$×/Ñ/´·±°a³Ó9¼A¿E¹EÀ!»H×<OÑ<OÓ<QÑQÜ—E‘E˜!“H—M‘M¤%Ó(ð�
ð ×"Ñ" :Õ.àœ(Ó"ä—E‘E˜!“H—K‘K×$Ñ$Ó&×)Ñ)¬$¨q°!°Q«-Ó8Ü—E‘E˜!“H—M‘M¤$Ó'ð�
ð ×"Ñ" :Ö.ð/ñ" Ø—Y‘YÑPÀKÔPÓP×TÑTÐUVÓWˆ
ô %(¨
°KÈÔ$M÷
ð 
á �‘y˜˜4Ùò ô
ð 
ˆ8ð 
ð
 !�—‘ (Ð+ˆBà€IùòM Iùô~
s   ÊY ØYc          
     óp  — |j                  dd«      }	|j                  dd«      }
|xs i }|	dk(  }g }|r[|sYd\  }}| j                  D ]%  }|dz  }||j                  v sŒ||j                  }} n |€#|rd|›d	|›�nd
|›d|›d�}t	        |«      ‚| |   }t        dd«      x}rÈ|r||   n!t        t        |j                  «       «      «      }t        ||j                     «      }|st        |«      S |
r(|j                  d„ |j                  d«      D «       «       n1|j                  d„ t        dt        |d   «      dz   «      D «       «       |j                  r|d|j                    }|}nÁ|rd
|›d|›d�}t	        |«      ‚|
sTt        |j!                  «       «      x}st        |«      S t        |d   «      }t        d|dz   «      D �cg c]  }d|› �‘Œ	 }}nU|j!                  «       }|D ]@  }|D �cg c]  }|j"                  ‘Œ }}t%        d„ |D «       «      sŒ/|j                  |«        n |rt&        nd}g }t)        |t)        |ddiŽd¬«      D �]t  \  }}|s|rŒ|D �cg c]  }|j"                  ‘Œ }}|s|j+                  |«      x}t&        k(  r|D �cg c]  }|�t-        |«      n|‘Œ }}|j+                  |«      x} t.        t0        t2        fv rÊt5        j6                  ||d¬«      }!|!j8                  t&        k(  r¸| t0        k(  r4|!j,                  j;                  t        | dd«      t        | dd«      ¬«      }!n{| t.        k(  r5|!j,                  j=                  dd«      j,                  j?                  «       }!n=| t2        k(  r4|!j,                  jA                  «       }!nt5        j6                  |||d¬«      }!|jC                  |!«       �Œw tE        d„ |D «       «      }"t5        jF                  tI        t)        |"|d¬«      «      ||	d¬«      }#tK        |#|||¬«      }#tM        |#|«      }#|#S c c}w c c}w c c}w c c}w )zAUse the 'openpyxl' library to read data from the given worksheet.rk   Nrh   Tr   )Nr   r»   r  r  zno named tables found in sheet z (looking for rµ   Útablesc              3  ó4   K  — | ]  }|j                   –— Œ y ­wrq   )r«   )r·   Úcells     rJ   r¹   z-_read_spreadsheet_openpyxl.<locals>.<genexpr>Ä  s   è ø€ Ò=¨˜$Ÿ*�*Ñ=ùó   ‚c              3  ó&   K  — | ]	  }d |› �–— Œ y­w)r!  Nrr   )r·   Úns     rJ   r¹   z-_read_spreadsheet_openpyxl.<locals>.<genexpr>Æ  s   è ø€ ÒL¨A˜G A 3œ-ÑLùrº   r!  c              3  ó$   K  — | ]  }|d u–— Œ
 y ­wrq   rr   )r·   ra   s     rJ   r¹   z-_read_spreadsheet_openpyxl.<locals>.<genexpr>×  s   è ø€ Ò9¨�q ”}Ñ9ùs   ‚r*  Fr)  r#  r$  r%  ré   rê   )rú   r*  c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrq   r  )r·   rR   s     rJ   r¹   z-_read_spreadsheet_openpyxl.<locals>.<genexpr>÷  s   è ø€ Ò:¨˜aŸf�fÑ:ùrX  )rj   rk   r*  r"  )'Úpopr¦   rU  rÖ   r1  r6  r¢   r£   r¤   rY   Úrefrì   rB   r,  ÚlenÚtotalsRowCountÚ	iter_rowsr«   Úanyr#   r@  r³   r;   r   r   r$   rW   ÚSeriesrú   r5  ró   rô   r7  rA   r   rX   r™   rð   r  )$r“   rt   rg   rj   ri   rd   rm   rn   ro   rk   rh   Úno_inferenceÚheaderÚn_tablesr^   r¸   rI   rU  ÚtableÚrowsÚ	rows_iterÚn_colsrZ  r?  rW  Ú
row_valuesrú   Úseries_datar–   Úcolumn_datar¤   ra   rK  rR   rÀ   r_   s$                                       rJ   r×   r×   ˜  sK  € ð '×*Ñ*Ð+@À$ÓGÐØ×!Ñ! ,°Ó5€JØ'Ò-¨2ÐØ&¨!Ñ+€LØ!€Fá™*Ø&Ñˆ
�HØ×&Ñ&ò 	ˆEØ˜‰MˆHØ˜UŸ\™\Ò)Ø!&¨¯©�J�Ùð		ð
 Ðñ ð ˜z˜nÐ,@ÀÀÑOà6°z°nÀNÐS]ÐR`Ð`aÐbð ô
 ˜sÓ#Ð#à�JÑˆô ˜˜X tÓ,Ð,€vÐ,Ù&0��zÒ"´d¼4ÀÇÁÃÓ;PÓ6QˆÜ�B�u—y‘y‘MÓ"ˆÙÜ Ó/Ð/ÙØ�M‰MÑ=°·±¸!³Ô=Õ=à�M‰MÑL´°q¼#¸dÀ1¹g»,ÈÑ:JÓ1KÔLÔLØ×ÒØÐ/˜5×/Ñ/Ð/Ð0ˆDØ‰	Ù	Ø/°
¨~¸^ÈJÈ>ÐYZÐ[ˆÜ˜3ÓÐáÜ!% b§l¡l£nÓ!5Ð5�IÐ5Ü# NÓ3Ð3Ü˜ 1™Ó&ˆFÜ-2°1°f¸q±jÓ-AÖB¨˜ ˜s’mÐBˆFÑBàŸ™›ˆIØ ò �Ø58Ö9¨T˜dŸj›jÐ9�
Ð9ÜÑ9¨jÔ9Õ9Ø—M‘M *Ô-Ùð	ñ #�F¨€EØ€KÜ  ¬¨iÐ)FÀÑ)FÈuÔUó "ÑˆˆkÙ’Ø-8Ö9 T�d—j“jÐ9ˆFÐ9ÙÐ)9×)=Ñ)=¸dÓ)CÐ C ÌÒNð EKÖK¸q Q ]œ#˜aœ&¸Ñ:ÐK�ÐKà&×*Ñ*¨4Ó0Ð0�´d¼HÄdÐ5KÑKÜ—I‘I˜d F°5Ô9�Ø—7‘7œfÒ$ØœX’~ØŸE™E×-Ñ-Ü&-¨b°+¸tÓ&DÜ&-¨b°+¸tÓ&Dð .ó ™ð œtšØŸE™EŸM™MØ9¸2óç™#Ÿg™g›iñ ð œtšØŸE™EŸM™M›O™ä—I‘I˜d F°%ÀÔF�Ø×Ñ˜qÖ!ð1"ô4 Ñ:¨kÔ:Ó:€EÜ	�‰ÜŒS�˜¨DÔ1Ó2Ø)Ø/Øô	
€Bô 
Ø
Ø%Ø'Ø'ô	
€Bô 
˜"˜gÓ	&€BØ€Iùòg Cùò :ùò :ùò Ls   ÇP$Ç0P)ÉP.ÊP3c          	     óh  — |rd}	t        |	«      ‚t        «       }
t        j                  «       5  t        j                  dt
        ¬«       | j                  |
|¬«       ddd«       |j                  dd«       |r||d<   g }|rb|j                  «       D ]O  \  }}|t        k(  sŒt        ||<   |j                  t        j                  |«      j                  t        «      «       ŒQ t        |
d	|||||¬
«      }|r |j                   |Ž }|j#                  t$        «      }t'        ||«      S # 1 sw Y   ŒÌxY w)zAUse the 'xlsx2csv' library to read data from the given worksheet.zDthe `table_name` parameter is not supported by the 'xlsx2csv' engineÚignore)Úcategory)ÚoutfileÚ	sheetnameNÚtruncate_ragged_linesTri   ú,)rè   rg   rj   ro   rm   rn   )r�   r
   ÚwarningsÚcatch_warningsÚfilterwarningsÚDeprecationWarningÚconvertrÑ   rZ   r   r%   rA   rŸ   rò   r   rü   rž   ÚrenamerS   r  )r“   rt   rg   rj   ri   rd   rm   rn   ro   rI   Ú
csv_bufferÚcast_to_booleanrò   rú   r_   s                  rJ   rÔ   rÔ     s/  € ñ ØTˆÜ˜‹oÐä“€JÜ	×	 Ñ	 Ó	"ñ Aô 	×Ñ Ô3EÕFØ�‰˜z°ZˆÔ@÷	Að ×ÑÐ3°TÔ:ÙØ")ˆ�YÑà€OÙØ*×0Ñ0Ó2ò 	A‰JˆC�ØœÓÜ(-Ð  Ñ%Ø×&Ñ&¤q§u¡u¨S£z§¡´wÓ'?Õ@ð	Aô
 
ØØØ!Ø)Ø%Ø'Ø'ô
€Bñ ØˆR�_‰_˜oÐ.ˆà	�‰Ô*Ó	+€BÜ˜B Ó(Ð(÷=Að Aús   ®/D(Ä(D1)rD   r3   Úreturnztuple[Any, bool])rR   r;   r}  r;   )r[   z2list[pl.DataFrame] | list[dict[str, pl.DataFrame]]rE   Úboolr}  r   ) rD   r3   rc   ÚNonert   r;   rd   ú
str | Nonere   r2   rf   údict[str, Any] | Nonerg   r�  rh   r~  ri   ú*Sequence[int] | Sequence[str] | str | Nonerj   úSchemaDict | Nonerk   ú
int | Nonerl   r€  rm   r~  rn   r~  ro   r~  r}  r  ) rD   r3   rc   r  rt   r  rd   r€  re   r2   rf   r�  rh   r~  rg   r�  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r  ) rD   r3   rc   r¾   rt   r;   rd   r€  re   r2   rf   r�  rg   r�  rh   r~  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r   ) rD   r3   rc   úLiteral[0] | Sequence[int]rt   r  rd   r€  re   r2   rf   r�  rg   r�  rh   r~  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  údict[str, pl.DataFrame]) rD   r3   rc   r¾   rt   r  rd   r€  re   r2   rf   r�  rg   r�  rh   r~  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r  ) rD   r3   rc   r  rt   úlist[str] | tuple[str, ...]rd   r€  re   r2   rf   r�  rg   r�  rh   r~  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r†  ) rD   r3   rc   úint | Sequence[int] | Nonert   ú(str | list[str] | tuple[str, ...] | Nonerd   r€  re   r2   rf   r�  rg   r�  rh   r~  ri   r‚  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  ú&pl.DataFrame | dict[str, pl.DataFrame])rD   r3   rc   r  rt   r;   rh   r~  ri   ú$Sequence[int] | Sequence[str] | Nonerj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r  )rD   r3   rc   r  rt   r  rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r  )rD   r3   rc   r¾   rt   r;   rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r   )rD   r3   rc   r…  rt   r  rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r†  )rD   r3   rc   r¾   rt   r  rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r  )rD   r3   rc   r  rt   r‡  rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  r†  )rD   r3   rc   rˆ  rt   r‰  rh   r~  ri   r‹  rj   rƒ  rk   r„  rl   r€  rm   r~  rn   r~  ro   r~  r}  rŠ  ) rD   ústr | IO[bytes] | bytesrc   rˆ  rt   ústr | Sequence[str] | Nonerd   r€  re   r2   rf   r�  rg   r�  rj   rƒ  rk   r„  rl   r€  ri   r‚  rh   r~  ro   r~  rm   r~  rn   r~  r}  rŠ  )rg   r�  re   r2   ri   r‹  rk   r„  rh   r~  r}  údict[str, Any])
rc   rˆ  rt   r�  rd   r€  r¦   zlist[dict[str, Any]]r}  ztuple[list[str], bool])re   r€  rD   rŒ  rf   rŽ  r}  z=tuple[Callable[..., pl.DataFrame], Any, list[dict[str, Any]]])rõ   r
   rè   r;   rg   rŽ  rj   rƒ  rm   r~  rn   r~  ro   r~  r}  r  )
r_   r  ro   r~  rm   r~  rn   r~  r}  r  )ro   r~  r}  r  )r_   r  ri   r‹  r}  r  )r“   r   rt   r€  rg   rŽ  rj   rƒ  ri   r‹  rd   r€  rm   r~  rn   r~  ro   r~  r}  r  )[Ú
__future__r   r<   rP   ru  Úcollectionsr   Úcollections.abcr   Údatetimer   r   Úior   r	   r
   r   Úpathlibr   Útypingr   r   r   r   r   r   Úpolars._reexportÚ	_reexportrW   Úpolarsr   r   rŸ   Úpolars._dependenciesr   r   Úpolars._utils.deprecationr   r   Úpolars._utils.variousr   r   r   Úpolars.datatypesr   r   r   r   r    r!   r"   r#   r$   r%   Úpolars.datatypes.groupr&   r'   r(   Úpolars.exceptionsr)   r*   r+   Úpolars.functionsr,   Úpolars.io._utilsr-   r.   Úpolars.io.csv.functionsr/   r0   r1   Úpolars._typingr2   r3   r4   rK   rS   rb   ru   r‰   r…   r—   r›   rš   rü   rð   rì   r  rÝ   r×   rÔ   rr   rL   rJ   ú<module>r£     s  ðÝ "ã 	Û 	Û Ý #Ý $Ý Ý ß ?Ó ?Ý ß C× Cå Ý Ý !ß D÷÷ WÑ V÷÷ ÷ ÷ PÑ O÷ñ õ
 $ß =Ý ,áÝ(ÝçMÑMó,ó<>ð
WØ>ðWð "ðWð 	ó	Wð2 
ð à Ø%(Ø,/Ø*-ØØ:=Ø*-Ø&)Ø%(ØØØñ!Øðð ðð ð	ð
 ðð #ðð *ðð (ðð ðð 8ðð (ðð $ðð #ðð ðð ðð  ð!ð" ò#ó 
ðð( 
ð ØØ Ø%(Ø,/ØØ*-Ø:=Ø*-Ø&)Ø%(ØØØñ!Øðð ðð ð	ð
 ðð #ðð *ðð ðð (ðð 8ðð (ðð $ðð #ðð ðð ðð  ð!ð" ò#ó 
ðð( 
ð !Ø%(Ø,/Ø*-ØØ:=Ø*-Ø&)Ø%(ØØØñ!Øðð ðð ð	ð
 ðð #ðð *ðð (ðð ðð 8ðð (ðð $ðð #ðð ðð ðð  ð!ð" ò#ó 
ðð, 
ð
 Ø Ø%(Ø,/Ø*-ØØ:=Ø*-Ø&)Ø%(ØØØñ!"Øð"ð )ð"ð ð	"ð
 ð"ð #ð"ð *ð"ð (ð"ð ð"ð 8ð"ð (ð"ð $ð"ð #ð"ð ð"ð ð"ð  ð!"ð" ò#"ó 
ð"ð( 
ð
 Ø Ø%(Ø,/Ø*-ØØ:=Ø*-Ø&)Ø%(ØØØñ!Øðð ðð ð	ð
 ðð #ðð *ðð (ðð ðð 8ðð (ðð $ðð #ðð ðð ðð  ð!ð" ò#ó 
ðð( 
ð à Ø%(Ø,/Ø*-ØØ:=Ø*-Ø&)Ø%(ØØØñ!"Øð"ð ð"ð ,ð	"ð
 ð"ð #ð"ð *ð"ð (ð"ð ð"ð 8ð"ð (ð"ð $ð"ð #ð"ð ð"ð ð"ð  ð!"ð" ò#"ó 
ð"ñ( Ð/Ð1AÈ8ÔTÙÐ/°ÈÔRð ,0Ø;?Ø!Ø%/Ø,0Ø*.ØØ:>Ø*.Ø&5Ø%)Ø Ø Øñ!xØðxð )ðxð 9ð	xð
 ðxð #ðxð *ðxð (ðxð ðxð 8ðxð (ðxð $ðxð #ðxð ðxð ðxð  ð!xð" ,ò#xó Só Uðxðv 
ð àØ47Ø*-Ø&)Ø%(ØØØñØðð ðð ð	ð
 ðð 2ðð (ðð $ðð #ðð ðð ðð ðð òó 
ðð  
ð ØØØ47Ø*-Ø&)Ø%(ØØØñØðð ðð ð	ð
 ðð 2ðð (ðð $ðð #ðð ðð ðð ðð òó 
ðð  
ð Ø47Ø*-Ø&)Ø%(ØØØñØðð ðð ð	ð
 ðð 2ðð (ðð $ðð #ðð ðð ðð ðð òó 
ðð  
ð
 ØØ47Ø*-Ø&)Ø%(ØØØñ"Øð"ð )ð"ð ð	"ð
 ð"ð 2ð"ð (ð"ð $ð"ð #ð"ð ð"ð ð"ð ð"ð ò"ó 
ð"ð  
ð
 ØØ47Ø*-Ø&)Ø%(ØØØñØðð ðð ð	ð
 ðð 2ðð (ðð $ðð #ðð ðð ðð ðð òó 
ðð  
ð àØ47Ø*-Ø&)Ø%(ØØØñ"Øð"ð ð"ð ,ð	"ð
 ð"ð 2ð"ð (ð"ð $ð"ð #ð"ð ð"ð ð"ð ð"ð ò"ó 
ð"ð& ,0Ø;?ØØ48Ø*.Ø&5Ø%)Ø Ø ØñlØðlð )ðlð 9ð	lð
 ðlð 2ðlð (ðlð $ðlð #ðlð ðlð ðlð ðlð ,ólðl -1Ø*.Ø*.Ø&5Ø%)Ø:>ØØØ Ø ñ!L.Ø#ðL.ð )ðL.ð +ð	L.ð
 ðL.ð #ðL.ð *ðL.ð (ðL.ð (ðL.ð $ðL.ð #ðL.ð 8ðL.ð ðL.ð ðL.ð ðL.ð  ð!L.ð" ,ó#L.ð^3Ø'ð3ð #ð3ð 2ð	3ð
 $ð3ð ð3ð ó3ðl//Ø(ð//à*ð//ð ð//ð %ð	//ð
 ó//ðdC#ØðC#à#ðC#ð #ðC#ð Có	C#ðLAØ	ðAð ðAð !ð	Að
 (ðAð ðAð ðAð ðAð óAðP !Ø ñØðð ðð ð	ð
 ðð óóDðØðØCðàóð$ "ñ[Øð[ð ð[ð !ð	[ð
 (ð[ð 2ð[ð ð[ð ð[ð ð[ð ð[ð ó[ðJ "ñmØðmð ðmð !ð	mð
 (ðmð 2ðmð ðmð ðmð ðmð ðmð ómðn "ñ0)Øð0)ð ð0)ð !ð	0)ð
 (ð0)ð 2ð0)ð ð0)ð ð0)ð ð0)ð ð0)ð ô0)rL   