
    tf                        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 dlmZmZmZ 	 d dlZd Zd Zd	 Zd
 Zd Zd Zd Z eeeed      Z eeeee      Zd Zy# e$ r dZY :w xY w)    )annotations)partialN)Version)PANDAS_GE_150PANDAS_GE_200)is_dataframe_likeis_index_likeis_series_likec                    t         yt        r@t        j                  d      t        j                  t        j
                               g}| |v S t        j                  d      g}| |v S )z$Is the input dtype a pyarrow string?Fpyarrow)par   pdStringDtype
ArrowDtypestring)dtypepa_string_typess     a/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/dask/dataframe/_pyarrow.pyis_pyarrow_string_dtyper      sZ    	z>>)4bmmBIIK6PQ O## >>)45O##    c                    t         j                  j                  j                  |       xr9 t	        |        xr+ t         j                  j                  j                  | d       S )z0Determine if input is a non-pyarrow string dtypedecimal)r   apitypesis_string_dtyper   is_dtype_equal)r   s    r   is_object_string_dtyper      sO     	$$U+ 	>'..	>++E9==r   c                    t        | t        j                        rt        d | j                  D              S t        | t        j
                        xr t        | j                        S )Nc              3  2   K   | ]  }t        |        y wN)is_pyarrow_string_index.0levels     r   	<genexpr>z*is_pyarrow_string_index.<locals>.<genexpr>)   s     He*51H   )
isinstancer   
MultiIndexanylevelsIndexr   r   xs    r   r!   r!   '   sE    !R]]#HqxxHHHa"G'>qww'GGr   c                    t        | t        j                        rt        d | j                  D              S t        | t        j
                        xr t        | j                        S )Nc              3  2   K   | ]  }t        |        y wr    )is_object_string_indexr"   s     r   r%   z)is_object_string_index.<locals>.<genexpr>/   s     GU)%0Gr&   )r'   r   r(   r)   r*   r+   r   r   r,   s    r   r0   r0   -   sE    !R]]#GahhGGGa"F'=agg'FFr   c                    t        | t        j                        xr, t        | j                        xs t        | j                        S r    )r'   r   Seriesr   r   r0   indexr,   s    r   is_object_string_seriesr4   3   s5    a# qww'J+A!''+Jr   c                    t        | t        j                        xr7 t        d | j	                         D              xs t        | j                        S )Nc              3  8   K   | ]  \  }}t        |        y wr    )r4   )r#   _ss      r   r%   z-is_object_string_dataframe.<locals>.<genexpr>;   s     =41a#A&=s   )r'   r   	DataFramer)   itemsr0   r3   r,   s    r   is_object_string_dataframer;   9   s?    a& =1779== 	+!!''*r   c                   t        |       st        |       st        |       s| S |dk(  rt        j                  d      }t        |       rJ| j
                  j                         D ci c]  \  }} ||      s|| }}}|rE| j                  |      } n3 || j                        r!|}| j                         j                  |      } t        |       st        |       r || j                        rt        | j                  t        j                        rt        | j                  j                        D ci c])  \  }} ||j                        r||j                  |      + }	}}| j                  j                  |	j!                         |	j#                         d      | _
        | S | j                  j                  |      | _
        | S c c}}w c c}}w )Nr   F)r$   verify_integrity)r   r
   r	   r   r   dtypesr:   astyper   copyr3   r'   r(   	enumerater*   
set_levelsvalueskeys)
dfdtype_checkindex_checkstring_dtypecolr   r>   ir$   r*   s
             r   _to_string_dtyperK   @   s   b!^B%7=;L	 y ~~i0 02		0A
",#u[QVEWC
 
 6"B	RXX	WWYf% 	"!3RXX9Nbhh. !*"((// :Auu{{+ 5<<--F  xx**v{{}u + BH
 I xx|4BHI/
s   &G7G4.Gr   )rF   rG   rH   c                     t         st        d      t        %t        t        j                        t        d      k  rt        d      y)z+Make sure we have all the required versionszdUsing dask's `dataframe.convert-string` configuration option requires `pandas>=2.0` to be installed.Nz12.0.0zdUsing dask's `dataframe.convert-string` configuration option requires `pyarrow>=12` to be installed.)r   RuntimeErrorr   r   __version__ r   r   check_pyarrow_string_supportedrP   r   sK    =
 	
 
zWR^^,wx/@@=
 	
 Ar   )
__future__r   	functoolsr   pandasr   packaging.versionr   dask.dataframe._compatr   r   dask.dataframe.utilsr   r	   r
   r   r   ImportErrorr   r   r!   r0   r4   r;   rK   to_pyarrow_stringobjectto_object_stringrP   rO   r   r   <module>r[      s    "   % ? Q Q
	$HG!H &&	  ''	 
K  	Bs   A A)(A)