
    Гh                        S r SSKrSSKrSSKrSSKrSSKrSSKJrJrJ	r	J
r
JrJrJrJrJrJrJrJr  SSKrSSKJrJrJrJrJrJrJrJr  SSKJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(  SSK)J*r*  SSK)J+r,  SS	K)J-r-J.r.J/r/J0r0  SS
K1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:  \(       a  SSK;r<\\Rz                  \\!   \\"   4   r>Sr?SS1r@S\ S\\#   SS4S jrAS\ SS4S jrBS\ S\C4S jrDS\ S\CS\ 4S jrE\4R                  S.S\ S\#S\GS\\!   S\\"   S\4S\>4S jjrHS\ S\C4S jrI\4R                  S.S\ S\#S\GS\\!   S\\"   S\4S\>4S jjrJS\ S\C4S jrKS\ S\\R                     4S jrMS\ S \\$   S\\R                  \\$   4   4S! jrNS\ S \\$   S\R                  4S" jrO\4R                  S.S\R                  S\#S\GS\\!   S\\"   S\4S\>4S# jjrPS\ S\\*   4S$ jrQS\ S\C4S% jrRS&S&S&S&S&S&S&S&S'S'S'S(S).rSS&S&S&S&S&S&S&S&S'S'S(S*.rTS&S&S&S&S&S&S&S&S'S'S'S'S(S+.rU\SR                  \T5        \SR                  \U5        S,rWS\ SS4S- jrXS\*S.\\Y   S\\!   S\\"   S/\CS\\\!   \\"   4   4S0 jrZS \%S\C4S1 jr[S \S\C4S2 jr\S \S\C4S3 jr]\R                  S\	\%/\C4   4S4 j5       r_S \%S\C4S5 jr`\R                  S\	\%/\C4   4S6 j5       raS \%S\C4S7 jrbS8\S\R                  4S9 jrc\R                  S\C4S: j5       rd\R                  S\e4S; j5       rfS\*S\\R                     4S< jrg " S= S>\5      rh   SS\*S/\CS\\!   S\\"   S.\\Y   S\\h\\!   \\"   4   4S? jjriS\ S@\YS \\$   SA\Rz                  SS4
SB jrj\4R                  S.S\*S/\CS\#S\GS\\!   S\\"   S\4S\>4SC jjrkS\ S\C4SD jrlS\ S@\YS \\$   SA\Rz                  SS4
SE jrmS\ S\C4SF jrnS\ S\#S\GS/\CS\\!   S\\"   S\>4SG jro\R                  S\
\\\R                     4   4SH j5       rq " SI SJ\5      rrS\ S\C4SK jrsSSLSM\CS\\!   S\\"   S\\r\\!   \\"   4   4
SN jrt\4R                  4S\ S/\CS\#SO\GS\\!   S\\"   S\4S\>4SP jjru\R                  S\
\ \Y4   4SQ j5       rvS\ S\\\Y   \4   4SR jrwS\ S@\YS \\$   SA\Rz                  SS4
SS jrxS\ S\C4ST jryS\ S\C4SU jrzS\ S\C4SV jr{SSW jr|S\ S/\CS\\!   S\\"   S\\r\\!   \\"   4   4
SX jr}\4R                  4S\ S/\CS\#SO\GS\\!   S\\"   S\4S\>4SY jjr~S\ S\C4SZ jrS\ S\C4S[ jr\R                  S\	\/\C4   4S\ j5       rS\ S]\S\4S^ jrS\ S\\!   S\\"   S/\CS\\Rz                  \\\!   \\"   4   4
S_ jrS\ S\#S\GS\\!   S\\"   S/\CS\>4S` jrS\ S\C4Sa jrS\ S\C4Sb jrS\ S\4Sc jrS\ S\#S\GS\\!   S\\"   S\>4Sd jrS\ S\C4Se jrS\ S\C4Sf jrS\ S\C4Sg jrS\ S\C4Sh jrS\ S\#S\GS\\!   S\\"   S\>4Si jrS\ S\\&   4Sj jr\4R                  4S\&S\\#   S\\!   S\\"   S\4S\>4Sk jjrS\ S\\   4Sl jr\4R                  S.S\S\#SO\GS\\!   S\\"   S\4S\>4Sm jjrS\ S\\e   4Sn jr\4R                  S.S\S\#SO\GS\\!   S\\"   S\4S\>4So jjrS\ S\\3   4Sp jrS\ S\C4Sq jrS\ S\ 4Sr jrSs\4R                  St.S\ S\#Su\GS\\!   S\\"   S/\CS\4S\>4Sv jjrS\ S@\YSS4Sw jrS\R                  Sx\YS \\$   SA\Rz                  SS4
Sy jrS\Sx\YS \\$   SA\Rz                  SS4
Sz jrS\Sx\YS \\$   SA\Rz                  SS4
S{ jrS\ Sx\YSA\Rz                  SS4S| jrS\ Sx\YSA\Rz                  SS4S} jrS\ Sx\YSA\Rz                  SS4S~ jr SS\5S\ S@\YS \\$   SS4
S jjr " S S\35      rS\ S\\!   S\\"   S/\CS\'4
S jrS\S\C4S jrS\7S\ S]\\   SS4S jrg)zData dispatching for DMatrix.    N)TYPE_CHECKINGAnyCallableDictListOptionalSequenceTupleType	TypeGuardUnioncast   )ArrayInfTransformedDfarray_hasobjectarray_interfacearray_interface_dictcheck_cudf_metacuda_array_interfacemake_array_interface)
CupyTDataTypeFeatureNamesFeatureTypesFloatCompatible
NumpyDTypePandasDTypePathLikeTransformedDatac_bst_ulong)	DataFrame)Series)import_polarsimport_pyarrowis_pyarrow_availablelazy_isinstance)	_LIBDataIterDataSplitModeDMatrix_check_call_ProxyDMatrixc_strfrom_pystr_to_cstrmake_jcargscbase_marginlabeldatamissingreturnc                     UbM  [         R                  " U5      (       d1  [        R                  " S[	        [        U 5      5      -   [        5        g g g )Nz2`missing` is not used for current input data type:)npisnanwarningswarnstrtypeUserWarning)r4   r5   s     _C:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\xgboost/data.py_warn_unused_missingr@   L   s=    bhhw&7&7@3tDz?R	
 '8    c                 p    [        U S5      (       a%  [        U R                  5      S:w  a  [        S5      eg g )Nshape   z8Please reshape the input data into 2-dimensional matrix.)hasattrlenrC   
ValueErrorr4   s    r?   _check_data_shaperI   T   s2    tW#djj/Q"6STT #7rA   c                     SnSn SSK Jn  [        X5      n SSK Jn  [        X5      nU=(       d    U$ ! [         a     N)f = f! [         a     N'f = f)zPredicate for scipy CSR input.Fr   )	csr_array)
csr_matrix)scipy.sparserK   
isinstanceImportErrorrL   )r4   is_array	is_matrixrK   rL   s        r?   is_scipy_csrrR   Y   d    HI*d.+t0	  y         4 A 
A A
AAis_csrc                    SSK JnJn  [        U R                  5      [        U R
                  5      :w  a7  [        S[        U R                  5       S[        U R
                  5       35      e[        U R                  U R                  R                  5      u  pE[        U R                  U R                  R                  5      u  pe[        U R
                  U R
                  R                  5      u  puX@R                  Ld  X`R                  Ld  XpR
                  La/  U(       a  U" XvU4U R                  S9n U $ U" XvU4U R                  S9n U $ )zpEnsure correct data alignment and data type for scipy sparse inputs. Input should
be either csr or csc matrix.

r   )
csc_matrixrL   zlength mismatch: z vs )rC   )rM   rW   rL   rF   indicesr4   rG   _ensure_np_dtypeindptrdtyperC   )r4   rU   rW   rL   rZ   _rX   valuess           r?   transform_scipy_sparser^   l   s    
 4
4<<C		N*,S->,?tC		NCSTUU dkk.?.?@IF!$,,0B0BCJG DIIOO<IFkk!,,&"v7tzzJD K v7tzzJDKrA   )data_split_modenthreadfeature_namesfeature_typesr_   c                    [         R                  " 5       n[        U S5      n [        [        R
                  " [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  S   5      [        [        U5      [        U5      [        U5      S9[         R                  " U5      5      5        XcU4$ )z"Initialize data from a CSR matrix.Tr   r5   r`   r_   )ctypesc_void_pr^   r,   r(   XGDMatrixCreateFromCSRr   rZ   rX   r4   r!   rC   r0   floatintbyrefr4   r5   r`   ra   rb   r_   handles          r?   _from_scipy_csrrm      s     __F!$-D##DKK(DLL)DII&

1&gG #O 4
 LL 	
 -//rA   c                     SnSn SSK Jn  [        X5      n SSK Jn  [        X5      nU=(       d    U$ ! [         a     N)f = f! [         a     N'f = f)zPredicate for scipy CSC input.Fr   )	csc_array)rW   )rM   ro   rN   rO   rW   )r4   rP   rQ   ro   rW   s        r?   is_scipy_cscrp      rS   rT   c                    [         R                  " 5       n[        U S5        [        [        R
                  " [        U R                  5      [        U R                  5      [        U R                  5      [        U R                  S   5      [        [        U5      [        U5      [        U5      S9[         R                  " U5      5      5        XcU4$ )z"Initialize data from a CSC matrix.Fr   rd   )re   rf   r^   r,   r(   XGDMatrixCreateFromCSCr   rZ   rX   r4   r!   rC   r0   rh   ri   rj   rk   s          r?   _from_scipy_cscrs      s     __F4'##DKK(DLL)DII&

1&gG #O 4
 LL 	
 -//rA   c                     SnSn SSK Jn  [        X5      n SSK Jn  [        X5      nU=(       d    U$ ! [         a     N)f = f! [         a     N'f = f)zPredicate for scipy COO input.Fr   )	coo_array)
coo_matrix)rM   ru   rN   rO   rv   )r4   rP   rQ   ru   rv   s        r?   is_scipy_coorw      rS   rT   c                     [        U S5      $ )N__array_interface__rE   rH   s    r?   _is_np_array_liker{      s    4.//rA   r[   c                 $   [        U 5      (       d.  U R                  [        R                  [        R                  4;   a   [        R
                  nU R                  USS9n U R                  R                  (       d  [        R                  " U SS9n X4$ )NFcopyA)requirements)
r   r[   r8   float16bool_float32astypeflagsalignedrequirer4   r[   s     r?   rY   rY      sg     t

rzz288.D D

{{5u{-::zz$S1;rA   c                      U R                   R                  (       d  [        R                  " U SUS9n O[        R                  " XS9n  [        X5      u  pU $ ! [
         a    [        R                  " XS9n  N/f = f)zGHandle numpy slice.  This can be removed if we use __array_interface__.T)r~   r[   r[   )r   c_contiguousr8   arrayasarrayAttributeErrorrY   r   s     r?   _maybe_np_slicer      sf    -zz&&88Dt59D::d0D #4/KDK  -zz$,-s   1A A A98A9c                 <   [        U 5        [        X R                  5      u  p[        R                  " 5       n[        [        R                  " [        U 5      [        [        U5      [        U5      [        U5      S9[        R                  " U5      5      5        XsU4$ )z(Initialize data from a 2-D numpy matrix.rd   )rI   rY   r[   re   rf   r,   r(   XGDMatrixCreateFromDenser   r0   rh   ri   rj   )r4   r5   r`   ra   rb   r_   r\   rl   s           r?   _from_numpy_arrayr     s     dtZZ0GD__F%%D!gG #O 4
 LL 	

 -//rA   c                 V     SS K n[        XR                  5      $ ! [         a     gf = fNr   F)pandasrO   rN   r"   r4   pds     r?   _is_pandas_dfr     s/     dLL))      
((c                 Z     SS K Jn  [        XR                  5      $ ! [         a     gf = fr   )modin.pandasr   rO   rN   r"   r   s     r?   _is_modin_dfr   %  s/    ! dLL))      
**ri   rh   i)int8int16int32int64uint8uint16uint32uint64r   r   float64bool)Int8Int16Int32Int64UInt8UInt16UInt32UInt64Float32Float64boolean)zint8[pyarrow]zint16[pyarrow]zint32[pyarrow]zint64[pyarrow]zuint8[pyarrow]zuint16[pyarrow]zuint32[pyarrow]zuint64[pyarrow]zfloat[pyarrow]zfloat32[pyarrow]zdouble[pyarrow]zfloat64[pyarrow]zbool[pyarrow]zpWhen categorical type is supplied, the experimental DMatrix parameter`enable_categorical` must be set to `True`.c                 l   [        U S5      (       a  [        U R                  S5      (       af  [        U R                  5       VVs/ s H/  u  pUR                  [        ;  d  M  U R
                  U    SU 3PM1     nnnSSR                  U5      -   nOSnSnU S[         SU 3n[        U5      es  snnf )	Ndtypes__iter__z: z Invalid columns:z,  z?DataFrame.dtypes for data must be int, float, bool or category. )	rE   r   	enumeratename_pandas_dtype_mappercolumnsjoin_ENABLE_CAT_ERRrG   )r4   r   r[   
bad_fieldserrtype_errmsgs          r?   _invalid_dataframe_dtyper   e  s     tX74;;
#C#C &dkk2
2zz!55 *t||Ar%)2 	 

 "DIIj$99PHj/*!C5
3C
S/
s   B0#B0metaenable_categoricalc                 R   SSK nUc  Uc  [        U R                  UR                  5      (       aH  U R                   VVs/ s H.  nSR	                  U Vs/ s H  n[        U5      PM     sn5      PM0     nnnO([        U R                  R                  [
        5      5      n/ nSn	U R                   H  n
[        U
5      (       aO  UR                  [        U
R                  R                     5        U	(       a  [        R                  " S5        Sn	M`  Mb  [!        U
5      (       d  [#        U
5      (       a  U(       a  UR                  [$        5        M   UR                  [        U
R                     5        M     Uc  Uc  UnX#4$ s  snf s  snnf ! [&         a    [)        U 5         M  f = f)z)Handle feature info for pandas dataframe.r   Nr   Tz3Sparse arrays from pandas are converted into dense.F)r   rN   r   
MultiIndexr   r<   listmapr   is_pd_sparse_dtypeappendr   subtyper   r:   r;   is_pd_cat_dtypeis_pa_ext_categorical_dtypeCAT_TKeyErrorr   )r4   r   ra   rb   r   r   r   xnew_feature_typesneed_sparse_extension_warnr[   s              r?   pandas_feature_infor   w  sX     dllBMM22DHLLQLqSXXq&9q!s1vq&9:LMQM !1!1#!67M !%e$$$$%9%--:L:L%MN)ST-2* * E""&A%&H&H $$U+/!(()=ejj)IJ   )''5 ':Q(  /(./s)   FF)F"FFF&%F&c                 T   SSK Jn  [        X5      (       d  gSSKJnJnJn  U" U 5      =(       a    U R                  [        ;   nU" U 5      =(       a    U R                  S:H  nU" U 5      =(       a    U R                  [        ;   nU=(       d    U=(       d    U=(       d    [        U 5      $ )z(Whether dtype is a pandas nullable type.r   )ExtensionDtypeF)is_bool_dtypeis_float_dtypeis_integer_dtyper   )
pandas.api.extensionsr   rN   pandas.api.typesr   r   r   r   pandas_nullable_mapperr   )r[   r   r   r   r   is_intis_boolis_floats           r?   is_nullable_dtyper     s     5e,,PPe$M7M)MFE">uzzY'>Ge$M7M)MHBWBBOE,BBrA   c                     [        U S5      $ )z;Return whether dtype is a pyarrow extension type for pandaspyarrow_dtyperz   r   s    r?   is_pa_ext_dtyper     s    5/**rA   c                 2    [        [        U SS5      SS5      $ )z)Check whether dtype is a dictionary type.r   Npyarrow.libDictionaryType)r'   getattrr   s    r?   r   r     s     -}>N rA   c                  L  ^ SS K n [        U R                  S5      (       a}  [        U R                  R                  S5      (       aX  U R                  R                  R                  nU" U R
                  5      U" S5      :  a  SSK Jm  S[        S[        4U4S jjnU$ SS	K	J
n  U$ )
Nr   versionVersion2.1.0CategoricalDtyper[   r6   c                    > [        U T5      $ NrN   r[   r   s    r?   pd_is_cat_210+_lazy_load_pd_is_cat.<locals>.pd_is_cat_210  s    !%)9::rA   is_categorical_dtype)r   rE   utilr   r   __version__r   r   r   r   r   )r   r   r   r   r   s       @r?   _lazy_load_pd_is_catr     s{    rww	""wrww	'J'J''//))2>>"gg&66/;[ ;T ; ! 5rA   c                 &    [        5       nU" U 5      $ )z)Wrapper for testing pandas category type.)r   )r[   is_cats     r?   r   r     s    !#F%=rA   c                  L  ^ SS K n [        U R                  S5      (       a}  [        U R                  R                  S5      (       aX  U R                  R                  R                  nU" U R
                  5      U" S5      :  a  SSK Jm  S[        S[        4U4S jjnU$ SS	K	J
n  U$ )
Nr   r   r   r   )SparseDtyper[   r6   c                    > [        U T5      $ r   r   )r[   r   s    r?   pd_is_sparse_2101_lazy_load_pd_is_sparse.<locals>.pd_is_sparse_210  s    !%55rA   )	is_sparse)r   rE   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   s       @r?   _lazy_load_pd_is_sparser    s{    rww	""wrww	'J'J''//))2>>"gg&66*6 6 6 $#*rA   c                 &    [        5       nU" U 5      $ )z'Wrapper for testing pandas sparse type.)r  )r[   r   s     r?   r   r     s    ')IUrA   serc                 h   SSK n[        (       a  SSKnO
[        5       nU R                  nUR                  5       nUR                  5       nUR                  S:H  =(       a*    UR                  R                  UR                  5      (       + nUR                  USS9n[        XwR                  5      u  pxU$ )z Handle pandas pyarrow extention.r   NF)zero_copy_onlywritable)r   r   pyarrowr%   r   __arrow_array__combine_chunks
null_counttypes
is_booleanr=   to_numpyrY   r[   )	r  r   pad_arrayaachunk	zero_copyarrr\   s	            r?   pandas_pa_typer    s    }
 .1YYG $335B))+E  A%Mbhh.A.A%**.M*MI nnInNCc99-FCJrA   c                      [         R                  R                  [         R                  5      [         R                  R                  S5      :  $ )Nz1.25.0)r8   libNumpyVersionr    rA   r?   _lazy_has_npdtypesr    s/    66r~~.1D1DX1NNNrA   c                      SSK Jn Jn  X4$ )Nr   Float32DtypeFloat64Dtype)r   r  r  r  s     r?   _lazy_load_pd_floatsr    s    1%%rA   c                   ^^	^
^ [        5       u  mm	/ n[        5       mS[        S[        R                  4S jnS[        S[        R                  4UU	U
4S jjnS[        S[        R                  4U
U4S jjn[        U R                  U R                  5       GH(  u  nm
[        T
5      (       a  [        S5      e[        T
5      (       a  UR                  U" X   5      5        MM  [        T
5      (       a  UR                  [        X   5      5        M{  [        T
5      (       a  UR                  U" X   5      5        M  [        T
5      (       aY  X   R                   nUR#                  5       n[%        U5      (       a  ['        XfR(                  5      u  pgUR                  U5        GM  UR                  U" X   5      5        GM+     U$ )z9Handle categorical dtype and extension types from pandas.r  r6   c                    [        U R                  R                  R                  [        R
                  5      R                  S[        R                  5      R                  [        R                  S9[        R
                  5      S   $ )Ng      na_valuer   )	rY   catcodesr   r8   r   replacenanr  )r  s    r?   	cat_codes(pandas_transform_data.<locals>.cat_codes"  sZ    GGMM  ,WT266"XrvvX&JJ	

  	rA   c                   > [        TT5      (       a  [        R                  nO2[        TT5      (       a  [        R                  nO[        R                  n[	        U R                  U[        R                  S9U5      S   $ N)r[   r"  r   )rN   r8   r   r   rY   r  r&  )r  	res_dtyper  r  r[   s     r?   nu_type&pandas_transform_data.<locals>.nu_type*  sc    e\**$&JJI|,,

I

ILLy266L:I

 	rA   c                   > T=(       aH    [        U R                  [        R                  R                  [        R                  R
                  45      nU(       d$  T[        R                  [        R                  1;   a  U R                  5       nO,U R                  [        R                  [        R                  S9n[        X"R                  5      S   $ r*  )rN   r[   r8   r   Float32DTypeFloat64DTyper   r   r  r&  rY   )r  npdtypesr   r[   	np_dtypess      r?   oth_type'pandas_transform_data.<locals>.oth_type6  s     
II 		&&		&&	"
 uRZZ 88LLNE LLrzzBFFLCE{{3A66rA   zFpyarrow dictionary type is not supported. Use pandas category instead.)r  r  PdSeriesr8   ndarrayzipr   r   r   rG   r   r   r   r  r   r   r]   to_denser{   rY   r[   )r4   resultr'  r,  r3  colr  r\   r  r  r[   r2  s           @@@@r?   pandas_transform_datar;    sf   !5!7L,!F"$Ix BJJ 
X 
"** 
 
7h 72:: 7 7( $,,4
U&u--X  5!!MM)DI./U##MM.34u%%MM'$),-&&)""C,,.C %%)#yy9MM#MM(49-.% 5. MrA   c                   t    \ rS rSrSrS\\R                     SS4S jrS\	4S jr
\S\\\4   4S j5       rS	rg)
PandasTransformedid  z1A storage class for transformed pandas DataFrame.r   r6   Nc                     Xl         g r   r   selfr   s     r?   __init__PandasTransformed.__init__g  s    rA   c                     [        [        [        U R                  5      5      n[	        [
        R                  " U5      S5      nU$ )6Return a byte string for JSON encoded array interface.utf-8)r   r   r   r   bytesjsondumps)rA  aitfssarrayss      r?   r   !PandasTransformed.array_interfacej  s2    S-t||<=

5)73rA   c                 d    U R                   S   R                  S   [        U R                   5      4$ z*Return shape of the transformed DataFrame.r   )r   rC   rF   rA  s    r?   rC   PandasTransformed.shapep  s+     ||A$$Q'T\\):::rA   r?  )__name__
__module____qualname____firstlineno____doc__r   r8   r6  rB  rG  r   propertyr
   ri   rC   __static_attributes__r  rA   r?   r=  r=  d  sP    ;RZZ 0 T   ;uS#X ; ;rA   r=  c                     U(       a2  [        U R                  5      S:  a  U[        ;  a  [        SU S35      e[	        XX#U5      u  p#[        U 5      n[        U5      X#4$ )Nr   zDataFrame for z cannot have multiple columns)rF   r   _matrix_metarG   r   r;  r=  )r4   r   ra   rb   r   arrayss         r?   _transform_pandas_dfr[  v  sd     DLL!A%$l*B>$/LMNN#6M2D$ M #4(FV$mBBrA   r   rl   c                     [        U SUS9u  n   n[        U R                  5      S:X  a  U R                  S   nO*[        R                  " U R                  5      R
                  n[        XR5      u  pR[        XQX#5        g )NF)r   r   r   )r[  rF   r   r8   stackTrY   _meta_from_numpy)r4   r   r[   rl   r\   r   s         r?   _meta_from_pandas_dfr`    sd     &dE=JD!Q
4<<AQ&((#E1LEU%0rA   c                     [        XXE5      u  ptn[        R                  " 5       n[        [        R
                  " UR                  5       [        X2US9[        R                  " U5      5      5        XU4$ N)r`   r5   r_   )	r[  re   rf   r,   r(   XGDMatrixCreateFromColumnarr   r0   rj   )	r4   r   r5   r`   ra   rb   r_   dfrl   s	            r?   _from_pandas_dfre    sp     (<-($B} __F(( / LL 	
 -//rA   c                 V     SS K n[        XR                  5      $ ! [         a     gf = fr   )r   rO   rN   r#   r   s     r?   _is_pandas_seriesrg    s/     dII&&  r   c                 <   [        U R                  5      (       a8  U R                  R                  5       R	                  [
        R                  5      n OR[        U R                  5      (       a  [        U 5      n O,U R                  [
        R                  [
        R                  S9n [        [        U SU 5      5      (       a  U R                  5       n [        U R                  5      S:X  d(  U R                  S   S:X  d  U R                  S   S:X  d   e[        XX#5        g)z6Help transform pandas series for meta data like labelsr!  r[   r   r   N)r   r[   r]   r8  r   r8   r   r   r  r  r&  r   rF   rC   r_  )r4   r   r[   rl   s       r?   _meta_from_pandas_seriesri    s     $**%%{{##%,,RZZ8		$	$d#}}RZZ"&&}9'$677}}tzz?a4::a=A#5A!9KKKT/rA   c                 Z     SS K Jn  [        XR                  5      $ ! [         a     gf = fr   )r   r   rO   rN   r#   r   s     r?   _is_modin_seriesrk    s/    ! dII&&  r   c                    U R                   R                  [        ;  a,  [        U R                   5      (       a  U(       d  [	        U 5        U(       a0  [        U R                   5      (       a  U R
                  R                  n [        U R                  R                  U R                  S   S5      R                  S5      UUUUS9$ )Nr   r   rh   r4   r5   r`   ra   rb   )r[   r   r   r   r   r#  r$  r   r]   reshaperC   r   r4   r5   r`   r   ra   rb   s         r?   _from_pandas_seriesrp    s     	

33

##(: &odjj99xx~~[[  A299'B## rA   c                     SS K n U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R
                  " 5       [        R
                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  U R                  " 5       [        R                  0nU$ Nr   )r  r   r8   r   r   r   r   r   r   r   r   r   r   r  mappings     r?   _arrow_npdtyperu    s     		277

BHH

BHH

BHH

BHH
		RYY
		RYY
		RYY


bjj


bjj


bjj+G NrA   c                   f    \ rS rSrSrS\\S      SS4S jrS\4S jr	\
S\\\4   4S	 j5       rS
rg)ArrowTransformedi  z,A storage class for transformed arrow table.r   zpa.NumericArrayzpa.DictionaryArrayr6   Nc                     Xl         g r   r?  r@  s     r?   rB  ArrowTransformed.__init__  s	     rA   c                    ^ [         (       a  SSKmO
[        5       mS[        S   S[        4U4S jjn[        [        XR                  5      5      n[        [        R                  " U5      S5      nU$ )rE  r   Nr:  rx  r6   c                   > U R                  5       n[        U TR                  5      (       a  U R                  5       u  p#nOUu  p$UR                  (       d   eU R                  S:X  d   e[        UR                  [        U 5      4[        5       U R                     UR                  (       + S9nUb9  UR                  S4SSS [        U 5      4S S.nUR                  (       d  SUS'   XeS	'   U$ )
Nr   )rC   r[   is_cudaTz<t1   )r4   typestrr   stridesrC   maskrD   streamr  )
buffersrN   DictionaryArrayis_cpuoffsetr   addressrF   ru  r=   )r:  r  r  r\   r4   jdatajmaskr  s          r?   	array_inf3ArrowTransformed.array_interface.<locals>.array_inf  s    kkmG#r1122 #$
;;;::?"?(3xk$&sxx0 KK	E !\\40$ #!#h[ # {{&'E(O %fLrA   rF  )r   r  r%   r   r   r   r   r   rG  rH  rI  )rA  r  rZ  rK  r  s       @r?   r    ArrowTransformed.array_interface	  s[    = !B	5!HI 	h 	< c)\\23

6*G4rA   c                 \    [        U R                  S   5      [        U R                  5      4$ rN  )rF   r   rO  s    r?   rC   ArrowTransformed.shape2  s%     4<<?#S%666rA   r?  )rQ  rR  rS  rT  rU  r   r   rB  rG  r   rV  r
   ri   rC   rW  r  rA   r?   rw  rw    sU    6E"IJK	
' 'R 7uS#X 7 7rA   rw  c                     [        U SS5      $ )Nr   Tabler'   rH   s    r?   	_is_arrowr  8  s    488rA   zpa.Tabler\   c                 p   [         (       a  SS KnO
[        5       n[        U 5      u  pVUc  UnUc  Un/ nU Ho  nU R	                  U5      n	U	R                  5       n
[        XR                  5      (       a   U
R                  UR                  " 5       5      n
UR                  U
5        Mq     [        U5      nXU4$ rr  )r   r  r%   _arrow_feature_infocolumnr	  rN   BooleanArrayr   r   r   rw  )r4   r\   ra   rb   r  t_namest_typesr   cnamecol0r:  df_ts               r?   _transform_arrow_tabler  <  s     }*40GG{{5!>B>Q>Q>Sc??++((2779%Cs  G$D--rA   	n_threadsc                     [        XXE5      u  ptn[        R                  " 5       n[        [        R
                  " UR                  5       [        X2US9[        R                  " U5      5      5        XU4$ rb  )	r  re   rf   r,   r(   rc  r   r0   rj   	r4   r   r5   r  ra   rb   r_   r  rl   s	            r?   _from_arrow_tabler  Z  sq     *@-*&D __F((  "!O LL 	
 -//rA   c                     SS K n U R                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       SU R
                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       SU R                  " 5       S0nU$ )Nr   ri   rh   r   )r  r   r   r   r   r   r   r   r   r   r   r   r   rs  s     r?   _arrow_dtyper  s  s     		5

E

E

E

E
		U
		U
		U


g


g


g

CG NrA   c                    ^^ [         (       a  SS KmO
[        5       mU mTR                  nS[        S[        4UU4S jjn[        [        X!5      5      nX4$ )Nr   r   r6   c                    > TR                  U 5      n[        UR                  TR                  5      (       a  [	        S5      e[        5       UR                     $ )NzJCategorical feature is not yet supported with the current input data type.)r  rN   r=   r   NotImplementedErrorr   r  )r   r:  r  tables     r?   map_type%_arrow_feature_info.<locals>.map_type  sM    ll4 chh 1 122%  ~chh''rA   )r   r  r%   column_namesr<   r   r   )r4   namesr  r  r  r  s       @@r?   r  r    sT    }EE	(s 	(s 	( 	( X%&E<rA   c                 :    U n[        UR                  5       XUS9  g )N)r   r[   rl   )r`  	to_pandas)r4   r   r[   rl   r  s        r?   _meta_from_arrow_tabler    s     E*6RrA   c                     [        U SS5      $ )Nzpolars.lazyframe.frame	LazyFramer  rH   s    r?   _is_polars_lazyframer    s    4!9;GGrA   c                     [        U SS5      $ )Nzpolars.series.seriesr#   r  rH   s    r?   _is_polars_seriesr    s    4!7BBrA   c                 H    [        U 5      n[        U SS5      nU=(       d    U$ )Nzpolars.dataframe.framer"   )r  r'   )r4   lfrd  s      r?   
_is_polarsr    s$    	d	#B	7	EB8OrA   c                  8    [        5       (       d  [        S5      eg )Nz!`pyarrow` is required for polars.)r&   rO   r  rA   r?   _check_pyarrow_for_polarsr    s    !!=>> "rA   c                     [        U 5      (       a,  U R                  5       n[        R                  " S[        5        OU n[        5         UR                  5       n[        XQX#5      $ )Nz}Using the default parameters for the polars `LazyFrame.collect`. Consider passing a realized `DataFrame` or `Series` instead.)r  collectr:   r;   r>   r  to_arrowr  )r4   r   ra   rb   rd  r  s         r?   _transform_polars_dfr    sY     D!!\\^C	
 KKME!= rA   c                     [        XXE5      u  ptn[        R                  " 5       n[        [        R
                  " UR                  5       [        X2US9[        R                  " U5      5      5        XU4$ rb  )	r  re   rf   r,   r(   rc  r   r0   rj   r  s	            r?   _from_polars_dfr    sp     *>-*&D __F((  "!O LL 	
 -//rA   c                     [        U SS5      $ )Nzcudf.core.dataframer"   r  rH   s    r?   _is_cudf_dfr    s    4!6DDrA   c                 ~    [        U SS5      =(       d    [        U SS5      =(       a    [        [        U 5      SS5      $ )z+Must go before both pandas and cudf checks.zpandas.core.framer"   zpandas.core.seriesr#   zcudf.pandas.fast_slow_proxy_FastSlowProxyMeta)r'   r=   rH   s    r?   _is_cudf_pandasr    sE     	1;? 	A4!5x@ T
13GrA   c                     ^  SSK Jm  S[        S[        4U4S jjn U $ ! [         a#     SSKJn    U $ ! [         a    SSKJn     U $ f = ff = f)Nr   r   r[   r6   c                    > [        U T5      $ r   r   r   s    r?   r   4_lazy_load_cudf_is_cat.<locals>.is_categorical_dtype  s    e%566rA   r   )cudfr   r   r   rO   cudf.api.typesr   cudf.utils.dtypes)r   r   s    @r?   _lazy_load_cudf_is_catr    sa    
?)	7 	7 	7    ?	?;    	?>	??s$    
A3AAAAr'  c                   ^	 [        5       n/ m	S[        SS4U	4S jjn[        U 5      (       a<  U" U R                  5      (       a  US   R                  nOU R                  nU" U5        OT[        U 5       HE  u  pVU" X   R                  5      (       a  X   nUR                  nOX   R                  nU" U5        MG     [        [        R                  " T	5      5      nU$ )a  Extract CuDF __cuda_array_interface__.  This is special as it returns a new list
of data and a list of array interfaces.  The data is list of categorical codes that
caller can safely ignore, but have to keep their reference alive until usage of
array interface is finished.

	interfacer6   Nc                 X   > SU ;   a  U S   R                   U S'   TR                  U 5        g )Nr  )__cuda_array_interface__r   )r  
interfacess    r?   r   &_cudf_array_interfaces.<locals>.append  s.    Y )& 1 J JIf)$rA   r   )	r  dict_is_cudf_serr[   r  r   r/   rH  rI  )
r4   r'  r   r   r  r   r:  r$  interfaces_strr  s
            @r?   _cudf_array_interfacesr    s     23J%$ %4 %
 D

++!!==I55IyoFA#DIOO44!!::	 I>>	9 & (

:(>?NrA   c                   ^^  SSK Jn  [	        5       m[        U 5      (       a7  U" U R                  5      (       a  U R                  [        R                  5      n O=U R                  U R                  SS9 Vs0 s H  oU[        R                  _M     sn5      n [        U 5      (       a  U R                  /nOU R                  n[        UU4S jU 5       5      (       d  [        U 5        Uc  [        U 5      (       a  U R                  /nO[        U R                   SS5      (       aH  U R                    VVs/ s H.  nSR#                  U Vs/ s H  n[%        U5      PM     sn5      PM0     nnnO(['        U R                   R)                  [$        5      5      nUcX  / nU HP  n	T" U	5      (       a  T(       a  UR+                  [,        5        M.  UR+                  [.        U	R                     5        MR     / n
[        U 5      (       aF  T" U R                  5      (       a.  T(       a'  U R0                  R2                  nU
R+                  U5        OU  H}  nX   R                  n	T" U	5      (       a2  T(       a+  X   R0                  R2                  nU
R+                  U5        MP  T" U	5      (       a  [5        [6        5      eU
R+                  / 5        M     X
X4$ ! [         a
    SSKJn   GNf = fs  snf s  snf s  snnf )	Nr   )r   r   )includec              3   z   >#    U  H0  nUR                   [        ;   =(       d    T" U5      =(       a    Tv   M2     g 7fr   )r   r   ).0r[   r   r   s     r?   	<genexpr>%_transform_cudf_df.<locals>.<genexpr>I  s>       E 	

** 	@ '>,>	@s   8;zcudf.core.multiindexr   r   )r  r   rO   r   r  r  r[   r   r8   r   select_dtypesr   allr   r   r'   r   r   r<   r   r   r   r   r   r#  r$  rG   r   )r4   ra   rb   r   r   r:  r   r   r   r[   r'  r$  r   s      `        @r?   _transform_cudf_dfr  .  sd   30 23D$$;;rxx(D{{&*&8&8&8&HI&Hs"((]&HI
 D**    
 	!& !YYKMT\\+A<PPDHLLQLqSXXq&9q!s1vq&9:LMQM !1!1#!67M E#E**/A$$U+$$%9%**%EF	  ID

++0BHHNNEU#CIOOE#E**/A	++  '%e,, 11  $  M88{  3223 J( ':Qs/   K 7K&4K0	K+K0K#"K#+K0c           
          [        XXE5      u  pp4[        X5      n[        R                  " 5       n[	        [
        R                  " U[        X!S9[        R                  " U5      5      5        XU4$ )N)r`   r5   )	r  r  re   rf   r,   r(   XGDMatrixCreateFromCudaColumnarr0   rj   )	r4   r5   r`   ra   rb   r   r'  r  rl   s	            r?   _from_cudf_dfr  w  sk     5G]51D] ,D<N__F,,9LL 	
 -//rA   c                     [        U SS5      $ )Nzcudf.core.seriesr#   r  rH   s    r?   r  r    s    4!3X>>rA   c                     [        U S5      $ )Nr  rz   rH   s    r?   _is_cupy_aliker    s    4344rA   c                     SS K n[        U S5      (       d!  [        U S5      (       a  UR                  U SS9n [        U 5      (       d  U R                  UR
                  4;   a  U R                  UR                  SS9n U $ )Nr   r  	__array__Fr}   )cupyrE   r   r   r[   r   r   r   )r4   r  s     r?   _transform_cupy_arrayr    sh    4344{9S9Szz$Uz+t

tzzl :{{4<<e{4KrA   c           	         [        U 5      n [        U 5      n[        R                  " 5       n[	        [
        R                  " XS.5      S5      n[        [        R                  " XW[        R                  " U5      5      5        XcU4$ )z%Initialize DMatrix from cupy ndarray.)r5   r`   rF  )r  r   re   rf   rG  rH  rI  r,   r(   %XGDMatrixCreateFromCudaArrayInterfacerj   )r4   r5   r`   ra   rb   interface_strrl   configs           r?   _from_cupy_arrayr    sm     !&D(.M__F4::'FGQF226<<#7	

 -//rA   c                 ~     SS K n[        XR                  R                  R
                  5      $ ! [         a     gf = fr   )cupyxrO   rN   scipysparserL   r4   r  s     r?   _is_cupy_csrr    ;     dKK..99::     / 
<<c                 ~     SS K n[        XR                  R                  R
                  5      $ ! [         a     gf = fr   )r  rO   rN   r  r  rW   r  s     r?   _is_cupy_cscr    r  r  c                 Z    S[        [        U 5      5      ;   =(       a    S[        U 5      ;   $ )N	PyCapsuledltensor)r<   r=   rH   s    r?   
_is_dlpackr    s#    #d4j/)EjCI.EErA   c                 D    SSK Jn  S[        U 5      ;  d   eU" U 5      n U $ )Nr   )from_dlpackused_dltensor)r  r  r<   )r4   r  s     r?   _transform_dlpackr    s&     #d)+++tDKrA   c                 2    [        U 5      n [        XX#U5      $ r   )r  r  rm  s        r?   _from_dlpackr    s     T"DD7=QQrA   c                 B    [        U [        [        R                  45      $ r   )rN   r<   osr   rH   s    r?   _is_urir    s    dS"++.//rA   c                 P   [        X5        [        R                  " 5       n[        R                  " [        R
                  R                  U 5      5      n [        [        U 5      [        U5      S9n[        [        R                  " U[        R                  " U5      5      5        XRU4$ )N)urir_   )r@   re   rf   r  fspathpath
expanduserr0   r<   ri   r,   r(   XGDMatrixCreateFromURIrj   )r4   r5   ra   rb   r_   rl   r  s          r?   	_from_urir	    ss     '__F99RWW''-.DSYO8LMF++FFLL4HIJ-//rA   c                 "    [        U [        5      $ r   )rN   r   rH   s    r?   _is_listr    s    dD!!rA   c           	      `    [         R                  " U 5      n[        U 5        [        UUUUUUS9$ )Nr4   r5   r`   ra   rb   r_   )r8   r   rI   r   )r4   r5   r  ra   rb   r_   r   s          r?   
_from_listr    s8     HHTNEd##' rA   c                 "    [        U [        5      $ r   )rN   tuplerH   s    r?   	_is_tupler    s    dE""rA   c           	          [        U UUUUUS9$ )Nr4   r5   r  ra   rb   r_   )r  r  s         r?   _from_tupler    s#     ##' rA   c                 "    [        U [        5      $ r   )rN   r)   rH   s    r?   _is_iterr    s    dH%%rA   c                     [        U S5      $ )Nr  rz   rH   s    r?   _has_array_protocolr  #  s    4%%rA   c                     [         R                  " S[        U 5       S3[        5         SS Kn UR                  R                  U 5      n U $ ! [
         a     g f = f! [         a     g f = f)NzUnknown data type: z$, trying to convert it to csr_matrixr   )	r:   r;   r=   r>   rM   rO   r  rL   	Exception)r4   r  s     r?   _convert_unknown_datar  '  sq    MM
d4j\)MN||&&t, K  
  s"   A A 
AA
A)(A)F)r   r_   threadsc           
      p   [        U 5      (       d+  [        U 5      (       d  [        U 5      (       d  [        U 5        [	        U 5      (       a  [        U UUUUUS9$ [        U 5      (       a  [        U UUUUUS9$ [        U 5      (       a  [        U R                  5       UUUUUS9$ [        U 5      (       a  [        U UUUUUS9$ [        U 5      (       a  [        XX4U5      $ [        U 5      (       a  [        U UUUUUS9$ [!        U 5      (       a  [#        U UUUUUS9$ [        U 5      (       a'  [%        5       nUR'                  U R(                  U 05      n [+        U 5      (       a  [-        U UUUUUUS9$ [/        U 5      (       a  [1        U UUUUUUS9$ [3        U 5      (       a  U R4                  n [        U 5      (       a  SSKnUR'                  U 5      n [9        U 5      (       a  [;        U UUUUUUS9$ [=        U 5      (       d  [        U 5      (       a  [?        U UUUUUS9$ [A        U 5      (       a  [C        XX#U5      $ [E        U 5      (       a  [G        S5      e[I        U 5      (       a  [G        S	5      e[K        U 5      (       a  [M        XX#U5      $ [O        U 5      (       a  [;        U UUUUUS
9$ [Q        U 5      (       a  [S        U UUUUUS9$ [U        U 5      (       a#  [V        RX                  " U 5      n	[        U	UUUUS9$ [[        U 5      n
U
b  [        U
UUUUS9$ [G        S[]        [_        U 5      5      -   5      e)zDispatch data for DMatrix.r  r  )r5   r  ra   rb   r_   r   N)r4   r   r5   r`   ra   rb   r_   )r4   r5   r`   ra   rb   r   zcupyx CSR is not supported yet.zcupyx CSC is not supported yet.)r4   r   r5   r`   ra   rb   ro  rm  zNot supported type for data.)0r  rg  r  rI   rR   rm   rp   rs   rw   tocsrr{   r   r  r	  r  r  r  r  r$   r"   r   r  r  r  r  r  _fsproxy_fastr   r   re  r  r  r  r  r  	TypeErrorr  r  r  r   rk  rp  r  r8   r   r  r<   r=   )r4   r5   r  ra   rb   r   r_   plr   r   	converteds              r?   dispatch_data_backendr#  9  s    !$''!$''$D''+
 	
 D''+
 	
 D''+
 	
  ''+
 	
 t}}oVV~~''+
 	
 ''+
 	
 _||TYY-.$''+
 	
  ''+
 	
 t!!||D!T1''+
 	
 4L..''1
 	
 dw}UUD9::D9::$D7=QQD1''
 	
 "1''
 	
 4  

4  ''
 	
 &d+I''
 	
 2Sd_D
EErA   c                    [        U S5      (       a  SU R                   SU 3nU[        ;   a%  [        U R                  5      S:  a  [	        U5      eg [        U R                  5      S:  d?  [        U R                  5      S:X  aC  U R                  S   S:w  a/  U R                  S   S:w  a  [	        SU R                   SU 35      eg g g g )NrC   zInvalid shape: z for rD   r   r   )rE   rC   rY  rF   rG   )r4   r   r   s      r?   _validate_meta_shaper%    s    tW

|57<4::" o%tzz?Q

Oq djjmq&8TZZ]a=Otzzl%vFGG >P&8  rA   fieldc                     [        X5      u  pU R                  nUR                  SS 5      b  [        S5      e[	        U 5      n[        [        R                  " U[        U5      U5      5        g )Nr  zMasked array is not supported.)	rY   ry   getrG   r   r,   r(   XGDMatrixSetInfoFromInterfacer.   )r4   r&  r[   rl   r  r  s         r?   r_  r_    s]     #4/KD((I}}VT".9::#D)M2265<WXrA   c                 H    [         R                  " U 5      n[        XAX#5        g r   )r8   r   r_  )r4   r&  r[   rl   data_nps        r?   _meta_from_listr,     s     hhtnGWU3rA   c                     [        XX#5      $ r   )r,  )r4   r&  r[   rl   s       r?   _meta_from_tupler.    s     466rA   c                     U[         ;  a  [        U R                  S S 2S4   X5        g U R                  n [	        U 5      n[        [        R                  " U[        U5      U5      5        g rr  )	rY  _meta_from_cudf_seriesilocr]   r   r,   r(   r)  r.   )r4   r&  rl   r  s       r?   _meta_from_cudf_dfr2    sN    L tyyA>{{(.	D66vuU|YWXrA   c                     [        X5        [        U 5      n[        [        R                  " U[        U5      U5      5        g r   )r   r   r,   r(   r)  r.   r4   r&  rl   infs       r?   r0  r0    s/    D 
t
$C2265<MNrA   c                     [        U 5      n [        U 5      n[        [        R                  " U[        U5      U5      5        g r   )r  r   r,   r(   r)  r.   r4  s       r?   _meta_from_cupy_arrayr7    s1     &D
t
$C2265<MNrA   matrixc                 L   U R                   nUc   e[        X5        Uc  g[        U5      (       a  [        XX45        g[	        U5      (       a  [        XX45        g[        U5      (       a  [        XX45        g[        U5      (       a  [        XX45        g[        U5      (       a  UR                  n[        U5      (       aF  [        U5      (       a  UR                  5       n[        5         [        UR!                  5       X#U5        g[#        U5      (       a  [%        XX4S9  g['        U5      (       a  [)        XX45        g[+        U5      (       a  [-        U5      n[/        XU5        g[1        U5      (       a  [3        XU5        g[5        U5      (       a  [7        XU5        g[9        U5      (       a  [/        XU5        g[;        U5      (       a  [%        XX4S9  g[=        U5      (       ai  UR>                  RA                  S5      n[C        URD                  5      S:X  d(  URD                  S   S:X  d  URD                  S   S:X  d   e[        XX45        g[G        U5      (       a#  [H        RJ                  " U5      n[        XRX45        g[M        SU-   [O        [Q        U5      5      5      e)zDispatch for meta info.N)r[   rl   rh   r   r   zUnsupported type for ))rl   r%  r  r,  r  r.  r{   r_  r  r  r  r  r  r  r  r  r  r   r`  rg  ri  r  r  r7  r  r0  r  r2  r  r   rk  r]   r   rF   rC   r  r8   r   r   r<   r=   )r8  r4   r   r[   rl   r   s         r?   dispatch_meta_backendr:  "  s(    ]]F$|~~E2U3U3t59t!!$%%<<>D!#t}}VDTTuD U;$ &d&1Dt6244v.dd&1DTuD{{!!'*4::!#tzz!}'9TZZ]a=OOOU34  

4 e4
+d2CT
O
DDrA   c                   T   ^  \ rS rSrSrS\SS4U 4S jjrS\S\4S jr	SS	 jr
S
rU =r$ )SingleBatchInternalIterib  zAn iterator for single batch data to help creating device DMatrix.
Transforming input directly to histogram with normal single batch data API
can not access weight for sketching.  So this iterator acts as a staging
area for meta info.

kwargsr6   Nc                 :   > Xl         SU l        [        TU ]  SS9  g )Nr   F)release_data)r=  itsuperrB  )rA  r=  	__class__s     r?   rB   SingleBatchInternalIter.__init__j  s!     	e,rA   
input_datac                 t    U R                   S:X  a  gU =R                   S-  sl         U" S0 U R                  D6  g)Nr   FTr  r@  r=  )rA  rD  s     r?   nextSingleBatchInternalIter.nextr  s/    77a<1!T[[!rA   c                     SU l         g rr  )r@  rO  s    r?   resetSingleBatchInternalIter.resety  s	    rA   rF  r6   N)rQ  rR  rS  rT  rU  r   rB  r   r   rG  rJ  rW  __classcell__)rB  s   @r?   r<  r<  b  s8    - - -x D  rA   r<  c                 2   [        U 5      (       a  U R                  n [        U 5      (       d  [        U 5      (       a  [	        XX#5      $ [        U 5      (       a  [        U 5      n U S X4$ [        U 5      (       a  [        U 5      S X4$ [        U 5      (       d  [        U 5      (       a  [        R                  " U 5      n [        U 5      (       a  [        X R                  5      u  pU S X4$ [!        U 5      (       a  [#        U S5      n U S X4$ [%        U 5      (       a  [#        U R'                  5       S5      n U S X4$ [)        U 5      (       a  [#        U R'                  5       S5      n U S X4$ [+        U 5      (       a  [-        XX5      u  pQnUS X4$ [/        U 5      (       a  SS KnUR3                  U 5      n [5        U 5      (       a  [7        XX5      u  pqnUS X4$ [9        U 5      (       a  [;        XX5      u  pnUS X4$ [=        S[?        [A        U 5      5      -   5      e)NTr   .Value type is not supported for data iterator:)!r  r  r  r  r  r  r  r  r  r  r  r8   r   r{   rY   r[   rR   r^   rp   r  rw   r  r  rg  r   r"   r  r  r   r[  r   r<   r=   )	r4   ra   rb   r   r\   df_plr   df_pard  s	            r?   _proxy_transformrR  }  s    t!!4L..!
 	
 d$T*T=77$ &mJJ~~4xx~"44T=77D%dD1T=77D%djjlD9T=77D%djjlD9T=77$.Bm/
+m dM88||D!.Dm/
+m dM88T+?m,
(= 455
Ds4PT:V
WWrA   c                 V   ^  [        U 4S j[        [        [        [        4 5       5      $ )z0Whether the data is a CUDA-based data structure.c              3   2   >#    U  H  o" T5      v   M     g 7fr   r  )r  pr4   s     r?   r  is_on_cuda.<locals>.<genexpr>  s     X W1qww Ws   )anyr  r  r  r  rH   s   `r?   
is_on_cudarX    s    XlNJ WXXXrA   proxyc                    [        U5      (       d+  [        U5      (       d  [        U5      (       d  [        U5        [	        U5      (       a!  U R                  U[        [        U5      5        g[        U5      (       a!  U R                  U[        [        U5      5        g[        U5      (       a  U R                  U5        g[        U5      (       a  [        U5      nU R                  U5        g[        U[        [        45      (       a  U R                  U5        g[!        U5      (       a  [        U5        U R#                  U5        g[%        U5      (       a  U R'                  U5        g[)        S[+        [-        U5      5      -   5      nUe)zDispatch for QuantileDMatrix.NrO  )r  rg  r  rI   r  _ref_data_from_cuda_columnarr   r   r  _ref_data_from_cuda_interfacer  r  rN   rw  r=  _ref_data_from_columnarr{   _ref_data_from_arrayrR   _ref_data_from_csrr   r<   r=   )rY  r4   r'  r   s       r?   dispatch_proxy_set_datar`    s<    !$''!$''$4**4dI1FGD**4dI1FGd++D1$ &++D1$)+<=>>%%d+$""4(D  &
Ds4PT:V
WC
IrA   )NNNrL  r   )rU  re   	functoolsrH  r  r:   typingr   r   r   r   r   r   r	   r
   r   r   r   r   numpyr8   _data_utilsr   r   r   r   r   r   r   r   _typingr   r   r   r   r   r   r   r   r    r!   compatr"   r#   r5  r$   r%   r&   r'   corer(   r)   r*   r+   r,   r-   r.   r/   r0   r  r  rf   DispatchedDataBackendReturnTyper   rY  r@   rI   r   rR   r^   ROWri   rm   rp   rs   rw   r6  r{   rY   r   r   r   r   r   r   pandas_pyarrow_mapperupdater   r   r<   r   r   r   r   cacher   r   r  r   r  r  r  r  r;  r=  r[  r`  re  rg  ri  rk  rp  numberru  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rG  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r#  r%  r_  r,  r.  r2  r0  r7  r:  r<  rR  rX  r`  r  rA   r?   <module>rn     s'   $    	     	 	 	    & X X
 
 
 "'
OOXl+Xl-CC#  	 w'
x 
(?2K 
PT 
UH U U
!x !D !& 4 H @ &3%6%60
0 0 	0
 L)0 L)0 #0 %0<!x !D !4 &3%6%60
0 0 	0
 L)0 L)0 #0 %0:!x !D !&0H 02::)> 0
#J/
2::x
++,
( 
8J+? 
BJJ 
( &3%6%60
**0 0 	0
 L)0 L)0 #0 %06* *Yy%9 **x *D *  "        2 3   1 22 8  $'(
'(
3-'( L)'( L)	'(
 '( 8L!8L#99:'(TC[ CT C"+3 +4 +
s t   h}d':;    "; 4  ;-*=!>  $k d  

 > OD O O &e & &F	 Fd2::.> FR; ;* -1,0C
CC L)C L)	C
 3-C h|4h|6LLMC$1
1
1 J1 OO	1
 
10 &3%6%60
0 0 	0
 0 L)0 L)0 #0 %06'H ' '0
00&.z&:0DJOO0	0"'8 ' '
  	
  L) L) %0 S$ryy/12  (47} 47n9H 9 9.
.. L). L)	.
 Xl3Xl5KKL.J &3%6%60
00 0 	0
 L)0 L)0 #0 %02 d8S=)  *h 5cD+A 0S
S
S JS OO	S
 
SHx HD HCH C CX $ ?

 L) L)	
 Xl3Xl5KKL< &3%6%60
00 0 	0
 L)0 L)0 #0 %02Eh E4 E( t   # 5      d u BF9
F9L)F9 L)F9 	F9
 6??D(<"8(<:PPQF9R0
0 0 	0
 L)0 L)0 0 %00?x ?D ?5 5d 5 U 0
00 0 L)	0
 L)0 %0(;x ;D ;;x ;D ;FX F$ FH  R
RR R L)	R
 L)R %R0( 0y2 0 &3%6%60
0o&0 L)0 L)	0
 #0 %0"8 "	$ " &3%6%6
  	
 L) L) # %*#H #5!1 # &3%6%6
  	
 L) L) # %&&8 &	( 3 &&h &4 & X 2  %%2%6%6hF
hF hF 	hF
 L)hF L)hF hF #hF %hFVHx Hs Ht HY
**YY JY OO	Y
 
Y4
44'/
';4EK__4	47
77'/
';7EK__7	7YX Yc Y6?? Yt YO O# Ov OSW OO O Ofoo ORV O OS=E=E#=E+.=E7?
7K=E	=E@h 62X
2XL)2X L)2X 	2X
 2XjYS YT Y
))
) ~) 
	)rA   