
    tfWe                       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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/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@mAZA  G d de      ZB eddeBd      ZC e4j                  ej                        d        ZF e4j                  ej                         e4j                  ej                         e4j                  ej                         e4j                  ej                        d                             ZF e(j                  ej8                  ej2                  f      d?d       ZF e(j                  ej4                        d?d       ZFej8                  ej2                  ej4                  ej                  fZLdeMd<   	 d dlNmOZP eLePj                  fz  ZL e-j                  ej2                  f      d?d       ZS e/j                  ej2                  f      d        ZT e"j                  ej2                  f      d        ZU e,j                  ej2                        d        ZV e+j                  ej                         e(j                  ej                        d?d               ZX e)j                  eL      d?d!       ZY e+j                  eZ      d"        Z[ e+j                  ej2                        d#        Z\ e+j                  ej4                        d$        Z] e+j                  ej8                        d?d%       Z^ e*j                  e      d&        Z_ e*j                  ej                        d'        Za e1j                  ej2                  ej8                  ej4                  ej                  f      d@d(       Zc e#j                  ej8                        d)        Zd e#j                  ej2                        d*        Ze e#j                  ej4                        d+        Zf e#j                  e      d,        Zg e#j                  eZ      d-        Zh e&j                  ej2                  ej8                  ej4                  f      	 dAd.       Zi G d/ d0e<ej      Zk e$j                  ej2                  ej8                  ej4                  f      dBd1       Zl e!j                  ej2                  ej8                  ej4                  f      	 	 	 	 	 dCd2       Zm ej                  ej2                  ej8                  ej4                  f      dDd3       Zn e0j                  ej                  ej8                  ej4                  ej                  f      d4        Zo e'j                  ej8                  ej4                  ej                  j                  j                  ej                  f      d5        Zs e%j                  ej2                  ej8                  f      d6        Zt ej                  ej8                  ej4                  f      dEd7       Zu e.j                  ej2                  ej8                  ej4                  f      d8        Zv G d9 d:eB      ZweCj                  d ew               e!j                  d;       e"j                  d;       e$j                  d;       e#j                  d;       e&j                  d;       e+j                  d;       e(j                  d;       e)j                  d;       ej                  d;       e/j                  d;       e0j                  d;      d<                                                                              Zz e*j                  d=       e0j                  d=      d>               Z{y# eR$ r Y w xY w)F    )annotationsN)Iterable)	is_scalarunion_categoricals)Array)percentile_lookup_percentile)CreationDispatchDaskBackendEntrypoint)PANDAS_GE_220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
y)DataFrameBackendEntrypointzoDask-DataFrame version of ``DaskBackendEntrypoint``

    See Also
    --------
    PandasBackendEntrypoint
    c                   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)datanpartitionskwargss      a/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/dask/dataframe/backends.py	from_dictz$DataFrameBackendEntrypoint.from_dict9   
    " "!    c                    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
        r6   pathr:   s     r;   read_parquetz'DataFrameBackendEntrypoint.read_parquetL   
     "!r>   c                    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
        r6   )url_pathr:   s     r;   	read_jsonz$DataFrameBackendEntrypoint.read_json]   rC   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
        r6   r@   s     r;   read_orcz#DataFrameBackendEntrypoint.read_orcn   rC   r>   c                    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
        r6   )urlpathr:   s     r;   read_csvz#DataFrameBackendEntrypoint.read_csv   rC   r>   c                    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
        r6   )patternkeyr:   s      r;   read_hdfz#DataFrameBackendEntrypoint.read_hdf   r=   r>   N)r8   dictr9   int)rA   
str | list)rE   rR   )rJ   rR   )rM   rR   rN   str)__name__
__module____qualname____doc__staticmethodr<   rB   rF   rH   rK   rO    r>   r;   r4   r4   1   s     " "$ " "  " "  " "  " "  " "r>   r4   	dataframepandasdataframe_creation_dispatch)module_namedefaultentrypoint_classnamec                    t        |       S N)r+   dtypes    r;   _re      s    e$$r>   c                    | S rb   rY   xs    r;   re   re      s	    
 Hr>   c                    | j                   d d j                  d      }|j                  j                  d      |_        |S Nr   T)deep)iloccopyindex)rh   rn   outs      r;   re   re      s7    
&&!*//t/
$C		D)CIJr>   c                ,    | dd j                  d      S rj   rm   rh   rn   s     r;   re   re      s    Qq6;;D;!!r>   ztuple[type, ...]meta_object_typesc                D    dd l }|j                  j                  | |      S )Nr   )preserve_index)pyarrowSchemafrom_pandas)objru   pas      r;   get_pyarrow_schema_pandasr{      s    99  ^ DDr>   c                D    dd l } |j                  j                  | fi |S Nr   )rv   Tablerx   )ry   r:   rz   s      r;   get_pyarrow_table_from_pandasr      s#     288.v..r>   c                h     dd l d fd}|j                  d|      } |j                  dd|i|S )Nr   c                    | j                         j                         hv r@t        j                  d      j                  j
                  v rt        j                  d      S y )Nrv   )large_stringstringpdStringDtypedtypesvalues)pyarrow_dtypemetarz   s    r;   default_types_mapperz?get_pandas_dataframe_from_pyarrow.<locals>.default_types_mapper   sL     boo/==y)T[[-?-??>>),,r>   types_mapper)r   zpa.DataTypereturnobjectrY   )rv   pop	to_pandas)r   tabler:   r   r   rz   s   `    @r;   !get_pandas_dataframe_from_pyarrowr      s9      ::n.BCL5??????r>   c                    ddl m} |S )Nr   )PandasBlocks)partdr   )re   r   s     r;   partd_pandas_blocksr      s    "r>   c                    t        |       S rb   )r*   rr   s     r;   make_meta_pandas_datetime_tzr      s     Ar>   c                `   t        |       r| j                  r| dd S |t        |      }t        | t              rEt        j                  | j                         D ci c]  \  }}|t        |||       c}}|      S t        | t              r"t        |       dk(  rt        | d   | d   |      S t        | t              r{t        | t              skt        d | D              st        d|        t        j                  | D ci c]  \  }}|t        |||       c}}| D cg c]  \  }}|	 c}}|      S t        | d	      s#| !	 t!        j"                  |       }t%        |      S t)        |       rt+        |       S t-        d
|        c c}}w c c}}w c c}}w # t&        $ r Y Aw xY w)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   )rn         c              3  \   K   | ]$  }t        |t              xr t        |      d k(   & yw)r   N)
isinstancetuplelen.0is     r;   	<genexpr>z#make_meta_object.<locals>.<genexpr>-  s'     CA:a'7CFaK7Cs   *,z2Expected iterable of tuples of (name, dtype), got )columnsrn   rd   z'Don't know how to create metadata from )r0   shaper   r   rP   r   r   itemsr)   r   r   r   rS   all
ValueErrorhasattrnprd   r+   	Exceptionr   r*   	TypeError)rh   rn   cdrd   s        r;   make_meta_objectr     s   : A177!u"5)!T||?@wwyIVaQa%00IQV
 	
 !UA!QqT1Q4u55	Ax	 As);CCCQRSQTUVV||?@AVaQa%00A#$%41aQ%
 	

 Q Q]	HHQKE%e,,
 |""
=aSA
BB5 J B%  		s$   F
F
&FF! !	F-,F-c                n    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   r2   typerg   s    r;   meta_nonempty_objectr   E  s<     |""DG$%'
 	
r>   c           	        t        | j                        }t               }t               }t        t	        | j
                              D ]N  }| j                  d d |f   }|j                  }||vr!t        | j                  d d |f   |      ||<   ||   ||<   P t        j                  ||t        j                  t	        | j
                                    }| j
                  |_        | j                  |_        |S )N)idx)rn   r   )r    rn   rP   ranger   r   rl   rd   _nonempty_seriesr   r   r   arangeattrs)rh   r   	dt_s_dictr8   r   seriesdtress           r;   meta_nonempty_dataframer   U  s    

 CI6D3qyy>"  1\\Y,QVVAqD\sCIbMB-Q  ,,t3		#aii.0I
JC))CKCIJr>   c           	        t        |       }|t        j                  u r,t        j                  d| j                  | j                        S t        |       r! |ddg| j                  | j                        S |t        j                  u r;d}	 t        j                  |d| j                  | j                  | j                        S |t        j                  u r-t        j                  dd| j                  | j                        S |t        j                  u rDt        j                  dd      }	 t        j                   |d| j                  | j                        S |t        j"                  u rt%        | j&                        d	k(  r5t        j(                  t+        | j&                        | j,                  
      }n8t        j(                  j/                  dd	g| j&                  | j,                        }t        j"                  || j                        S |t        j0                  u r`| j2                  D cg c]  }t+        |       }}| j2                  D cg c]  }d	d	g }}	 t        j0                  ||| j4                        S |t        j8                  u rt        | j                        t:        j<                  v r?t        j8                  t;        | j                        | j                  | j                        S | j                  t>        k(  r#t        j8                  ddg| j                        S t        j8                  ddg| j                  | j                        S t7        dtA        t        |                    # t        $ rN | j                  |dgnd }t        j                  ||d| j                  | j                  | j                        cY S w xY w# t        $ r\ t        j                  dd      }| j                  ||dz   gnd }t        j                  ||d| j                  | j                        cY S w xY wc c}w c c}w # t6        $ r% t        j0                  ||| j4                        cY S w xY w)Nr   )r`   rd   r   
1970-01-01)startperiodsfreqtzr`   z
1970-01-02)r   r   r   r`   Dr   )ordered
categoriesr   r`   )levelscodesnames)r   labelsr   )rd   r`   TFabz'Don't know how to handle index of type )!r   r   
RangeIndexr`   rd   r   DatetimeIndex
date_ranger   r   r   PeriodIndexperiod_rangeTimedeltaIndexr   timedelta64timedelta_rangeCategoricalIndexr   r   Categorical_nonempty_indexr   
from_codes
MultiIndexr   r   r   r   r'   _lookupboolr2   )r   typr   r8   lr   r   r   s           r;   r   r   f  s   
s)C
bmm}}QSXXSYY??	"3	'Aq6		::	  	 	==QSXX#&&sxx  
	sxx
 	
 
!!	!q#&		%%QSXXCHH  
##	#s~~!#>>/#.."A3;;WD>>,,QCNNCKK - D ""4chh77		.1jj9/!$99!$,A!Q,,	O==e399MM 
		?199988#CII.ciichh  YY$88T5M99 88S#JSXXSYYGG
=htCy>Q=RS
TTc  	,/HH,<E<($D##E1388SXX 	  	NN1c*E),)9E519%tD$$E1388#(( 	 :,  	O==uCIINN	OsD   7M< +,O 0P>Q !Q <AOOA"P;:P;+Q65Q6c                   |t        | j                        }| j                  }t        |       dkD  r| j                  d   gdz  }nt        |t        j                        r't        j                  d|j                        }||g}nOt        |t        j                        rt        | j                  j                        r4| j                  j                  d   gdz  }| j                  j                  }n8t        | j                  j                        }| j                  j                  d d }t        j                  ||| j                  j                        }n|t        |      rt        j                   dd g|      }nVt#        |      rt        j                   dd g|      }n0t        |t        j$                        r9|j&                  }t        j(                  d	|      t        j(                  d
|      g}nt        |t        j*                        r/t-        |j.                        }t        j                   ||g|      }nt        |t        j0                        r/t-        |j.                        }t        j                   ||g|      }nKt3        |      t4        j6                  v rt5        |      }n$t-        |      }t9        j                   ||g|      }t        j:                  || j<                  |      }| j>                  |_        |S )Nr   r   r   )r   r   r   rc   g      ?20002001)r`   rn   ) r   rn   rd   r   rl   r   r   DatetimeTZDtype	Timestampr   CategoricalDtypecatr   r   r   r-   arrayr,   PeriodDtyper   PeriodSparseDtyper+   subtypeIntervalDtyper   r'   r   r   r   r`   r   )sr   rd   r8   entrycatsr   ro   s           r;   r   r     s.    {agg&GGE
1vzq	{Q	E2--	.\ehh7u~	E2..	/quu EE$$Q'(1,D55##D"155#3#34D55##BQ'D~~dtQUU]]K	U	#xxD	/	5	!xxd51	E2>>	*zz		&$'64)@A	E2>>	*"5==1xxe4	E2++	,"5==1xxe4	e+33	3"5)"5)xxe4
))DqvvS
1CCIJr>   c                ,    t        | j                        S rb   )r   _metarg   s    r;   _meta_lib_from_array_dar     s     qww''r>   c                    t         S rb   )r   rg   s    r;   _meta_lib_from_array_numpyr     s	     Ir>   c                Z    t         j                  j                  j                  | ||      S )N)sort_categoriesignore_order)r   apitypesr   )to_unionr   r   s      r;   union_categoricals_pandasr     s+     66<<**/ +  r>   c                    t         S rb   )r   re   s    r;   get_parallel_type_seriesr         Mr>   c                    t         S rb   )r   r   s    r;   get_parallel_type_dataframer    s    r>   c                    t         S rb   )r   r   s    r;   get_parallel_type_indexr    s    Lr>   c                ,    t        | j                        S rb   )r   r   )os    r;   get_parallel_type_framer    s    QWW%%r>   c                    t         S rb   )r   r   s    r;   get_parallel_type_objectr    r   r>   c                J    t         j                  j                  | ||||      S )N)rn   encodinghash_key
categorize)r   utilhash_pandas_object)ry   rn   r
  r  r  s        r;   hash_object_pandasr    s+     77%%58h: &  r>   c                        e Zd Zd fdZ xZS )ShuffleGroupResultc                    t         |          }| j                         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__  sO     W')
ZZ\ 	%EAr&)#J&*$J	% r>   )r   rQ   )rT   rU   rV   r  __classcell__)r  s   @r;   r  r    s     r>   r  c                   t        |      r|j                  }t        j                  j                  j                  |j                  t        j                  d      |      \  }}| j                  |      }|j                         }t        |d d |dd        D cg c]5  \  }}|r|j                  || j                  d      n|j                  || 7 }	}}t        t        t        |      |	            S c c}}w )NFrq   r   r   Tdrop)r1   r   r   _libsalgosgroupsort_indexerastyper   intptakecumsumziprl   reset_indexr  r   )
r  r   r  ignore_indexindexer	locationsdf2r   r   partss
             r;   group_split_pandasr,  !  s    aHH99	u%qGY '''
C  "I 	#2	!"6Aq 1=1!!t!,#((1Q-OE  c%(E233	s   :C5c                   |j                  dd      }|dk(  rt        j                  | f||d|S t        | d   t        j                        rt        | d   t        j
                        r~t        dt        |             D ]7  }t        | |   t        j
                        r!| |   j                  d      | |<   9 t        j
                  t        | |      | d   j                        S t        | d   t        j                        r| d   | dd  c}	t        fd	|	D              rut        j                        D 
cg c]*  }
t        | D cg c]  }|j                  |
       c}      , }}
}t        j                  j                  |j                   
      S j"                  ft%        d |	D              z   }t'        j(                  |      }	 t        j                  j+                  |j                   
      S | d   j/                  | dd        S | d   j0                  }t        |t        j
                        xs8 t        |t        j                        xr t3        d |j4                  D              }|rC| D cg c]  }|j7                  d       }}t        | D cg c]  }|j0                   c}      }n| }d }|rt        |d   t        j8                        rMnt3        d |D              r9|st:        r|}|d   j<                  dk(  }n|D cg c]J  }t        |t        j8                        r|n+|j?                         jA                  |j                  di      L }}tC        jD                         5  tC        jF                  dtH               |rtC        jF                  dtJ               t        j                  |D cg c])  }|j<                  dk(  j?                         jL                  + c}fd|i|j3                         }d d d        t        t        jN                        r|j3                         r||    j0                  }t        j                  |D cg c]   }||jP                  jS                  |         " c}fd|i|}|j0                  }|j0                  jU                  |      D ]  }|D ]  }|jW                  |      }| n g }|D ]  }||jP                  v r|j/                  ||          &t'        jX                  t        |      dd      }t        jZ                  j]                  |j^                  j`                  |j^                  jb                        }|j/                  |        t        ||      ||<   t        |      r||_         |je                  |j0                        }n9tC        jD                         5  tC        jF                  dtH               |rtC        jF                  dtJ               t        j                  ||d      }d d d        nt        |d   jf                  t        jh                        rU|#t        |D cg c]  }|j0                   c}      }t        jN                  t        ||      ||d   j                        S tC        jD                         5  |rtC        jF                  dtJ               t        j                  |fd|i|}d d d        ||_        S c c}w c c}}
w # t,        $ r t        j                  |      cY S w xY wc c}w c c}w c c}w c c}w # 1 sw Y   ?xY wc c}w # 1 sw Y   ixY wc c}w # 1 sw Y   zxY w)Nr   Fr   )axisjoinr   category)r   r   c              3     K   | ]9  }t        |t        j                        xr |j                  j                  k\   ; y wrb   )r   r   r   nlevels)r   r  firsts     r;   r   z concat_pandas.<locals>.<genexpr>K  s9       Ar}}-L!))u}}2LLs   ?A)r   c              3  4   K   | ]  }|j                     y wrb   )_values)r   r  s     r;   r   z concat_pandas.<locals>.<genexpr>U  s     /Ha		/Hs   c              3  P   K   | ]  }t        |t        j                           y wrb   )r   r   r   r   s     r;   r   z concat_pandas.<locals>.<genexpr>b  s     Nq
1b112N   $&Tr  c              3  P   K   | ]  }t        |t        j                           y wrb   )r   r   r   )r   r  s     r;   r   z concat_pandas.<locals>.<genexpr>p  s     ="B-=r7  )r   ignorer/  r   i8rc   )r/  sort)rn   r`   )5r   r   r   r   r   r   r   r   r!  r   r`   r   r   r2  _get_level_valuesfrom_arraysr   r   r   r   concatenatefrom_tuplesr   appendrn   anyr   r&  r   r   r   to_framerenamewarningscatch_warningssimplefilterRuntimeWarningFutureWarningTr   r   intersection
differencegetfullr   r   r   r   r   reindexrd   r   )dfsr.  r/  uniformfilter_warningr'  r:   r   r   restnarrays	to_concat
new_tuples
dfs0_indexhas_categoricalindexr  dfs2inddfs3cat_masknot_catro   temp_indcolsampler+  r   r8   r3  s                                @r;   concat_pandasra  1  sy    ::ne4Lqyyy=4d=f== #a&"((#c!fb1121c#h' 7!#a&"*=*=> V]]:6CF7 &&"3\BQ  A.a&#ab'KE4   #5==1 C@qA//2@A  }}00u{{0KK%/H4/H*HHI	2J,}}005;;0OO 1v}}SW%% QJ%j"2E2EF :r}}- 	ONJ<M<MNN 
 478bD)88-2bhh-.
  	47BLL)===mDAw~~3H 	  b",,/ [[]))277A,)?@D  ((* %%h?!))(MB99FJKbii:-779;;K  #%	 	 h		*x||~y)//G))@DE"BJJ++G45E C
 yyH~~009 ) BVVC[F)
  +Bbjj(RW- "B4 @!~~88!6::#8#8&**:L:L  T*+ .e,OC 8} (CI+), ++hnn+5C ((* =%%h?!))(MBii4e<	= = d1gmmR%8%89{62bhh6799"4lC!W\\ 
 $$& 	7%%h>))D6t6v6C		7 	Je A  ,xx
++, 9-$ L  F<= = 7	7 	7s   ?\
\%	\
*\ =\4!\9A\>;A
].]
3]"%]A]]&=5]+\
\10\1]]]#+]4c                X    t         j                  j                  j                  | |      S )Nr   )r   r   r   r   r   s     r;   categorical_dtype_pandasrc    s     66<<((J(PPr>   c                "    | j                         S rb   tolistry   s    r;   tolist_numpy_or_pandasrh    s    ::<r>   c                l    t        | d      r| j                  }n| }t        |t        j                        S )Nrd   )r   rd   r   r   r   )ry   rd   s     r;   is_categorical_dtype_pandasrj    s/     sG		eR0011r>   c                J    t         j                  j                  j                  S rb   )r   coregroupbyGrouperrg  s    r;   get_grouper_pandasro    s    77??"""r>   c                    t        | ||      S rb   r	   )r   qinterpolations      r;   
percentilers    s    q!]++r>   c                    | S rb   rY   )r8   r:   s     r;   to_pandas_dispatch_from_pandasru    s    Kr>   c                  2    e Zd ZdZed        Zedd       Zy)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 rb   )r#   )clss    r;   to_backend_dispatchz+PandasBackendEntrypoint.to_backend_dispatch  s    !!r>   c                    t        |j                  t        j                  t        j                  t        j
                  f      r|S  |j                  | j                         fi |S rb   )r   r   r   r   r   r   map_partitionsrz  )ry  r8   r:   s      r;   
to_backendz"PandasBackendEntrypoint.to_backend  sI    djj2<<BHH"EFK"t""3#:#:#<GGGr>   N)r8   r   )rT   rU   rV   rW   classmethodrz  r}  rY   r>   r;   rw  rw    s1     " " H Hr>   rw  cudfc                     dd l } y 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        }y # t        $ r Y y w xY w)Nr   c                    S rb   rY   )rh   r  s    r;   meta_lib_from_array_cupyz8_register_cupy_to_cudf.<locals>.meta_lib_from_array_cupy  s
     Kr>   c                "    | j                         S rb   re  rg   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    sf    		%	%dll	3	 
4	 
	!	!$,,	/	 
0	  s   AA 	A$#A$rb   )FF)Tutf8NT)F)r   outerFTF)NF)linear)|
__future__r   rD  collections.abcr   numpyr   r[   r   pandas.api.typesr   r   dask.array.corer   dask.array.dispatchr   dask.array.percentiler
   dask.backendsr   r   dask.dataframe._compatr   r   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.utilsr0   r1   r2   r4   r\   r  rd   re   r   	Timedeltar   Intervalr   rs   __annotations__scipy.sparsesparsespspmatrixr  r{   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r  r  r  r  rP   r  r,  ra  rc  rh  r   
extensionsExtensionDtyperj  ro  rs  ru  rw  register_backendregister_lazyr  r  rY   r>   r;   <module>r     s   "  $   : ! 1 - A K H H     * G  - = =p"!6 p"f //	&	  bhh%  % bll#bll#bii bkk" # ! $ $ bii67 8 RXX&" '" (*yy",,"--&X # X	"++'
 "!!2<</2E 3E $##R\\O4/ 5/ &%%r||o6@ 7@$  - . **+R//0 1 , )*>C +>CB 
  
 % &  !BU "BUJ 		") #)X e$( %(
 bjj) *
 &%%\\299bhh7 BII& ' BLL) * BHH% & F#& $& F# $ biiBC@D Dt " biiBC4 D4 2<<BHH=> 
	P ?Pf %$$bllBIIrxx%HIQ JQ 2::ryy"((BNNKL M (''YY"&&++::BHHE22 BLL"))45# 6# RYY12, 3, bllBIIrxx@A BH8 H(  , ,X7N7P Q v&***62###F+   (###F+V$!!!&)V$   ((((0v& ' 1 ) % * % , ) , 3 ' #""6*v& ' +M  		s   "_ _"!_"