
    >ied                       U d dl mZ d dlZd dlmZ d dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZmZmZmZmZ d dlmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@  G d de          ZA eddeAd          ZB e3jC        ejD                  d             ZE e3jC        ejF                   e3jC        ejG                   e3jC        ejH                   e3jC        ejI                  d                                                 ZE e'jC        ej        ej        f          dDd            ZE e'jC        ej                  dDd            ZEej        ej        ej        ejJ        fZKdeLd<   	 d dlMmNZO eKeOjP        fz  ZKn# eQ$ r Y nw xY w e,jC        ej        f          dDd            ZR e.jC        ej        f          d             ZS e!jC        ej        f          d             ZT e+jC        ej                  d             ZU e*jC        ejV                   e'jC        ejV                  dDd                         ZW e(jC        eK          dDd!            ZX e*jC        eY          d"             ZZ e*jC        ej                  d#             Z[ e*jC        ej                  d$             Z\ e*jC        ej                  dDd%            Z] e)jC        e          d&             Z^ e)jC        ej_                  d'             Z` e0jC        ej        ej        ej        eja        f          dEd)            Zb e"jC        ej                  d*             Zc e"jC        ej                  d+             Zd e"jC        ej                  d,             Ze e"jC        e          d-             Zf e"jC        eY          d.             Zg e%jC        ej        ej        ej        f          	 dFd1            Zh G d2 d3e;ei          Zj e#jC        ej        ej        ej        f          dGd4            Zk e jC        ej        ej        ej        f          	 	 	 	 	 dHd6            Zl ejC        ej        ej        ej        f          dId7            Zm e/jC        ej_        ej        ej        eja        f          d8             Zn e&jC        ej        ej        ejo        jp        jq        ejD        f          d9             Zr e$jC        ej        ej        f          d:             Zs ejC        ej        ej        f          dJd<            Zt e-jC        ej        ej        ej        f          d=             Zu G d> d?eA          ZveBw                    d ev                        e jx        d@           e%jx        d@           e#jx        d@           e"jx        d@           e*jx        d@           e'jx        d@           e(jx        d@           ejx        d@           e/jx        d@          dA                                                                                                             Zy e)jx        dB           e/jx        dB          dC                         ZzdS )K    )annotationsN)Iterable)	is_scalarunion_categoricals)Array)percentile_lookup_percentile)CreationDispatchDaskBackendEntrypoint)is_any_real_numeric_dtype)	DataFrameIndexScalarSeries_Frame)categorical_dtype_dispatchconcatconcat_dispatchfrom_pyarrow_table_dispatchget_parallel_typegroup_split_dispatchgrouper_dispatchhash_object_dispatchis_categorical_dtype_dispatchmake_meta_dispatchmake_meta_objmeta_lib_from_arraymeta_nonemptypartd_encode_dispatchpyarrow_schema_dispatchto_pandas_dispatchto_pyarrow_table_dispatchtolist_dispatchunion_categoricals_dispatch)make_array_nonemptymake_scalar)_empty_series_nonempty_scalar_scalar_from_dtypeis_float_na_dtypeis_integer_na_dtype)SimpleSizeofsizeof)is_arraylikeis_series_liketypenamec                      e Zd ZdZedd            Zedd	            Zedd            Zedd            Zedd            Z	edd            Z
dS )DataFrameBackendEntrypointzoDask-DataFrame version of ``DaskBackendEntrypoint``

    See Also
    --------
    PandasBackendEntrypoint
    datadictnpartitionsintc                   t           )a  Create a DataFrame collection from a dictionary

        Parameters
        ----------
        data : dict
            Of the form {field : array-like} or {field : dict}.
        npartitions : int
            The desired number of output partitions.
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.io.from_dict
        NotImplementedError)r4   r6   kwargss      7lib/python3.11/site-packages/dask/dataframe/backends.py	from_dictz$DataFrameBackendEntrypoint.from_dict9   
    " "!    path
str | listc                    t           )a$  Read Parquet files into a DataFrame collection

        Parameters
        ----------
        path : str or list
            Source path(s).
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.parquet.core.read_parquet
        r9   r@   r;   s     r<   read_parquetz'DataFrameBackendEntrypoint.read_parquetL   
     "!r?   url_pathc                    t           )a  Read json files into a DataFrame collection

        Parameters
        ----------
        url_path : str or list
            Source path(s).
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.json.read_json
        r9   )rF   r;   s     r<   	read_jsonz$DataFrameBackendEntrypoint.read_json]   rE   r?   c                    t           )a  Read ORC files into a DataFrame collection

        Parameters
        ----------
        path : str or list
            Source path(s).
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.orc.core.read_orc
        r9   rC   s     r<   read_orcz#DataFrameBackendEntrypoint.read_orcn   rE   r?   urlpathc                    t           )a  Read CSV files into a DataFrame collection

        Parameters
        ----------
        urlpath : str or list
            Source path(s).
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.csv.read_csv
        r9   )rK   r;   s     r<   read_csvz#DataFrameBackendEntrypoint.read_csv   rE   r?   patternkeystrc                    t           )aT  Read HDF5 files into a DataFrame collection

        Parameters
        ----------
        pattern : str or list
            Source path(s).
        key : str
            Group identifier in the store.
        **kwargs :
            Optional backend kwargs.

        See Also
        --------
        dask.dataframe.io.hdf.read_hdf
        r9   )rN   rO   r;   s      r<   read_hdfz#DataFrameBackendEntrypoint.read_hdf   r>   r?   N)r4   r5   r6   r7   )r@   rA   )rF   rA   )rK   rA   )rN   rA   rO   rP   )__name__
__module____qualname____doc__staticmethodr=   rD   rH   rJ   rM   rR    r?   r<   r3   r3   1   s          " " " \"$ " " " \"  " " " \"  " " " \"  " " " \"  " " " \" " "r?   r3   	dataframepandasdataframe_creation_dispatch)module_namedefaultentrypoint_classnamec                     t          |           S N)r*   dtypes    r<   _rd      s    e$$$r?   c                    | S ra   rX   xs    r<   rd   rd      s	    
 Hr?   c                    | j         d d                             d          }|j                            d          |_        |S Nr   T)deep)iloccopyindex)rg   rm   outs      r<   rd   rd      s;    
&!*//t/
$
$C	D))CIJr?   c                >    | dd                              d          S ri   rl   rg   rm   s     r<   rd   rd      s    QqS6;;D;!!!r?   ztuple[type, ...]meta_object_typesc                B    dd l }|j                            | |          S )Nr   )preserve_index)pyarrowSchemafrom_pandas)objrt   pas      r<   get_pyarrow_schema_pandasrz      s)    9  ^ DDDr?   c                0    dd l } |j        j        | fi |S Nr   )ru   Tablerw   )rx   r;   ry   s      r<   get_pyarrow_table_from_pandasr~      s-     28..v...r?   c                f     dd l d fd}|                    d|          } |j        d	d|i|S )
Nr   pyarrow_dtypepa.DataTypereturnobjectc                    |                                                                  hv r4t          j        d          j        j        v rt          j        d          S d S )Nru   )large_stringstringpdStringDtypedtypesvalues)r   metary   s    r<   default_types_mapperz?get_pandas_dataframe_from_pyarrow.<locals>.default_types_mapper   sV     boo//===y))T[-???>),,,tr?   types_mapper)r   r   r   r   rX   )ru   pop	to_pandas)r   tabler;   r   r   ry   s   `    @r<   !get_pandas_dataframe_from_pyarrowr      sh            ::n.BCCL5???????r?   c                    ddl m} |S )Nr   )PandasBlocks)partdr   )rd   r   s     r<   partd_pandas_blocksr      s    """"""r?   c                     t          |           S ra   )r)   rq   s     r<   make_meta_pandas_datetime_tzr      s     Ar?   c                t   t          |           r| j        r
| dd         S t                    t          | t                    r4t          j        fd|                                 D                       S t          | t                    r1t          |           dk    rt          | d         | d                   S t          | t                    rmt          | t                    sXt          d | D                       st          d|            t          j        fd	| D             d
 | D                       S t          | d          s6| 4	 t!          j        |           }t%          |          S # t&          $ r Y nw xY wt)          |           rt+          |           S t-          d|            )a  Create an empty pandas object containing the desired metadata.

    Parameters
    ----------
    x : dict, tuple, list, pd.Series, pd.DataFrame, pd.Index, dtype, scalar
        To create a DataFrame, provide a `dict` mapping of `{name: dtype}`, or
        an iterable of `(name, dtype)` tuples. To create a `Series`, provide a
        tuple of `(name, dtype)`. If a pandas object, names, dtypes, and index
        should match the desired output. If a dtype or scalar, a scalar of the
        same dtype is returned.
    index :  pd.Index, optional
        Any pandas index to use in the metadata. If none provided, a
        `RangeIndex` will be used.

    Examples
    --------

    >>> make_meta_object([('a', 'i8'), ('b', 'O')])
    Empty DataFrame
    Columns: [a, b]
    Index: []
    >>> make_meta_object(('a', 'f8'))
    Series([], Name: a, dtype: float64)
    >>> make_meta_object('i8')
    1
    Nr   c                <    i | ]\  }}|t          ||           S rm   r(   .0cdrm   s      r<   
<dictcomp>z$make_meta_object.<locals>.<dictcomp>(  s.    IIIVaQa%000IIIr?   r         c              3  f   K   | ],}t          |t                    ot          |          d k    V  -dS )r   N)
isinstancetuplelenr   is     r<   	<genexpr>z#make_meta_object.<locals>.<genexpr>-  s;      CCA:a''7CFFaKCCCCCCr?   z2Expected iterable of tuples of (name, dtype), got c                <    i | ]\  }}|t          ||           S r   r   r   s      r<   r   z$make_meta_object.<locals>.<dictcomp>0  s.    AAAVaQa%000AAAr?   c                    g | ]\  }}|S rX   rX   )r   r   r   s      r<   
<listcomp>z$make_meta_object.<locals>.<listcomp>1  s    %%%41aQ%%%r?   )columnsrm   rc   z'Don't know how to create metadata from )r/   shaper   r   r5   r   r   itemsr   r   r(   r   rP   all
ValueErrorhasattrnprc   r*   	Exceptionr   r)   	TypeError)rg   rm   rc   s    ` r<   make_meta_objectr     s   : A 17 !u"5))!T 
|IIIIqwwyyIIIQV
 
 
 	
 !U A!QqT1Q4u5555	Ax	 	  As);); CCCCCCC 	WURSUUVVV|AAAAqAAA%%1%%%
 
 
 	

 Q   	Q]	HQKKE%e,,, 	 	 	D	 || #"""
AaAA
B
BBs   "E: :
FFc                    t          |           rt          |           S t          dt          t	          |                                )zCreate a nonempty pandas object from the given metadata.

    Returns a pandas DataFrame, Series, or Index that contains two rows
    of fake data.
    z>Expected Pandas-like Index, Series, DataFrame, or scalar, got )r   r)   r   r1   typerf   s    r<   meta_nonempty_objectr   E  sR     || 
"""'DGG$$' '
 
 	
r?   c           	        t          | j                  }t                      }t                      }t          t	          | j                            D ]L}| j        d d |f         }|j        }||vr#t          | j        d d |f         |          ||<   ||         ||<   Mt          j
        ||t          j        t	          | j                                      }| j        |_        | j        |_        |S )N)idx)rm   r   )r   rm   r5   ranger   r   rk   rc   _nonempty_seriesr   r   r   arangeattrs)rg   r   	dt_s_dictr4   r   seriesdtress           r<   meta_nonempty_dataframer   U  s    

 
 CI66D3qy>>""    1\Y,QVAAAqD\sCCCIbMB-Q
,t3	#ai..0I0I
J
J
JC)CKCIJr?   c           	     P   t          |           }|t          j        u r!t          j        d| j        | j                  S t          |           r |ddg| j        | j                  S |t          j        u rqd}	 t          j        |d| j        | j	        | j                  S # t          $ r9 | j        |dgnd }t          j        ||d| j        | j	        | j                  cY S w xY w|t          j        u r"t          j        dd| j        | j                  S |t          j        u rt          j        dd          }	 t          j        |d| j        | j                  S # t          $ rK t          j        dd          }| j        ||dz   gnd }t          j        ||d| j        | j                  cY S w xY w|t          j        u rt%          | j                  d	k    r.t          j        t+          | j                  | j        
          }n.t          j                            dd	g| j        | j                  }t          j        || j                  S |t          j        u rkd | j        D             }d | j        D             }	 t          j        ||| j                  S # t6          $ r t          j        ||| j                  cY S w xY w|t          j        u rt          | j                  t:          j        v r3t          j        t;          | j                  | j        | j                  S | j        t>          k    rt          j        ddg| j                  S t          j        ddg| j        | j                  S t7          dtA          t          |                                )Nr   )r_   rc   r   
1970-01-01)startperiodsfreqtzr_   z
1970-01-02)r   r   r   r_   Dr   )ordered
categoriesr   r_   c                ,    g | ]}t          |          S rX   )_nonempty_index)r   ls     r<   r   z#_nonempty_index.<locals>.<listcomp>  s     999/!$$999r?   c                    g | ]}d d gS )r   rX   r   s     r<   r   z#_nonempty_index.<locals>.<listcomp>  s    ,,,A!Q,,,r?   )levelscodesnames)r   labelsr   )rc   r_   TFabz'Don't know how to handle index of type )!r   r   
RangeIndexr_   rc   r   DatetimeIndex
date_ranger   r   r   PeriodIndexperiod_rangeTimedeltaIndexr   timedelta64timedelta_rangeCategoricalIndexr   r   Categoricalr   r   
from_codes
MultiIndexr   r   r   r   r&   _lookupboolr1   )r   typr   r4   r   r   s         r<   r   r   f  s   
s))C
bm}QSXSY????	"3	'	' <HsAq6	::::	 	 	 	=QSX#&sx     	 	 	,/H,<E<(($D#E138SX     	
 
		sx
 
 
 	
 
!	!	!q#&&		%QSXCH     	 	 	N1c**E),)9E519%%tD$E138#(     	 
#	#	#s~!##>/#."A"A3;WWWDD>,,QCNCK -  D "4ch7777			99cj999,,,,,	O=e39MMMM 	O 	O 	O=uCINNNNNN	O		??19998#CI..cich    Y$8T5M9999 8S#JSXSYGGGG
ShtCyy>Q>QSS
T
TTs8   9'B! !A C$#C$;!E AF21F2J &KKc                   |t          | j                  }| j        }t          |           dk    r| j        d         gdz  }n_t          |t          j                  r!t          j        d|j	                  }||g}n$t          |t          j
                  rt          | j        j                  r#| j        j        d         gdz  }| j        j        }n-t          | j        j                  }| j        j        d d         }t          j        ||| j        j                  }n~t          |          rt          j        dd g|          }nUt#          |          rt          j        dd g|          }n,t          |t          j                  r2|j        }t          j        d	|          t          j        d
|          g}nt          |t          j                  r-t-          |j                  }t          j        ||g|          }nt          |t          j                  r-t-          |j                  }t          j        ||g|          }nRt3          |          t4          j        v rt5          |          }n't-          |          }t9          j        ||g|          }t          j        || j        |          }| j        |_        |S )Nr   r   r   )r   r   r   rb   g      ?20002001)r_   rm   ) r   rm   rc   r   rk   r   r   DatetimeTZDtype	Timestampr   CategoricalDtypecatr   r   r   r,   arrayr+   PeriodDtyper   PeriodSparseDtyper*   subtypeIntervalDtyper   r&   r   r   r   r_   r   )sr   rc   r4   entrycatsr   rn   s           r<   r   r     s    {ag&&GE
1vvzzq	{Q	E2-	.	. 5\eh777u~	E2.	/	/ 5qu   	(E$Q'(1,D5#DD"15#344D5#BQB'D~dtQU]KKK	U	#	# 5xD	///	5	!	! 5xd5111	E2>	*	* 5z	&$''64)@)@A	E2>	*	* 
5"5=11xe444	E2+	,	, 5"5=11xe444	e+3	3	3"5))"5))xe444
)DqvS
1
1
1CCIJr?   c                *    t          | j                  S ra   )r   _metarf   s    r<   _meta_lib_from_array_dar     s     qw'''r?   c                    t           S ra   )r   rf   s    r<   _meta_lib_from_array_numpyr     s	     Ir?   Fc                P    t           j        j                            | ||          S )N)sort_categoriesignore_order)r   apitypesr   )to_unionr  r  s      r<   union_categoricals_pandasr    s,     6<**/ +   r?   c                    t           S ra   )r   rd   s    r<   get_parallel_type_seriesr	        Mr?   c                    t           S ra   )r   r  s    r<   get_parallel_type_dataframer    s    r?   c                    t           S ra   )r   r  s    r<   get_parallel_type_indexr    s    Lr?   c                *    t          | j                  S ra   )r   r   )os    r<   get_parallel_type_framer    s    QW%%%r?   c                    t           S ra   )r   r  s    r<   get_parallel_type_objectr    r
  r?   Tutf8c                J    t           j                            | ||||          S )N)rm   encodinghash_key
categorize)r   utilhash_pandas_object)rx   rm   r  r  r  s        r<   hash_object_pandasr    s.     7%%58h: &   r?   c                        e Zd Zd fdZ xZS )ShuffleGroupResultr   r7   c                    t                                                      }|                                 D ])\  }}|t          |          z  }|t          |          z  }*|S )ag  
        The result of the shuffle split are typically small dictionaries
        (#keys << 100; typically <= 32) The splits are often non-uniformly
        distributed. Some of the splits may even be empty. Sampling the
        dictionary for size estimation can cause severe errors.

        See also https://github.com/dask/distributed/issues/4962
        )super
__sizeof__r   r.   )self
total_sizekdf	__class__s       r<   r   zShuffleGroupResult.__sizeof__  s]     WW''))
ZZ\\ 	% 	%EAr&))#J&**$JJr?   )r   r7   )rS   rT   rU   r   __classcell__)r%  s   @r<   r  r    s=                 r?   r  c                   t          |          r|j        }t          j        j                            |                    t          j        d          |          \  }}| 	                    |          |
                                }fdt          |d d         |dd                    D             }t          t          t          |          |                    S )NFrp   c                ~    g | ]9\  }}r#j         ||                             d           nj         ||         :S T)drop)rk   reset_index)r   r   r   df2ignore_indexs      r<   r   z&group_split_pandas.<locals>.<listcomp>*  s\       Aq 1=O1!!t!,,,#(1Q3-  r?   r   r   )r0   r   r   _libsalgosgroupsort_indexerastyper   intptakecumsumzipr  r   )r$  r   r#  r-  indexer	locationspartsr,  s      `   @r<   group_split_pandasr9  !  s    a H99	u%%q GY '''

C  ""I    	#2#	!""66  E c%((E22333r?   outerc                    |                     dd          }|dk    rt          j         f||d|S t           d         t          j                  rt           d         t          j                  rt          dt                               D ]@}t           |         t          j                  s |                             d           |<   At          j        t           |           d         j
                  S t           d         t          j                  r d          dd          c}	t          fd	|	D                       rF fd
t          j                  D             }
t          j                            |
j                  S j        ft#          d |	D                       z   }t%          j        |          }	 t          j                            |j                  S # t*          $ r t          j        |          cY S w xY w d                              dd                    S  d         j        }t          |t          j                  p7t          |t          j                  ot1          d |j        D                       }|r&d  D             }t          d  D                       }n }d }|r"t          |d         t          j                  rnt1          d |D                       r|r|}|d         j        dk    }nd |D             }t9          j                    5  t9          j        dt>                     |rt9          j        dt@                     t          j        d |D             fd|i|                                }d d d            n# 1 swxY w Y   |                                rQ||          j        t          j        fd|D             fd|i|}|j        }|j        !                              D ]}|D ]}|"                    |          }| ng }|D ]}||j#        v r|                    ||                    't%          j$        t          |          dd          }t          j%        &                    ||j'        j(        |j'        j)                  }|                    |           t          ||          ||<   t          |          s||_        |*                    |j                  }nEt9          j                    5  t9          j        dt>                     |rt9          j        dt@                     t          j        ||d          }d d d            n# 1 swxY w Y   nt          |d         j+        t          j,                  rL|t          d |D                       }t          j-        t          ||          ||d         j
                  S t9          j                    5  |rt9          j        dt@                     t          j        |fd|i|}d d d            n# 1 swxY w Y   |||_        |S )Nr  Fr   )axisjoinr   category)r  r   c              3  l   K   | ].}t          |t          j                  o|j        j        k    V  /d S ra   )r   r   r   nlevels)r   r  firsts     r<   r   z concat_pandas.<locals>.<genexpr>K  sQ         Ar}--L!)u}2L     r?   c                H    g | ]t          fd D                       S )c                :    g | ]}|                               S rX   )_get_level_values)r   r   ns     r<   r   z,concat_pandas.<locals>.<listcomp>.<listcomp>P  s'    @@@qA//22@@@r?   )r   )r   rE  dfss    @r<   r   z!concat_pandas.<locals>.<listcomp>O  sG        @@@@C@@@AA  r?   )r   c              3  $   K   | ]}|j         V  d S ra   )_values)r   r#  s     r<   r   z concat_pandas.<locals>.<genexpr>U  s$      /H/Ha	/H/H/H/H/H/Hr?   c              3  J   K   | ]}t          |t          j                  V  d S ra   )r   r   r   r   s     r<   r   z concat_pandas.<locals>.<genexpr>b  s/      NNq
1b122NNNNNNr?   c                :    g | ]}|                     d           S r)  )r+  r   r$  s     r<   r   z!concat_pandas.<locals>.<listcomp>f  s&    888bD))888r?   c                    g | ]	}|j         
S rX   r   rK  s     r<   r   z!concat_pandas.<locals>.<listcomp>g  s    ---2bh---r?   c              3  J   K   | ]}t          |t          j                  V  d S ra   )r   r   r   rK  s     r<   r   z concat_pandas.<locals>.<genexpr>p  s.      =="B--======r?   c                    g | ]M}t          |t          j                  r|n.|                                                    |j        d i          NS )r   r   )r   r   r   to_framerenamer_   rK  s     r<   r   z!concat_pandas.<locals>.<listcomp>y  sb         b",//@[[]]))27A,)??  r?   ignorec                R    g | ]$}|j         d k                                    j        %S )r>  )r   rP  TrK  s     r<   r   z!concat_pandas.<locals>.<listcomp>  s.    KKKbi:-7799;KKKr?   r=  c                P    g | ]"}||j                                                #S rX   )r   intersection)r   r$  not_cats     r<   r   z!concat_pandas.<locals>.<listcomp>  s.    EEE"BJ++G445EEEr?   r   i8rb   rO  )r=  sortc                    g | ]	}|j         
S rX   r   rK  s     r<   r   z!concat_pandas.<locals>.<listcomp>  s    6662bh666r?   )rm   r_   ).r   r   r   r   r   r   r   r   r1  r   r_   r   r   r@  from_arraysr   r   r   r   concatenatefrom_tuplesr   appendrm   anyr   r   r   warningscatch_warningssimplefilterRuntimeWarningFutureWarning
differencegetr   fullr   r   r   r   r   reindexrc   r   r   )rF  r<  r=  uniformfilter_warningr-  r;   r  r   restarrays	to_concat
new_tuples
dfs0_indexhas_categoricalindexdfs2inddfs3cat_maskrn   temp_indcolr$  sampler8  r   r4   rA  rW  s   `                          @@r<   concat_pandasrx  1  s    ::ne44Lqyyy=4d==f=== #a&"(## &c!fb122 	,1c#hh'' 7 7!#a&"*=>> 7 V]]:66CF&"3\BBBQ    A.. 	,a&#abb'KE4         L   "5=11   }00u{0KKK%/H/H4/H/H/H*H*HHI	22J,}005;0OOO , , ,x
+++++,1v}}SW%%% QJ%j"2EFF :r}-- 	ONNJ<MNNNNN 
  88C888-----..
 Q747BL))Q7 Q7 =======Q7
  	DAw~3HH
  	  D (**  %h???! C)(MBBB9KKdKKK    #%%	 	               <<>> &	=y)/G)EEEEEEE   C
 yH~0099 ) )  BVVC[[F) *  + +Bbj((RW---- "B4 @ @ @!~88!6:#8&*:L    T****-e,OOOC 8}} ) (CI++hn+55CC (** = =%h???! C)(MBBBi4e<<<	= = = = = = = = = = = = = = = d1gmR%899 	{66666779"4lCCC!W\   
 $&& 	7 	7 ?%h>>>)D66t6v66C		7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	JsJ   %G5 5HH:A'N--N14N11AVVV1YYYc                N    t           j        j                            | |          S )Nr   )r   r  r  r   r   s     r<   categorical_dtype_pandasrz    s    6<((J(PPPr?   c                *    |                                  S ra   tolistrx   s    r<   tolist_numpy_or_pandasr    s    ::<<r?   c                j    t          | d          r| j        }n| }t          |t          j                  S )Nrc   )r   rc   r   r   r   )rx   rc   s     r<   is_categorical_dtype_pandasr    s7     sG 	eR0111r?   c                .    t           j        j        j        S ra   )r   coregroupbyGrouperr~  s    r<   get_grouper_pandasr    s    7?""r?   linearc                $    t          | ||          S ra   r	   )r   qinterpolations      r<   
percentiler    s    q!]+++r?   c                    | S ra   rX   )r4   r;   s     r<   to_pandas_dispatch_from_pandasr    s    Kr?   c                  @    e Zd ZdZed             Zedd            ZdS )PandasBackendEntrypointzPandas-Backend Entrypoint Class for Dask-DataFrame

    Note that all DataFrame-creation functions are defined
    and registered 'in-place' within the ``dask.dataframe``
    ``io`` module.
    c                    t           S ra   )r"   )clss    r<   to_backend_dispatchz+PandasBackendEntrypoint.to_backend_dispatch  s    !!r?   r4   r   c                    t          |j        t          j        t          j        t          j        f          r|S  |j        |                                 fi |S ra   )r   r   r   r   r   r   map_partitionsr  )r  r4   r;   s      r<   
to_backendz"PandasBackendEntrypoint.to_backend  sO    dj2<BH"EFF 	K"t"3#:#:#<#<GGGGGr?   N)r4   r   )rS   rT   rU   rV   classmethodr  r  rX   r?   r<   r  r    s_          " " [" H H H [H H Hr?   r  cudfc                     dd l } d S r|   	dask_cudfr  s    r<   _register_cudfr    s     r?   cupyc                     	 dd l dd l} t          j        | j                  fd            }t          j        | j                  d             }d S # t          $ r Y d S w xY w)Nr   c                    S ra   rX   )rg   r  s    r<   meta_lib_from_array_cupyz8_register_cupy_to_cudf.<locals>.meta_lib_from_array_cupy  s
     Kr?   c                *    |                                  S ra   r|  rf   s    r<   tolist_cupyz+_register_cupy_to_cudf.<locals>.tolist_cupy  s    88::r?   )r  r  r   registerndarrayr$   ImportError)r  r  r  r  s      @r<   _register_cupy_to_cudfr    s    		%dl	3	3	 	 	 	 
4	3	 
	!$,	/	/	 	 
0	/	 	 	    s   AA 
A! A!ra   )FF)Tr  NT)F)r   r:  FTF)NF)r  ){
__future__r   r`  collections.abcr   numpyr   rZ   r   pandas.api.typesr   r   dask.array.corer   dask.array.dispatchr   dask.array.percentiler
   dask.backendsr   r   dask.dataframe._compatr   dask.dataframe.corer   r   r   r   r   dask.dataframe.dispatchr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   dask.dataframe.extensionsr&   r'   dask.dataframe.utilsr(   r)   r*   r+   r,   dask.sizeofr-   r.   
dask.utilsr/   r0   r1   r3   r[   r  rc   rd   r   	Timedeltar   Intervalr   rr   __annotations__scipy.sparsesparsespspmatrixr  rz   r~   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r	  r  r  r  r  r  r5   r  r9  rx  rz  r  r  
extensionsExtensionDtyper  r  r  r  r  register_backendregister_lazyr  r  rX   r?   r<   <module>r     s   " " " " " " "  $ $ $ $ $ $         : : : : : : : : ! ! ! ! ! ! 1 1 1 1 1 1 - - - - - - A A A A A A A A < < < < < < H H H H H H H H H H H H H H                                         * G F F F F F F F              - , , , , , , , = = = = = = = = = =p" p" p" p" p"!6 p" p" p"f /./	&	    bh% %  % bl##bl##bi  bk""  #" !  $# $# bi677   87 RX&&" " " '&" (*y","-&X  X X X X	"+' 	 	 	D	 "!2</22E E E 32E $#R\O44/ / 54/ &%r|o66@ @ 76@$  --  .- *++R/00   10 ,+ )**>C >C >C +*>CB 
 
  
 %%  &%  !!BU BU "!BUJ 	"") ) ) #")X e$$( ( %$(
 bj))  *)
 &%\29bh7     BI&&  '& BL))  *) BH%%  &% F##& & $#& F##  $# biBCC@D   DC    t   " biBCC4 4 4 DC4 2<BH=>> 
	P P P ?>Pf %$blBIrx%HIIQ Q Q JIQ 2:ry"(BNKLL  ML ('Y"&+:BHE 2 2 2 BL")455# # 65# RY122, , , 32, blBIrx@AA  BAH H H H H8 H H H(  , ,X7N7N7P7P Q Q Q v&&##F++##F++  ((V$$!!&))V$$  ((v&&  '& )( %$ *) %$ )( ,+ ,+ '& #"6**v&&  '& +*  s   1G G
G