Ë
    ¤ehÛ  ã                   óN  — d Z ddlmZ ddlmZ 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 e	j$                  j'                  d«      Ze	j$                  j*                  e	j$                  j,                  gZe	j$                  j1                  d	«      d
„ «       Zd„ Zed„ «       Zy)zd
Tests multithreading behaviour for reading and
parsing files for each parser defined in parsers.py
é    )Ú	ExitStack)ÚBytesIO)Ú
ThreadPoolN)Ú	DataFrame)ÚVersionÚpyarrow_xfailz0ignore:Passing a BlockManager:DeprecationWarningc           	      ój  ‡— | }|j                   dk(  ret        j                  d«      }t        |j                  «      t        d«      k  r/|j                  t        j                  j                  d¬«      «       dŠd}ˆfd„t        |«      D «       }t        «       5 }|D �cg c]  }|j                  t        |«      «      ‘Œ }}|j                  t        d«      «      }	|	j                  |j                  |«      }
|
d	   }|
D ]  }t        j                   ||«       Œ 	 d d d «       y c c}w # 1 sw Y   y xY w)
NÚpyarrowz16.0z+# ValueError: Found non-unique column index)Úreasonéd   é
   c              3   óª   •K  — | ]E  }d j                  t        ‰«      D �cg c]  }|d›d|d›d|d›�‘Œ c}«      j                  «       –— ŒG yc c}w ­w)ú
Údú,N)ÚjoinÚrangeÚencode)Ú.0Ú_ÚiÚmax_row_ranges      €úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/tests/io/parser/test_multi_thread.pyú	<genexpr>z7test_multi_thread_string_io_read_csv.<locals>.<genexpr>(   sU   øè ø€ ò àð 	�	‰	´°}Ó1EÖF¨A�a˜�U˜!˜A˜a˜5  ! A Ò'ÒFÓG×NÑN×PñùÚFùs   ƒA A
´Aé   r   )ÚengineÚpytestÚimportorskipr   Ú__version__ÚapplymarkerÚmarkÚxfailr   r   Úenter_contextr   r   ÚmapÚread_csvÚtmÚassert_frame_equal)Úall_parsersÚrequestÚparserÚpaÚ	num_filesÚbytes_to_dfÚstackÚbÚfilesÚpoolÚresultsÚfirst_resultÚresultr   s                @r   Ú$test_multi_thread_string_io_read_csvr5      s  ø€ ð €FØ‡}�}˜	Ò!Ü× Ñ  Ó+ˆÜ�2—>‘>Ó"¤W¨V£_Ò4Ø×ÑÜ—‘×!Ñ!Ð)VÐ!ÓWôð €MØ€Ióä�yÓ!ô€Kô 
‹ð 	8˜Ø:EÖF°Q�×$Ñ$¤W¨Q£ZÕ0ÐFˆÐFà×"Ñ"¤:¨a£=Ó1ˆà—(‘(˜6Ÿ?™?¨EÓ2ˆØ˜q‘zˆàò 	8ˆFÜ×!Ñ! ,°Õ7ñ	8÷	8ð 	8ùÚF÷	8ð 	8ús   ÂD)Â!D$Ã AD)Ä$D)Ä)D2c                 ó6  ‡ ‡— ˆ ˆfd„}t        |«      D �cg c]  }||z  |z  ||z  f‘Œ }}t        |¬«      5 }|j                  ||«      }ddd«       d   j                  }	|dd D ]	  }
|	|
_        Œ t	        j
                  |«      }|S c c}w # 1 sw Y   ŒExY w)aš  
    Generate a DataFrame via multi-thread.

    Parameters
    ----------
    parser : BaseParser
        The parser object to use for reading the data.
    path : str
        The location of the CSV file to read.
    num_rows : int
        The number of rows to read per task.
    num_tasks : int
        The number of tasks to use for reading this DataFrame.

    Returns
    -------
    df : DataFrame
    c                 óˆ   •— | \  }}|s‰j                  ‰dd|dg¬«      S ‰j                  ‰ddt        |«      dz   |dg¬«      S )aj  
        Create a reader for part of the CSV.

        Parameters
        ----------
        arg : tuple
            A tuple of the following:

            * start : int
                The starting row to start for parsing CSV
            * nrows : int
                The number of rows to read.

        Returns
        -------
        df : DataFrame
        r   Údate)Ú	index_colÚheaderÚnrowsÚparse_datesNé   é	   )r9   r:   Úskiprowsr;   r<   )r%   Úint)ÚargÚstartr;   r*   Úpaths      €€r   Úreaderz0_generate_multi_thread_dataframe.<locals>.readerN   sh   ø€ ð$ ‰ˆˆuáØ—?‘?Ø ¨!°5ÀvÀhð #ó ð ð �‰ØØØÜ˜“Z !‘^ØØ˜ð ó 
ð 	
ó    )Ú	processesNr   r=   )r   r   r$   ÚcolumnsÚpdÚconcat)r*   rC   Únum_rowsÚ	num_tasksrD   r   Útasksr1   r2   r:   ÚrÚfinal_dataframes   ``          r   Ú _generate_multi_thread_dataframerO   :   s¸   ù€ õ( 
ôF EJÈ)ÓDTöØ?@ˆ�A‰˜Ñ	" H°	Ñ$9Ò:ð€Eð ô 
˜iÔ	(ð *¨DØ—(‘(˜6 5Ó)ˆ÷*ð �Q‰Z×Ñ€Fà�Q�Rˆ[ò ˆØˆ�	ðô —i‘i Ó(€OØÐùò÷*ð *ús   –B
¸BÂBc                 ó$  — d}d}| }d}t        t        j                  j                  d«      j                  |«      t        j                  j                  d«      j                  |«      t        j                  j                  d«      j                  |«      t        j                  j                  d«      j                  |«      t        j                  j                  d«      j                  |«      dg|z  dg|z  dg|z  t	        j
                  d|d	¬
«      t        j                  |d¬«      dœ
«      }t        j                  |«      5 }|j                  |«       t        ||||«      }t        j                  ||«       d d d «       y # 1 sw Y   y xY w)Né   é0   z__thread_pool_reader__.csvé   ÚfooÚbarÚbazz20000101 09:00:00Ús)ÚperiodsÚfreqÚint64)Údtype)
Úar/   Úcr   ÚerT   rU   rV   r8   r@   )r   ÚnpÚrandomÚdefault_rngrH   Ú
date_rangeÚaranger&   Úensure_cleanÚto_csvrO   r'   )r(   rK   rJ   r*   Ú	file_nameÚdfrC   rN   s           r   Ú)test_multi_thread_path_multipart_read_csvrh   €   sJ  € ð €IØ€Hà€FØ,€IÜ	ä—‘×&Ñ& qÓ)×0Ñ0°Ó:Ü—‘×&Ñ& qÓ)×0Ñ0°Ó:Ü—‘×&Ñ& qÓ)×0Ñ0°Ó:Ü—‘×&Ñ& qÓ)×0Ñ0°Ó:Ü—‘×&Ñ& qÓ)×0Ñ0°Ó:Ø�7˜XÑ%Ø�7˜XÑ%Ø�7˜XÑ%Ü—M‘MÐ"5¸xÈcÔRÜ—9‘9˜X¨WÔ5ñ	
ó
€Bô 
�‰˜Ó	#ð 3 tØ
�	‰	�$Œä:Ø�D˜( Ió
ˆô 	×Ñ˜b /Ô2÷3÷ 3ñ 3ús   Å6FÆF)Ú__doc__Ú
contextlibr   Úior   Úmultiprocessing.poolr   Únumpyr_   r   ÚpandasrH   r   Úpandas._testingÚ_testingr&   Úpandas.util.versionr   r!   ÚusefixturesÚxfail_pyarrowÚ
single_cpuÚslowÚ
pytestmarkÚfilterwarningsr5   rO   rh   © rE   r   ú<module>ry      sž   ðñõ !Ý Ý +ã Û ã Ý Ý Ý 'à—‘×'Ñ'¨Ó8€ð
 ‡K�K×ÑØ
‡K�K×Ñð€
ð ‡�×ÑÐNÓOñ8ó Pð8ò<CðL ñ3ó ñ3rE   