
    ^j                     d   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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZI erddlJZKdd	lLmMZN dd
lLmOZP ddlQmRZRmSZS eej                  ee0   ee1   f   ZUeeVd<   dZWddhZXde/dee2   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]e.j                  dde/de2de_dee0   dee1   de.deUfdZ`de/de[fdZae.j                  dde/de2de_dee0   dee1   de.deUfdZbde/de[fd Zcde/deej                     fd!Zede/d"ee3   dej                  fd#Zfe.j                  ddej                  de2de_dee0   dee1   de.d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e0   dee1   d/e[deee0   ee1   f   fd0Zod"e4de[fd1Zpd"ede[fd2Zqd"ede[fd3Zrej                  de	e4ge[f   fd4       Ztd"e4de[fd5Zuej                  de	e4ge[f   fd6       Zvd"e4de[fd7Zwd8edej                  fd9Zxej                  de[fd:       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e0   deee1ef      d.een   dee}ee0   ee1   f   fd?Z~de/d@end"ee3   dAej                  ddf
dBZdd-de.ddfdCZe.j                  ddd-d/e[de2de_dee0   deee1ef      de.deUfdDZde/d@end"ee3   dAej                  ddf
dEZde/de2de_d/e[dee0   dee1   deUfdFZ G dG dHe      ZddId/e[dee0   deee1ef      deeee0   ee1   f   f
dJZe.j                  fde/d/e[de2dKe_dee0   deee1ef      de.deUfdLZej                  de
e/enf   fdM       Zde/deeen   ef   fdNZde/d@end"ee3   dAej                  ddf
dOZd~dPZde/ddfdQZde/d/e[dee0   deee1ef      deeee0   ee1   f   f
dRZe.j                  fde/d/e[de2dKe_dee0   deee1ef      de.deUfdSZej                  de	ege[f   fdT       Zej                  de	ege[f   fdU       Z G dV dWe      Zde/dee0   deee1ef      d/e[deeee0   ee1   f   f
dXZde/de2de_dee0   deee1ef      d/e[deUfdYZde/de-fdZZde/de2de_dee0   dee1   deUfd[Zde/de[fd\Zde/de[fd]Zde/de[fd^Zde/de[fd_Zde/de2de_dee0   dee1   deUfd`Zde/dee5   fdaZe.j                  fde5dee2   dee0   dee1   de.deUfdbZde/dee   fdcZe.j                  ddede2dKe_dee0   dee1   de.deUfddZde/deez   fdeZe.j                  ddede2dKe_dee0   dee1   de.deUfdfZde/de[fdgZde/de/fdhZdie.j                  djde/de2dke_dee0   deee1ef      d/e[de.deUfdlZde/d@enddfdmZdej                  dnend"ee3   dAej                  ddf
doZdednend"ee3   dAej                  ddf
dpZdednend"ee3   dAej                  ddf
dqZde/dnendAej                  ddfdrZde/dnendAej                  ddfdsZde/dnendAej                  ddfdtZ	 ddudvde/d@end"ee3   ddf
dwZde/dee0   dee1   d/e[de6f
dxZdede[fdyZdzd{de/ddfd|Zy)zData dispatching for DMatrix.    N)TYPE_CHECKINGAnyCallableDictListOptionalSequenceTuple	TypeAlias	TypeGuardUnion   )_LIB_check_callc_strmake_jcargs)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DataSplitMode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)	DataFrame)Series)DMatrix_ProxyDMatrix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)rI   rJ   s     W/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/data.py_warn_unused_missingrU   b   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lenrX   
ValueErrorrI   s    rT   _check_data_shaper^   j   s/    tW#djj/Q"6STT #7rV   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.sparser`   
isinstanceImportErrorra   )rI   is_array	is_matrixr`   ra   s        rT   is_scipy_csrrg   o   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_matrixra   zlength mismatch: z vs )rX   )rb   rl   ra   r[   indicesrI   r\   r   indptrdtyperX   )rI   rj   rl   ra   rn   _rm   valuess           rT   transform_scipy_sparserr      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KrV   )data_split_modenthreadfeature_namesfeature_typesrs   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   rJ   rt   rs   )ctypesc_void_prr   r   r   XGDMatrixCreateFromCSRr   rn   rm   rI   r/   rX   r   floatintbyrefrI   rJ   rt   ru   rv   rs   handles          rT   _from_scipy_csrr      s     __F!$-D##DKK(DLL)DII&

1&gG #O 4
 LL 	
 =-//rV   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)rl   )rb   r   rc   rd   rl   )rI   re   rf   r   rl   s        rT   is_scipy_cscr      rh   ri   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   rx   )ry   rz   rr   r   r   XGDMatrixCreateFromCSCr   rn   rm   rI   r/   rX   r   r|   r}   r~   r   s          rT   _from_scipy_cscr      s     __F4'##DKK(DLL)DII&

1&gG #O 4
 LL 	
 =-//rV   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)rb   r   rc   rd   r   )rI   re   rf   r   r   s        rT   is_scipy_coor      rh   ri   c                     t        | d      S )N__array_interface__rZ   r]   s    rT   _is_np_array_liker      s    4.//rV   ro   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)copyro   ro   )flagsc_contiguousrM   arrayasarrayAttributeErrorr   )rI   ro   s     rT   _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.rx   )r^   r   ro   ry   rz   r   r   XGDMatrixCreateFromDenser   r   r|   r}   r~   )rI   rJ   rt   ru   rv   rs   rp   r   s           rT   _from_numpy_arrayr     s     dtTZZ0GD!__F%%D!gG #O 4
 LL 	

 =-//rV   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. )	rZ   r   	enumeratename_pandas_dtype_mappercolumnsjoin_ENABLE_CAT_ERRr\   )rI   r   ro   
bad_fieldserrtype_errmsgs          rT   _invalid_dataframe_dtyper   `  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)r<   rc   r   
MultiIndexr   rQ   listmapr   is_pd_sparse_dtypeappendr   subtyper   rO   rP   is_pd_cat_dtypeis_pa_ext_categorical_dtypeCAT_TKeyErrorr   )rI   r   ru   rv   r   pdr   xnew_feature_typesneed_sparse_extension_warnro   s              rT   pandas_feature_infor   r  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   rc   pandas.api.typesr   r   r   r   pandas_nullable_mapperr   )ro   r   r   r   r   is_intis_boolis_floats           rT   is_nullable_dtyper     s~     5e^,PPe$M7M)MFE">uzzY'>Ge$M7M)MHBWBBOE,BBrV   c                     t        | d      S )z;Return whether dtype is a pyarrow extension type for pandaspyarrow_dtyper   r   s    rT   is_pa_ext_dtyper     s    5/**rV   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    rT   r   r     s     -}>N rV   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   CategoricalDtypero   rK   c                     t        |       S Nrc   ro   r   s    rT   pd_is_cat_210z+_lazy_load_pd_is_cat.<locals>.pd_is_cat_210  s    !%)9::rV   is_categorical_dtype)r<   rZ   utilr   r   __version__pandasr   r,   r   r   r   )r   r   r   r   r   s       @rT   _lazy_load_pd_is_catr     sy    	Brww	"wrww	'J''//))2>>"gg&66/;[ ;T ; ! 5rV   c                 &    t               } ||       S )z)Wrapper for testing pandas category type.)r   )ro   is_cats     rT   r   r     s    !#F%=rV   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   )SparseDtypero   rK   c                     t        |       S r   r   )ro   r   s    rT   pd_is_sparse_210z1_lazy_load_pd_is_sparse.<locals>.pd_is_sparse_210  s    !%55rV   )	is_sparse)r<   rZ   r   r   r   r   r   r   r,   r   r   r   )r   r   r   r   r   s       @rT   _lazy_load_pd_is_sparser    sy    	Brww	"wrww	'J''//))2>>"gg&66*6 6 6 $#*rV   c                 &    t               } ||       S )z'Wrapper for testing pandas sparse type.)r  )ro   r   s     rT   r   r     s    ')IUrV   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)r<   r   pyarrowr>   r   __arrow_array__combine_chunks
null_counttypes
is_booleanrR   to_numpyr   ro   )	r  r   pad_arrayaachunk	zero_copyarrrp   s	            rT   pandas_pa_typer    s    	B
 .1YYG $335B))+E  A%Mbhh.A.A%**.M*MI nnInNCc399-FCJrV   c                      t         j                  j                  t         j                        t         j                  j                  d      kD  S )Nz1.25.0)rM   libNumpyVersionr    rV   rT   _lazy_has_npdtypesr  
  s/    66r~~.1D1DX1NNNrV   c                      ddl m} m} | |fS )Nr   Float32DtypeFloat64Dtype)r   r  r  r  s     rT   _lazy_load_pd_floatsr    s    1%%rV   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  PdSeriesrK   c                     | j                   S r   )cat)r  s    rT   	cat_codesz(pandas_transform_data.<locals>.cat_codes  s    wwrV   c                     t              rt        j                  }n-t              rt        j                  }nt        j                  }t	        | j                  |t        j                        |      d   S N)ro   na_valuer   )rc   rM   r   r   r   r  nan)r  	res_dtyper  r  ro   s     rT   nu_typez&pandas_transform_data.<locals>.nu_type"  s]    e\*$&JJI|,

I

ILLy266L:I

 	rV   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%  )rc   ro   rM   r   Float32DTypeFloat64DTyper   r   r  r'  r   )r  npdtypesr   ro   	np_dtypess      rT   oth_typez'pandas_transform_data.<locals>.oth_type.  s     
II 		&&		&&	"
 uRZZ 88LLNE LLrzzBFFLCEu{{3A66rV   zFpyarrow dictionary type is not supported. Use pandas category instead.)r  r  r   rM   ndarrayzipr   r   r   r\   r   r   r   r  r   r   rq   to_denser   r   ro   )rI   resultr#  r)  r/  colr  rp   r  r  ro   r.  s           @@@@rT   pandas_transform_datar5    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-.%/. MrV   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_categoriesrK   Nc                 z   || _         g }g }| j                   D ]  }t        |      rIt        |j                  |j                        \  }}}|j                  |       |j                  ||f       Wt        |t        j                        sJ t        |      }	|j                  |	        t        
| -  |||       y )Nr8  aitfstemporary_buffers)r   r   r$   
categoriescodesr   rc   rM   r0  r   super__init__)selfr   r8  r;  r<  r4  jnamesjcodesbufinf	__class__s             rT   r@  zPandasTransformed.__init___  s    
  << 
	"C#&0&K#!((-ff-.!#rzz222*3/S!
	" 	)/ 	 	
rV   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[   rm   r   r>  rX   rA  	n_sampless     rT   rX   zPandasTransformed.shape|  s     a)DLLO334IQ(Q--33A6I Q--a0I#dll+++rV   )__name__
__module____qualname____doc__r   r   rM   r0  r   r   r   r@  propertyr
   r}   rX   __classcell__rF  s   @rT   r7  r7  \  sb    ;
eBJJ567
 !,
 
	
: ,uS#X , ,rV   r7  c                    |r/t        | j                        dkD  r|t        vrt        d| d      | j                  j                  rQ| j                  | j                  j                            j                         j                         }t        d|       t        |      \  }}t        | ||||      \  }}t        |       }t        ||      ||fS )Nr   zDataFrame for z cannot have multiple columnsz<Duplicate column names are not supported. Duplicates found: r8  )r[   r   _matrix_metar\   has_duplicates
duplicateduniquetolistr"   r   r5  r7  )rI   r   ru   rv   r   
duplicatesr8  arrayss           rT   _transform_pandas_dfr[    s     DLL!A%$l*B>$/LMNN||""\\$,,"9"9";<CCELLN
J:,W
 	
 %7}$E!M>#6dM=2D$ M= #4(F&@ rV   r   r   c                    t        | d|      \  } }}t        | j                        dk(  r| j                  d   }n)t        j                  | j                        j
                  }t        ||      \  }}t        ||||       y )NF)r   r   r   )r[  r[   r   rM   stackTr   _meta_from_numpy)rI   r   ro   r   rp   r   s         rT   _meta_from_pandas_dfr`    sl     &dE=JD!Q
4<<AQ&((#E51LE5UD%0rV   c                     |t         j                  k7  ryt        | j                  | j                        D ]  \  }}t        |      st        d       y)zDSparse pandas columns are not supported with column-wise data split.Nz2Column split does not support pandas sparse array.)r&   COLr1  r   r   r   r\   )rI   rs   rp   ro   s       rT   _reject_pd_sparse_col_splitrc    sM     -+++dkk2 S5e$QRRSrV   c           
      
   t        | |       t        | |||      \  }}}t        j                         }t	        t        j                  |j                         t        |||      t        j                  |                   |||fS N)rt   rJ   rs   )
rc  r[  ry   rz   r   r   XGDMatrixCreateFromColumnarr   r   r~   )	rI   r   rJ   rt   ru   rv   rs   dfr   s	            rT   _from_pandas_dfrh    s      o6'; -($B} __F(( / LL 	
 =-//rV   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&  ro   r   r   N)r   ro   rq   r2  astyperM   r   r   r  r  r'  r   r[   rX   r_  )rI   r   ro   r   s       rT   _meta_from_pandas_seriesrk    s     $**%{{##%,,RZZ8		$d#}}RZZ"&&}9'$67}}tzz?a4::a=A#5A!9KKKT4/rV   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|   rI   rJ   rt   ru   rv   )ro   r   r   r   r   r"  r>  r   rq   reshaperX   rj  )rI   rJ   rt   r   ru   rv   s         rT   _from_pandas_seriesro    s     	

33

#(: &odjj9xx~~[[  A299'B## rV   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.DictionaryArrayr8  rK   c                     || _         t        rdd ln
t               g g dt        d   dd ffd}| j                   D ]
  } ||        t
        |   |       y )Nr   r4  rr  rK   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.)
rc   DictionaryArray
dictionaryrm   StringArrayLargeStringArray	TypeErrorr   r   r   )
r4  catsr>  rB  rC  rD  jdatar;  r  r<  s
          rT   push_seriesz.ArrowTransformed.__init__.<locals>.push_series  s    #r112~~!$9L9L(MN#U  '4D%&@#!((-ff-.(-U#rV   r:  )r   r   r  r>   r   r?  r@  )	rA  r   r8  r|  r4  r;  r  r<  rF  s	        @@@rT   r@  zArrowTransformed.__init__
  sy    
  !B	$U#JK 	$PT 	$ << 	C	 	)/ 	 	
rV   c                 \    t        | j                  d         t        | j                        fS rH  )r[   r   )rA  s    rT   rX   zArrowTransformed.shape1  s%     4<<?#S%666rV   r   )rK  rL  rM  rN  r   r   r   r   r@  rO  r
   r}   rX   rP  rQ  s   @rT   rq  rq    s`    6
 04%
eCDE%
 !,%
 
	%
N 7uS#X 7 7rV   rq  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   rS  )r   r  r>   _arrow_feature_infor"   columnr	  rc   BooleanArraycastr   r#   r   r   rq  )rI   r   ru   rv   r  t_namest_typesr8  r   cnamecol0r4  df_ts                rT   _transform_arrow_tabler  7  s     *40GW$6}$E!M>G 	{{5!>B>Q>Q>Sc2??+((72779%C&8 %T*s	 GNCD--rV   	n_threadsc           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS re  )	r  ry   rz   r   r   rf  r   r   r~   	rI   r   rJ   r  ru   rv   rs   r  r   s	            rT   _from_arrow_tabler  Z  s|     *@ -*&D- __F((  "!7O LL 	
 =-//rV   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     rT   _arrow_dtyper  s  s     		5
E
E
E
E		U		U		U

g

g

g
CG NrV   c                     t         rdd ln
t               | j                  }dt        dt        ffd}t        t        ||            }||fS )Nr   r   rK   c                     j                  |       }t        |j                  j                        rt        S t               |j                     S r   )r  rc   rR   r   r   r  )r   r4  r  tables     rT   map_typez%_arrow_feature_info.<locals>.map_type  s;    ll4 chh 1 12L~chh''rV   )r   r  r>   column_namesrQ   r   r   )rI   namesr  r  r  r  s       @@rT   r  r    sQ    EE(s (s ( Xu%&E%<rV   c                 B    | }t        |j                         |||       y )N)r   ro   r   )r`  	to_pandas)rI   r   ro   r   r  s        rT   _meta_from_arrow_tabler    s     E*U6RrV   c                  .    t               st        d      y )Nz!`pyarrow` is required for polars.)r?   rd   r  rV   rT   _check_pyarrow_for_polarsr    s    !=>> "rV   c                     t               }t        | j                  | j                        D ])  \  }}t	        ||j
                        st        d|        y )Nz}XGBoost does not support `polars.Categorical` because its encoding can be sparse. Use `polars.Enum` instead. Invalid column: )r=   r1  r   r   rc   Categoricalr\   )rI   plr   ro   s       rT   _reject_polars_categoricalr    sU    	B4<<5 eeR^^,##'&* rV   c                     t        |       r+| j                         }t        j                  dt               n| }t                t        |       |j                         }t        ||||      S )Nz}Using the default parameters for the polars `LazyFrame.collect`. Consider passing a realized `DataFrame` or `Series` instead.)	r:   collectrO   rP   rS   r  r  to_arrowr  )rI   r   ru   rv   rg  r  s         rT   _transform_polars_dfr    sc     D!\\^C	
 r"KKME!!=- rV   c           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS re  )	r  ry   rz   r   r   rf  r   r   r~   r  s	            rT   _from_polars_dfr    s{     *> -*&D- __F((  "!7O LL 	
 =-//rV   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   ro   rK   c                     t        |       S r   r   r   s    rT   r   z4_lazy_load_cudf_is_cat.<locals>.is_categorical_dtype  s    e%566rV   r   )cudfr   r   r   rd   cudf.api.typesr   cudf.utils.dtypes)r   r   s    @rT   _lazy_load_cudf_is_catr    sg    )	7 	7 	7    	    	  	s#    	A0AAAAc                      ddl m}  | S )Nr   r   )r  r   r  s    rT   _lazy_load_cudf_is_boolr    s    ,rV   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   r8  rK   Nc                     || _         g g dt        dd ffd}| j                   D ]
  } ||        t        |   |       y )Nr  rK   c                     t        |       rM| j                  | j                  }}t        ||      \  }}}j	                  |       j	                  ||f       y t        |       }j	                  |       y r   )r   r=  r>  r!   r   r    )	r  rz  r>  	cats_ainf
codes_ainfrD  ainfr;  r<  s	          rT   r|  z-CudfTransformed.__init__.<locals>.push_series  se    #!nnciie-9$-F*	:s!((-i45 15T"rV   r:  )r   r   r?  r@  )rA  r   r8  r|  r4  r;  r<  rF  s        @@rT   r@  zCudfTransformed.__init__  sf    
  		#S 		#T 		# << 	C	 	)/ 	 	
rV   c                     t        | j                  d         r'| j                  d   j                  j                  d   }n| j                  d   j                  d   }|t	        | j                        fS rH  )r   r   r>  rX   r[   rI  s     rT   rX   zCudfTransformed.shape(  s^     dll1o&Q--33A6IQ--a0I#dll+++rV   )rK  rL  rM  rN  r   r   r   r   r   r@  rO  r
   r}   rX   rP  rQ  s   @rT   r  r    s_    9
eJ567
 !,
 
	
@ ,uS#X , ,rV   r  c                    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        |       re | j                        rr|j'                  | j,                         n | j                        rs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   ).0ro   r   r   s     rT   	<genexpr>z%_transform_cudf_df.<locals>.<genexpr>J  s?        	

** 	@ '>,>	@s   *-zcudf.core.multiindexr   r   rS  )r  r  r3   ro   rj  rM   r   select_dtypesr   allr   r   r@   r   r   rQ   r   r   r"   r   r   r   r"  r\   r   r1  r  )rI   ru   rv   r   r   r   r4  r   r   r8  ro   r3  seriesr   s      `         @rT   _transform_cudf_dfr  2  s[    ,-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$((#!$**-6H_--MM$dllDKK8 	&JC#YF#E*/Afjj)%e, 11f%	& 	~> e J  ':Qs    J?K	 K2	K	K	c           	          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        ||      t        j                  |                   |||fS )N)rt   rJ   )	r  ry   rz   r   r   XGDMatrixCreateFromCudaColumnarr   r   r~   )rI   rJ   rt   ru   rv   r   rg  r   s           rT   _from_cudf_dfr    st     (:m],>($B} __F,, 9LL 	
 =-//rV   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   )cupyrZ   r   r   ro   r  rj  r   )rI   r  s     rT   _transform_cupy_arrayr    s_    434{9Szz$Uz+t

tzzl :{{4<<e{4KrV   c           	      
   t        |       } t        |       }t        j                         }t	        t        j                  ||d      d      }t        t        j                  ||t        j                  |                   |||fS )z%Initialize DMatrix from cupy ndarray.)rJ   rt   zutf-8)r  r   ry   rz   bytesjsondumpsr   r   %XGDMatrixCreateFromCudaArrayInterfacer~   )rI   rJ   rt   ru   rv   interface_strr   configs           rT   _from_cupy_arrayr    ss     !&D(.M__F4::'gFGQF2266<<#7	

 =-//rV   c                 ~    	 dd l }t        | |j                  j                  j
                        S # t        $ r Y yw xY wNr   F)cupyxrd   rc   scipysparsera   rI   r  s     rT   _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  rd   rc   r  r  rl   r  s     rT   _is_cupy_cscr    r  r  c                 L    dt        t        |             v xr dt        |       v S )N	PyCapsuledltensor)rQ   rR   r]   s    rT   
_is_dlpackr    s#    #d4j/)EjCI.EErV   c                 @    ddl m} dt        |       vsJ  ||       } | S )Nr   )from_dlpackused_dltensor)r  r  rQ   )rI   r  s     rT   _transform_dlpackr    s&     #d)+++tDKrV   c                 6    t        |       } t        | ||||      S r   )r  r  rm  s        rT   _from_dlpackr    s!     T"DD'7M=QQrV   c                 B    t        | t        t        j                  f      S r   )rc   rQ   osr-   r]   s    rT   _is_urir    s    dS"++.//rV   c                 R   t        | |       t        j                         }t        j                  t        j
                  j                  |             } t        t        |       t        |            }t        t        j                  |t        j                  |                   |||fS )N)urirs   )rU   ry   rz   r  fspathpath
expanduserr   rQ   r}   r   r   XGDMatrixCreateFromURIr~   )rI   rJ   ru   rv   rs   r   r  s          rT   	_from_urir    sw     w'__F99RWW''-.DSYO8LMF++FFLL4HIJ=-//rV   c                 "    t        | t              S r   )rc   r   r]   s    rT   _is_listr    s    dD!!rV   c                 d    t        j                  |       }t        |        t        ||||||      S )NrI   rJ   rt   ru   rv   rs   )rM   r   r^   r   )rI   rJ   r  ru   rv   rs   r   s          rT   
_from_listr    s8     HHTNEd##' rV   c                 "    t        | t              S r   )rc   tupler]   s    rT   	_is_tupler    s    dE""rV   c                 $    t        | |||||      S )NrI   rJ   r  ru   rv   rs   )r  r  s         rT   _from_tupler    s#     ##' rV   c                     t        | d      S )Nr  r   r]   s    rT   _has_array_protocolr    s    4%%rV   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   )	rO   rP   rR   rS   rb   rd   r  ra   	Exception)rI   r  s     rT   _convert_unknown_datar  "  sq    MM
d4j\)MN||&&t, K  
  s"   A A 	AA	A&%A&F)r   rs   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.rv   rK   c                 :    t        | t              rt        d      y)Nz9Reference category is only supported by DataFrame inputs.T)rc   r   r\   )rv   s    rT   
check_catsz)dispatch_data_backend.<locals>.check_cats@  s#     mZ0K  rV   r  r  )rJ   r  ru   rv   rs   )rI   r   rJ   rt   ru   rv   rs   )rI   rJ   rt   ru   rv   r   zcupyx CSR is not supported yet.zcupyx CSC is not supported yet.)rI   r   rJ   rt   ru   rv   rm  zNot supported type for data.)4r   r   r)   r   r   r3   r8   r;   r^   rg   r   r   r   r   tocsrr   r   r  r  r  r  r  r  r=   rA   r   r9   r  r0   r  r2   _fsproxy_fastr<   r7   rh  r1   r  r4   r  r  ry  r  r  r  r6   r5   r  rM   r   r  rQ   rR   )rI   rJ   r  ru   rv   r   rs   r  r  r   r   	converteds               rT   dispatch_data_backendr  4  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ErV   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 )NrX   zInvalid shape: z for rY   r   r   )rZ   rX   rT  r[   r\   )rI   r   r   s      rT   _validate_meta_shaper    s    tW

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

Oq djjmq&8TZZ]a=Otzzl%vFGG >P&8  rV   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   XGDMatrixSetInfoFromInterfacer   )rI   r	  ro   r   	interfacer  s         rT   r_  r_    sa     #4/KD%((I}}VT".9::#D)M2265<WXrV   c                 J    t        j                  |       }t        ||||       y r   )rM   r   r_  )rI   r	  ro   r   data_nps        rT   _meta_from_listr    s     hhtnGWeUF3rV   c                     t        | |||      S r   )r  )rI   r	  ro   r   s       rT   _meta_from_tupler    s     4v66rV   c                     |t         vrt        | j                  d d df   ||       y | j                  } t	        |       }t        t        j                  |t        |      |             y )Nr   )	rT  _meta_from_cudf_seriesilocrq   r   r   r   r  r   )rI   r	  r   r  s       rT   _meta_from_cudf_dfr    sP    L tyyAv>{{(.	D66vuU|YWXrV   c                     t        | |       t        |       }t        t        j                  |t        |      |             y r   )r   r   r   r   r  r   rI   r	  r   rE  s       rT   r  r  "  s1    D% 
t
$C2265<MNrV   c                     t        |       } t        |       }t        t        j                  |t        |      |             y r   )r  r   r   r   r  r   r  s       rT   _meta_from_cupy_arrayr  (  s1     &D
t
$C2265<MNrV   matrixrC   c                    | 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)ro   r   r|   r   r   zUnsupported type for ))r   r  r  r  r  r  r   r_  r0   r  r2   r  r9   r:   r  r  r  r7   r`  r8   rk  r  r  r  r3   r  r1   r  r4   r5   r6   rq   rj  r[   rX   r  rM   r   ry  rQ   rR   )r  rI   r   ro   r   r   s         rT   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DrV   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:)!r2   r  r1   r3   r  r4   r  r  r  r  r  rM   r   r   r   ro   rg   rr   r   r  r   r9   r  r8   r<   rA   r0   r  r7   r[  ry  rQ   rR   )	rI   ru   rv   r   rp   df_plr   df_parg  s	            rT   _proxy_transformr#  n  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WrV   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  prI   s     rT   r  zis_on_cuda.<locals>.<genexpr>  s      	 	
$	s   )anyr1   r3   r2   r4   r  r]   s   `rT   
is_on_cudar(    s0     	 
	 	 	rV   proxyrD   c                 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   )r3   r8   r;   r^   rc   r  _ref_data_from_cuda_columnarr4   _ref_data_from_cuda_interfacer  r  rq  r7  _ref_data_from_columnarr   _ref_data_from_arrayrg   _ref_data_from_csrry  rQ   rR   )r)  rI   r   s      rT   dispatch_proxy_set_datar0    s     !$'!$'$$(**40d++D1$ &++D1$)+<=>%%d+$""4(D  &
Ds4PT:V
WC
IrV   )NNN)rK   Nr   )rN  ry   	functoolsr  r  rO   typingr   r   r   r   r   r   r	   r
   r   r   r   numpyrM   _c_apir   r   r   r   _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.   r/   compatr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r  r  r   rA   r   rB   r   corerC   rD   rz   rE   __annotations__r   rT  rU   r^   r   rg   rr   ROWr}   r   r   r   r   r0  r   r   r   r   r   pandas_pyarrow_mapperupdater   r   rQ   r   r   r   r   cacher   r   r  r   r  r  r  r  r5  r7  r[  r`  rc  rh  rk  ro  rq  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  r  r#  r(  r0  r  rV   rT   <module>r>     sn   $    	      9 9    (       ( /), .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81
1
1 J1 OO	1
 
1 S
S*7S	S& &3%6%60
0 0 	0
 0 L)0 E,
":;<0 #0 %08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?
	X 	$ 	
 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) # %&&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 QU=E=E%=E-0=E9A*9M=E	=E@2X
2XL)2X L)2X 	2X
 2XjS T $$
$ 
$rV   