
    :[gͻ                     <   d 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 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 ddl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' eejP                  e	e   e	e   f   Z)dZ*d	d
hZ+dede	e   ddfdZ,deddfdZ-dede.fdZ/dej`                  de1fdZ2dej`                  de3fdZ4dede.defdZ5ejl                  fdedede7de	e   de	e   dede)fdZ8dede.fdZ9ejl                  fdedede7de	e   de	e   dede)fdZ:dede.fdZ;dede.fdZ<dede	e   deej`                  e	e   f   fdZ=dede	e   dej`                  fd Z>ejl                  fdedede7de	e   de	e   dede)fd!Z?dede.fd"Z@dede.fd#ZAd$d$d$d$d$d$d$d$d%d%d%d&d'ZBd$d$d$d$d$d$d$d$d%d%d&d(ZCd$d$d$d$d$d$d$d$d%d%d%d%d&d)ZDeBj                  eC       eBj                  eD       d*ZFdeddfd+ZGded,e	eH   de	e   de	e   d-e.dee	e   e	e   f   fd.ZIdede.fd/ZJdede.fd0ZKdede.fd1ZLdede.fd2ZMdede.fd3ZNd4edej`                  fd5ZOdedeej`                     fd6ZPded-e.ddfd7ZQ G d8 d9      ZR	 	 	 dvded-e.de	e   de	e   d,e	eH   deeRe	e   e	e   f   fd:ZSded;eHde	e   d<ejP                  ddf
d=ZTejl                  fded-e.dede7de	e   de	e   dede)fd>ZUdede.fd?ZVded;eHde	e   d<ejP                  ddf
d@ZWdede.fdAZXdedede7d-e.de	e   de	e   de)fdBZYdede.fdCZZ	 	 dwdede	e   de	e   d,e	eH   dDe	e   deej`                  e	e   e	e   f   fdEZ[dede	e   de7de	e   de	e   d-e.de)fdFZ\dede.fdGZ]dedefdHZ^dede.fdIZ_dede.fdJZ`deege.f   fdKZadedLebde3fdMZcdede	e   de	e   d-e.deejP                  ebe	e   e	e   f   f
dNZddedede7de	e   de	e   d-e.de)fdOZedede.fdPZfdede.fdQZgdedefdRZhdedede7de	e   de	e   de)fdSZidede.fdTZjdede.fdUZkdede.fdVZldede.fdWZmdedede7de	e   de	e   de)fdXZndede.fdYZoejl                  fdede	e   de	e   de	e   dede)fdZZpdede.fd[Zqejl                  fde
ded\e7de	e   de	e   dede)fd]Zrdede.fd^Zsejl                  fde
ded\e7de	e   de	e   dede)fd_Ztdede.fd`Zudede.fdaZvdedefdbZwdcejl                  fdededde7de	e   de	e   d-e.dede)fdeZxded;eHddfdfZydej`                  dgeHde	e   d<ejP                  ddf
dhZzde
dgeHde	e   d<ejP                  ddf
diZ{de
dgeHde	e   d<ejP                  ddf
djZ|dedgeHd<ejP                  ddfdkZ}dedgeHd<ejP                  ddfdlZ~dedgeHd<ejP                  ddfdmZdedgeHde	e   d<ejP                  ddf
dnZ	 dxdoe ded;eHde	e   ddf
dpZ G dq dre      Zdede	e   de	e   d-e.def
dsZdte$dedLe	eb   ddfduZy)yzData dispatching for DMatrix.    N)AnyCallableListOptionalSequenceTuplecast   )	CupyTDataTypeFeatureNamesFeatureTypesFloatCompatible
NumpyDTypePandasDTypeTransformedDatac_bst_ulong)	DataFramelazy_isinstance)_LIBDataIterDataSplitModeDMatrix_array_hasobject_check_call_cuda_array_interface_ProxyDMatrixc_strfrom_pystr_to_cstrmake_jcargs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)r$   r%   s     G/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/data.py_warn_unused_missingr0   0   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lenr3   
ValueErrorr$   s    r/   _check_data_shaper9   8   s/    tW#djj/Q"6STT #7r1   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ImportErrorr<   )r$   is_array	is_matrixr;   r<   s        r/   is_scipy_csrrB   =   h    HI*dI.+tZ0	  y        1 A  	== 	AAc                 v    t        |       rt        d      | j                  }d|v r|d   j                  |d<   |S )Nz<Input data contains `object` dtype.  Expecting numeric data.mask)r   r7   __array_interface__)r$   	interfaces     r/   _array_interface_dictrI   P   sD    WXX((I%f-AA	&r1   c                 Z    t        |       }t        t        j                  |      d      }|S )Nutf-8)rI   bytesjsondumps)r$   rH   interface_strs      r/   _array_interfacerP   Y   s'    %d+I$**Y/9Mr1   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_matrixr<   zlength mismatch: z vs )r3   )r=   rS   r<   r6   indicesr$   r7   _ensure_np_dtypeindptrdtyper3   )r$   rQ   rS   r<   rV   _rT   valuess           r/   transform_scipy_sparserZ   _   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Kr1   nthreadfeature_namesfeature_typesdata_split_modec                    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
   r%   r[   r^   )ctypesc_void_prZ   r   r   XGDMatrixCreateFromCSRrP   rV   rT   r$   r   r3   r    floatintbyrefr$   r%   r[   r\   r]   r^   handles          r/   _from_scipy_csrri   x   s     __F!$-D##T[[)T\\*TYY'

1&gG #O 4
 LL 	
 =-//r1   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)rS   )r=   rk   r>   r?   rS   )r$   r@   rA   rk   rS   s        r/   is_scipy_cscrl      rC   rD   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   r`   )ra   rb   rZ   r   r   XGDMatrixCreateFromCSCrP   rV   rT   r$   r   r3   r    rd   re   rf   rg   s          r/   _from_scipy_cscro      s     __F4'##T[[)T\\*TYY'

1&gG #O 4
 LL 	
 =-//r1   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)r=   rq   r>   r?   rr   )r$   r@   rA   rq   rr   s        r/   is_scipy_coors      rC   rD   c                     t        | d      S )NrG   r5   r8   s    r/   _is_np_array_likerv      s    4.//r1   rW   c                    t        |       s,| j                  t        j                  t        j                  fv r#t        j
                  }| j                  |d      } | j                  j                  st        j                  | d      } | |fS )NFcopyA)requirements)
r   rW   r(   float16bool_float32astypeflagsalignedrequirer$   rW   s     r/   rU   rU      sf     

BHH/E!E

{{5u{-::zz$S1;r1   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)ry   rW   rW   )r   c_contiguousr(   arrayasarrayAttributeErrorrU   r   s     r/   _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.r`   )r9   rU   rW   ra   rb   r   r   XGDMatrixCreateFromDenserP   r    rd   re   rf   )r$   r%   r[   r\   r]   r^   rX   rh   s           r/   _from_numpy_arrayr      s     dtTZZ0GD!__F%%T"gG #O 4
 LL 	

 =-//r1   c                 V    	 dd l }t        | |j                        S # t        $ r Y yw xY wNr   F)pandasr?   r>   r   r$   pds     r/   _is_pandas_dfr     s1     dBLL))      	((c                 Z    	 dd l m} t        | |j                        S # t        $ r Y yw xY wr   )modin.pandasr   r?   r>   r   r   s     r/   _is_modin_dfr     s1    ! dBLL))      	**re   rd   i)int8int16int32int64uint8uint16uint32uint64r|   r~   float64bool)Int8Int16Int32Int64UInt8UInt16UInt32UInt64Float32Float64boolean)zint8[pyarrow]zint16[pyarrow]zint32[pyarrow]zint64[pyarrow]zuint8[pyarrow]zuint16[pyarrow]zuint32[pyarrow]zuint64[pyarrow]zfloat[pyarrow]zfloat32[pyarrow]zdouble[pyarrow]zfloat64[pyarrow]zbool[pyarrow]zpWhen categorical type is supplied, the experimental DMatrix parameter`enable_categorical` must be set to `True`.c                 L   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?DataFrame.dtypes for data must be int, float, bool or category. )	r5   r   	enumeratename_pandas_dtype_mappercolumnsjoin_ENABLE_CAT_ERRr7   )r$   r   rW   
bad_fieldserrtype_errmsgs          r/   _invalid_dataframe_dtyper   U  s     tX74;;
#C &dkk2
25zz!55 ||Ar%)2 	 

 "DIIj$99PHj/*!C5
3C
S/
s   0B metaenable_categoricalc                    ddl }||t        | j                  |j                        rB| j                  D cg c]*  }dj	                  |D cg c]  }t        |       c}      , }}}n(t        | j                  j                  t
                    }||g }| j                  D ]  }t        |      r-|j                  t        |j                  j                            ;t        |      st        |      r|r|j                  t                i|j                  t        |j                             ||fS c c}w c c}}w )z)Handle feature info for pandas dataframe.r   Nr   )r   r>   r   
MultiIndexr   r,   listmapr   is_pd_sparse_dtypeappendr   subtyper   is_pd_cat_dtypeis_pa_ext_categorical_dtypeCAT_T)	r$   r   r\   r]   r   r   r   xrW   s	            r/   pandas_feature_infor   g  s     dllBMM2DHLLQLqSXXq&9q!s1vq&9:LMQ !1!1#!67M [[E!%($$%9%--:L:L%MN&*Ee*L$$$U+$$%9%**%EF ! -''! ':Qs   D;D6	D;6D;c                     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   )is_bool_dtypeis_float_dtypeis_integer_dtyper   )pandas.api.typesr   r   r   r   pandas_nullable_mapperr   )rW   r   r   r   is_intis_boolis_floats          r/   is_nullable_dtyper     sl    PPe$M7M)MFE">uzzY'>Ge$M7M)MHBWBBOE,BBr1   c                     t        | d      S )z;Return whether dtype is a pyarrow extension type for pandaspyarrow_dtyperu   r   s    r/   is_pa_ext_dtyper     s    5/**r1   c                 2    t        t        | dd      dd      S )z)Check whether dtype is a dictionary type.r   Npyarrow.libDictionaryType)r   getattrr   s    r/   r   r     s     -}>N r1   c                 ,   ddl }t        |j                  d      rmt        |j                  j                  d      rM|j                  j                  j                  } ||j
                         |d      k\  rddl m} t        | |      S ddlm	}  ||       S )z)Wrapper for testing pandas category type.r   NversionVersion2.1.0CategoricalDtypeis_categorical_dtype)
r   r5   utilr   r   __version__r   r>   r   r   )rW   r   r   r   r   s        r/   r   r     sl    rww	"wrww	'J''//))2>>"gg&66/e%5665&&r1   c                 ,   ddl }t        |j                  d      rmt        |j                  j                  d      rM|j                  j                  j                  } ||j
                         |d      k\  rddl m} t        | |      S ddlm	}  ||       S )z'Wrapper for testing pandas sparse type.r   Nr   r   r   )SparseDtype)	is_sparse)
r   r5   r   r   r   r   r   r>   r   r   )rW   r   r   r   r   s        r/   r   r     sk    rww	"wrww	'J''//))2>>"gg&66*e[11*Ur1   serc                 4   ddl }ddl}| 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   pyarrowr   __arrow_array__combine_chunks
null_counttypes
is_booleanr-   to_numpyrU   rW   )	r   r   pad_arrayaachunk	zero_copyarrrX   s	            r/   pandas_pa_typer     s    
 .1YYG "113B'')E  A%Mbhh.A.A%**.M*MI nnInNCc399-FCJr1   c                   	
 ddl }ddl m	m
 g }d|j                  dt        j
                  fd}d|j                  dt        j
                  f	
fd}d|j                  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!              rtt#        |j$                  j&                  | |   j(                        }|j+                         }t-        |      rt/        ||j0                        \  }}|j                  |       |j                   || |                - |S )
z9Handle categorical dtype and extension types from pandas.r   N)Float32DtypeFloat64Dtyper   r&   c                 d   t        | j                        rt        | j                  j                  j                  t        j                        j                  dt        j                        j                  t        j                        t        j                        d   S t        | j                        sJ | j                  j                         j                         j                         j                   j                  t        j                        j                  dt        j                        S )Ng      na_valuer   )r   rW   rU   catcodesr   r(   r~   replacenanr   r   r   r   r   dictionary_encoderT   )r   s    r/   	cat_codesz(pandas_transform_data.<locals>.cat_codes  s    399%#$$RZZ0rvv&266*

	
   +399555II%%'^ WVVBJJ'WT266"	
r1   c                     t              rt        j                  }n-t              rt        j                  }nt        j                  }t	        | j                  |t        j                        |      d   S )NrW   r  r   )r>   r(   r~   r   rU   r   r  )r   	res_dtyper   r   rW   s     r/   nu_typez&pandas_transform_data.<locals>.nu_type  s]    e\*$&JJI|,

I

ILLy266L:I

 	r1   c                 0   t         j                  j                  t         j                        t         j                  j                  d      kD  }|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 )Nz1.25.0r  r   )r(   libNumpyVersionr   r>   rW   r   Float32DTypeFloat64DTyper~   r   r   r  rU   )r   npdtypesr   rW   s      r/   oth_typez'pandas_transform_data.<locals>.oth_type  s    66&&r~~69L9LX9VV 

II 		&&		&&	!
 uRZZ 88LLNE LLrzzBFFLCEu{{3A66r1   zFpyarrow dictionary type is not supported. Use pandas category instead.)r   r   r   Seriesr(   ndarrayzipr   r   r   r7   r   r   r   r   r   r   r	   arraysSparseArrayrY   to_denserv   rU   rW   )r$   r   resultr	  r  r  colr   rX   r   r   rW   s            @@@r/   pandas_transform_datar    sf   1!F
ryy 
RZZ 
&
RYY 
2:: 
7bii 7BJJ 7* $,,4
U&u-X  5!MM)DI./U#MM.c34u%MM'$s),-&ryy,,d3i.>.>?C,,.C %)#syy9QMM#MM(49-.% 5. Mr1   c                     d}| j                   D ]P  }|j                  t        v s.t        |      s#t	        |      r|st        |      st        |        t        |      sOd}R |rt        j                  d       yy)zKValidate the input types, returns True if the dataframe is backed by arrow.FTz3Sparse arrays from pandas are converted into dense.N)	r   r   r   r   r   r   r   r*   r+   )r$   r   sparse_extensionrW   s       r/   pandas_check_dtypesr   .  sk    ZZ//!%(&+=u%$T*e$#  KL r1   c                   f    e Zd ZdZdeej                     ddfdZdefdZ	e
deeef   fd       Zy)PandasTransformedz1A storage class for transformed pandas DataFrame.r   r&   Nc                     || _         y N)r   )selfr   s     r/   __init__zPandasTransformed.__init__E  s	    r1   c                     t        t        t        | j                              }t	        t        j                  |      d      }|S )z6Return a byte string for JSON encoded array interface.rK   )r   r   rI   r   rL   rM   rN   )r%  aitfssarrayss      r/   array_interfacez!PandasTransformed.array_interfaceH  s2    S.=>

5)73r1   c                 d    | j                   d   j                  d   t        | j                         fS )z*Return shape of the transformed DataFrame.r   )r   r3   r6   r%  s    r/   r3   zPandasTransformed.shapeN  s+     ||A$$Q'T\\):::r1   )__name__
__module____qualname____doc__r   r(   r  r&  rL   r*  propertyr   re   r3    r1   r/   r"  r"  B  sP    ;RZZ 0 T   ;uS#X ; ;r1   r"  c                     t        | |       |r/t        | j                        dkD  r|t        vrt	        d| d      t        | ||||      \  }}t        |       }t        |      ||fS )Nr
   zDataFrame for z cannot have multiple columns)r   r6   r   _matrix_metar7   r   r  r"  )r$   r   r\   r]   r   r  s         r/   _transform_pandas_dfr5  T  sw     01DLL!A%$l*B>$/LMNN#6dM=2D$ M= #4(FV$m]BBr1   r   rh   c                    t        | d|      \  } }}t        | j                        dk(  r| j                  d   }n)t        j                  | j                        j
                  }t        ||      \  }}t        ||||       y )NF)r   r
   r   )r5  r6   r   r(   stackTrU   _meta_from_numpy)r$   r   rW   rh   rX   r   s         r/   _meta_from_pandas_dfr:  g  sl     &dE=JD!Q
4<<AQ&((#E51LE5UD%0r1   c           
          t        | |||      \  }}}t        j                         }t        t	        j
                  |j                         t        |||      t        j                  |                   |||fS )N)r[   r%   r^   )	r5  ra   rb   r   r   XGDMatrixCreateFromColumnarr*  r    rf   )	r$   r   r%   r[   r\   r]   r^   dfrh   s	            r/   _from_pandas_dfr>  w  s{     (< -($B} __F(( / LL 	
 =-//r1   c                 V    	 dd l }t        | |j                        S # t        $ r Y yw xY wr   )r   r?   r>   r  r   s     r/   _is_pandas_seriesr@    s1     dBII&&  r   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 labelsr  rW   r
   r   N)r   rW   rY   r  r   r(   r~   r   r   r   r  r   r6   r3   r9  )r$   r   rW   rh   s       r/   _meta_from_pandas_seriesrB    s     $**%{{##%,,RZZ8		$d#}}RZZ"&&}9'$67}}tzz?a4::a=A#5A!9KKKT4/r1   c                 Z    	 dd l m} t        | |j                        S # t        $ r Y yw xY wr   )r   r   r?   r>   r  r   s     r/   _is_modin_seriesrD    s1    ! dBII&&  r   c                 b   | 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
   rd   )rW   r   r   r   r   r  r  r   rY   reshaper3   r   )r$   r%   r[   r   r\   r]   s         r/   _from_pandas_seriesrG    s     	

33

#(: &odjj9xx~~DJJqM1-44W= r1   c                 :    t        | dd      xs t        | dd      S )N	datatableFrame	DataTabler   r8   s    r/   	_is_dt_dfrM    s&    4g6 /k;; r1   	meta_typec                 J   dddd}dddd}|r| j                   d   dkD  rt        d      |r1|dn|}| j                         ddd	f   j                  |      } | ddfS t	        d
 | j
                  D              }t        |      D 	cg c]  \  }}	|	|vr| j                  |    }
}}	|
rd}t        |dj                  |
      z         |N|L| j                  }|t        d       t        j                  |j                        |      j                         }| ||fS c c}	}w )z.Validate feature names and types if data tabler   re   rd   )r   re   realr   r
   z4DataTable for meta info cannot have multiple columnsNr   c              3   4   K   | ]  }|j                     y wr$  )r   ).0lts     r/   	<genexpr>z#_transform_dt_df.<locals>.<genexpr>  s     ;{RWW{s   zmDataFrame.types for data must be int, float or bool.
                Did not expect the data types in fields r   z5DataTable has own feature types, cannot pass them in.)r3   r7   r   r   tupleltypesr   namesr   r(   	vectorizegettolist)r$   r\   r]   r   rN  _dt_type_mapper_dt_type_mapper2data_types_namesr   	type_namer   r   s               r/   _transform_dt_dfr_    sM     &eWEO #E7C

1!OPP(0Gi	 }}q!t$++I6T4;t{{;; &&677LAyO+ 	

17  
 <tyy4455

 $TUU:%5%9%9:;KLSSU--%s   	Dc                    |rt        d      t        | ||d d       \  } }}t        j                  | j                  z         }t        | d      rpt        | j                  d      rZt        | j                        D ]A  }| j                  j                  |      }|j                  }	t        j                  |	      ||<   C n,ddl
m}
 t        | j                        D ]  } |
| |      ||<    t        j                  | j                  z         }t        | j                        D ]@  }t        j                  | j                  |   j                  j                  d            ||<   B t!        | |       t        j                         }t#        t%        j&                  ||t)        | j*                  d         t)        | j*                  d         t        j,                  |      t        j.                  |                   |||fS )Nz3categorical data in datatable is not supported yet.internalcolumnr   )frame_column_data_rrK   r
   )r7   r_  ra   rb   ncolsr5   ra  rangerb  data_pointerdatatable.internalrc  c_char_pstypesr   encoder0   r   r   XGDMatrixCreateFromDTr   r3   rf   c_int)r$   r%   r[   r\   r]   r   ptrsicolr  ptrrc  feature_type_stringsrh   s                r/   _from_dt_dfrq    s    NOO)9m]D$*&D- OOdjj(+DtZ WT]]H%E$**%D--&&t,C""C-DJ &	
 $**%D,T48DJ & #OOdjj8;djj!%+__KK""))'2&
T" "
 w'__F"" 

1&

1&LL LL!	
	 =-//r1   c                 :    t        | dd      xs t        | dd      S )Nr   Tablezpyarrow._datasetDatasetrL  r8   s    r/   	_is_arrowru  ,  s'    48 O )= r1   c                     dd l }dd l}ddlm} t	        | |      rt        d      t        |j                  |       } | j                  |j                        }|S )Nr   )rt  zarrow Dataset is not supported.)types_mapper)
r   r   pyarrow.datasetrt  r>   	TypeErrorr	   rs  	to_pandas
ArrowDtype)r$   r   r   rt  r=  s        r/   _arrow_transformr|  2  sL    '$ 9::$D 
R]]	3BIr1   c                     t        | dd      S )Nzcudf.core.dataframer   rL  r8   s    r/   _is_cudf_dfr~  B  s    4!6DDr1   c                 j    t        | dd      xs t        | dd      xr t        t        |       dd      S )z+Must go before both pandas and cudf checks.zpandas.core.framer   zpandas.core.seriesr  zcudf.pandas.fast_slow_proxy_FastSlowProxyMeta)r   r-   r8   s    r/   _is_cudf_pandasr  F  sE     	1;? 	A4!5x@ T
13Gr1   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   rW   r&   c                     t        |       S r$  )r>   )rW   r   s    r/   r   z5_get_cudf_cat_predicate.<locals>.is_categorical_dtypeT  s    e%566r1   r   )cudfr   r   r   r?   cudf.api.typesr   cudf.utils.dtypes)r   r   s    @r/   _get_cudf_cat_predicater  P  sa    
?)	7 	7 	7    ?	?;    	?>	??s#    	A0AAAAr	  c                   	 t               }g 	dt        ddf	fd}t        |       r7 || j                        r|d   j                  }n| j                  } ||       nQt        |       D ]C  \  }} || |   j                        r||   }|j                  }n| |   j                  } ||       E t        t        j                  	            }|S )a#  Extract CuDF __cuda_array_interface__.  This is special as it returns a new list
    of data and a list of array interfaces.  The data is list of categorical codes that
    caller can safely ignore, but have to keep their reference alive until usage of
    array interface is finished.

    rH   r&   Nc                 T    d| v r| d   j                   | d<   j                  |        y )NrF   )__cuda_array_interface__r   )rH   
interfacess    r/   r   z&_cudf_array_interfaces.<locals>.appendj  s.    Y )& 1 J JIf)$r1   r   )	r  dict_is_cudf_serrW   r  r   r   rM   rN   )
r$   r	  r   r   rH   r   r  r  interfaces_strr  s
            @r/   _cudf_array_interfacesr  `  s     34J%$ %4 %
 D

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

:(>?Nr1   c                 J   	 ddl m} t	               t        |       r2 || j                        r^| j                  t        j                        } n>| j                  | j                  d      D ci c]  }|t        j                   c}      } t        |       r| j                  g}n| 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$                    }|Kg }|D ]D  }	 |	      rr|j+                  t,               #|j+                  t.        |	j                            F g }
t        |       r< | j                        rr| j0                  j2                  }|
j+                  |       ns| D ]n  }| |   j                  }	 |	      r-r+| |   j0                  j2                  }|
j+                  |       G |	      rt5        t6              |
j+                  g        p | |
||fS # t        $ r
 ddlm} Y w xY wc c}w c c}w c c}}w )	Nr   )r   r   )includec              3   ^   K   | ]$  }|j                   t        v xs  |      xr  & y wr$  )r   r   )rR  rW   r   r   s     r/   rT  z%_transform_cudf_df.<locals>.<genexpr>  s?       E 	

** 	@ '>,>	@s   *-zcudf.core.multiindexr   r   )r  r   r?   r   r  r  rW   r   r(   r   select_dtypesr   allr   r   r   r   r   r,   r   r   r   r   r   r  r  r7   r   )r$   r\   r]   r   r   r  r   r   r   rW   r	  r  r   s      `        @r/   _transform_cudf_dfr    sG   30 34D$;;rxx(D{{&*&8&8&8&HI&HsS"((]&HI
 D**   
 	!& !YYKMT\\+A<PDHLLQLqSXXq&9q!s1vq&9:LMQ !1!1#!67M E#E*/A$$U+$$%9%**%EF	  ID

+0BHHNNEU#CIOOE#E*/AS	++  '%e, 11  $  M=88{  3223 J( ':Qs/   I? 0JJ)J;	J?JJJc           	          t        | |||      \  } }}}t        | |      }t        j                         }t	        t        j                  |t        ||      t        j                  |                   |||fS )N)r[   r%   )	r  r  ra   rb   r   r   XGDMatrixCreateFromCudaColumnarr    rf   )	r$   r%   r[   r\   r]   r   r	  r  rh   s	            r/   _from_cudf_dfr    sz     5Gm],>51D)]M ,D)<N__F,,9LL 	
 =-//r1   c                     t        | dd      S )Nzcudf.core.seriesr  rL  r8   s    r/   r  r    s    4!3X>>r1   c                     t        | d      S )Nr  ru   r8   s    r/   _is_cupy_aliker    s    4344r1   c                     dd l }t        | d      st        | d      r|j                  | d      } t        |       s| j                  |j
                  fv r| j                  |j                  d      } | S )Nr   r  	__array__Frx   )cupyr5   r   r   rW   r}   r   r~   )r$   r  s     r/   _transform_cupy_arrayr    s_    434{9Szz$Uz+

|!;{{4<<e{4Kr1   c           	      
   t        |       } t        |       }t        j                         }t	        t        j                  ||d      d      }t        t        j                  ||t        j                  |                   |||fS )z%Initialize DMatrix from cupy ndarray.)r%   r[   rK   )r  r   ra   rb   rL   rM   rN   r   r   %XGDMatrixCreateFromCudaArrayInterfacerf   )r$   r%   r[   r\   r]   rO   rh   configs           r/   _from_cupy_arrayr    ss     !&D)$/M__F4::'gFGQF2266<<#7	

 =-//r1   c                 ~    	 dd l }t        | |j                  j                  j
                        S # t        $ r Y yw xY wr   )cupyxr?   r>   scipysparser<   r$   r  s     r/   _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  r?   r>   r  r  rS   r  s     r/   _is_cupy_cscr    r  r  c                 L    dt        t        |             v xr dt        |       v S )N	PyCapsuledltensor)r,   r-   r8   s    r/   
_is_dlpackr    s#    #d4j/)EjCI.EEr1   c                 @    ddl m} dt        |       vsJ  ||       } | S )Nr   )from_dlpackused_dltensor)r  r  r,   )r$   r  s     r/   _transform_dlpackr    s&     #d)+++tDKr1   c                 6    t        |       } t        | ||||      S r$  )r  r  )r$   r%   r[   r\   r]   s        r/   _from_dlpackr  #  s!     T"DD'7M=QQr1   c                 B    t        | t        t        j                  f      S r$  )r>   r,   osPathLiker8   s    r/   _is_urir  .  s    dS"++.//r1   c                    t        | |       t        j                         }t        j                  t        j
                  j                  |             } t        |       t        |      d}t        t        j                  |      d      }t        t        j                  |t        j                  |                   |||fS )N)urir^   rK   )r0   ra   rb   r  fspathpath
expanduserr,   re   rL   rM   rN   r   r   XGDMatrixCreateFromURIrf   )r$   r%   r\   r]   r^   rh   argsr  s           r/   	_from_urir  2  s     w'__F99RWW''-.D4y/D 4::d#W-F++FFLL4HIJ=-//r1   c                 "    t        | t              S r$  )r>   r   r8   s    r/   _is_listr  E  s    dD!!r1   	n_threadsc                 b    t        j                  |       }t        |        t        ||||||      S r$  )r(   r   r9   r   )r$   r%   r  r\   r]   r^   r   s          r/   
_from_listr  I  s3     HHTNEdw	=- r1   c                 "    t        | t              S r$  )r>   rU  r8   s    r/   	_is_tupler  X  s    dE""r1   c                 "    t        | |||||      S r$  )r  )r$   r%   r  r\   r]   r^   s         r/   _from_tupler  \  s     gy- r1   c                 "    t        | t              S r$  )r>   r   r8   s    r/   _is_iterr  i  s    dH%%r1   c                     t        | d      S )Nr  ru   r8   s    r/   _has_array_protocolr  m  s    4%%r1   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   )	r*   r+   r-   r.   r=   r?   r  r<   	Exception)r$   r  s     r/   _convert_unknown_datar  q  sq    MM
d4j\)MN||&&t, K  
  s"   A A 	AA	A&%A&Fthreadsc           	      F   t        |       st        |       st        |        t        |       rt	        | |||||      S t        |       rt        | |||||      S t        |       rt	        | j                         |||||      S t        |       rt        | |||||      S t        |       rt        | ||||      S t        |       rt        | |||||      S t        |       rt!        | |||||      S t#        |       rt%        |       } t'        |       r| j(                  } t        |       rddl}|j-                  |       } t/        |       rt1        | ||||||      S t3        |       st        |       rt5        | |||||      S t7        |       rt9        | ||||      S t;        |       rt=        d      t?        |       rt=        d      tA        |       rtC        | ||||      S tE        |       rtG        | |       tI        | |||||      S tK        |       rt1        | |||||      S tM        |       rtO        | |||||      S tQ        |       r$tS        jT                  |       }t        |||||      S tW        |       }	|	t	        |	||||      S t=        dtY        t[        |             z         )zDispatch data for DMatrix.r   Nzcupyx CSR is not supported yet.zcupyx CSC is not supported yet.zNot supported type for data.).r  r@  r9   rB   ri   rl   ro   rs   tocsrrv   r   r  r  r  r  r  r  ru  r|  r  _fsproxy_fastr   r   r   r>  r~  r  r  r  r  ry  r  r  r  rM  r0   rq  r   rD  rG  r  r(   r   r  r,   r-   )
r$   r%   r  r\   r]   r   r^   r   r   	converteds
             r/   dispatch_data_backendr    s    &7&=$D'7M=/
 	
 D'7M=/
 	
 DJJL
 	
  '7M=/
 	
 t}w}oVV~'7M=/
 	
 '7M=/
 	
 %t!!||D!T
 	
 4L.'7M=BT
 	
 dgw}UUD9::D9::$D'7M=QQT7+'7M=BT
 	
 D$gw}
 	
 "'7$6}
 	
 4 

4  -WW%d+Iw
 	
 2Sd_D
EEr1   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 )Nr3   zInvalid shape: z for r4   r
   r   )r5   r3   r4  r6   r7   )r$   r   r   s      r/   _validate_meta_shaper    s    tW

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

Oq djjmq&8TZZ]a=Otzzl%vFGG >P&8  r1   fieldc                     t        | |      \  } }| j                  }|j                  dd       t        d      t	        |       }t        t        j                  |t        |      |             y )NrF   zMasked array is not supported.)	rU   rG   rY  r7   rP   r   r   XGDMatrixSetInfoFromInterfacer   )r$   r  rW   rh   rH   rO   s         r/   r9  r9    sa     #4/KD%((I}}VT".9::$T*M2265<WXr1   c                 J    t        j                  |       }t        ||||       y r$  )r(   r   r9  )r$   r  rW   rh   data_nps        r/   _meta_from_listr    s     hhtnGWeUF3r1   c                     t        | |||      S r$  )r  )r$   r  rW   rh   s       r/   _meta_from_tupler  	  s     4v66r1   c                     |t         vrt        | j                  d d df   ||       y | j                  } t	        |       }t        t        j                  |t        |      |             y Nr   )	r4  _meta_from_cudf_seriesilocrY   r   r   r   r  r   r$   r  rh   rH   s       r/   _meta_from_cudf_dfr    sP    L tyyAv>{{)$/	D66vuU|YWXr1   c                     t        t        j                  | j                  gd      d      }t	        t        j                  |t        |      |             y Nr4   )indentrK   )rL   rM   rN   r  r   r   r  r   r  s       r/   r  r    s=    djj$"?"?!@KWUI2265<STr1   c                     t        |       } t        t        j                  | j                  gd      d      }t        t        j                  |t        |      |             y r  )	r  rL   rM   rN   r  r   r   r  r   r  s       r/   _meta_from_cupy_arrayr    sG     &Ddjj$"?"?!@KWUI2265<STr1   c                 F    t        | d d ||      \  } }}t        | |||       y r$  )r_  r9  )r$   r  rW   rh   rX   s        r/   _meta_from_dtr  #  s*     "$dE5AJD!QT5%0r1   matrixc                 n   | j                   }|J t        ||       |yt        |      rt        ||||       yt	        |      rt        ||||       yt        |      rt        ||||       yt        |      rt        |      }t        |      r|j                  }t        |      rt        ||||       yt        |      rt        ||||       yt!        |      rt#        |      }t%        |||       yt'        |      rt%        |||       yt)        |      rt+        |||       yt-        |      rt/        |||       yt1        |      rt3        ||||       yt5        |      rt        ||||       yt7        |      rh|j8                  j;                  d      }t=        |j>                        dk(  s&|j>                  d   dk(  s|j>                  d   dk(  sJ t        ||||       ytA        |      r$tC        jD                  |      }t        ||||       ytG        d|z   tI        tK        |                  )zDispatch for meta info.N)rW   rh   rd   r
   r   zUnsupported type for )&rh   r  r  r  r  r  rv   r9  ru  r|  r  r  r   r:  r@  rB  r  r  r  r  r  r  r~  r  rM  r  r   rD  rY   r   r6   r3   r  r(   r   ry  r,   r-   )r  r$   r   rW   rh   r   s         r/   dispatch_meta_backendr  *  s    ]]Ft$|~dE62tUF3tUF3%t!!TT4uVD tUF;$ &dD&1ddD&1DtT6244v.dD%0DT4uVD{{!!'*4::!#tzz!}'9TZZ]a=OOOtUF34 

4 eV4
+d2CT
O
DDr1   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.

    kwargsr&   Nc                 B    || _         d| _        t        |   d       y )Nr   F)release_data)r  itsuperr&  )r%  r  	__class__s     r/   r&  z SingleBatchInternalIter.__init__n  s#     	e,r1   
input_datac                 r    | j                   dk(  ry| xj                   dz  c_          |di | j                   y)Nr
   r   r2  )r  r  )r%  r  s     r/   nextzSingleBatchInternalIter.nextv  s/    77a<1!T[[!r1   c                     d| _         y r  )r  r,  s    r/   resetzSingleBatchInternalIter.reset}  s	    r1   )r&   N)r-  r.  r/  r0  r   r&  r   re   r  r   __classcell__)r  s   @r/   r  r  f  s3    - - -x C r1   r  c                 f   t        |       r| j                  } t        |       st        |       rt	        | |||      S t        |       rt        |       } | d ||fS t        |       rt        |       d ||fS t        |       st        |       rt        j                  |       } t        |       rt        | | j                        \  } }| d ||fS t!        |       rt#        | d      } | d ||fS t%        |       r t#        | j'                         d      } | d ||fS t)        |       r t#        | j'                         d      } | d ||fS t+        |       rdd l}|j/                  |       } t1        |       rt3        |       } t5        |       rt7        | |||      \  }}}|d ||fS t9        dt;        t=        |             z         )NTr   .Value type is not supported for data iterator:)r  r  r~  r  r  r  r  r  r  r  r  r(   r   rv   rU   rW   rB   rZ   rl   r  rs   r@  r   r   ru  r|  r   r5  ry  r,   r-   )r$   r\   r]   r   rX   r   r=  s          r/   _proxy_transformr    s    t!!4L.!-0B
 	
 d$T*T=-77$ &m]JJ~4xx~"44aT=-77D%dD1T=-77D%djjlD9T=-77D%djjlD9T=-77||D!%T+?$m],
(M= 455
Ds4PT:V
WWr1   proxyc                    t        |      st        |      st        |       t        |      r!| j	                  |t        t        |             yt        |      r!| j	                  |t        t        |             yt        |      r| j                  |       yt        |      rt        |      }| j                  |       yt        |t              r| j                  |       yt        |      rt        |       | j                  |       yt!        |      r| j#                  |       yt%        dt'        t)        |            z         }|)zDispatch for QuantileDMatrix.Nr  )r  r@  r9   r~  _ref_data_from_cuda_columnarr	   r   r  _ref_data_from_cuda_interfacer  r  r>   r"  _ref_data_from_pandasrv   _ref_data_from_arrayrB   _ref_data_from_csrry  r,   r-   )r  r$   r	  r   s       r/   dispatch_proxy_set_datar    s    &7&=$4**4dI1FGD**4dI1FGd++D1$ &++D1$)*##D)$""4(D  &
Ds4PT:V
WC
Ir1   )NNN)NNr$  )r0  ra   rM   r  r*   typingr   r   r   r   r   r   r	   numpyr(   _typingr   r   r   r   r   r   r   r   r   compatr   r   corer   r   r   r   r   r   r   r   r   r   r    rb   DispatchedDataBackendReturnTyper   r4  r0   r9   r   rB   r  r  rI   rL   rP   rZ   ROWre   ri   rl   ro   rs   rv   rU   r   r   r   r   r   r   pandas_pyarrow_mapperupdater   r   r,   r   r   r   r   r   r   r   r  r   r"  r5  r:  r>  r@  rB  rD  rG  rM  r_  rq  ru  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  r9  r  r  r  r  r  r  r  r  r  r  r2  r1   r/   <module>r     s   $   	  G G G 
 
 
 /    #(
OOXl+Xl-CC#  	 w'
x 
(?2K 
PT 
UH U U
!x !D !&

 t 2:: %  4 H > &3%6%60
00 0 L)	0
 L)0 #0 %0:!x !D !2 &3%6%60
00 0 L)	0
 L)0 #0 %08!x !D !&0H 0 0
#J/
2::x
++,
( 
8J+? 
BJJ 
& &3%6%60
00 0 L)	0
 L)0 #0 %04* *T **x *D *  "        2 3   1 22 8  $(
(
3-( L)( L)	(
 ( 8L!8L#99:(@C[ CT C+3 +4 +
s t '; '4 ' k d   

 6R	 Rd2::.> RjMi MT Md M(; ;* -1,0C
CC L)C L)	C
 3-C h|4h|6LLMC&1
1
1 J1 OO	1
 
1. &3%6%60
00 0 	0
 L)0 L)0 #0 %04'H ' '0
00&.z&:0DJOO0	0"'8 ' '
  	
 L) L) %.H   &*&.
&.L)&. L)&. 3-	&.
 
#&. 2::x-x/EEF&.R10
10o&10 10 L)	10
 L)10 10 %10hH  8   Eh E4 E( t  3%+!6    d u BF9
F9L)F9 L)F9 	F9
 6??D(<"8(<:PPQF9R0
00 0 L)	0
 L)0 0 %0.?x ?D ?5 5d 5 U 0
00 0 L)	0
 L)0 %0(;x ;D ;;x ;D ;FX F$ FH  R
RR R L)	R
 L)R %R0( 0t 0 &3%6%60
0o&0 L)0 L)	0
 #0 %0&"8 " " &3%6%6
  L)	
 L) # %#H # # &3%6%6



 
 L)	

 L)
 #
 %
&8 & &&h &4 & X 0  %%2%6%6`F
`F`F `F L)	`F
 L)`F `F #`F %`FF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U U# Uv USW U
U U Ufoo URV U1
11'/
';1EK__1	1 OS9E9E#9E+.9E7?
7K9E	9Exh 6*X
*XL)*X L)*X 	*X
 *XZ%%
% ~% 
	%r1   