
    bcg	                     ^    d Z ddlZddlmZ  G d de      Z G d de      Z G d	 d
e      Zy)zs
Simple file reader. It intends to read lines from big files. Also it provides the group id of each line it reads.
    N   )series_to_linec                   $    e Zd Zd Zd Zd Zd Zy)_BaseReaderc                      || _         || _        y N)_sep_group_feature_num)selfsepgroup_feature_nums      Q/var/www/html/bid-api/venv/lib/python3.12/site-packages/catboost/eval/_readers.py__init__z_BaseReader.__init__
   s    	"3    c                     | j                   S r   )r	   r   s    r   get_separatorz_BaseReader.get_separator   s    yyr   c                     t        d      )Nz*The base class don't have any lines_reader)NotImplementedErrorr   s    r   lines_generatorz_BaseReader.lines_generator   s    !"NOOr   c              #      K   g }g }d}| j                         }|D ]>  \  }}|j                  |       |j                  |       |dz  }||k(  s3||f g }g }d}@ |dk7  r||f y y w)Nr   r   )r   append)r   	pack_sizelines	group_idscurrent_pack_sizer   group_idlines           r   pack_lines_generatorz _BaseReader.pack_lines_generator   s     	..0-NHdX&LL" I-&&	$%! . !U"" "s   AA)A)N)__name__
__module____qualname__r   r   r   r    r   r   r   r   	   s    4P#r   r   c                   &     e Zd Zd fd	Zd Z xZS )_SimpleStreamingFileReaderc                 J    t         t        |   ||       || _        || _        y r   )superr%   r   _has_header
_file_name)r   	file_namer   
has_headerr   	__class__s        r   r   z#_SimpleStreamingFileReader.__init__(   s%    ($8>OP%#r   c              #     K   t        | j                  d      5 }| j                  r|j                          t	        |      D ]r  \  }}| j
                  |}nF|j                         j                  | j                  | j
                  dz         }|| j
                     }t        t        |            |f t 	 d d d        y # 1 sw Y   y xY ww)Nrr   )openr)   r(   readline	enumerater
   stripsplitr	   intfloat)r   filenumr   r   featuress         r   r   z*_SimpleStreamingFileReader.lines_generator-   s     $//3'4&t_	T**2"H#zz|11$))T=T=TWX=XYH'(?(?@H%/*D00 - (''s   CBC 7	C C	Cr   )r    r!   r"   r   r   __classcell__r,   s   @r   r%   r%   '   s    $

1r   r%   c                   ,     e Zd Zd fd	Zd Zd Z xZS )_SimpleDataReaderc                 b    t         t        |   ||       t        j                  |      | _        y r   )r'   r<   r   pd	DataFrame_data)r   datar   r   r,   s       r   r   z_SimpleDataReader.__init__<   s&    /5FG\\$'
r   c              #   $  K   t        | j                  j                               D ]f  \  }\  }}| j                  |t	        || j
                        dz   f 3|j                  | j                     t	        || j
                        dz   f h y w)N
)r1   r@   iterrowsr
   r   r	   iloc)r   r7   indexr   s       r   r   z!_SimpleDataReader.lines_generator@   s~     "+DJJ,?,?,A"BC%&&.>$		:TAAAii 7 78.tyy:Y\`:```	 #Cs   BBc                     | j                   S r   )r@   r   s    r   
get_matrixz_SimpleDataReader.get_matrixG   s    zzr   r   )r    r!   r"   r   r   rH   r9   r:   s   @r   r<   r<   ;   s    (ar   r<   )	__doc__pandasr>   utilsr   objectr   r%   r<   r#   r   r   <module>rM      s6     !#& #<1 1( r   