§
    rŠtjQ  ã            
       ó|  — d dl Z d dlmZ d dlmZ d dlZd dlmZ d dl	m
Z
mZ d„ Z e e
eddd¬	¦  «        g e
eddd¬	¦  «        g e
ed dd¬	¦  «        gd
œd¬¦  «        d dœd„¦   «         Z e e
eddd¬	¦  «        g e
eddd¬	¦  «        g e
eddd¬	¦  «        dgdœd¬¦  «        ddœd„¦   «         Zdddœd„ZdS )é    N)Úislice)ÚIntegral)Ú
get_config)ÚIntervalÚvalidate_paramsc              #   óV   K  — 	 t          t          | |¦  «        ¦  «        }|r|V — ndS Œ')zzChunk generator, ``gen`` into lists of length ``chunksize``. The last
    chunk may have a length less than ``chunksize``.TN)Úlistr   )ÚgenÚ	chunksizeÚchunks      úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/utils/_chunking.pyÚchunk_generatorr      s?   è è € ðÝ•V˜C Ñ+Ô+Ñ,Ô,ˆØð 	ØˆKˆKˆKˆKàˆFðó    é   Úleft)Úclosed)ÚnÚ
batch_sizeÚmin_batch_sizeT)Úprefer_skip_nested_validation)r   c             #   óÌ   K  — d}t          t          | |z  ¦  «        ¦  «        D ]%}||z   }||z   | k    rŒt          ||¦  «        V — |}Œ&|| k     rt          || ¦  «        V — dS dS )a,  Generator to create slices containing `batch_size` elements from 0 to `n`.

    The last slice may contain less than `batch_size` elements, when
    `batch_size` does not divide `n`.

    Parameters
    ----------
    n : int
        Size of the sequence.
    batch_size : int
        Number of elements in each batch.
    min_batch_size : int, default=0
        Minimum number of elements in each batch.

    Yields
    ------
    slice of `batch_size` elements

    See Also
    --------
    gen_even_slices: Generator to create n_packs slices going up to n.

    Examples
    --------
    >>> from sklearn.utils import gen_batches
    >>> list(gen_batches(7, 3))
    [slice(0, 3, None), slice(3, 6, None), slice(6, 7, None)]
    >>> list(gen_batches(6, 3))
    [slice(0, 3, None), slice(3, 6, None)]
    >>> list(gen_batches(2, 3))
    [slice(0, 2, None)]
    >>> list(gen_batches(7, 3, min_batch_size=0))
    [slice(0, 3, None), slice(3, 6, None), slice(6, 7, None)]
    >>> list(gen_batches(7, 3, min_batch_size=2))
    [slice(0, 3, None), slice(3, 7, None)]
    r   N)ÚrangeÚintÚslice)r   r   r   ÚstartÚ_Úends         r   Úgen_batchesr      s•   è è € ðZ €EÝ•3�q˜J‘Ñ'Ô'Ñ(Ô(ð ð ˆØ�jÑ ˆØ�Ñ !Ò#Ð#ØÝ�E˜3ÑÔÐÐÐØˆˆØˆq‚y€yÝ�E˜1‰oŒoÐÐÐÐÐð €yr   )r   Ún_packsÚ	n_samples)r    c             #   ó¼   K  — d}t          |¦  «        D ]G}| |z  }|| |z  k     r|dz  }|dk    r,||z   }|�t          ||¦  «        }t          ||d¦  «        V — |}ŒHdS )aº  Generator to create `n_packs` evenly spaced slices going up to `n`.

    If `n_packs` does not divide `n`, except for the first `n % n_packs`
    slices, remaining slices may contain fewer elements.

    Parameters
    ----------
    n : int
        Size of the sequence.
    n_packs : int
        Number of slices to generate.
    n_samples : int, default=None
        Number of samples. Pass `n_samples` when the slices are to be used for
        sparse matrix indexing; slicing off-the-end raises an exception, while
        it works for NumPy arrays.

    Yields
    ------
    `slice` representing a set of indices from 0 to n.

    See Also
    --------
    gen_batches: Generator to create slices containing batch_size elements
        from 0 to n.

    Examples
    --------
    >>> from sklearn.utils import gen_even_slices
    >>> list(gen_even_slices(10, 1))
    [slice(0, 10, None)]
    >>> list(gen_even_slices(10, 10))
    [slice(0, 1, None), slice(1, 2, None), ..., slice(9, 10, None)]
    >>> list(gen_even_slices(10, 5))
    [slice(0, 2, None), slice(2, 4, None), ..., slice(8, 10, None)]
    >>> list(gen_even_slices(10, 3))
    [slice(0, 4, None), slice(4, 7, None), slice(7, 10, None)]
    r   r   N)r   Úminr   )r   r   r    r   Úpack_numÚthis_nr   s          r   Úgen_even_slicesr%   Q   s“   è è € ð\ €EÝ˜'‘N”Nð 	ð 	ˆØ�g‘ˆØ�a˜'‘kÒ!Ð!Ø�a‰KˆFØ�AŠ:ˆ:Ø˜&‘.ˆCØÐ$Ý˜) SÑ)Ô)�Ý˜˜s DÑ)Ô)Ð)Ð)Ð)ØˆEøð	ð 	r   )Ú
max_n_rowsÚworking_memoryc                óì   — |€t          ¦   «         d         }t          |dz  | z  ¦  «        }|�t          ||¦  «        }|dk     r0t          j        d|t          j        | dz  ¦  «        fz  ¦  «         d}|S )aØ  Calculate how many rows can be processed within `working_memory`.

    Parameters
    ----------
    row_bytes : int
        The expected number of bytes of memory that will be consumed
        during the processing of each row.
    max_n_rows : int, default=None
        The maximum return value.
    working_memory : int or float, default=None
        The number of rows to fit inside this number of MiB will be
        returned. When None (default), the value of
        ``sklearn.get_config()['working_memory']`` is used.

    Returns
    -------
    int
        The number of rows which can be processed within `working_memory`.

    Warns
    -----
    Issues a UserWarning if `row_bytes exceeds `working_memory` MiB.
    Nr'   i   r   zOCould not adhere to working_memory config. Currently %.0fMiB, %.0fMiB required.g      °>)r   r   r"   ÚwarningsÚwarnÚnpÚceil)Ú	row_bytesr&   r'   Úchunk_n_rowss       r   Úget_chunk_n_rowsr/   Œ   s’   € ð2 ÐÝ#™œÐ&6Ô7ˆå�~¨Ñ/°9Ñ<Ñ=Ô=€LØÐÝ˜<¨Ñ4Ô4ˆØ�aÒÐÝŒð3à�rœw y°6Ñ'9Ñ:Ô:Ð;ñ<ñ	
ô 	
ð 	
ð
 ˆØÐr   )r)   Ú	itertoolsr   Únumbersr   Únumpyr+   Úsklearn._configr   Úsklearn.utils._param_validationr   r   r   r   r%   r/   © r   r   ú<module>r6      s×  ðð €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ Eðð ð ð €àˆh�x  D°Ð8Ñ8Ô8Ð9Ø�x ¨!¨T¸&ÐAÑAÔAÐBØ#˜8 H¨a°¸fÐEÑEÔEÐFðð ð
 #'ðñ ô ð 23ð -ð -ð -ð -ñô ð-ð` €àˆh�x  D°Ð8Ñ8Ô8Ð9Ø�H˜X q¨$°vÐ>Ñ>Ô>Ð?Ø�h˜x¨¨D¸Ð@Ñ@Ô@À$ÐGðð ð
 #'ðñ ô ð .2ð 0ð 0ð 0ð 0ñô ð0ðf /3À4ð &ð &ð &ð &ð &ð &ð &r   