
    iX                     	   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 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.m/Z/m0Z0 ddl1m2Z2m3Z3  ejh                  d      Z5ddl5m6Z6 ddl7m8Z8  ejh                  d      Z9 ede:e;d      Z<de:fdZ=de;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<fd,ZQd-ede<fd.ZRde<fd/ZSd0eTd1eTd2e:dee#e#e#f   fd3ZUd4eTd1eTd5eTd6eVdeeej                     eej                     eej                     f   f
d7ZY G d8 d9      ZZ	 dd0eTd1eTd;eTd<eTd=e:deej                  ej                  ej                  ej                  f   fd>Z[de6j                  fd?Z] e]       Z^e6j                  e_d@<    e6j                   eZdAdB dCdD       eZdEdF dCdD       eZdGdH dCdD       eZdIdJ dCdD       eZdKdL dCdD      g      ZadMe6j                  deg e6j                  eZ   f   fdNZbde6j                  eZ   fdOZc e6j                   eZdPe,dQdR       eZdSdT dCdD       eZdUdV dWdX      g      Zd  ebed             Ze edYe j                  e j                        ZhdZej                  d[e j                  deej                  ej                  f   fd\Zjd]ej                  d[e j                  d^e:dee;ej                  f   fd_Zl	 dd`ej                  daej                  d^e:dej                  fdbZmd`ej                  daej                  deVfdcZnddej                  dej                  fdeZo	 ddfeTd2e:dge;dhe;de%f
diZp	 dd`ej                  djej                  dkeej                     deej                  ej                  f   fdlZq G dm dn      Zre
deeeef   ddf   fdo       Zsd:dpdqeTd-edre:dsedef
dtZtduedvej                  ddfdwZvdxe;de;fdyZwdxe;de;fdzZxdxe;de;fd{Zydxe;dee j                  e j                  f   fd|Zzdxe;de;fd}Z{d~eTdedef   d-edseddf
dZ|deee;eTf      d~eTdee;   fdZ}de:f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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)non_decreasingnon_increasing
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         ^/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/xgboost/testing/__init__.pyr2   r2   B   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)rF   specs     rE   no_modrL   _   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'   )r2    rM   rE   no_ipv6rP   d   s    %Z3TUUrM   c                  "    t               dk7  ddS )Nr,   zLinux is required.r'   r   rO   rM   rE   	not_linuxrR   i   s    W,8LMMrM   c                      t        d      S )NubjsonrL   rO   rM   rE   	no_ubjsonrV   m       (rM   c                      t        d      S )NsklearnrU   rO   rM   rE   
no_sklearnrZ   q       )rM   c                      t        d      S )NdaskrU   rO   rM   rE   no_daskr^   u       &>rM   c                      t        d      S )NlokyrU   rO   rM   rE   no_lokyrb   y   r_   rM   c                  `    t         j                  j                  d      rdddS t        d      S )NwinUnsupported platform.Tr)   r(   dask_mlsysplatform
startswithrL   rO   rM   rE   
no_dask_mlrl   }   s*    
||u%1EE)rM   c                      t         j                  j                  d      st         j                  j                  d      rdddS t        d      S )Nrd   darwinre   Trf   pysparkrh   rO   rM   rE   no_sparkrp      s;    
||u%)@)@)J1EE)rM   c                      t        d      S )NpandasrU   rO   rM   rE   	no_pandasrs      rW   rM   c                      t        d      S )NpyarrowrU   rO   rM   rE   no_arrowrv      r[   rM   c                      t        d      S )NpolarsrU   rO   rM   rE   	no_polarsry      rW   rM   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.Trf   )modin.pandasrr   	DataFrameImportError)mds    rE   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)   rC   s     rE   no_matplotlibr      s4    +F5%"f55 5!V445s   
   c                      t        d      S )N	dask_cudarU   rO   rM   rE   no_dask_cudar          +rM   c                      t        d      S )NcudfrU   rO   rM   rE   no_cudfr      r_   rM   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   r0   T)rL   r   r   arraysum	Exception)	skip_cupycps     rE   no_cupyr      sg    vI[!fh)&;	*HHY##% 9  	*%)Ik"	*s   !A AAc                      t        d      S )N	dask_cudfrU   rO   rM   rE   no_dask_cudfr      r   rM   c                      t        d      S )NgraphvizrU   rO   rM   rE   no_graphvizr      s    *rM   c                      t        d      S )NrmmrU   rO   rM   rE   no_rmmr      s    %=rM   argsc                  L    d}d}| D ]  }|xs |d   }|d   s|d   } n ||dS )NF r(   r)   r'   rO   )r   r(   r)   args       rE   no_multipler      sK    IF 1[!1	{]F	
 #f55rM   c                      dt               dS )Nre   rf   )
is_windowsrO   rM   rE   skip_winr      s    -JLIIrM   	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         rE   make_regressionr      s3     9j!X>GAq!Q41qtrM   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   rngrC   _X_y_ws               rE   make_batches_sparser      s     	A
A
A
))


%C9 ]](N**
 YY*+[[QQ-@[A			 a7NrM   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.rF   get_dataset	objectivemetricr*   Nc                 r    || _         || _        || _         |       \  | _        | _        d | _        d | _        y N)rF   r   r   r   r   r   margin)selfrF   r   r   r   s        rE   __init__zTestDataset.__init__   s6     	"$'+,0rM   	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     rE   
set_paramszTestDataset.set_params  sP    !%	+#';;	- >>_,%(!);%<Ik"rM   c                     t        j                  | j                  | j                  | j                  | j
                  d      S )NT)weightbase_marginenable_categorical)xgbDMatrixr   r   r   r   r   s    rE   get_dmatzTestDataset.get_dmat  s2    {{FFFF66#
 	
rM   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         rE   get_device_dmatzTestDataset.get_device_dmat  sw    FFND(8HHTVV2::H.HHTVV2::H.""qW
 	
rM   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                 rE   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rM   c                     | j                   S r   )rF   r   s    rE   __repr__zTestDataset.__repr__>  s    yyrM   )__name__
__module____qualname____doc__strr   r   r	   r   r   r   r   r   r   r   r   r   r   r   rO   rM   rE   r   r      s    Z11&.1;>1HK1	1DcN tCH~ 
#++ 

x} 
9L9L 
3;; :# rM   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
             rE   make_ltrr  B  s     ))


%C

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

1c
/ANANAggclaa<rM   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        rE   	_make_catz$_cat_sampled_from.<locals>._make_catZ  s    ,,Q45	*--a34
j))!S12$ %
 *fh66rM   r   c           	      p    | d   | d   | d   | d   t         d d d fddd	      S )
Nr   r   r   r0   x-c                  $    t         d      S )NF)onehotr   )r   )r  r   r   r   s   rE   <lambda>z3_cat_sampled_from.<locals>._build.<locals>.<lambda>q  s    $:veh rM   reg:squarederrorrmse)r   )r   r  r   r   r   s    @@@@rE   _buildz!_cat_sampled_from.<locals>._buildj  s[    G	!W
a7k:,axq
; 
 	
rM   )r$   	compositer   r   r   floatr   map)r  r#  s     rE   _cat_sampled_fromr'  Y  sj    7 7U3S%+?%@ 7 7
U3S%/0 
[ 
 ;??6""rM   categorical_dataset_strategyz1e5x8-0.95-csrc                  0    t        t        d      ddd      S )N     j@   gffffff?Fr    r   rO   rM   rE   r   r         *3s8QeD rM   r!  r"  z1e5x8-0.5-csrc                  0    t        t        d      ddd      S )Nr*  r+        ?Fr,  rO   rM   rE   r   r     s    *3s8QUC rM   z1e5x8-0.5-densec                  0    t        t        d      ddd      S )Nr*  r+  r/  Tr,  rO   rM   rE   r   r     s    *3s8QTB rM   z1e5x8-0.05-csrc                  0    t        t        d      ddd      S )Nr*  r+  皙?Fr,  rO   rM   rE   r   r     r-  rM   z1e5x8-0.05-densec                  0    t        t        d      ddd      S )Nr*  r+  r2  Tr,  rO   rM   rE   r   r     s    *3s8QdC rM   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?r{   )elementsr   r   mtregr   r/  r   )r$   booleansr%   r   float64lenr   r  r   r   r   r   rF   rk   r   r   r  )r  datar   r4  s      rE   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rM   )r$   r$  r   r   )r4  r=  s   ` rE   make_datasets_with_marginr>    s3     H   4 rM   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   rE  rO   rM   rE   r   z'make_dataset_strategy.<locals>.<lambda>  s    (+RXXa[9 rM   )r$   sampled_fromr   r   r   r   r>  )_unweighted_datasets_strategys    rE   make_dataset_strategyrJ    s    $.$;$;!79KV "$:<OQV *.?K*.@&IZ1DeL9"		
%!& D$%BCEErM   digitsr   mloglossr8  c                  2    t         j                  ddd      S Nr  r   r0   )r   r   	n_targetsdatasetsr   rO   rM   rE   r   r         H,,sqTU,V rM   zmtreg-l1c                  2    t         j                  ddd      S rN  rP  rO   rM   rE   r   r     rR  rM   rA  rB  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)rU  rV  labelsgradhesss        rE   	logregobjr]    sJ    F3'(E6>DC%K D:rM   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           r/  r   	CustomErrr   )	rX  r   rY  allzerosr   r   r:  r   )r^  rV  r_  labelrgtles          rE   eval_error_metricri    s     EsRVVUF^+,5LUc\$6$6$888
A	BzzQBJJsO++b	MAbE	#B"IAbEq	!!rM   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   ra  r/  r   )r   rY  rc  rd  r   r   )rj  rk  r_  rf  rg  rh  s         rE   eval_error_metric_sklrm    s    
 rvvwh//07N!w#~&:&:&<<<
A	3Br
NAbE	CB2JAbE66!9rM   c                 |    || z
  }t        j                  t        j                  ||      |j                  z        }|S r   )r   sqrtdotr   )rj  rk  errr"  s       rE   root_mean_squarerr  -  s3    
F
C77266#s#gll23DKrM   r  c                 \    t        j                  |       }|t        j                  |      z  S r   )r   rY  r   )r  es     rE   softmaxru  3  s!    
q	Arvvay=rM   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   NrZ  r^  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   r{   )requirementsr   )r{  )
r   rd  r   r   r   ru  r   itemr  require)rZ  r^  rowsr[  r\  epsrf  targetpr~   ghbackendrv  rx  rw  s               rE   r   zsoftprob_obj.<locals>.objectiveK  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rM   )r   r   ndarrayr   )rv  r   rw  rx  r   r  s   ` `` @rE   softprob_objr  8  sT     (/	w/	0 . rM   y_predsample_weightc                 j    || z
  }t        j                  |j                        }|
||z  }||z  }||fS )zLeast squared error.)r   onesr   )rj  r  r  r[  r\  s        rE   ls_objr  e  sC     F?D774::D :rM   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      rE   r   zDirectoryExcursion.__init__w  sD    	gg&&rwwrww~~'FG"u
rM   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        rE   	__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          rE   __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  rO   rM   rE   r  r  q  s2    
%X % %
c 
d 
rM   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   ri   stdoutstderr)new_outnew_errold_outold_errs       rE   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       rE   r  r    sE     {{""38888;;t5d5f55rM   rC   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   )rC   r  r   r  s       rE   setup_rmm_poolr    sv    ./8K RSS>+&J  	.0z|,- 	 	
 0rM   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        rE   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    rE   r  r    s$    77BGGOOD122rM   c                 T    t         j                  j                  t        |       d      S )Nr<  )r  r  r  r  r  s    rE   data_dirr    s    77<<//rM   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  dpathrV  dtests       rE   load_agaricusr    sQ    TNE[[e-OPQFKKU,MNOE5=rM   c                     t        t        j                  j                  t	        |       t        j                  j
                              S r   )r  r  r  r  r  r  r  s    rE   project_rootr    s(    BGGLL$@AArM   
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)NrO   )r   
collectiveCommunicatorContextr   put)r  rt  r   exception_queuer  r  s     rE   
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  rE  getwait_for)
r  r  r   r  r  trackerworkersrC   workerr  s
    ```     @rE   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 rM   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       rE   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-   )rj   r   rO   rM   rE   r   r     s    ??	))rM   )Tr  )FCr   r   )r   importlib.utilrH   r  rj   r  r1   ri   r  
contextlibr   ior   r   typingr   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    utilsr!   r"   importorskipr#   r$   hypothesis.extra.numpyr%   rQ  r  r   r&   r2   rL   rP   rR   rV   rZ   r^   rb   rl   rp   rs   rv   ry   r   r   r   r   r   r   r   r   r   r   r   r   r%  
csr_matrixr  r   r   r  SearchStrategyr'  r(  __annotations__rH  sparse_datasets_strategyr>  rJ  #_unweighted_multi_datasets_strategymulti_dataset_strategyBoosterXGBModelrT  r   r]  r:  ri  rm  rr  ru  r  r  r  r  r  Configr  r  r  r  r  r  r  r  r   rO   rM   rE   <module>r     s    	    
  %            " ( 	 	 	 2 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'  
 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 *rM   