
    siiY                     F	   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ZddlZddl	m
Z
 ddlmZ ddl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 ddlZddlZddlmZ ddl Z!ddl m"Z" dd	l#m$Z$ dd
l%m&Z& ddl'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1  ej2        d          Z3ddl3m4Z4 ddl5m6Z6  ej2        d          Z7 ede8e9d          Z:de8fdZ;de9de:fdZ<de:fdZ=de:fdZ>de:fdZ?de:fdZ@de:fdZAde:fdZBde:fdZCde:fd ZDde:fd!ZEde:fd"ZFde:fd#ZGde:fd$ZHde:fd%ZIde:fd&ZJde:fd'ZKde:fd(ZLde:fd)ZMde:fd*ZNde:fd+ZOde:fd,ZPd-ede:fd.ZQde:fd/ZRd0eSd1eSd2e8dee$e$e$f         fd3ZTd4eSd1eSd5eSd6eUdeeejV                 eejW                 eejW                 f         f
d7ZX G d8 d9          ZY	 dd0eSd1eSd;eSd<eSd=e8deejW        ejW        ejW        ejW        f         fd>ZZde4j[        fd?Z\ e\            Z]e4j[        e^d@<    e4j_         eYdAdB dCdD           eYdEdF dCdD           eYdGdH dCdD           eYdIdJ dCdD           eYdKdL dCdD          g          Z`dMe4j[        deg e4j[        eY         f         fdNZade4j[        eY         fdOZb e4j_         eYdPe-dQdR           eYdSdT dCdD           eYdUdV dWdX          g          Zc  eaec                      ZdddZeeU         d[eUde8fd\ZeddZeeU         d[eUde8fd]Zf ed^e!jg        e!jh                  Zid_ejW        d`e!jj        deejW        ejW        f         fdaZkdbejW        d`e!jj        dce8dee9ejl        f         fddZm	 ddfejW        dgejW        dce8dejl        fdhZndfejW        dgejW        deUfdiZodjejW        dejW        fdkZp	 ddneSd2e8doe9dpe9de&f
dqZq	 ddfejW        drejW        dseejW                 deejW        ejW        f         fdtZr G du dv          Zse
deeeef         ddf         fdw            Ztd:dxdyeSd-edze8d{edef
d|Zud}ed~ejv        ddfdZwde9de9fdZxde9de9fdZyde9de9fdZzde9dee!jj        e!jj        f         fdZ{de9de9fdZ|deSdedef         d-ed{eddf
dZ}deee9eSf                  deSdee9         fdZ~de8fdZdS )zkUtilities for defining Python tests. The module is private and subject to frequent
change without notice.

    N)contextmanager)StringIOsystem)AnyCallableDict	GeneratorListOptionalSequenceSetTuple	TypedDictTypeVarUnion)sparse)RabitTracker)	ArrayLike)SklObjective   )PathLike   )IteratorForTestget_california_housing
get_cancer
get_digits
get_sparsemake_batchesmake_categoricalmake_sparse_regression
hypothesis)
strategies)arrayszsklearn.datasets
PytestSkip	conditionreasonreturnc                     t                      dvrdS t          j        r]	 t          j        t          j        t          j                  5 } t          j        t          j        t          j                  5 }|                     d           |                                 d         }|                                  |                    d|f           | 	                                \  }}|
                    d                                           |                    d                                          }|dk    sJ 	 ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   d	S # t          $ r Y nw xY wdS )
z+Check whether IPv6 is enabled on this host.)LinuxWindowsF)::1r   r   r-   abc   NT)r   sockethas_ipv6AF_INET6SOCK_STREAMbindgetsocknamelistenconnectacceptsendallencoderecvdecodeOSError)serverclientportconn_msgs         ^/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/xgboost/testing/__init__.pyr1   r1   @   s    xx+++u 	!3  $v8JKK$OUJ'''))++A.t}--- --//au||~~...iill))++ e|||||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 4 	 	 	D	5sZ   )E- 
*E 4CE	=E 	E	E E	E E-  E$$E- 'E$(E- -
E:9E:namec                 T    t           j                            |           }|d u |  ddS )Nz is not installed.r&   )	importlibutil	find_spec)rE   specs     rD   no_modrK   ]   s2    >##D))DD1L1L1LMMM    c                  &    t                       ddS )zPyTest skip mark for IPv6.zIPv6 is required to be enabled.r&   )r1    rL   rD   no_ipv6rO   b   s    %ZZ3TUUUrL   c                  ,    t                      dk    ddS )Nr+   zLinux is required.r&   r   rN   rL   rD   	not_linuxrQ   g   s    W,8LMMMrL   c                       t          d          S )NubjsonrK   rN   rL   rD   	no_ubjsonrU   k       (rL   c                       t          d          S )NsklearnrT   rN   rL   rD   
no_sklearnrY   o       )rL   c                       t          d          S )NdaskrT   rN   rL   rD   no_daskr]   s       &>>rL   c                       t          d          S )NlokyrT   rN   rL   rD   no_lokyra   w   r^   rL   c                  h    t           j                            d          rdddS t          d          S )NwinUnsupported platform.Tr(   r'   dask_mlsysplatform
startswithrK   rN   rL   rD   
no_dask_mlrk   {   s7    
|u%% F1EEE)rL   c                      t           j                            d          st           j                            d          rdddS t          d          S )Nrc   darwinrd   Tre   pysparkrg   rN   rL   rD   no_sparkro      sO    
|u%% F)@)@)J)J F1EEE)rL   c                       t          d          S )NpandasrT   rN   rL   rD   	no_pandasrr      rV   rL   c                       t          d          S )NpyarrowrT   rN   rL   rD   no_arrowru      rZ   rL   c                       t          d          S )NpolarsrT   rN   rL   rD   	no_polarsrx      rV   rL   c                      	 dd l m}  |                     g dg dgg d           n# t          $ r dddcY S w xY wdddS )	Nr   )r          @T)r   g      @F)abc)columnszFailed import modin.Tre   )modin.pandasrq   	DataFrameImportError)mds    rD   no_modinr      s    E!!!!!!
nnnooo6PPPP E E E0tDDDDDE,4@@@s   %( ::c                  H    d} 	 dd l m} d| dS # t          $ r d| dcY S w xY w)NzMatplotlib is not installed.r   Fr&   T)matplotlib.pyplotpyplotr   )r(   rB   s     rD   no_matplotlibr      s[    +F5%%%%%%"f555 5 5 5!V444445s   
 !!c                       t          d          S )N	dask_cudarT   rN   rL   rD   no_dask_cudar          +rL   c                       t          d          S )NcudfrT   rN   rL   rD   no_cudfr      r^   rL   c                      t          d          } | d         sVt                      dk    rDdd l}	 |                    g d                                           n# t
          $ r d| d<   Y nw xY w| S )Ncupyr'   r,   r   )r   r   r/   T)rK   r   r   arraysum	Exception)	skip_cupycps     rD   no_cupyr      s    vI[! *fhh)&;&;	*HHYYY##%%%% 	* 	* 	*%)Ik"""	*s   )A A+*A+c                       t          d          S )N	dask_cudfrT   rN   rL   rD   no_dask_cudfr      r   rL   c                       t          d          S )N
jsonschemarT   rN   rL   rD   no_json_schemar      s    ,rL   c                       t          d          S )NgraphvizrT   rN   rL   rD   no_graphvizr      s    *rL   c                       t          d          S )NrmmrT   rN   rL   rD   no_rmmr      s    %==rL   argsc                  V    d}d}| D ]}|p|d         }|d         r
|d         } n||dS )NF r'   r(   r&   rN   )r   r'   r(   args       rD   no_multipler      sZ    IF  1[!1	{ 	]FE	 #f555rL   c                  $    dt                      dS )Nrd   re   )
is_windowsrN   rL   rD   skip_winr      s    -JLLIIIrL   	n_samples
n_featuresuse_cupyc                 \    t          | |d|          \  }}}|d         |d         |d         fS )z!Make a simple regression dataset.r   r   )r   )r   r   r   Xyws         rD   make_regressionr      s6     9j!X>>GAq!Q41qtrL   n_samples_per_batch	n_batchessparsityc           	         g }g }g }t           j                            d          }t          |          D ]}t	          j        | |d|z
  dt           j        |          }	|                    |           }
|                    dd|           }|                    |	           |                    |
           |                    |           |||fS )N        ?csr)formatdtyperandom_stater   r   )lowhighsize)	nprandomRandomStateranger   float32randnuniformappend)r   r   r   r   r   r   r   rngrB   _X_y_ws               rD   make_batches_sparser      s     	A
A
A
)


%
%C9  ](N*
 
 
 YY*++[[QQ-@[AA			a7NrL   c            
           e Zd ZdZdededededdf
dZd	eeef         deeef         fd
Z	de
j        fdZdee         de
j        fdZde
j        fdZdefdZdS )TestDatasetzPContains a dataset in numpy format as well as the relevant objective and metric.rE   get_dataset	objectivemetricr)   Nc                 z    || _         || _        || _         |            \  | _        | _        d | _        d | _        d S N)rE   r   r   r   r   r   margin)selfrE   r   r   r   s        rD   __init__zTestDataset.__init__   s>     	"$'+,0rL   	params_inc                     | j         |d<   | j        |d<   | j         dk    r,t          t          j        | j                  dz             |d<   |S )Nr   eval_metricmulti:softmaxr   	num_class)r   r   intr   maxr   )r   r   s     rD   
set_paramszTestDataset.set_params	  sN    !%	+#';	- >_,,%(!);%<%<Ik"rL   c                 \    t          j        | j        | j        | j        | j        d          S )NT)weightbase_marginenable_categorical)xgbDMatrixr   r   r   r   r   s    rD   get_dmatzTestDataset.get_dmat  s2    {FF6#
 
 
 	
rL   max_binc                 $   dd l }| j        d n|                    | j                  }|                    | j        t          j                  }|                    | j        t          j                  }t          j        |||| j	        |          S )Nr   r   )r   r   r   )
r   r   r   r   r   r   r   r   QuantileDMatrixr   )r   r   r   r   r   r   s         rD   get_device_dmatzTestDataset.get_device_dmat  s    FNDD(8(8HHTV2:H..HHTV2:H.."qW
 
 
 	
rL   c                    | j         j        d         }d}||z  dz   }g }g }g }t          |          D ]}||z  }t          |dz   |z  |          }	|	|k    sJ | j         ||	df         }
| j        ||	         }| j        | j        ||	         nd }|                    |
           |                    |           ||                    |           t          |||r|nd dd          }t          j	        |          S )Nr   
   r   .cacheF)r   on_host)
r   shaper   minr   r   r   r   r   r   )r   r   r   	per_batch	predictorresponser   ibegendr   r   r   its                 rD   get_external_dmatzTestDataset.get_external_dmat#  s.   FLO		*Q.		y!! 
	! 
	!Ai-Cq1u	)955C#::::s3w|$As3wA#'6#5s3w4AQOOA}a   &FF$
 
 
 {2rL   c                     | j         S r   )rE   r   s    rD   __repr__zTestDataset.__repr__@  s
    yrL   )__name__
__module____qualname____doc__strr   r   r	   r   r   r   r   r   r   r   r   r   r   r   rN   rL   rD   r   r      s       ZZ11&.1;>1HK1	1 1 1 1DcN tCH~    
#+ 
 
 
 

x} 
9L 
 
 
 
3;    :#      rL   r   Tn_query_groupsmax_relsort_qidc                    t           j                            d          }|                    dd| |z                                | |          }t          j        |d          }||                                z  }t          j        ||                                z  |z            	                    t           j
                  }|                    d|| t           j
                  }|                    dd|          }	|	t          j        |	          z  }	|	t          j        |	          z  }	|rt          j        |          }||||	fS )zMake a dataset for testing LTR.r   r   r   )r   r   )axis)r   r   )r   r   default_rngnormalreshaper   r   roundr   astypeint32integerssort)
r   r   r  r  r  r   r   r   qidr   s
             rD   make_ltrr  D  s    )


%
%C

1c	J 6
77??	:VVA
qqALA
QUUWWw&''..rx88A
,,q.y,
I
IC

1c
//ANANA gcllaa<rL   c            	          t           j        dt          dt          t          t          t          t
          f         fd            } dt          t          t          t          t
          f         dt          fd} |                                 |          S )Ndrawr)   c           	          | t          j        dd                    } | t          j        dd                    } | t          j        dd                    } | t          j        ddddd                    }||||fS )	Nr   i   r         r   F)	min_value	max_value	allow_nanallow_infinityallow_subnormal)r#   r  floats)r  r   r   n_catsr   s        rD   	_make_catz$_cat_sampled_from.<locals>._make_cat\  s    D,Q4455	T*-a3344
j)!S11224$ %  
 
 *fh66rL   r   c           	          | d         | d         | d         | d         t           d d d fddd	          S )
Nr   r   r   r/   x-c                  ,    t           d          S )NF)onehotr   )r    )r  r   r   r   s   rD   <lambda>z3_cat_sampled_from.<locals>._build.<locals>.<lambda>s  s"    $:veh   rL   reg:squarederrorrmse)r   )r   r  r   r   r   s    @@@@rD   _buildz!_cat_sampled_from.<locals>._buildl  s    G	!W
a7;;:;;;;;;       
 
 	
rL   )r#   	compositer   r   r   floatr   map)r  r%  s     rD   _cat_sampled_fromr)  [  s    7 7U3S%+?%@ 7 7 7 7
U3S%/0 
[ 
 
 
 
 9;;??6"""rL   categorical_dataset_strategyz1e5x8-0.95-csrc                  @    t          t          d          ddd          S )N     j@   gffffff?Fr!   r   rN   rL   rD   r"  r"        *3s88QeDD rL   r#  r$  z1e5x8-0.5-csrc                  @    t          t          d          ddd          S )Nr,  r-        ?Fr.  rN   rL   rD   r"  r"    s    *3s88QUCC rL   z1e5x8-0.5-densec                  @    t          t          d          ddd          S )Nr,  r-  r1  Tr.  rN   rL   rD   r"  r"    s    *3s88QTBB rL   z1e5x8-0.05-csrc                  @    t          t          d          ddd          S )Nr,  r-  皙?Fr.  rN   rL   rD   r"  r"    r/  rL   z1e5x8-0.05-densec                  @    t          t          d          ddd          S )Nr,  r-  r4  Tr.  rN   rL   rD   r"  r"    s    *3s88QdCC rL   unweighted_strategyc                 T     t           j        dt          dt          f fd            }|S )zgFactory function for creating strategies that generates datasets with weight and
    base margin.

    r  r)   c           
          |           } | t          j                              rO | t          t          j        t          |j                  t          j        dd                              |_         | t          j                              rd}|j	        dk    r*t          t          j        |j                  dz             }n,|j                            d          r|j        j        d         } | t          t          j        |j        j        d         |z  t          j        dd	                              |_        |j        J |dk    r0|j                            |j        j        d         |          |_        |S )
Ng?rz   )elementsr   r   mtregr   r1  r   )r#   booleansr$   r   float64lenr   r  r   r   r   r   rE   rj   r   r   r  )r  datar   r6  s      rD   weight_marginz0make_datasets_with_margin.<locals>.weight_margin  sg    D!4554
#%%&& 	TrzCKK:;LSRU;V;VWWW DF 4
#%%&& 	NI~00tv 233		%%g.. , FLO	$JV\!_y0'.sC88   DK ;***A~~"k11$&,q/9MMrL   )r#   r&  r   r   )r6  r?  s   ` rD   make_datasets_with_marginr@    sG     H       4 rL   c                  X   t          j        t          dt          dd          t          dt          dd          t          dt          dd	          t          d
t
          dd          t          dt
          dd          t          dd dd          g          }  t          |                       S )Ncalif_housingr#  r$  zcalif_housing-l1reg:absoluteerrormaecancerzbinary:logisticloglossr   z	sparse-l1emptyc                  R    t          j        d          t          j        d          fS )N)r   d   r   )r   rG  rN   rL   rD   r"  z'make_dataset_strategy.<locals>.<lambda>  s    (++RXa[[9 rL   )r#   sampled_fromr   r   r   r   r@  )_unweighted_datasets_strategys    rD   make_dataset_strategyrL    s    $.$;!79KV  "$:<OQV  *.?KK*.@&IIZ1DeLL99"	 	
% %!& D$%BCCEEErL   digitsr   mloglossr:  c                  <    t                               ddd          S Nr  r   r/   )r   r   	n_targetsdatasetsr   rN   rL   rD   r"  r"        H,,sqTU,VV rL   zmtreg-l1c                  <    t                               ddd          S rP  rR  rN   rL   rD   r"  r"    rT  rL   rC  rD  -C6?L	tolerancec           	      f    t          fdt          | | dd                    D                       S )Nc              3   0   K   | ]\  }}||z
  k     V  d S r   rN   .0r  r   rX  s      rD   	<genexpr>z!non_increasing.<locals>.<genexpr>  s0      ==tq!A"======rL   r   allziprW  rX  s    `rD   non_increasingrb    s6    ====s1ae}}======rL   c           	      f    t          fdt          | | dd                    D                       S )Nc              3   2   K   | ]\  }}||z
   k    V  d S r   rN   r[  s      rD   r]  z!non_decreasing.<locals>.<genexpr>  s2      ??AA9*$??????rL   r   r^  ra  s    `rD   non_decreasingre    s6    ????Q!""??????rL   Mpredsdtrainc                     |                                 }ddt          j        |            z   z  } | |z
  }| d| z
  z  }||fS )z#Binary regression custom objective.r   )	get_labelr   exp)rg  rh  labelsgradhesss        rD   	logregobjro    sM    F3'(E6>DC%K D:rL   predtrev_linkc                    |                                 }|rddt          j        |            z   z  } d| k                                    r| dk                                    sJ t          j        | j                  }| dk    }| j        dk    rdt          j        d          fS d||         z
  ||<   | dk    }||         ||<   dt          j        |          fS )zEvaluation metric for xgb.train.

    Parameters
    ----------
    rev_link : Whether the metric needs to apply the reverse link function (activation).

    r           r1  r   	CustomErrr   )	rj  r   rk  r_  zerosr   r   r<  r   )rp  rh  rq  labelrgtles          rD   eval_error_metricrz    s     E -sRVUF^^+,5L8Uc\$6$6$8$8888
A	BzQBJsOO++b	MAbE	#B"IAbEq		!!rL   Fy_truey_scorec                 D   |rddt          j        |           z   z  }d|k                                    r|dk                                    sJ t          j        |j                  }|dk    }d| |         z
  ||<   |dk    }| |         ||<   t          j        |          S )z>Evaluation metric that looks like metrics provided by sklearn.r   rs  r1  r   )r   rk  r_  ru  r   r   )r{  r|  rq  rw  rx  ry  s         rD   eval_error_metric_sklr~  &  s    
  1rvwh///07N!!<w#~&:&:&<&<<<<
A	3Br
NAbE	CB2JAbE6!99rL   c                 n    || z
  }t          j        t          j        ||          |j        z            }|S r   )r   sqrtdotr   )r{  r|  errr$  s       rD   root_mean_squarer  7  s3    
F
C726#s##gl233DKrL   r  c                 X    t          j        |           }|t          j        |          z  S r   )r   rk  r   )r  es     rD   softmaxr  =  s!    
q		Arvayy=rL   Cr   classesordergdtypec                      |rddl nt          dj        dj        dt          j        j        f         f fd}|S )a5  Custom softprob objective for testing.

    Parameters
    ----------
    use_cupy :
        Whether the objective should return cupy arrays.
    order :
        The order of gradient matrices. "C" or "F".
    gdtype :
        DType for gradient. Hessian is not set. This is for testing asymmetric types.
    r   Nrl  rp  r)   c                    | j         d         }                    |ft          j                  }                    |ft          j                  }d}t	          |j         d                   D ]}| |         }t          ||d d f                   }t	          |j         d                   D ]n}	|dk    s|k    sJ |	|k    r||	         dz
  n||	         }
t          d||	         z  d||	         z
  z                                  |          }|
|||	f<   ||||	f<   o|                    |f          }|                    |f          }	                    |          }	                    |          }||fS )	Nr   r   gư>r   r   rz   )requirementsr   )r  )
r   ru  r   r   r   r  r   itemr  require)rl  rp  rowsrm  rn  epsrw  targetpr}   ghbackendr  r  r  s               rD   r   zsoftprob_obj.<locals>.objectiveU  s    |A}}dG_BJ}??}}dG_BJ}??u{1~&& 	 	AAYFad$$A5;q>**  {{f&7&7&7&7"#v++AaD3JJ1Q4qtsQqTz288::C@@QT
QT

 ||T7O,,||T7O,,t%vFFt%88TzrL   )r   r   ndarrayr   )r  r   r  r  r   r  s   ` `` @rD   softprob_objr  B  s      (/	w/	0        . rL   y_predsample_weightc                 n    || z
  }t          j        t          |                     }|
||z  }||z  }||fS )zLeast squared error.)r   onesr=  )r{  r  r  rm  rn  s        rD   ls_objr  o  sF     F?D73v;;D :rL   c                   <    e Zd ZdZddedefdZddZd	eddfd
Z	dS )DirectoryExcursionz\Change directory.  Change back and optionally cleaning up the directory when
    exit.

    Fpathcleanupc                     || _         t          j                             t          j                             t          j         j                            | _        || _        t                      | _        d S r   )r  osnormpathabspathcurdirr  setfiles)r   r  r  s      rD   r   zDirectoryExcursion.__init__  sH    	g&&rwrw~'F'FGG"uu


rL   r)   Nc                     t          j        | j                   | j        rGd t          j        t           j                            | j                            D             | _        d S d S )Nc                 `    h | ]+\  }}}|D ]"}t           j                            ||          #,S rN   r  r  joinr\  rootsubdirr  fs        rD   	<setcomp>z/DirectoryExcursion.__enter__.<locals>.<setcomp>  sU       'D&%   T1%%   rL   )r  chdirr  r  walk
expanduserr  r   s    rD   	__enter__zDirectoryExcursion.__enter__  sh    
< 	 +-7273E3Edi3P3P+Q+Q  DJJJ	 	rL   r   c                 0   t          j        | j                   | j        rsd t          j        t           j                            | j                            D             }|                    | j                  }|D ]}t          j	        |           d S d S )Nc                 `    h | ]+\  }}}|D ]"}t           j                            ||          #,S rN   r  r  s        rD   r  z.DirectoryExcursion.__exit__.<locals>.<setcomp>  sU       'D&%   T1%%   rL   )
r  r  r  r  r  r  r  
differencer  remove)r   r   r  diffr  s        rD   __exit__zDirectoryExcursion.__exit__  s    
< 	 +-7273E3Edi3P3P+Q+Q  E
 ##DJ//D  	!	 	 rL   F)r)   N)
r   r   r   r   r   boolr   r  r   r  rN   rL   rD   r  r  {  s{         
% %X % % % % %   
c 
d 
 
 
 
 
 
rL   r  c               #   H  K   t                      t                      }} t          j        t          j        }}	 | |ct          _        t          _        t          j        t          j        fV  ||ct          _        t          _        dS # ||ct          _        t          _        w xY w)zReassign stdout temporarily in order to test printed statements
    Taken from:
    https://stackoverflow.com/questions/4219717/how-to-assert-output-with-nosetest-unittest-in-python

    Also works for pytest.

    N)r   rh   stdoutstderr)new_outnew_errold_outold_errs       rD   captured_outputr    s        zz8::WGz3:WG2!('
CJj#*$$$$!('
CJJJ'
CJ1111s   3B B!)enablesecr  kwargsc                n    |rt          j        j        | g|R i |S t          j        j        dg|R i |S )a   Make a pytest mark for the `pytest-timeout` package.

    Parameters
    ----------
    sec :
        Timeout seconds.
    enable :
        Control whether timeout should be applied, used for debugging.

    Returns
    -------
    pytest.mark.timeout
    N)pytestmarktimeout)r  r  r   r  s       rD   r  r    sR      9{"38888888;t5d555f555rL   rB   pytestconfigc           
      H   |                     d          rt                      d         rt          d          t                      d         rt          d          dd l}ddlm} |                    ddt          t           |                                	           d S d S )
Nz--use-rmm-poolr'   z2The --use-rmm-pool option requires the RMM packagez8The --use-rmm-pool option requires the dask_cuda packager   )
get_n_gpusTi   @)pool_allocatorinitial_pool_sizedevices)
	getoptionr   r   r   r   dask_cuda.utilsr  reinitializelistr   )rB   r  r   r  s       rD   setup_rmm_poolr    s    .// 
88K  	TRSSS>>+& 	J   	


......0zz||,,-- 	 	
 	
 	
 	
 	

 
rL   r  c                    t          t          j                            |                     } 	 d t          j        |           D             }d |D             }d|v r t          j                            | d          S t          t          j                            | t          j        j                            }|| k    sJ |} )z8Look for the demo directory based on the test file name.Tc                 D    g | ]}|                                 |j        S rN   )is_dirr  )r\  r  s     rD   
<listcomp>zdemo_dir.<locals>.<listcomp>  s'    BBBaqxxzzB16BBBrL   c                 L    g | ]!}t           j                            |          "S rN   )r  r  basename)r\  ds     rD   r  zdemo_dir.<locals>.<listcomp>  s(    888127##A&&888rL   demo)r  r  r  dirnamescandirr  pardir)r  subdirsnew_paths      rD   demo_dirr    s    BGOOD))**DBB2:d#3#3BBB88888W7<<f---BGLLrw~>>??4rL   c                 z    t           j                            t           j                            |                     S r   )r  r  r  r  r  s    rD   r  r    s&    7BGOOD11222rL   c                 \    t           j                            t          |           d          S )Nr>  )r  r  r  r  r  s    rD   data_dirr    s    7<<///rL   c                     t          |           }t          j        t          j                            |d                    }t          j        t          j                            |d                    }||fS )Nz agaricus.txt.train?format=libsvmzagaricus.txt.test?format=libsvm)r  r   r   r  r  r  )r  dpathrh  dtests       rD   load_agaricusr    sW    TNNE[e-OPPQQFKU,MNNOOE5=rL   c                     t          t          j                            t	          |           t          j        j                            S r   )r  r  r  r  r  r  r  s    rD   project_rootr    s*    BGLL$@@AAArL   
world_sizetest_fn.c                 v  	 t          j                    	dt          t          t          t          t
          f         f         dd f	fd}t          d|           }|                                 g }t          |           D ]T}t          j
        ||                                f          }|                    |           |                                 U|D ]I}|                                 	                                sJ d	                                             J|                                 d S )N	rabit_envr)   c                     	 t          j        j        di | 5   i  d d d            d S # 1 swxY w Y   d S # t          $ r }                    |           Y d }~d S d }~ww xY w)NrN   )r   
collectiveCommunicatorContextr   put)r  r  r   exception_queuer  r  s     rD   
run_workerz"run_with_rabit.<locals>.run_worker  s    	#3@@i@@ ) )(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 	# 	# 	#"""""""""	#s-   < 	/< 3< 3< 
A&A!!A&z	127.0.0.1)host_ip	n_workers)r  r   zWorker failed: )queueQueuer	   r   r   r   r   startr   	threadingThreadworker_argsr   r  rG  getwait_for)
r  r  r   r  r  trackerworkersrB   workerr  s
    ```     @rD   run_with_rabitr    sP    $);==O#d3c3h#78 #T # # # # # # # # # ;*EEEGMMOOOG:  !7;N;N;P;P:RSSSv R R$$&&QQ(Q/:M:M:O:O(Q(QQQQQrL   feature_namesc                 :      fdt          |          D             S )zBGet the global list of feature names from the local feature names.c                 (    g | ]}D ]	}| d | 
S ).rN   )r\  rankfeaturer  s      rD   r  z.column_split_feature_names.<locals>.<listcomp>  sH        $ >E4'   rL   )r   )r  r  s   ` rD   column_split_feature_namesr    s6       (-j(9(9   rL   c                  0    t          j                    dk    S )z)Check if the current platform is Windows.r,   )ri   r   rN   rL   rD   r   r     s    ?	))rL   )T)rV  r  )Fr  r   r   )r   importlib.utilrG   r  ri   r  r0   rh   r  
contextlibr   ior   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   numpyr   r  scipyr   xgboostr   r   xgboost.corer   xgboost.sklearnr   _typingr   r>  r   r   r   r   r   r   r    r!   importorskipr"   r#   hypothesis.extra.numpyr$   rS  r  r   r%   r1   rK   rO   rQ   rU   rY   r]   ra   rk   ro   rr   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r'  
csr_matrixr  r   r   r  SearchStrategyr)  r*  __annotations__rJ  sparse_datasets_strategyr@  rL  #_unweighted_multi_datasets_strategymulti_dataset_strategyrb  re  BoosterXGBModelrf  r   ro  r<  rz  r~  r  r  r  r  r  r  r  Configr  r  r  r  r  r  r  r  r   rN   rL   rD   <module>r%     s         				    



     % % % % % %                                                                   " " " " " " ( ( ( ( ( (      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 !V ..
 " ! ! ! ! ! ) ) ) ) ) )6122Y|43%G%GHH
$    :N N N N N N
V V V V V
N: N N N N:    J            J    *    :    *    :    A* A A A A5z 5 5 5 5j        
 
 
 
 
j     
        Z    
    6s 6z 6 6 6 6J* J J J J #/3
9i*+   *-:=IN
4!"D$4d2:6FFG   0E E E E E E E EZ    	
  2:rz2:rz9:   .#:4 # # # #D ;L:K:M:M j7 M M M2:2DD		
 	
 	CC		
 	
 	BB		
 	
 	DD		
 	
 	CC		
 	
3! ! H##2#b*+K889# # # #PFz8E F F F F. '>j&=Hj/:FFVV		
 	
 	VV		
 	
' ' #&22'    
> >huo >% >4 > > > >@ @huo @% @4 @ @ @ @ GCcl++RZ  rz2:?U9V    ":""{"6:"
3
?" " " "2 ?D J!#7;Z   "RZ "*     rz bj     KT* ** *14*DG** * * *\ SW	 	J	 "
	;CBJ;O	
2:rz!"	 	 	 	       D 258);#<dD#HI 2 2 2 2" 26 6 6 6 6S 6$ 6 6 6 6 6 6(
c 
 
4 
 
 
 
$
3 
3 
 
 
 
33 33 3 3 3 303 03 0 0 0 0 ck3;&> ?    Bs Bs B B B B&sCx09<HK	   6c3h(69	#Y   *D * * * * * *rL   