o
    i                     @  sz   d dl mZ d dlmZ d dlZd dlmZ er4d dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZ G d	d
 d
ZdS )    )annotations)TYPE_CHECKINGN)N_INFER_DEFAULT)Sequence)Path)	DataFrame)CsvEncodingPolarsDataType
SchemaDictc                   @  s^   e Zd ZdZdddddddddddddeddd	dddddd
dddddd;d5d6Zd<d9d:ZdS )=BatchedCsvReaderzRead a CSV file in batches.TN,"r   FiP  utf8
)
has_headercolumns	separatorcomment_prefix
quote_char	skip_rows
skip_linesschema_overridesnull_valuesmissing_utf8_is_empty_stringignore_errorstry_parse_dates	n_threadsinfer_schema_length
batch_sizen_rowsencoding
low_memoryrechunkskip_rows_after_headerrow_index_namerow_index_offseteol_charnew_columnsraise_if_emptytruncate_ragged_linesdecimal_commasource
str | Pathr   boolr   $Sequence[int] | Sequence[str] | Noner   strr   
str | Noner   r   intr   r   ,SchemaDict | Sequence[PolarsDataType] | Noner   +str | Sequence[str] | dict[str, str] | Noner   r   r   r   
int | Noner   r   r   r    r   r!   r"   r#   r$   r%   r&   r'   Sequence[str] | Noner(   r)   r*   returnNonec                C  s   t jdi d|d|d|d|d|d|d|d|d	|d
|d|	d|d|d|d|
d|d|d|d|d|d|d|d|d|d|}|d urZ||}|r`|  |j|d| _d S )Nr   r   r   r   r   r   r   r"   r    r+   r   r!   r   r   r   r   r   r#   r$   r%   r&   r(   r)   r*   r'   )
chunk_size )plZscan_csvselectZcollect_schemaZcollect_batches_reader)selfr+   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   qr9   r9   S/home/app/Keep/.python/lib/python3.10/site-packages/polars/io/csv/batched_reader.py__init__   sp   
 	

zBatchedCsvReader.__init__nlist[DataFrame] | Nonec              	   C  sZ   g }t |D ]}z| j }|dur|| W q ty"   Y  nw t|dkr+|S dS )a  
        Read `n` batches from the reader.

        Parameters
        ----------
        n
            Number of chunks to fetch.

        Examples
        --------
        >>> reader = pl.read_csv_batched(
        ...     "./pdsh/tables_scale_100/lineitem.tbl",
        ...     separator="|",
        ...     try_parse_dates=True,
        ... )  # doctest: +SKIP
        >>> reader.next_batches(5)  # doctest: +SKIP

        Returns
        -------
        list of DataFrames
        Nr   )ranger<   __next__appendStopIterationlen)r=   rA   chunks_chunkr9   r9   r?   next_batchesW   s   

zBatchedCsvReader.next_batches):r+   r,   r   r-   r   r.   r   r/   r   r0   r   r0   r   r1   r   r1   r   r2   r   r3   r   r-   r   r-   r   r-   r   r4   r   r4   r   r1   r   r4   r    r   r!   r-   r"   r-   r#   r1   r$   r0   r%   r1   r&   r/   r'   r5   r(   r-   r)   r-   r*   r-   r6   r7   )rA   r1   r6   rB   )__name__
__module____qualname____doc__r   r@   rK   r9   r9   r9   r?   r      s>    Dr   )
__future__r   typingr   Zpolarsr:   Zpolars.datatypesr   collections.abcr   pathlibr   r   Zpolars._typingr   r	   r
   r   r9   r9   r9   r?   <module>   s    