
    ^iY                     	   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jd                  d      Z3ddl3m4Z4 ddl5m6Z6  ejd                  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j                     eej                     eej                     f   f
d7ZX G d8 d9      ZY	 dd0eSd1eSd;eSd<eSd=e8deej                  ej                  ej                  ej                  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             ZdddYeeU   dZeUde8fd[ZeddYeeU   dZeUde8fd\Zf ed]e!j                  e!j                        Zid^ej                  d_e!j                  deej                  ej                  f   fd`Zkdaej                  d_e!j                  dbe8dee9ej                  f   fdcZm	 dddej                  deej                  dbe8dej                  fdfZnddej                  deej                  deUfdgZodhej                  dej                  fdiZp	 ddjeSd2e8dke9dle9de&f
dmZq	 dddej                  dnej                  doeej                     deej                  ej                  f   fdpZr G dq dr      Zse
deeeef   ddf   fds       Ztd:dtdueSd-edve8dwedef
dxZudyedzej                  ddfd{Zwd|e9de9fd}Zxd|e9de9fd~Zyd|e9de9fdZzd|e9dee!j                  e!j                  f   fdZ{d|e9de9fdZ|deSdedef   d-edweddf
dZ}deee9eSf      deSdee9   fdZ~de8fdZy)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yt        j                  r	 t        j                  t        j                  t        j                        5 } t        j                  t        j                  t        j                        5 }| j                  d       | j                         d   }| j                          |j                  d|f       | j                         \  }}|j                  dj                                |j                  d      j                         }|dk(  sJ 	 ddd       ddd       y	y# 1 sw Y   xY w# 1 sw Y   y	xY w# t        $ r Y yw xY w)
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         Y/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/testing/__init__.pyr1   r1   @   s    x++	!3!3 $v8J8JK$OUJ'))+A.t}- --/au||~.iil))+ e|#|$ $  %$ $ $  		sH   2E 3EB D8&E.E 8E	=EE	E E 	EEnamec                 T    t         j                  j                  |       }|d u |  ddS )Nz is not installed.r&   )	importlibutil	find_spec)rE   specs     rD   no_modrK   ]   s-    >>##D)DD69K1L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    %Z3TUUrL   c                  "    t               dk7  ddS )Nr+   zLinux is required.r&   r   rN   rL   rD   	not_linuxrQ   g   s    W,8L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                  `    t         j                  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   {   s*    
||u%1EE)rL   c                      t         j                  j                  d      st         j                  j                  d      rdddS t        d      S )Nrc   darwinrd   Tre   pysparkrg   rN   rL   rD   no_sparkro      s;    
||u%)@)@)J1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                  x    	 dd l m}  | j                  g dg dgg d       dddS # t        $ r dddcY S w xY w)	Nr   )r          @T)r   g      @F)abc)columnszFailed import modin.Tre   )modin.pandasrq   	DataFrameImportError)mds    rD   no_modinr      sK    E!
no6P -4@@  E0tDDEs   !( 99c                  F    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      s4    +F5%"f55 5!V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   s5t               dk(  r(dd l}	 |j                  g d      j	                          | S | S # t
        $ r	 d| d<   Y | S w xY w)Ncupyr'   r,   r   )r   r   r/   T)rK   r   r   arraysum	Exception)	skip_cupycps     rD   no_cupyr      sg    vI[!fh)&;	*HHY##% 9  	*%)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                  L    d}d}| D ]  }|xs |d   }|d   s|d   } n ||dS )NF r'   r(   r&   rN   )r   r'   r(   args       rD   no_multipler      sK    IF 1[!1	{]F	
 #f55rL   c                      dt               dS )Nrd   re   )
is_windowsrN   rL   rD   skip_winr      s    -JLIIrL   	n_samples
n_featuresuse_cupyc                 B    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      s3     9j!X>GAq!Q41qtrL   n_samples_per_batch	n_batchessparsityc           	      ~   g }g }g }t         j                  j                  d      }t        |      D ]  }t	        j                  | |d|z
  dt         j
                  |      }	|j                  |       }
|j                  dd|       }|j                  |	       |j                  |
       |j                  |        |||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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y)TestDatasetzPContains a dataset in numpy format as well as the relevant objective and metric.rE   get_dataset	objectivemetricr)   Nc                 r    || _         || _        || _         |       \  | _        | _        d | _        d | _        y N)rE   r   r   r   r   r   margin)selfrE   r   r   r   s        rD   __init__zTestDataset.__init__   s6     	"$'+,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	  sP    !%	+#';;	- >>_,%(!);%<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    {{FFFF66#
 	
rL   max_binc                 P   dd l }| j                  d n|j                  | j                        }|j                  | j                  t        j
                        }|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  sw    FFND(8HHTVV2::H.HHTVV2::H.""qW
 	
rL   c                    | j                   j                  d   }d}||z  dz   }g }g }g }t        |      D ]  }||z  }t        |dz   |z  |      }	|	|k7  sJ | j                   ||	df   }
| j                  ||	 }| j
                  | j
                  ||	 nd }|j                  |
       |j                  |       ||j                  |        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   FFLLO		*Q.		y! 
	!Ai-Cq1u	)95C#::s3w|$As3A#'66#5s34AQOOA}a 
	! F$
 {{2rL   c                     | j                   S r   )rE   r   s    rD   __repr__zTestDataset.__repr__@  s    yy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11&.1;>1HK1	1DcN tCH~ 
#++ 

x} 
9L9L 
3;; :# rL   r   Tn_query_groupsmax_relsort_qidc                 v   t         j                  j                  d      }|j                  dd| |z        j	                  | |      }t        j
                  |d      }||j                         z  }t        j                  ||j                         z  |z        j                  t         j                        }|j                  d|| t         j                        }|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??	:VA
qqALA
QUUWw&'..rxx8A
,,q.y,
IC

1c
/ANANAggcl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} |        j                  |      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    ,,Q45	*--a34
j))!S12$ %
 *fh66rL   r   c           	      p    | 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k:,axq
; 
 	
rL   )r#   	compositer   r   r   floatr   map)r  r%  s     rD   _cat_sampled_fromr)  [  sj    7 7U3S%+?%@ 7 7
U3S%/0 
[ 
 ;??6""rL   categorical_dataset_strategyz1e5x8-0.95-csrc                  0    t        t        d      ddd      S )N     j@   gffffff?Fr!   r   rN   rL   rD   r"  r"        *3s8QeD rL   r#  r$  z1e5x8-0.5-csrc                  0    t        t        d      ddd      S )Nr,  r-        ?Fr.  rN   rL   rD   r"  r"    s    *3s8QUC rL   z1e5x8-0.5-densec                  0    t        t        d      ddd      S )Nr,  r-  r1  Tr.  rN   rL   rD   r"  r"    s    *3s8QTB rL   z1e5x8-0.05-csrc                  0    t        t        d      ddd      S )Nr,  r-  皙?Fr.  rN   rL   rD   r"  r"    r/  rL   z1e5x8-0.05-densec                  0    t        t        d      ddd      S )Nr,  r-  r4  Tr.  rN   rL   rD   r"  r"    s    *3s8QdC rL   unweighted_strategyc                 R     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                               rN | t        t        j                  t        |j                        t        j                  dd                  |_         | t        j                               rd}|j                  dk(  r,t        t        j                  |j                        dz         }n4|j                  j                  d      r|j                  j                  d   } | t        t        j                  |j                  j                  d   |z  t        j                  dd	                  |_        |j                  J |dk7  r8|j                  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  s4    !45
##%&rzzCK:;L;LSRU;VWDF 
##%&I~~0tvv 23	%%g. FFLLO	JJVV\\!_y0'..sC8DK ;;***A~"kk11$&&,,q/9MrL   )r#   r&  r   r   )r6  r?  s   ` rD   make_datasets_with_marginr@    s3     H   4 rL   c                     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                  V    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    (+RXXa[9 rL   )r#   sampled_fromr   r   r   r   r@  )_unweighted_datasets_strategys    rD   make_dataset_strategyrL    s    $.$;$;!79KV "$:<OQV *.?K*.@&IZ1DeL9"		
%!& D$%BCEErL   digitsr   mloglossr:  c                  2    t         j                  ddd      S Nr  r   r/   )r   r   	n_targetsdatasetsr   rN   rL   rD   r"  r"        H,,sqTU,V rL   zmtreg-l1c                  2    t         j                  ddd      S rP  rR  rN   rL   rD   r"  r"    rT  rL   rC  rD  L	tolerancec           	      F    t        fdt        | | dd        D              S )Nc              3   4   K   | ]  \  }}||z
  k    y wr   rN   .0r  r   rW  s      rD   	<genexpr>z!non_increasing.<locals>.<genexpr>  s     =tq!A"=s   r   allziprV  rW  s    `rD   non_increasingra    s     =s1ae}===rL   c           	      F    t        fdt        | | dd        D              S )Nc              3   6   K   | ]  \  }}||z
   k\    y wr   rN   rZ  s      rD   r\  z!non_decreasing.<locals>.<genexpr>  s      ?AA9*$?s   r   r]  r`  s    `rD   non_decreasingrd    s     ?Q!"???rL   Mpredsdtrainc                 |    |j                         }ddt        j                  |        z   z  } | |z
  }| d| z
  z  }||fS )z#Binary regression custom objective.r   )	get_labelr   exp)rf  rg  labelsgradhesss        rD   	logregobjrn    sJ    F3'(E6>DC%K D:rL   predtrev_linkc                    |j                         }|rddt        j                  |        z   z  } d| k  j                         r| dk  j                         sJ t        j                  | j
                        }| dkD  }| 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   )	ri  r   rj  r^  zerosr   r   r<  r   )ro  rg  rp  labelrgtles          rD   eval_error_metricry    s     EsRVVUF^+,5LUc\$6$6$888
A	BzzQBJJsO++b	MAbE	#B"IAbEq	!!rL   y_truey_scorec                 0   |rddt        j                  |       z   z  }d|k  j                         r|dk  j                         sJ t        j                  |j                        }|dkD  }d| |   z
  ||<   |dk  }| |   ||<   t        j
                  |      S )z>Evaluation metric that looks like metrics provided by sklearn.r   rr  r1  r   )r   rj  r^  rt  r   r   )rz  r{  rp  rv  rw  rx  s         rD   eval_error_metric_sklr}  &  s    
 rvvwh//07N!w#~&:&:&<<<
A	3Br
NAbE	CB2JAbE66!9rL   c                 |    || z
  }t        j                  t        j                  ||      |j                  z        }|S r   )r   sqrtdotr   )rz  r{  errr$  s       rD   root_mean_squarer  7  s3    
F
C77266#s#gll23DKrL   r  c                 \    t        j                  |       }|t        j                  |      z  S r   )r   rj  r   )r  es     rD   softmaxr  =  s!    
q	Arvvay=rL   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   Nrk  ro  r)   c                    | j                   d   }j                  |ft        j                        }j                  |ft        j                        }d}t	        |j                   d         D ]  }| |   }t        ||d d f         }t	        |j                   d         D ]W  }	|dk\  s|k  sJ |	|k(  r||	   dz
  n||	   }
t        d||	   z  d||	   z
  z  j                         |      }|
|||	f<   ||||	f<   Y  |j                  |f      }|j                  |f      }j                  |      }j                  |      }||fS )	Nr   r   gư>r   r   rz   )requirementsr   )r  )
r   rt  r   r   r   r  r   itemr  require)rk  ro  rowsrl  rm  epsrv  targetpr}   ghbackendr  r  r  s               rD   r   zsoftprob_obj.<locals>.objectiveU  se    ||A}}dG_BJJ}?}}dG_BJJ}?u{{1~& 	AAYFad$A5;;q>* {f&777"#v+AaD3J1Q4qtsQqTz288:C@QT
QT
	 ||T7O,||T7O,t%vFt%8TzrL   )r   r   ndarrayr   )r  r   r  r  r   r  s   ` `` @rD   softprob_objr  B  sT     (/	w/	0 . rL   y_predsample_weightc                 h    || z
  }t        j                  t        |             }|
||z  }||z  }||fS )zLeast squared error.)r   onesr=  )rz  r  r  rl  rm  s        rD   ls_objr  o  sC     F?D773v;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	y)DirectoryExcursionz\Change directory.  Change back and optionally cleaning up the directory when
    exit.

    pathcleanupc                     || _         t        j                   j                  t        j                   j                  t        j                   j                              | _        || _        t               | _        y r   )r  osnormpathabspathcurdirr  setfiles)r   r  r  s      rD   r   zDirectoryExcursion.__init__  sD    	gg&&rwwrww~~'FG"u
rL   r)   Nc                 h   t        j                  | j                         | j                  rt        j                  t         j                  j                  | j                              D ch c]-  \  }}}|D ]"  }t         j                  j                  ||      $ / c}}}}| _        y y c c}}}}w r   )r  chdirr  r  walk
expanduserjoinr  )r   rootsubdirr  fs        rD   	__enter__zDirectoryExcursion.__enter__  s    
<< ,.772773E3Edii3P+Q 'D&%  T1%%DJ s   -2B,
r   c                    t        j                  | j                         | j                  rt        j                  t         j
                  j                  | j
                              D ch c]-  \  }}}|D ]"  }t         j
                  j                  ||      $ / c}}}}}|j                  | j                        }|D ]  }t        j                  |        y y c c}}}}w r   )r  r  r  r  r  r  r  r  
differencer  remove)r   r   r  r  r  r  diffs          rD   __exit__zDirectoryExcursion.__exit__  s    
<< ,.772773E3Edii3P+Q 'D&%  T1%%E
 ##DJJ/D 		! s   -2C
F)r)   N)
r   r   r   r   r   boolr   r  r   r  rN   rL   rD   r  r  {  s2    
%X % %
c 
d 
rL   r  c               #   N  K   t               t               }} t        j                  t        j                  }}	 | |ct        _        t        _        t        j                  t        j                  f ||ct        _        t        _        y# ||ct        _        t        _        w xY w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    sn       z8:WGzz3::WG2!('
CJjj#**$$!('
CJ'
CJs   5B%9B	 1B%	B""B%)enablesecr  kwargsc                    |r#t        j                  j                  | g|i |S t        j                  j                  dg|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    sE     {{""38888;;t5d5f55rL   rB   pytestconfigc           
          |j                  d      rft               d   rt        d      t               d   rt        d      dd l}ddlm} |j                  ddt        t         |                   	       y y )
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    sv    ./8K RSS>+&J  	.0z|,- 	 	
 0rL   r  c                    t        t        j                  j                  |             } 	 t        j                  |       D cg c]  }|j                         s|j                  ! }}|D cg c]!  }t        j                  j                  |      # }}d|v r t        j                  j                  | d      S t        t        j                  j                  | t        j                  j                              }|| k7  sJ |} c c}w c c}w )z8Look for the demo directory based on the test file name.demo)	r  r  r  dirnamescandiris_dirbasenamer  pardir)r  r  subdirsdnew_paths        rD   demo_dirr    s    BGGOOD)*D
#%::d#3Baqxxz166BB0781277##A&88W77<<f--BGGLLrww~~>?4 B8s   DD+&Dc                 z    t         j                  j                  t         j                  j                  |             S r   )r  r  r  r  r  s    rD   r  r    s$    77BGGOOD122rL   c                 T    t         j                  j                  t        |       d      S )Nr>  )r  r  r  r  r  s    rD   data_dirr    s    77<<//rL   c                     t        |       }t        j                  t        j                  j                  |d            }t        j                  t        j                  j                  |d            }||fS )Nz agaricus.txt.train?format=libsvmzagaricus.txt.test?format=libsvm)r  r   r   r  r  r  )r  dpathrg  dtests       rD   load_agaricusr    sQ    TNE[[e-OPQFKKU,MNOE5=rL   c                     t        t        j                  j                  t	        |       t        j                  j
                              S r   )r  r  r  r  r  r  r  s    rD   project_rootr    s(    BGGLL$@AArL   
world_sizetest_fn.c                   	 t        j                         	dt        t        t        t        t
        f   f   dd f	fd}t        d|       }|j                          g }t        |       D ]I  }t        j                  ||j                         f      }|j                  |       |j                          K |D ]:  }|j                          	j                         r$J d	j                                  |j!                          y )N	rabit_envr)   c                     	 t        j                  j                  di | 5   i  d d d        y # 1 sw Y   y xY w# t        $ r}j	                  |       Y d }~y 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3@i@ )(() ) ) 	#""	#s.   A  	4A  =A  A   	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    s     $);;=O#d3c3h#78 #T # # ;*EGMMOG: !!7;N;N;P:RSv  R$$&Q//:M:M:O9P(QQ&R rL   feature_namesc                 \    t        |      D cg c]  }| D ]	  }| d|   c}}S c c}}w )zBGet the global list of feature names from the local feature names..)r   )r  r  rankfeatures       rD   column_split_feature_namesr    sC    
 ).j(9 $>E4&'  s   (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)g-C6?r  )FCr   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_strategyra  rd  BoosterXGBModelre  r   rn  r<  ry  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|43%GH
$ :N N N
V V
N: N: J   J * : * : A* A5z 5j  
 
j  
  Z 
 6s 6z 6J* J #/3
9i*+*-:=IN
4!!"D$4d2::6FFG0E EZ   	
  2::rzz2::rzz9:.#:44 #D ;L:M j77 M2:22D		
 	C		
 	B		
 	D		
 	C		
3! H##22#b*++K889#PFz88E F. '>j&=&=Hj/:FV		
 	V		
' #&2'  
>huo >% >4 >@huo @% @4 @ Ccll+RZZ  rzz2::?U9V "::""{{"6:"
3

?"2 ?DJJ!#7;ZZ"RZZ "**  rzz bjj  KT** *14*DG**\ SW	JJ	 "

	;CBJJ;O	
2::rzz!"	 D 258);#<dD#HI 2 2" 26 6 6S 6$ 6 6 6(
c 
 
4 
$
3 
3 
33 33 303 03 0 ckk3;;&> ? Bs Bs B&sCx09<HK	6c3h(69	#Y*D *rL   