
    >iew                        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n# e$ r dZY nw xY w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dS )    )annotations)partialN)Version)PANDAS_GE_150PANDAS_GE_200)is_dataframe_likeis_index_likeis_series_likec                    t           dS t          r:t          j        d          t          j        t          j                              g}nt          j        d          g}| |v S )z$Is the input dtype a pyarrow string?NFpyarrow)par   pdStringDtype
ArrowDtypestring)dtypepa_string_typess     7lib/python3.11/site-packages/dask/dataframe/_pyarrow.pyis_pyarrow_string_dtyper      sW    	zu 6>)44bmBIKK6P6PQ>)445O##    c                    t           j        j                            |           o5t	          |            o%t           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      sP     	$$U++ 	>'...	>++E9===r   c                    t          | t          j                  rt          d | j        D                       S t          | t          j                  ot          | j                  S )Nc              3  4   K   | ]}t          |          V  d S N)is_pyarrow_string_index.0levels     r   	<genexpr>z*is_pyarrow_string_index.<locals>.<genexpr>)   s+      HHe*511HHHHHHr   )
isinstancer   
MultiIndexanylevelsIndexr   r   xs    r   r!   r!   '   sX    !R]## IHHqxHHHHHHa""G'>qw'G'GGr   c                    t          | t          j                  rt          d | j        D                       S t          | t          j                  ot          | j                  S )Nc              3  4   K   | ]}t          |          V  d S r    )is_object_string_indexr"   s     r   r%   z)is_object_string_index.<locals>.<genexpr>/   s+      GGU)%00GGGGGGr   )r&   r   r'   r(   r)   r*   r   r   r+   s    r   r/   r/   -   sX    !R]## HGGahGGGGGGa""F'=ag'F'FFr   c                    t          | t          j                  o't          | j                  pt          | j                  S r    )r&   r   Seriesr   r   r/   indexr+   s    r   is_object_string_seriesr3   3   s8    a## qw''J+A!'+J+Jr   c                    t          | t          j                  o>t          d |                                 D                       pt          | j                  S )Nc              3  :   K   | ]\  }}t          |          V  d S r    )r3   )r#   _ss      r   r%   z-is_object_string_dataframe.<locals>.<genexpr>;   s/      ==41a#A&&======r   )r&   r   	DataFramer(   itemsr/   r2   r+   s    r   is_object_string_dataframer:   9   sO    a&& ==17799===== 	+!!'**r   c                   t          |           s t          |           st          |           s| S dk    rt          j        d          d }t          |           r'fd| j                                        D             }n | j                  r}|r|                     |d          } t          |           st          |           r || j	                  rt          | j	        t          j                  rmfdt          | j	        j                  D             }| j	                            |                                |                                d          | _	        n| j	                                      | _	        | S )Nr   c                2    i | ]\  }} |          |S  r=   )r#   colr   dtype_checkstring_dtypes      r   
<dictcomp>z$_to_string_dtype.<locals>.<dictcomp>K   s?     
 
 
",#u[[QVEWEW

 
 
r   F)copyc                b    i | ]+\  }} |j                   ||                              ,S r=   )r   astype)r#   ir$   r?   r@   s      r   rA   z$_to_string_dtype.<locals>.<dictcomp>W   sM       Au;u{++5<<--  r   )r$   verify_integrity)r   r
   r	   r   r   dtypesr9   r   rD   r2   r&   r'   	enumerater)   
set_levelsvalueskeys)dfr?   index_checkr@   rG   r)   s    ` `  r   _to_string_dtyperN   @   s   b!! ^B%7%7 =;L;L 	 y  ~i00 F 
 
 
 
 
02	0A0A
 
 
 
RX		  +YYvEY** 	" 5!3!3 5RX9N9N 5bh.. 	5     )"(/ : :  F x**v{{}}u +  BHH x|44BHIr   r   )r?   rM   r@   c                     t           st          d          t          *t          t          j                  t          d          k     rt          d          dS )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   r   check_pyarrow_string_supportedrR   s   sd     
=
 
 	
 
zWR^,,wx/@/@@@=
 
 	
 A@r   )
__future__r   	functoolsr   pandasr   packaging.versionr   dask.dataframe._compatr   r   dask.dataframe.utilsr   r	   r
   r   r   ImportErrorr   r   r!   r/   r3   r:   rN   to_pyarrow_stringobjectto_object_stringrR   r=   r   r   <module>r]      s   " " " " " "           % % % % % % ? ? ? ? ? ? ? ? Q Q Q Q Q Q Q Q Q Q   	BBB	$ 	$ 	$  H H HG G G    " " "J G&&	    7''	   
 
 
 
 
s   / 99