
    =[gBn                     
   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	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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,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de:fd+ZPde:fd,ZQ G d- d.e%j                  j                        ZTd/eUd0eUd1e8dee(e(e(f   fd2ZVd3eUd0eUd4eUd5eWdeee#j                     ee j                     ee j                     f   f
d6ZZ G d7 d8      Z[e1j                  	 	 	 dd/eUd0eUd9eUd:e8d5eWd;eWd<e8dee(e j                  f   fd=       Z]d/eUd0eUd>eUd?eUdee j                  e j                  e j                  e j                  f   f
d@Z^de4j                  fdAZ` e`       Zae4j                  ebdB<   e1j                  d/eUd0eUd5eWdCe8deee#j                     e j                  f   f
dD       Zc e4j                   e[dEdF dGdH       e[dIdJ dGdH       e[dKdL dGdH       e[dMdN dGdH       e[dOdP dGdH      g      ZedQe4j                  deg e4j                  e[   f   fdRZfde4j                  e[   fdSZg e4j                   e[dTe.dUdV       e[dWdX dGdH       e[dYdZ d[d\      g      Zh  efeh             Zidd]eeW   d^eWde8fd_Zjd`e%j                  dae%j                  de8fdbZl edce%j                  e%j                        Zodde j                  dee%j                  dee9e j                  f   fdfZqdge j                  dhe j                  de j                  fdiZrdge j                  dhe j                  deWfdjZsdke j                  de j                  fdlZt	 ddmeUd1e8dne9doe9de*f
dpZu	 ddge j                  dqe j                  dree j                     dee j                  e j                  f   fdsZv G dt du      Zwedeeeef   ddf   fdv       ZxdwdxdyeUd*edze8d{edef
d|Zyd}ed~e!j                  ddfdZ{dedee9   fdZ|de9de9fdZ}de9de9fdZ~de9de9fdZde9dee%j                  e%j                  f   fdZde9de9fdZdeUdedef   d*ed{eddf
dZdeee9eUf      deUdee9   fdZde8fdZy)zkUtilities for defining Python tests. The module is private and subject to frequent
change without notice.

    N)ThreadPoolExecutor)contextmanager)StringIOsystem)AnyCallableDict	GeneratorListOptionalSequenceSetTuple	TypedDictTypeVarUnion)sparse)RabitTracker)	ArrayLike)SklObjective)get_california_housing
get_cancer
get_digits
get_sparsemake_batchesmemory
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)   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         S/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/testing/__init__.pyr.   r.   ?   s    x++	!3!3v8J8JKvJ'))+A.t}- --/au||~.iil))+ e|#| L  ! LK  		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)rB   specs     rA   no_modrH   \   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"   )r.    rI   rA   no_ipv6rL   a   s    %Z3TUUrI   c                  "    t               dk7  ddS )Nr'   zLinux is required.r"   r   rK   rI   rA   	not_linuxrN   f   s    W,8LMMrI   c                      t        d      S )NubjsonrH   rK   rI   rA   	no_ubjsonrR   j       (rI   c                      t        d      S )NsklearnrQ   rK   rI   rA   
no_sklearnrV   n       )rI   c                      t        d      S )NdaskrQ   rK   rI   rA   no_daskrZ   r       &>rI   c                  `    t         j                  j                  d      rdddS t        d      S )NwinUnsupported platform.Tr$   r#   dask_mlsysplatform
startswithrH   rK   rI   rA   
no_dask_mlre   v   s*    
||u%1EE)rI   c                      t         j                  j                  d      st         j                  j                  d      rdddS t        d      S )Nr]   darwinr^   Tr_   pysparkra   rK   rI   rA   no_sparkri   |   s;    
||u%)@)@)J1EE)rI   c                      t        d      S )NpandasrQ   rK   rI   rA   	no_pandasrl      rS   rI   c                      t        d      S )NpyarrowrQ   rK   rI   rA   no_arrowro      rW   rI   c                      t        d      S )NmodinrQ   rK   rI   rA   no_modinrr      s    '?rI   c                      t        d      S )N	datatablerQ   rK   rI   rA   no_dtru          +rI   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pyplotImportError)r$   r?   s     rA   no_matplotlibr{      s4    +F5%"f55 5!V445s   
   c                      t        d      S )N	dask_cudarQ   rK   rI   rA   no_dask_cudar~      rv   rI   c                      t        d      S )NcudfrQ   rK   rI   rA   no_cudfr      r[   rI   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,   T)rH   r   r   arraysum	Exception)	skip_cupycps     rA   no_cupyr      sg    vI[!fh)&;	*HHY##% 9  	*%)Ik"	*s   !A AAc                      t        d      S )N	dask_cudfrQ   rK   rI   rA   no_dask_cudfr      rv   rI   c                      t        d      S )N
jsonschemarQ   rK   rI   rA   no_json_schemar      s    ,rI   c                      t        d      S )NgraphvizrQ   rK   rI   rA   no_graphvizr      s    *rI   c                      t        d      S )NrmmrQ   rK   rI   rA   no_rmmr      s    %=rI   argsc                  L    d}d}| D ]  }|xs |d   }|d   s|d   } n ||dS )NF r#   r$   r"   rK   )r   r#   r$   args       rA   no_multipler      sF    IF1[!1	{]F	 
 #f55rI   c                      dt               dS )Nr^   r_   )
is_windowsrK   rI   rA   skip_winr      s    -JLIIrI   c            
            e Zd ZdZdededee   dee   ddf
 fdZd	ede	fd
Z
ddZdeeej                  ej"                  f   eee   f   fdZ xZS )IteratorForTestzCIterator for testing streaming DMatrix. (external memory, quantile)Xywcacher%   Nc                     t        |      t        |      k(  sJ || _        || _        || _        d| _        t
        |   |       y )Nr   )cache_prefix)lenr   r   r   itsuper__init__)selfr   r   r   r   	__class__s        rA   r   zIteratorForTest.__init__   sG     1vQe,rI   
input_datac                 |   | j                   t        | j                        k(  ryt        j                  t
        d      5   || j                  | j                      | j                  | j                      d        d d d         || j                  | j                      j                         | j                  | j                      j                         | j                  r'| j                  | j                      j                         nd        t        j                          | xj                   dz  c_         y# 1 sw Y   xY w)Nr   zKeyword argument)match)datalabelweightr*   )r   r   r   pytestraises	TypeErrorr   copyr   gccollect)r   r   s     rA   nextzIteratorForTest.next   s    77c$&&k!]]9,>?tvvdggtww> @ 	%%'&&/&&(-1VV466$''?'')	

 	

1 @?s   9D22D;c                     d| _         y )Nr   )r   r   s    rA   resetzIteratorForTest.reset   s	    rI   c                    t        | j                  d   t        j                        r"t        j                  | j                  d      }n!t        j                  | j                  d      }t        j                  | j                  d      }| j                  r"t        j                  | j                  d      }nd }|||fS )Nr   csrformataxis)	
isinstancer   r   
csr_matrixvstacknpconcatenater   r   )r   r   r   r   s       rA   	as_arrayszIteratorForTest.as_arrays   s     dffQi!2!23dffU3AtvvA.ANN466*66tvvA.AA!QwrI   r%   N)__name__
__module____qualname____doc__r   r   strr   r	   intr   r   r   r   r   ndarrayr   r   r   r   __classcell__)r   s   @rA   r   r      s    M-- - H	-
 }- 
-x C "	uRZZ!2!223Y@SS	TrI   r   	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   r   r   r   s         rA   make_regressionr     s3     9j!X>GAq!Q41qtrI   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        ?r   )r   dtyperandom_stater   r*   lowhighsize)	r   randomRandomStateranger   float32randnuniformappend)r   r   r   r   r   r   r   rngr?   _X_y_ws               rA   make_batches_sparser     s     	A
A
A
))


%C9]](N**
 YY*+[[QQ-@[A			  a7NrI   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.rB   get_dataset	objectivemetricr%   Nc                 r    || _         || _        || _         |       \  | _        | _        d | _        d | _        y N)rB   r   r   r   r   r   margin)r   rB   r   r   r   s        rA   r   zTestDataset.__init__'  s6     	"$'+,0rI   	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   r   r   maxr   )r   r   s     rA   
set_paramszTestDataset.set_params1  sP    !%	+#';;	- >>_,%(!);%<Ik"rI   c                     t        j                  | j                  | j                  | j                  | j
                  d      S )NT)r   base_marginenable_categorical)xgbDMatrixr   r   r   r   r   s    rA   get_dmatzTestDataset.get_dmat8  s2    {{FFFF66#
 	
rI   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         rA   get_device_dmatzTestDataset.get_device_dmatA  sw    FFND(8HHTVV2::H.HHTVV2::H.""qW
 	
rI   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      }t        j                  |      S )Nr   
   r*   .r   )r   )
r   shaper   minr   r   r   r   r  r  )r   r   r   	per_batch	predictorresponser   ibegendr   r   r   r   s                 rA   get_external_dmatzTestDataset.get_external_dmatK  s   FFLLO		*Q.		y!Ai-Cq1u	)95C#::s3w|$As3A#'66#5s34AQOOA}a  " x6t7
 {{2rI   c                     | j                   S r   )rB   r   s    rA   __repr__zTestDataset.__repr__d  s    yyrI   )r   r   r   r   r   r	   r   r
   r   r   r  r  r  r   r   r  r  r  r  rK   rI   rA   r   r   $  s    Z11&.1;>1HK1	1DcN tCH~ 
#++ 

x} 
9L9L 
3;; 2# rI   r   n_categoriesonehot	cat_ratioshufflec           	         ddl }ddlm} t        j                  j                  d      }	i }
t        |dz         D ]C  }|	j                  d||       }|j                  |t        j                        |
t        |      <   E |j                  |
      }|j                  dddf   }|j                  ddddf   }t        d|      D ]  }||j                  dd|f   z  } |dz  }t        j                  d|      }|j                  D ]U  }|	j                  d|d      d   dk(  s||   j!                  d	      ||<   ||   j"                  j%                  |      ||<   W |d
kD  rt        |      D ]  }|	j                  d| dz
  t'        | |z              }t        j(                  |j                  ||f<    ||j*                  |         s[|t        j,                  |j*                  |   j.                        j0                  k(  rJ  |r|j3                  |      }|r+t5        |j                        }|	j7                  |       ||   }||fS )a  Generate categorical features for test.

    Parameters
    ----------
    n_categories:
        Number of categories for categorical features.
    onehot:
        Should we apply one-hot encoding to the data?
    sparsity:
        The ratio of the amount of missing values over the number of all entries.
    cat_ratio:
        The ratio of features that are categorical.
    shuffle:
        Whether we should shuffle the columns.

    Returns
    -------
    X, y
    r   N)is_categorical_dtyper   r*   r   r  r   category        )rk   pandas.api.typesr  r   r   r   r   randintSeriesint64r   	DataFrameilocarangecolumnsbinomialastypecatset_categoriesr   nandtypesunique
categoriesr   get_dummieslistr  )r   r   r  r  r   r  r  pdr  r   pd_dictr  cdfr   r.  colindexr&  s                      rA   make_categoricalr7  i  s   : 5
))


%CG:>"KKALyKA))ARXX)6A # 
g	BGGAqDME	ABB1j!A "	QJE1l+Jzz<<91<-a0A5gnnZ0BsGgkk00<BsG 
 #~z"AKKIMI4H0I   E !#BGGE1H#BIIaL1#ryy11H1H'I'N'NNNN # ^^Brzz"G[u9rI   n_query_groupsmax_relc                 r   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  }t        j                  |      }||||fS )zMake a dataset for testing LTR.r   r   r   r  r*   r   )r   r   )r   r   default_rngnormalreshaper   r  roundr   r(  int32integerssort)	r   r   r8  r9  r   r   r   qidr   s	            rA   make_ltrrC    s     ))


%C

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

1c
/ANANA
''#,Caa<rI   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)rE  r   r   n_catsr   s        rA   	_make_catz$_cat_sampled_from.<locals>._make_cat  s    ,,Q45	*--a34
j))!S12$ %
 *fh66rI   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)r7  )rO  r   r   r   s   rA   <lambda>z3_cat_sampled_from.<locals>._build.<locals>.<lambda>  s    $Y
FE8TrI   reg:squarederrorrmse)r   )r   rO  r   r   r   s    @@@@rA   _buildz!_cat_sampled_from.<locals>._build  sW    G	!W
a7k:,axq
;T	
 	
rI   )r   	compositer	   r   r   floatr   map)rP  rX  s     rA   _cat_sampled_fromr\    sj    7 7U3S%+?%@ 7 7

U3S%/0 

[ 

 ;??6""rI   categorical_dataset_strategyas_densec                     t        t        j                  d      sTt        j                  j                  d      }t	        j                   dz
  |d      }|j                  dd       }||fS t        t        j                               dt        d	t        j                  f fd
}g }t              5 }	t              D ]#  }
|j                  |	j                  ||
             % 	 ddd       g }g }|D ]7  }|j                         \  }}|j                  |       |j                  |       9 t!        |      k(  sJ t	        j"                  |d      }t        j$                  |      }|j'                  |j(                  d   |j(                  d   f      j*                  }t        j,                  |d      }|j(                  d    k(  sJ |j(                  d   k(  sJ |j(                  d    k(  sJ |rR|j/                         }|j(                  d    k(  sJ |j(                  d   k(  sJ t        j0                  ||dk(  <   ||fS ||fS # 1 sw Y   hxY w)zMake sparse matrix.

    Parameters
    ----------

    as_dense:

      Return the matrix as np.ndarray with missing values filled by NaN

    r;  r   r   r   )mndensityr   r   r  )locscaler   t_idr%   c                    t         j                  j                  d| z        }
z  }| 
dz
  k(  r	| |z  z
  }n|}t        j                  	|dz
  |      j	                         }t        j
                  	df      }t        |j                  d         D ][  }|j                  |dz      |j                  |   z
  }|dk7  s+||d d |f   j                         |j                  	df      z  dz  z  }] ||fS )Nr   r*   r   )r`  ra  rb  r   r   g?)
r   r   r;  r   tocsczerosr   r  indptrtoarray)re  r   thread_sizen_features_tlocr   r   r  r   r   r   	n_threadsr   s           rA   
random_cscz*make_sparse_regression.<locals>.random_csc  s    ii##D4K0 I-9q= (4++==O)OMM(N	

 %' 	
 HHi^$qwwqz"A88AE?QXXa[0DqyQq!tW__&YN)CCcII #
 !trI   )max_workersNr   r   r*   r   )hasattrr   r   r   r   r<  r  multiprocessing	cpu_countr   
csc_matrixr   r   r   submitresultr   hstackasarrayr=  r  Tr   rj  r+  )r   r   r   r^  r   r   r   rn  futuresexecutorr  	X_results	y_resultsfr   arrrm  s   ```             @rA   make_sparse_regressionr    s,    299m,ii##D)MM(N
 JJ3c	J:!t O--/<I !2!2  . G			2hy!ANN8??:q9: " 
3 IIxxz1 
 y>Y&&&#]]9UCC


9A			1771:qwwqz*+--A
qqA99Q<9$$$99Q<:%%%771:"""kkmyy|y(((yy|z)))C1HAv6M; 
3	2s   >2II!z1e5x8-0.95-csrc                  0    t        t        d      ddd      S )N     j@   gffffff?Fr  r   rK   rI   rA   rU  rU  A      *3s8QeDrI   rV  rW  z1e5x8-0.5-csrc                  0    t        t        d      ddd      S )Nr  r        ?Fr  rK   rI   rA   rU  rU  G  s    *3s8QUCrI   z1e5x8-0.5-densec                  0    t        t        d      ddd      S )Nr  r  r  Tr  rK   rI   rA   rU  rU  M  s    *3s8QTBrI   z1e5x8-0.05-csrc                  0    t        t        d      ddd      S )Nr  r  皙?Fr  rK   rI   rA   rU  rU  S  r  rI   z1e5x8-0.05-densec                  0    t        t        d      ddd      S )Nr  r  r  Tr  rK   rI   rA   rU  rU  Y  s    *3s8QdCrI   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.

    rE  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?       @)elementsr*   r   mtregr   r  r   )r   booleansr    r   float64r   r   rN  r   r   r   r   rB   rd   r  r   r=  )rE  r   r   r  s      rA   weight_marginz0make_datasets_with_margin.<locals>.weight_margini  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rI   )r   rY  r	   r   )r  r  s   ` rA   make_datasets_with_marginr  a  s3     H   4 rI   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_housingrV  rW  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   r  rK   rI   rA   rU  z'make_dataset_strategy.<locals>.<lambda>  s    (+RXXa[9rI   )r   sampled_fromr   r   r   r   r  )_unweighted_datasets_strategys    rA   make_dataset_strategyr    s    $.$;$;!79KV "$:<OQV *.?K*.@&IZ1DeL9"		
%!& D$%BCEErI   digitsr   mloglossr  c                  2    t         j                  ddd      S NrH  r   r,   )r   r   	n_targetsdatasetsr   rK   rI   rA   rU  rU        H,,sqTU,VrI   zmtreg-l1c                  2    t         j                  ddd      S r  r  rK   rI   rA   rU  rU    r  rI   r  r  L	tolerancec           	      F    t        fdt        | | dd        D              S )Nc              3   4   K   | ]  \  }}||z
  k    y wr   rK   ).0rR  r   r  s      rA   	<genexpr>z!non_increasing.<locals>.<genexpr>  s     =}tq!A"}s   r*   )allzip)r  r  s    `rA   non_increasingr    s     =s1ae}===rI   lhsrhsc                 N   | j                         }|j                         }t        t        j                  |j                  |j                        t        j                  |j
                  |j
                        t        j                  |j                  |j                        f      S )z9Assert whether two DMatrices contain the same predictors.)get_datar  r   array_equalr   indicesri  )r  r  lcsrrcsrs       rA   predictor_equalr    sl    <<>D<<>DNN499dii0NN4<<6NN4;;4	
 rI   Mpredtdtrainc                    |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 )zEvaluation metric for xgb.trainr  r   	CustomErrr  r*   )	get_labelr   rh  r  r   r  r   )r  r  r   rgtles         rA   eval_error_metricr    s    E
A	BzzQBJJsO++b	MAbE	#B"IAbEq	!!rI   y_truey_scorec                     t        j                  |j                        }|dkD  }d| |   z
  ||<   |dk  }| |   ||<   t        j                  |      S )z>Evaluation metric that looks like metrics provided by sklearn.r  r*   )r   rh  r  r   )r  r  r  r  r  s        rA   eval_error_metric_sklr    sR    
A	3Br
NAbE	CB2JAbE66!9rI   c                 |    || z
  }t        j                  t        j                  ||      |j                  z        }|S r   )r   sqrtdotr   )r  r  errrW  s       rA   root_mean_squarer    s3    
F
C77266#s#gll23DKrI   rR  c                 \    t        j                  |       }|t        j                  |      z  S r   )r   expr   )rR  es     rA   softmaxr    s!    
q	Arvvay=rI   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   Nlabelsr  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  rh  r   r   r   r  r   itemr=  require)r  r  rowsgradhessepsr  targetpr3  ghbackendr  r  r  s               rA   r   zsoftprob_obj.<locals>.objective  s[    ||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rI   )r   r   r   r   )r  r   r  r  r   r  s   ` `` @rA   softprob_objr    sT     (/	w/	0 . rI   y_predsample_weightc                 h    || z
  }t        j                  t        |             }|
||z  }||z  }||fS )zLeast squared error.)r   onesr   )r  r  r  r  r  s        rA   ls_objr    sC     F?D773v;D :rI   c                   X    e Zd ZdZd
deej                  ef   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      rA   r   zDirectoryExcursion.__init__-  sD    	gg&&rwwrww~~'FG"u
rI   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  r}  s        rA   	__enter__zDirectoryExcursion.__enter__3  s    
<< ,.772773E3Edii3P+Q+Q'D&%A T1% &+Q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          rA   __exit__zDirectoryExcursion.__exit__<  s    
<< ,.772773E3Edii3P+Q+Q'D&%A T1% &+QE
 ##DJJ/D		!  s   -2C
)Fr   )r   r   r   r   r   r  PathLiker   boolr   r  r   r  rK   rI   rA   r  r  '  s@    
%U2;;#34 %t %
c 
d 
rI   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   rb   stdoutstderr)new_outnew_errold_outold_errs       rA   captured_outputr  I  sn       z8:WGzz3::WG2!('
CJjj#**$$!('
CJ'
CJs   5B%9B	 1B%	B""B%T)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)r   marktimeout)r  r  r   r  s       rA   r  r  [  sE     {{""38888;;t5d5f55rI   r?   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   rz   r~   r   dask_cuda.utilsr  reinitializer0  r   )r?   r  r   r  s       rA   setup_rmm_poolr  o  sv    ./8K RSS>+&J  	.0z|,- 	 	
 0rI   r<   c                 Z    | j                         d   }t        |j                               S )zGet workers from a dask client.workers)scheduler_infor0  keys)r<   r  s     rA   get_client_workersr!    s&    ##%i0GrI   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        rA   demo_dirr,    s    BGGOOD)*D
#%::d#3B#3aqxxz166#3B0781277##A&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    rA   r  r    s$    77BGGOOD122rI   c                 T    t         j                  j                  t        |       d      S )Nr   )r  r  r  r,  r.  s    rA   data_dirr0    s    77<<//rI   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)r0  r  r  r  r  r  )r  dpathr  dtests       rA   load_agaricusr4    sQ    TNE[[e-OPQFKKU,MNOE5=rI   c                     t        t        j                  j                  t	        |       t        j                  j
                              S r   )r  r  r  r  r,  r(  r.  s    rA   project_rootr6    s(    BGGLL$@AArI   
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)NrK   )r  
collectiveCommunicatorContextr   put)r:  r  r   exception_queuer  r8  s     rA   
run_workerz"run_with_rabit.<locals>.run_worker  sW    	#33@i@(( A@@ 	#""	#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  r  getwait_for)
r7  r8  r   r  r@  trackerr  r?   workerr?  s
    ```     @rA   run_with_rabitrM    s     $);;=O#d3c3h#78 #T # # ;*EGMMOG:!!7;N;N;P:RSv  $$&Q//:M:M:O9P(QQ&  rI   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   )rN  r7  rankfeatures       rA   column_split_feature_namesrS    s?    
 ).j(9(9g4&'(9  s   (c                  0    t        j                         dk(  S )z)Check if the current platform is Windows.r(   )rc   r   rK   rI   rA   r   r     s    ??	))rI   )r  r   F)g-C6?)FCr   r   )r   r   importlib.utilrD   rq  r  rc   rC  r-   rb   rF  concurrent.futuresr   
contextlibr   ior   r   typingr   r	   r
   r   r   r   r   r   r   r   r   r   numpyr   r   scipyr   xgboostr  r   xgboost.corer   xgboost.sklearnr   xgboost.testing.datar   r   r   r   r   r   importorskipr   r   hypothesis.extra.numpyr    r  r  r   r!   r.   rH   rL   rN   rR   rV   rZ   re   ri   rl   ro   rr   ru   r{   r~   r   r   r   r   r   r   r   r   coreDataIterr   r   r   rZ  r   r   r   r   r   r7  rC  SearchStrategyr\  r]  __annotations__r  r  sparse_datasets_strategyr  r  #_unweighted_multi_datasets_strategymulti_dataset_strategyr  r  r  BoosterXGBModelr  r  r  r  r  r  r  r  r  r  r  Configr  r!  r,  r  r0  r4  r6  rM  rS  r   rK   rI   rA   <module>rm     s   
   	    
  1 %            " (  !V  .
 " )612|43%GH
$ :N N N
V V
N: N: J  J * : * * z 5z 5j  
 
j  
  Z 
 6s 6z 6J* J1chh'' 1h #/3
9i*+*-:=IN
4!!"D$4d2::6FFG0A AJ  DDD D 	D
 D D D 9bjj !D DN #58CF
2::rzz2::rzz9:$#:44 #@ ;L:M j77 M RR #R/4R@DR
5""#RZZ/0R Rj 3: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 >
 
3;; 
4 
 Ccll+
"RZZ 
" 
"sBJJAW 
""** rzz bjj 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 
$ s  tCy  
3 
3 
33 33 303 03 0 ckk3;;&> ? Bs Bs B&sCx09<HK	6c3h(69	#Y*D *rI   