
    i                     h   U d Z ddlZddlZddlZddlZddl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 ddlZddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL erddlMZNdd	lOmPZQ dd
lOmRZS eej                  ee*   ee+   f   ZUeeVd<   dZWddhZXde)dee,   ddfdZYde)ddfdZZde)de[fdZ\de)de[de)fdZ]eGj                  dde)de,de_dee*   dee+   deGdeUfdZ`de)de[fdZaeGj                  dde)de,de_dee*   dee+   deGdeUfdZbde)de[fdZcde)deej                     fd Zede)d!ee-   dej                  fd"ZfeGj                  ddej                  de,de_dee*   dee+   deGdeUfd#Zgd$d$d$d$d$d$d$d$d%d%d%d&d'Zhd$d$d$d$d$d$d$d$d%d%d&d(Zid$d$d$d$d$d$d$d$d%d%d%d%d&d)Zjehj                  ei       ehj                  ej       d*Zlde)ddfd+Zmdd,d-een   dee*   dee+   d.e[deee*   ee+   f   fd/Zod!e.de[fd0Zpd!ede[fd1Zqd!ede[fd2Zrej                  de	e.ge[f   fd3       Ztd!e.de[fd4Zuej                  de	e.ge[f   fd5       Zvd!e.de[fd6Zwd7edej                  fd8Zxej                  de[fd9       Zyej                  dezfd:       Z{dd,deeej                  ef      fd;Z| G d< d=e      Z}	 	 	 d{dd,d.e[dee*   deee+ef      d-een   dee}ee*   ee+   f   fd>Z~de)d?end!ee-   d@ej                  ddf
dAZeGj                  ddd,d.e[de,de_dee*   deee+ef      deGdeUfdBZde)d?end!ee-   d@ej                  ddf
dCZde)de,de_d.e[dee*   dee+   deUfdDZ G dE dFe      ZddGd.e[dee*   deee+ef      deeee*   ee+   f   f
dHZeGj                  fde)d.e[de,dIe_dee*   deee+ef      deGdeUfdJZej                  de
e)enf   fdK       Zde)deeen   ef   fdLZde)d?end!ee-   d@ej                  ddf
dMZd|dNZde)d.e[dee*   deee+ef      deeee*   ee+   f   f
dOZeGj                  fde)d.e[de,dIe_dee*   deee+ef      deGdeUfdPZej                  de	ege[f   fdQ       Zej                  de	ege[f   fdR       Z G dS dTe      Zde)dee*   deee+ef      d.e[deeee*   ee+   f   f
dUZde)de,de_dee*   deee+ef      d.e[deUfdVZde)de(fdWZde)de,de_dee*   dee+   deUfdXZde)de[fdYZde)de[fdZZde)de[fd[Zde)de[fd\Zde)de,de_dee*   dee+   deUfd]Zde)dee/   fd^ZeGj                  fde/dee,   dee*   dee+   deGdeUfd_Zde)dee   fd`ZeGj                  ddede,dIe_dee*   dee+   deGdeUfdaZde)deez   fdbZeGj                  ddede,dIe_dee*   dee+   deGdeUfdcZde)deeF   fddZde)de[fdeZde)de)fdfZdgeGj                  dhde)de,die_dee*   deee+ef      d.e[deGdeUfdjZde)d?enddfdkZdej                  dlend!ee-   d@ej                  ddf
dmZdedlend!ee-   d@ej                  ddf
dnZdedlend!ee-   d@ej                  ddf
doZde)dlend@ej                  ddfdpZde)dlend@ej                  ddfdqZde)dlend@ej                  ddfdrZ	 d}dseHde)d?end!ee-   ddf
dtZ G du dveF      Zde)dee*   dee+   d.e[de0f
dwZdede[fdxZdyeJde)ddfdzZy)~zData dispatching for DMatrix.    N)TYPE_CHECKINGAnyCallableDictListOptionalSequenceTuple	TypeAlias	TypeGuardUnion   )AifType
CategoriesDfCatAccessorTransformedDf_arrow_array_inf_ensure_np_dtype
_is_df_catarray_hasobjectarray_interfacearray_interface_dictarrow_cat_infcheck_cudf_metacuda_array_interfacecuda_array_interface_dictcudf_cat_infget_ref_categoriesis_arrow_dict
pd_cat_inf)
CupyTDataTypeFeatureNamesFeatureTypesFloatCompatible
NumpyDTypePandasDTypePathLikeTransformedDatac_bst_ulong)	_is_arrow_is_cudf_df_is_cudf_pandas_is_cudf_ser_is_cupy_alike_is_modin_df_is_modin_series_is_pandas_df_is_pandas_series
_is_polars_is_polars_lazyframe_is_polars_seriesimport_pandasimport_polarsimport_pyarrowis_pyarrow_availablelazy_isinstance)_LIBDataIterDataSplitModeDMatrix_check_call_ProxyDMatrixc_strmake_jcargs)	DataFrame)SeriesDispatchedDataBackendReturnTypecbase_marginlabeldatamissingreturnc                     |Ft        j                  |      s0t        j                  dt	        t        |             z   t               y y y )Nz2`missing` is not used for current input data type:)npisnanwarningswarnstrtypeUserWarning)rJ   rK   s     R/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/xgboost/data.py_warn_unused_missingrV   h   s:    bhhw&7@3tDz?R	
 '8    c                 d    t        | d      r$t        | j                        dk7  rt        d      y y )Nshape   z8Please reshape the input data into 2-dimensional matrix.)hasattrlenrY   
ValueErrorrJ   s    rU   _check_data_shaper_   p   s/    tW#djj/Q"6STT #7rW   c                     d}d}	 ddl m} t        | |      }	 ddl m} t        | |      }|xs |S # t        $ r Y $w xY w# t        $ r Y  w xY w)zPredicate for scipy CSR input.Fr   )	csr_array)
csr_matrix)scipy.sparsera   
isinstanceImportErrorrb   )rJ   is_array	is_matrixra   rb   s        rU   is_scipy_csrrh   u   h    HI*dI.+tZ0	  y        1 A  	== 	AAis_csrc                    ddl m}m} t        | j                        t        | j
                        k7  r7t        dt        | j                         dt        | j
                               t        | j                  | j                  j                        \  }}t        | j                  | j                  j                        \  }}t        | j
                  | j
                  j                        \  }}|| j                  us|| j                  us|| j
                  ur2|r ||||f| j                        } | S  ||||f| j                        } | S )zxEnsure correct data alignment and data type for scipy sparse inputs. Input should
    be either csr or csc matrix.

    r   )
csc_matrixrb   zlength mismatch: z vs )rY   )rc   rm   rb   r\   indicesrJ   r]   r   indptrdtyperY   )rJ   rk   rm   rb   ro   _rn   valuess           rU   transform_scipy_sparsers      s   
 4
4<<C		N*,S->,?tC		NCSTUU dkk.?.?@IFA!$,,0B0BCJGQ DIIOO<IFAdkk!$,,&"vw7tzzJD K vw7tzzJDKrW   )data_split_modenthreadfeature_namesfeature_typesrt   c                    t        j                         }t        | d      } t        t	        j
                  t        | j                        t        | j                        t        | j                        t        | j                  d         t        t        |      t        |      t        |            t        j                  |                   |||fS )z"Initialize data from a CSR matrix.Tr   rK   ru   rt   )ctypesc_void_prs   r@   r<   XGDMatrixCreateFromCSRr   ro   rn   rJ   r*   rY   rC   floatintbyrefrJ   rK   ru   rv   rw   rt   handles          rU   _from_scipy_csrr      s     __F!$-D##DKK(DLL)DII&

1&gG #O 4
 LL 	
 =-//rW   c                     d}d}	 ddl m} t        | |      }	 ddl m} t        | |      }|xs |S # t        $ r Y $w xY w# t        $ r Y  w xY w)zPredicate for scipy CSC input.Fr   )	csc_array)rm   )rc   r   rd   re   rm   )rJ   rf   rg   r   rm   s        rU   is_scipy_cscr      ri   rj   c                    t        j                         }t        | d       t        t	        j
                  t        | j                        t        | j                        t        | j                        t        | j                  d         t        t        |      t        |      t        |            t        j                  |                   |||fS )z"Initialize data from a CSC matrix.Fr   ry   )rz   r{   rs   r@   r<   XGDMatrixCreateFromCSCr   ro   rn   rJ   r*   rY   rC   r}   r~   r   r   s          rU   _from_scipy_cscr      s     __F4'##DKK(DLL)DII&

1&gG #O 4
 LL 	
 =-//rW   c                     d}d}	 ddl m} t        | |      }	 ddl m} t        | |      }|xs |S # t        $ r Y $w xY w# t        $ r Y  w xY w)zPredicate for scipy COO input.Fr   )	coo_array)
coo_matrix)rc   r   rd   re   r   )rJ   rf   rg   r   r   s        rU   is_scipy_coor      ri   rj   c                     t        | d      S )N__array_interface__r[   r^   s    rU   _is_np_array_liker     s    4.//rW   rp   c                     	 | j                   j                  st        j                  | d|      } nt        j                  | |      } t        | |      \  } }| S # t
        $ r t        j                  | |      } Y 3w xY w)zGHandle numpy slice.  This can be removed if we use __array_interface__.T)copyrp   rp   )flagsc_contiguousrN   arrayasarrayAttributeErrorr   )rJ   rp   s     rU   _maybe_np_slicer     sn    -zz&&88Dt59D::d%0D #4/KD%K  -zz$e,-s   AA  A<;A<c                 B   t        |        t        | | j                        \  } }t        j                         }t        t        j                  t        |       t        t        |      t        |      t        |            t        j                  |                   |||fS )z(Initialize data from a 2-D numpy matrix.ry   )r_   r   rp   rz   r{   r@   r<   XGDMatrixCreateFromDenser   rC   r}   r~   r   )rJ   rK   ru   rv   rw   rt   rq   r   s           rU   _from_numpy_arrayr     s     dtTZZ0GD!__F%%D!gG #O 4
 LL 	

 =-//rW   r~   r}   i)int8int16int32int64uint8uint16uint32uint64float16float32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   t        | d      rvt        | j                  d      r`t        | j                        D cg c]+  \  }}|j                  t        vr| j
                  |    d| - }}}ddj                  |      z   }nd}d}| dt         d| }t        |      c c}}w )	Ndtypes__iter__z: z Invalid columns:z,  z?DataFrame.dtypes for data must be int, float, bool or category. )	r[   r   	enumeratename_pandas_dtype_mappercolumnsjoin_ENABLE_CAT_ERRr]   )rJ   r   rp   
bad_fieldserrtype_errmsgs          rU   _invalid_dataframe_dtyper   f  s     tX74;;
#C &dkk2
5zz!55 ||Ar%)

 

 "DIIj$99PHj/*!C5
3C
S/
s   0B PdDataFramemetaenable_categoricalc                     t               }||t        | j                  |j                        rB| j                  D cg c]*  }dj	                  |D cg c]  }t        |       c}      , }}}n(t        | j                  j                  t
                    }g }d}	| j                  D ]  }
t        |
      rG|j                  t        |
j                  j                            |	s=t        j                  d       d}	Ut!        |
      st#        |
      r|r|j                  t$               	 |j                  t        |
j                             |||}||fS c c}w c c}}w # t&        $ r t)        |        Y w xY w)z)Handle feature info for pandas dataframe.r   Tz3Sparse arrays from pandas are converted into dense.F)r7   rd   r   
MultiIndexr   rR   listmapr   is_pd_sparse_dtypeappendr   subtyper   rP   rQ   is_pd_cat_dtypeis_pa_ext_categorical_dtypeCAT_TKeyErrorr   )rJ   r   rv   rw   r   pdr   xnew_feature_typesneed_sparse_extension_warnrp   s              rU   pandas_feature_infor   x  sI    
B dllBMM2DHLLQqSXXq&9!s1v&9:QMQ !1!1#!67M !% /e$$$%9%--:L:L%MN)ST-2*E"&A%&H $$U+/!(()=ejj)IJ/  )-''5 ':Q(  /(./s)   E E$	E -"E&E &E=<E=c                    ddl m} t        | |      syddlm}m}m}  ||       xr | j                  t        v } ||       xr | j                  dk(  } ||       xr | j                  t        v }|xs |xs |xs t        |       S )z(Whether dtype is a pandas nullable type.r   )ExtensionDtypeF)is_bool_dtypeis_float_dtypeis_integer_dtyper   )
pandas.api.extensionsr   rd   pandas.api.typesr   r   r   r   pandas_nullable_mapperr   )rp   r   r   r   r   is_intis_boolis_floats           rU   is_nullable_dtyper     s~     5e^,PPe$M7M)MFE">uzzY'>Ge$M7M)MHBWBBOE,BBrW   c                     t        | d      S )z;Return whether dtype is a pyarrow extension type for pandaspyarrow_dtyper   r   s    rU   is_pa_ext_dtyper     s    5/**rW   c                 2    t        t        | dd      dd      S )z)Check whether dtype is a dictionary type.r   Nzpyarrow.libDictionaryType)r;   getattrr   s    rU   r   r     s     -}>N rW   c                  >   t               } t        | j                  d      rut        | j                  j                  d      rU| j                  j                  j                  } || j
                         |d      k\  rddlm dt        dt        ffd}|S dd	l
m} |S )
NversionVersion2.1.0r   CategoricalDtyperp   rL   c                     t        |       S Nrd   rp   r   s    rU   pd_is_cat_210z+_lazy_load_pd_is_cat.<locals>.pd_is_cat_210  s    !%)9::rW   is_categorical_dtype)r7   r[   utilr   r   __version__pandasr   r'   r   r   r   )r   r   r   r   r   s       @rU   _lazy_load_pd_is_catr     sy    	Brww	"wrww	'J''//))2>>"gg&66/;[ ;T ; ! 5rW   c                 &    t               } ||       S )z)Wrapper for testing pandas category type.)r   )rp   is_cats     rU   r   r     s    !#F%=rW   c                  >   t               } t        | j                  d      rut        | j                  j                  d      rU| j                  j                  j                  } || j
                         |d      k\  rddlm dt        dt        ffd}|S dd	l
m} |S )
Nr   r   r   r   )SparseDtyperp   rL   c                     t        |       S r   r   )rp   r   s    rU   pd_is_sparse_210z1_lazy_load_pd_is_sparse.<locals>.pd_is_sparse_210  s    !%55rW   )	is_sparse)r7   r[   r   r   r   r   r   r   r'   r   r   r  )r   r   r   r  r   s       @rU   _lazy_load_pd_is_sparser    sy    	Brww	"wrww	'J''//))2>>"gg&66*6 6 6 $#*rW   c                 &    t               } ||       S )z'Wrapper for testing pandas sparse type.)r  )rp   r  s     rU   r   r     s    ')IUrW   serc                 b   t               }t        rddl}n
t               }| j                  }|j                         }|j                         }|j                  dk(  xr& |j                  j                  |j                         }|j                  |d      }t        ||j                        \  }}|S )z Handle pandas pyarrow extention.r   NF)zero_copy_onlywritable)r7   r   pyarrowr9   r   __arrow_array__combine_chunks
null_counttypes
is_booleanrS   to_numpyr   rp   )	r  r   pad_arrayaachunk	zero_copyarrrq   s	            rU   pandas_pa_typer    s    	B
 .1YYG $335B))+E  A%Mbhh.A.A%**.M*MI nnInNCc399-FCJrW   c                      t         j                  j                  t         j                        t         j                  j                  d      kD  S )Nz1.25.0)rN   libNumpyVersionr    rW   rU   _lazy_has_npdtypesr    s/    66r~~.1D1DX1NNNrW   c                      ddl m} m} | |fS )Nr   Float32DtypeFloat64Dtype)r   r  r  r  s     rU   _lazy_load_pd_floatsr    s    1%%rW   c                   	
 t               \  	g }t               dddt        fd}dddt        j                  f	
fd}dddt        j                  f
fd}t        | j                  | j                        D ]  \  }
t        
      rt        d      t        
      r|j                   || |                Ct        
      r|j                  t        | |                lt        
      r|j                   || |                t        
      rU| |   j                   }|j#                         }t%        |      rt'        ||j(                        \  }}|j                  |       |j                   || |                 |S )z9Handle categorical dtype and extension types from pandas.r  PdSeriesrL   c                     | j                   S r   )cat)r  s    rU   	cat_codesz(pandas_transform_data.<locals>.cat_codes%  s    wwrW   c                     t              rt        j                  }n-t              rt        j                  }nt        j                  }t	        | j                  |t        j                        |      d   S N)rp   na_valuer   )rd   rN   r   r   r   r  nan)r  	res_dtyper  r  rp   s     rU   nu_typez&pandas_transform_data.<locals>.nu_type(  s]    e\*$&JJI|,

I

ILLy266L:I

 	rW   c                    xrH t        | j                  t        j                  j                  t        j                  j
                  f      }|s"t        j                  t        j                  hv r| j                         }n/| j                  t        j                  t        j                        }t        ||j                        d   S r&  )rd   rp   rN   r   Float32DTypeFloat64DTyper   r   r  r(  r   )r  npdtypesr   rp   	np_dtypess      rU   oth_typez'pandas_transform_data.<locals>.oth_type4  s     
II 		&&		&&	"
 uRZZ 88LLNE LLrzzBFFLCEu{{3A66rW   zFpyarrow dictionary type is not supported. Use pandas category instead.)r  r  r   rN   ndarrayzipr   r   r   r]   r   r   r   r  r   r   rr   to_denser   r   rp   )rJ   resultr$  r*  r0  colr  rq   r  r  rp   r/  s           @@@@rU   pandas_transform_datar6    s[    "6!7L,57F"$Iz m 
Z 
BJJ 
7j 7RZZ 7( $,,4 /
U&u-X  5!MM)DI./U#MM.c34u%MM'$s),-&s)""C,,.C %)#syy9QMM#MM(49-.%/. MrW   c                   z     e Zd ZdZdeeej                  ef      de	e
   ddf fdZedeeef   fd       Z xZS )PandasTransformedz1A storage class for transformed pandas DataFrame.r   ref_categoriesrL   Nc                 z   || _         g }g }| j                   D ]  }t        |      rIt        |j                  |j                        \  }}}|j                  |       |j                  ||f       Wt        |t        j                        sJ t        |      }	|j                  |	        t        
| -  |||       y )Nr9  aitfstemporary_buffers)r   r   r    
categoriescodesr   rd   rN   r1  r   super__init__)selfr   r9  r<  r=  r5  jnamesjcodesbufinf	__class__s             rU   rA  zPandasTransformed.__init__e  s    
  << 
	"C#&0&K#!((-ff-.!#rzz222*3/S!
	" 	)/ 	 	
rW   c                 \   t        | j                  d         r#t        | j                  d   j                        }n[t	        | j                  d         r'| j                  d   j
                  j                  d   }n| j                  d   j                  d   }|t        | j                        fS z*Return shape of the transformed DataFrame.r   )r   r   r\   rn   r   r?  rY   rB  	n_sampless     rU   rY   zPandasTransformed.shape  s     a)DLLO334IQ(Q--33A6I Q--a0I#dll+++rW   )__name__
__module____qualname____doc__r   r   rN   r1  r   r   r   rA  propertyr
   r~   rY   __classcell__rG  s   @rU   r8  r8  b  sb    ;
eBJJ567
 !,
 
	
: ,uS#X , ,rW   r8  c                     |r/t        | j                        dkD  r|t        vrt        d| d      t	        |      \  }}t        | ||||      \  }}t        |       }t        ||      ||fS )Nr   zDataFrame for z cannot have multiple columnsr9  )r\   r   _matrix_metar]   r   r   r6  r8  )rJ   r   rv   rw   r   r9  arrayss          rU   _transform_pandas_dfrW    s     DLL!A%$l*B>$/LMNN$6}$E!M>#6dM=2D$ M= #4(F&@ rW   r   r   c                    t        | d|      \  } }}t        | j                        dk(  r| j                  d   }n)t        j                  | j                        j
                  }t        ||      \  }}t        ||||       y )NF)r   r   r   )rW  r\   r   rN   stackTr   _meta_from_numpy)rJ   r   rp   r   rq   r   s         rU   _meta_from_pandas_dfr\    sl     &dE=JD!Q
4<<AQ&((#E51LE5UD%0rW   c           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS N)ru   rK   rt   )	rW  rz   r{   r@   r<   XGDMatrixCreateFromColumnarr   rC   r   )	rJ   r   rK   ru   rv   rw   rt   dfr   s	            rU   _from_pandas_dfra    s{     (< -($B} __F(( / LL 	
 =-//rW   c                 "   t        | j                        r8| j                  j                         j	                  t
        j                        } nPt        | j                        rt        |       } n/| j                  t
        j                  t
        j                        } t        t        | d|             r| j                         } t        | j                        dk(  s&| j                  d   dk(  s| j                  d   dk(  sJ t        | |||       y)z6Help transform pandas series for meta data like labels)r'  rp   r   r   N)r   rp   rr   r3  astyperN   r   r   r  r  r(  r   r\   rY   r[  )rJ   r   rp   r   s       rU   _meta_from_pandas_seriesrd    s     $**%{{##%,,RZZ8		$d#}}RZZ"&&}9'$67}}tzz?a4::a=A#5A!9KKKT4/rW   c                 d   | j                   j                  t        vr"t        | j                         r|st	        |        |r+t        | j                         r| j
                  j                  } t        | j                  j                  | j                  d   d      j                  d      ||||      S )Nr   r   r}   rJ   rK   ru   rv   rw   )rp   r   r   r   r   r#  r?  r   rr   reshaperY   rc  )rJ   rK   ru   r   rv   rw   s         rU   _from_pandas_seriesrh    s     	

33

#(: &odjj9xx~~[[  A299'B## rW   c                   f     e Zd ZdZ	 d	deed      dee   ddf fdZe	de
eef   fd       Z xZS )
ArrowTransformedz,A storage class for transformed arrow table.Nr   zpa.NumericArrayzpa.DictionaryArrayr9  rL   c                     || _         t        rdd ln
t               g g dt        d   dd ffd}| j                   D ]
  } ||        t
        |   |       y )Nr   r5  rk  rL   c                 ^   t        | j                        rz| j                  }| j                  }t        |j                  j
                  f      st        d      t        ||      \  }}}	j                  |       j                  ||f       y t        |       }j                  |       y )Nz;Only string-based categorical index is supported for arrow.)
rd   DictionaryArray
dictionaryrn   StringArrayLargeStringArray	TypeErrorr   r   r   )
r5  catsr?  rC  rD  rE  jdatar<  r  r=  s
          rU   push_seriesz.ArrowTransformed.__init__.<locals>.push_series  s    #r112~~!$9L9L(MN#U  '4D%&@#!((-ff-.(-U#rW   r;  )r   r   r  r9   r   r@  rA  )	rB  r   r9  ru  r5  r<  r  r=  rG  s	        @@@rU   rA  zArrowTransformed.__init__  sy    
  !B	$U#JK 	$PT 	$ << 	C	 	)/ 	 	
rW   c                 \    t        | j                  d         t        | j                        fS rI  )r\   r   rB  s    rU   rY   zArrowTransformed.shape&  s%     4<<?#S%666rW   r   )rL  rM  rN  rO  r   r   r   r   rA  rP  r
   r~   rY   rQ  rR  s   @rU   rj  rj    s`    6
 04%
eCDE%
 !,%
 
	%
N 7uS#X 7 7rW   rj  zpa.Tablec                    t         rdd l}n
t               }t        |       \  }}t	        |      \  }}||}||}g }|D ]  }	| j                  |	      }
|
j                         }t        ||j                        r |j                   |j                               }t        |      r|st        d        |j                  |        t        ||      }|||fS )Nr   rT  )r   r  r9   _arrow_feature_infor   columnr
  rd   BooleanArraycastr   r   r   r   rj  )rJ   r   rv   rw   r  t_namest_typesr9  r   cnamecol0r5  df_ts                rU   _transform_arrow_tabler  ,  s     *40GW$6}$E!M>G 	{{5!>B>Q>Q>Sc2??+((72779%C&8 %T*s	 GNCD--rW   	n_threadsc           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS r^  )	r  rz   r{   r@   r<   r_  r   rC   r   	rJ   r   rK   r  rv   rw   rt   r  r   s	            rU   _from_arrow_tabler  O  s|     *@ -*&D- __F((  "!7O LL 	
 =-//rW   c                     dd l }  | j                         d | j                         d | j                         d | j                         d | j
                         d | j                         d | j                         d | j                         d | j                         d | j                         d | j                         d | j                         di}|S )Nr   r~   r}   r   )r  r   r   r   r   r   r   r   r   r   r   r   bool_)r  mappings     rU   _arrow_dtyper  h  s     		5
E
E
E
E		U		U		U

g

g

g
CG NrW   c                     t         rdd ln
t               | j                  }dt        dt        ffd}t        t        ||            }||fS )Nr   r   rL   c                     j                  |       }t        |j                  j                        rt        S t               |j                     S r   )rz  rd   rS   r   r   r  )r   r5  r  tables     rU   map_typez%_arrow_feature_info.<locals>.map_type  s;    ll4 chh 1 12L~chh''rW   )r   r  r9   column_namesrR   r   r   )rJ   namesr  r  r  r  s       @@rU   ry  ry  ~  sQ    EE(s (s ( Xu%&E%<rW   c                 B    | }t        |j                         |||       y )N)r   rp   r   )r\  	to_pandas)rJ   r   rp   r   r  s        rU   _meta_from_arrow_tabler    s     E*U6RrW   c                  .    t               st        d      y )Nz!`pyarrow` is required for polars.)r:   re   r  rW   rU   _check_pyarrow_for_polarsr    s    !=>> "rW   c                     t        |       r+| j                         }t        j                  dt               n| }t                |j                         }t        ||||      S )Nz}Using the default parameters for the polars `LazyFrame.collect`. Consider passing a realized `DataFrame` or `Series` instead.)r5   collectrP   rQ   rT   r  to_arrowr  )rJ   r   rv   rw   r`  r  s         rU   _transform_polars_dfr    s[     D!\\^C	
 KKME!!=- rW   c           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS r^  )	r  rz   r{   r@   r<   r_  r   rC   r   r  s	            rU   _from_polars_dfr    s{     *> -*&D- __F((  "!7O LL 	
 =-//rW   c                      	 ddl m dt        dt        ffd} | S # t        $ r" 	 ddlm}  Y | S # t        $ r ddlm}  Y Y | S w xY ww xY w)Nr   r   rp   rL   c                     t        |       S r   r   r   s    rU   r   z4_lazy_load_cudf_is_cat.<locals>.is_categorical_dtype  s    e%566rW   r   )cudfr   r   r   re   cudf.api.typesr   cudf.utils.dtypes)r   r   s    @rU   _lazy_load_cudf_is_catr    sa    
?)	7 	7 	7    ?	?;    	?>	??s#    	A0AAAAc                      ddl m}  | S )Nr   r   )r  r   r  s    rU   _lazy_load_cudf_is_boolr    s    ,rW   c                   f     e Zd ZdZdeedef      dee   ddf fdZ	e
deeef   fd       Z xZS )	CudfTransformedz/A storage class for transformed cuDF dataframe.r   r!  r9  rL   Nc                     || _         g g dt        dd ffd}| j                   D ]
  } ||        t        |   |       y )Nr  rL   c                     t        |       rM| j                  | j                  }}t        ||      \  }}}j	                  |       j	                  ||f       y t        |       }j	                  |       y r   )r   r>  r?  r   r   r   )	r  rs  r?  	cats_ainf
codes_ainfrE  ainfr<  r=  s	          rU   ru  z-CudfTransformed.__init__.<locals>.push_series  se    #!nnciie-9$-F*	:s!((-i45 15T"rW   r;  )r   r   r@  rA  )rB  r   r9  ru  r5  r<  r=  rG  s        @@rU   rA  zCudfTransformed.__init__  sf    
  		#S 		#T 		# << 	C	 	)/ 	 	
rW   c                     t        | j                  d         r'| j                  d   j                  j                  d   }n| j                  d   j                  d   }|t	        | j                        fS rI  )r   r   r?  rY   r\   rJ  s     rU   rY   zCudfTransformed.shape  s^     dll1o&Q--33A6IQ--a0I#dll+++rW   )rL  rM  rN  rO  r   r   r   r   r   rA  rP  r
   r~   rY   rQ  rR  s   @rU   r  r    s_    9
eJ567
 !,
 
	
@ ,uS#X , ,rW   r  c                 z   t               }t               t        |       r? || j                        r| j	                  t
        j                        } | j                  g}nJ| j	                  | j                  d      D ci c]  }|t
        j                   c}      } | j                  }t        fd|D              st        |        |t        |       r| j                  g}nt        | j                  dd      rB| j                  D cg c]*  }dj                  |D cg c]  }t        |       c}      , }}}n(t!        | j                  j#                  t                    }t%        |      \  }}	|Kg }|D ]D  }
 |
      rr|j'                  t(               #|j'                  t*        |
j                            F g }t        |       rS | j                        rr|j'                  | j,                         nrt/        t0              |j'                  |        n{t3        | j                  | j                        D ]X  \  }}
| |   } |
      rr|j'                  |j,                         1 |
      rt/        t0              |j'                  |       Z t5        ||	      ||fS c c}w c c}w c c}}w )Nr   )includec              3   ^   K   | ]$  }|j                   t        v xs  |      xr  & y wr   )r   r   ).0rp   r   r   s     rU   	<genexpr>z%_transform_cudf_df.<locals>.<genexpr>.  s?        	

** 	@ '>,>	@s   *-zcudf.core.multiindexr   r   rT  )r  r  r.   rp   rc  rN   r   select_dtypesr   allr   r   r;   r   r   rR   r   r   r   r   r   r   r#  r]   r   r2  r  )rJ   rv   rw   r   r   r   r5  r   r   r9  rp   r4  seriesr   s      `         @rU   _transform_cudf_dfr    sO    ,-M13D$;;rxx(D**{{&*&8&8&8&HIsS"((]I
    
 	!& !YYKMT\\+A<PDHLLQqSXXq&9!s1v&9:QMQ !1!1#!67M %7}$E!M> 	GE#E*/A$$U+$$%9%**%EF		G FD

+0BMM$((#_--MM$dllDKK8 	&JC#YF#E*/Afjj)%e, 11f%	& 	~> e J  ':Qs    J-J7 J22	J72J7c           	          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        ||      t        j                  |                   |||fS )N)ru   rK   )	r  rz   r{   r@   r<   XGDMatrixCreateFromCudaColumnarr   rC   r   )rJ   rK   ru   rv   rw   r   r`  r   s           rU   _from_cudf_dfr  c  st     (:m],>($B} __F,, 9LL 	
 =-//rW   c                     dd l }t        | d      st        | d      r|j                  | d      } t        |       s| j                  |j
                  fv r| j                  |j                  d      } | S )Nr   __cuda_array_interface__	__array__F)r   )cupyr[   r   r   rp   r  rc  r   )rJ   r  s     rU   _transform_cupy_arrayr  z  s_    434{9Szz$Uz+t

tzzl :{{4<<e{4KrW   c           	      
   t        |       } t        |       }t        j                         }t	        t        j                  ||d      d      }t        t        j                  ||t        j                  |                   |||fS )z%Initialize DMatrix from cupy ndarray.)rK   ru   zutf-8)r  r   rz   r{   bytesjsondumpsr@   r<   %XGDMatrixCreateFromCudaArrayInterfacer   )rJ   rK   ru   rv   rw   interface_strr   configs           rU   _from_cupy_arrayr    ss     !&D(.M__F4::'gFGQF2266<<#7	

 =-//rW   c                 ~    	 dd l }t        | |j                  j                  j
                        S # t        $ r Y yw xY wNr   F)cupyxre   rd   scipysparserb   rJ   r  s     rU   _is_cupy_csrr    =     dEKK..99::     0 	<<c                 ~    	 dd l }t        | |j                  j                  j
                        S # t        $ r Y yw xY wr  )r  re   rd   r  r  rm   r  s     rU   _is_cupy_cscr    r  r  c                 L    dt        t        |             v xr dt        |       v S )N	PyCapsuledltensor)rR   rS   r^   s    rU   
_is_dlpackr    s#    #d4j/)EjCI.EErW   c                 @    ddl m} dt        |       vsJ  ||       } | S )Nr   )from_dlpackused_dltensor)r  r  rR   )rJ   r  s     rU   _transform_dlpackr    s&     #d)+++tDKrW   c                 6    t        |       } t        | ||||      S r   )r  r  rf  s        rU   _from_dlpackr    s!     T"DD'7M=QQrW   c                 B    t        | t        t        j                  f      S r   )rd   rR   osr(   r^   s    rU   _is_urir    s    dS"++.//rW   c                 R   t        | |       t        j                         }t        j                  t        j
                  j                  |             } t        t        |       t        |            }t        t        j                  |t        j                  |                   |||fS )N)urirt   )rV   rz   r{   r  fspathpath
expanduserrC   rR   r~   r@   r<   XGDMatrixCreateFromURIr   )rJ   rK   rv   rw   rt   r   r  s          rU   	_from_urir    sw     w'__F99RWW''-.DSYO8LMF++FFLL4HIJ=-//rW   c                 "    t        | t              S r   )rd   r   r^   s    rU   _is_listr    s    dD!!rW   c                 d    t        j                  |       }t        |        t        ||||||      S )NrJ   rK   ru   rv   rw   rt   )rN   r   r_   r   )rJ   rK   r  rv   rw   rt   r   s          rU   
_from_listr    s8     HHTNEd##' rW   c                 "    t        | t              S r   )rd   tupler^   s    rU   	_is_tupler    s    dE""rW   c                 $    t        | |||||      S )NrJ   rK   r  rv   rw   rt   )r  r  s         rU   _from_tupler    s#     ##' rW   c                 "    t        | t              S r   )rd   r=   r^   s    rU   _is_iterr    s    dH%%rW   c                     t        | d      S )Nr  r   r^   s    rU   _has_array_protocolr    s    4%%rW   c                     t        j                  dt        |        dt               	 dd l}	 |j                  j                  |       } | S # t
        $ r Y y w xY w# t        $ r Y y w xY w)NzUnknown data type: z$, trying to convert it to csr_matrixr   )	rP   rQ   rS   rT   rc   re   r  rb   	Exception)rJ   r  s     rU   _convert_unknown_datar  
  sq    MM
d4j\)MN||&&t, K  
  s"   A A 	AA	A&%A&F)r   rt   threadsc           	      2   dt         t        t        t        f      dt        t         t              fd}t        |       s!t        |       st        |       st        |        t        |       r ||      sJ t        | |||||      S t        |       r ||      sJ t        | |||||      S t        |       r) ||      sJ t        | j                         |||||      S t        |       r ||      sJ t!        | |||||      S t#        |       r ||      sJ t%        | ||||      S t'        |       r ||      sJ t)        | |||||      S t+        |       r ||      sJ t-        | |||||      S t        |       r't/               }|j1                  | j2                  | i      } t5        |       rt7        | ||||||      S t9        |       rt;        | ||||||      S t=        |       r| j>                  } t        |       rtA               }	|	j1                  |       } tC        |       rtE        | ||||||      S tG        |       st        |       rtI        | |||||      S tK        |       r ||      sJ tM        | ||||      S tO        |       rtQ        d	      tS        |       rtQ        d
      tU        |       r ||      sJ tW        | ||||      S tY        |       rtA               }	|	j1                  |       } t[        |       rtE        | |||||      S t]        |       r/ ||      sJ t_        j`                  |       }
t!        |
||||      S tc        |       }| ||      sJ t        |||||      S tQ        dte        tg        |             z         )zDispatch data for DMatrix.rw   rL   c                 :    t        | t              rt        d      y)Nz9Reference category is only supported by DataFrame inputs.T)rd   r   r]   )rw   s    rU   
check_catsz)dispatch_data_backend.<locals>.check_cats(  s#     mZ0K  rW   r  r  )rK   r  rv   rw   rt   )rJ   r   rK   ru   rv   rw   rt   )rJ   rK   ru   rv   rw   r   zcupyx CSR is not supported yet.zcupyx CSC is not supported yet.)rJ   r   rK   ru   rv   rw   rf  zNot supported type for data.)4r   r   r$   r   r   r.   r3   r6   r_   rh   r   r   r   r   tocsrr   r   r  r  r  r  r  r  r8   rD   r   r4   r  r+   r  r-   _fsproxy_fastr7   r2   ra  r,   r  r/   r  r  rr  r  r  r  r1   r0   r  rN   r   r  rR   rS   )rJ   rK   r  rv   rw   r   rt   r  plr   r   	converteds               rU   dispatch_data_backendr    s(   lJ&> ?@	8L)	* !$'!$'$D-(((''+
 	
 D-(((''+
 	
 D-(((''+
 	
 -((( ''+
 	
 t}-(((w}oVV~-(((''+
 	
 -(((''+
 	
 _||TYY-.$''+
 	
  ''+
 	
 t!!_||D!T1''+
 	
 4L.''1
 	
 d-(((gw}UUD9::D9::$-(((D'7M=QQ_||D!D1''
 	
 4 -(((

4  ''
 	
 &d+I-(((''
 	
 2Sd_D
EErW   c                 |   t        | d      rd| j                   d| }|t        v r$t        | j                        dkD  rt	        |      y t        | j                        dkD  s<t        | j                        dk(  rA| j                  d   dk7  r.| j                  d   dk7  rt	        d| j                   d|       y y y y )NrY   zInvalid shape: z for rZ   r   r   )r[   rY   rU  r\   r]   )rJ   r   r   s      rU   _validate_meta_shaper    s    tW

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

Oq djjmq&8TZZ]a=Otzzl%vFGG >P&8  rW   fieldc                     t        | |      \  } }| j                  }|j                  dd       t        d      t	        |       }t        t        j                  |t        |      |             y )NmaskzMasked array is not supported.)	r   r   getr]   r   r@   r<   XGDMatrixSetInfoFromInterfacerB   )rJ   r  rp   r   	interfacer  s         rU   r[  r[    sa     #4/KD%((I}}VT".9::#D)M2265<WXrW   c                 J    t        j                  |       }t        ||||       y r   )rN   r   r[  )rJ   r  rp   r   data_nps        rU   _meta_from_listr
    s     hhtnGWeUF3rW   c                     t        | |||      S r   )r
  )rJ   r  rp   r   s       rU   _meta_from_tupler    s     4v66rW   c                     |t         vrt        | j                  d d df   ||       y | j                  } t	        |       }t        t        j                  |t        |      |             y Nr   )	rU  _meta_from_cudf_seriesilocrr   r   r@   r<   r  rB   )rJ   r  r   r  s       rU   _meta_from_cudf_dfr    sP    L tyyAv>{{(.	D66vuU|YWXrW   c                     t        | |       t        |       }t        t        j                  |t        |      |             y r   )r   r   r@   r<   r  rB   rJ   r  r   rF  s       rU   r  r  
  s1    D% 
t
$C2265<MNrW   c                     t        |       } t        |       }t        t        j                  |t        |      |             y r   )r  r   r@   r<   r  rB   r  s       rU   _meta_from_cupy_arrayr    s1     &D
t
$C2265<MNrW   matrixc                    | j                   }|J t        ||       |yt        |      rt        ||||       yt	        |      rt        ||||       yt        |      rt        ||||       yt        |      rt        ||||       yt        |      r|j                  }t        |      rBt        |      r|j                         }t                t        |j!                         |||       yt#        |      rt%        ||||       yt'        |      rt)        ||||       yt+        |      rt-        |      }t/        |||       yt1        |      rt3        |||       yt5        |      rt7        |||       yt9        |      rt/        |||       yt;        |      rt%        ||||       yt=        |      rh|j>                  jA                  d      }tC        |jD                        dk(  s&|jD                  d   dk(  s|jD                  d   dk(  sJ t        ||||       ytG        |      r$tI        jJ                  |      }t        ||||       ytM        d|z   tO        tQ        |                  )zDispatch for meta info.N)rp   r   r}   r   r   zUnsupported type for ))r   r  r  r
  r  r  r   r[  r+   r  r-   r  r4   r5   r  r  r  r2   r\  r3   rd  r  r  r  r.   r  r,   r  r/   r0   r1   rr   rc  r\   rY   r  rN   r   rr  rR   rS   )r  rJ   r   rp   r   r   s         rU   dispatch_meta_backendr    s+    ]]Ft$|~dE62tUF3tUF3tT5&9t!!$%<<>D!#t}}eVDTT4uVD tUF;$ &dD&1DtT6244v.ddD&1DT4uVD{{!!'*4::!#tzz!}'9TZZ]a=OOOtUF34 

4 eV4
+d2CT
O
DDrW   c                   D     e Zd ZdZdeddf fdZdedefdZd	dZ	 xZ
S )
SingleBatchInternalIterzAn 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.

    kwargsrL   Nc                 B    || _         d| _        t        |   d       y )Nr   F)release_data)r  itr@  rA  )rB  r  rG  s     rU   rA  z SingleBatchInternalIter.__init__^  s#     	e,rW   
input_datac                 r    | j                   dk(  ry| xj                   dz  c_          |di | j                   y)Nr   FTr  )r  r  )rB  r  s     rU   nextzSingleBatchInternalIter.nextf  s/    77a<1!T[[!rW   c                     d| _         y r  )r  rw  s    rU   resetzSingleBatchInternalIter.resetm  s	    rW   rL   N)rL  rM  rN  rO  r   rA  r   r   r!  r#  rQ  rR  s   @rU   r  r  V  s3    - - -x D rW   r  c                    t        |       r| j                  } t        |       st        |       rt	        | |||      S t        |       rt        |       } | ||fS t        |       rt        |       ||fS t        |       st        |       rt        j                  |       } t        |       rt        | | j                        \  } }| ||fS t!        |       rt#        | d      } | ||fS t%        |       rt#        | j'                         d      } | ||fS t)        |       rt#        | j'                         d      } | ||fS t+        |       rt-        | |||      \  }}}|||fS t/        |       rt1               }|j3                  |       } t5        |       rt7        | |||      \  }}}|||fS t9        |       rt;        | |||      \  }}}|||fS t=        dt?        tA        |             z         )NT.Value type is not supported for data iterator:)!r-   r  r,   r.   r  r/   r  r  r  r  r  rN   r   r   r   rp   rh   rs   r   r  r   r4   r  r3   r7   rD   r+   r  r2   rW  rr  rR   rS   )	rJ   rv   rw   r   rq   df_plr   df_par`  s	            rU   _proxy_transformr)  q  s    t!!4L.!-0B
 	
 d$T*]M11$ &}DD~4xx~"44a]M11D%dD1]M11D%djjlD9]M11D%djjlD9]M11$.B$m]/
+}m m]22_||D!.D$m]/
+}m m]22T+?$m],
(M= =-//
Ds4PT:V
WWrW   c                 ^     t         fdt        t        t        t        t
        fD              S )z0Whether the data is a CUDA-based data structure.c              3   .   K   | ]  } |        y wr   r  )r  prJ   s     rU   r  zis_on_cuda.<locals>.<genexpr>  s      	 	
$	s   )anyr,   r.   r-   r/   r  r^   s   `rU   
is_on_cudar.    s0     	 
	 	 	rW   proxyc                 F   t        |      s!t        |      st        |      st        |       t	        |t
              r| j                  |       yt        |      r| j                  |       yt        |      rt        |      }| j                  |       yt	        |t        t        f      r| j                  |       yt        |      rt        |       | j                  |       yt!        |      r| j#                  |       yt%        dt'        t)        |            z         }|)zDispatch for QuantileDMatrix.Nr&  )r.   r3   r6   r_   rd   r  _ref_data_from_cuda_columnarr/   _ref_data_from_cuda_interfacer  r  rj  r8  _ref_data_from_columnarr   _ref_data_from_arrayrh   _ref_data_from_csrrr  rR   rS   )r/  rJ   r   s      rU   dispatch_proxy_set_datar6    s     !$'!$'$$(**40d++D1$ &++D1$)+<=>%%d+$""4(D  &
Ds4PT:V
WC
IrW   )NNNr$  r   )rO  rz   	functoolsr  r  rP   typingr   r   r   r   r   r   r	   r
   r   r   r   numpyrN   _data_utilsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    _typingr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   compatr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   corer<   r=   r>   r?   r@   rA   rB   rC   r  r  r   rD   r   rE   r!  r{   rF   __annotations__r   rU  rV   r_   r   rh   rs   ROWr~   r   r   r   r   r1  r   r   r   r   r   pandas_pyarrow_mapperupdater   r   rR   r   r   r   r   cacher   r   r  r   r  r  r  r  r6  r8  rW  r\  ra  rd  rh  rj  r  r  r  ry  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  r  r  r[  r
  r  r  r  r  r  r  r)  r.  r6  r  rW   rU   <module>rC     s_   $    	         (      &	 	 	 /) .3
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
( 
8J+? 
BJJ 
( &3%6%60
**0 0 	0
 L)0 L)0 #0 %08  "        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 & &C
C	%

M)
*+CL,, ,,d -1?C
 L) E,
":;<	
 3- h|4h|6LLM.1
1
1 J1 OO	1
 
10 &3%6%60
0 0 	0
 0 L)0 E,
":;<0 #0 %060
00&.z&:0DJOO0	0"
  	
  L) L) %0-7} -7` .
 . . L) . E,
":;<	 .
 Xl3Xl5KKL .T &3%6%60
00 0 	0
 L)0 E,
":;<0 #0 %02 d8S=)  *h 5cD+A (S
S
S JS OO	S
 
S?

 L) E,
":;<	
 Xl3Xl5KKL< &3%6%60
00 0 	0
 L)0 E,
":;<0 #0 %02  # 5      3%+!6  *,m *,ZJ
JL)J E,
":;<J 	J
 \\JZ0
0 0 	0
 L)0 E,
":;<0 0 %0. 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yF
yF yF 	yF
 L)yF E,
":;<yF yF #yF %yFx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S T $$
$ 
$rW   