
    bi                         d Z ddl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mZ ddlmZmZ ddlm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$ de%ded   deddfdZ&de%ded   deddfdZ'de%ded   deddfdZ(dede%ded   de)ddf
dZ*de)de)de%de+de,ddfdZ-dede)defdZ.dedee%   fdZ/dede)de)d e)d!e)de%deej`                  ejb                  ejb                  f   fd"Z2dede%ddfd#Z3y)$z0Tests for dask shared by different test modules.    )AnyListLiteralTuplecastN)array)	dataframe)Client
get_worker)parse)make_classification)concat)get_basescore   )dask)_DASK_VERSION_get_rabit_argstree_methoddevice)cpucudaclientreturnc                    t        ddd      \  }}t        j                  dd| |      }|j                  ||       t	        |      }t        j                  |      j                  d      }t        j                  |      j                  d	      }t        j                  dd| |      }	||	_
        |	j                  ||       t	        |	      }
t        j                  j                  ||
       y
)z%Test init estimation for classsifier.          	n_samples
n_featuresrandom_state   n_estimators	max_depthr   r   r   Nchunksr   N)r   xgbXGBClassifierfitr   da
from_arrayrechunkdxgbDaskXGBClassifierr   nptestingassert_allclose)r   r   r   Xyclf
base_scoredxdydclfdbase_scores              O/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/xgboost/testing/dask.pycheck_init_estimation_clfr>      s     btTDAq


!VC GGAqMs#J	q		!	!	!	4B	q		!	!	!	/B!!	D DKHHR%KJJz;7    c                    ddl m}  |ddd      \  }}t        j                  dd| |      }|j	                  ||       t        |      }t        j                  |      j                  d	
      }t        j                  |      j                  d
      }	t        j                  dd| |      }
||
_        |
j	                  ||	       t        |
      }t        j                  j                  ||       y)z#Test init estimation for regressor.r   )make_regressionr   r   r   r   r"   r#   r&   r'   r)   N)sklearn.datasetsrA   r*   XGBRegressorr,   r   r-   r.   r/   r0   DaskXGBRegressorr   r2   r3   r4   )r   r   r   rA   r5   r6   regr8   r9   r:   dregr<   s               r=   check_init_estimation_regrG   /   s     1 X"4PDAq


!VC GGAqMs#J	q		!	!	!	4B	q		!	!	!	/B  !VD DKHHR%KJJz;7r?   c                 8    t        | ||       t        | ||       y)zTest init estimation.N)rG   r>   )r   r   r   s      r=   check_init_estimationrI   H   s     k66:k66:r?   	n_workersc           	         |dk\  sJ | j                         5  t        j                  ||      }t        j                  t        d      t        ddd      d      }t        j                  g dgdz  dgdz        }t        j                  |j                  d	d
ddf<   | j                  |       |j                  t        j                  ||      t        j                  ||             d	d	d	       y	# 1 sw Y   y	xY w)z0Issue #9271, not every worker has missing value.r   )r   r   i'  r   )abi  r"   Ni  i  rM   )rJ   )npartitions)
as_currentr0   r1   pd	DataFramerangeSeriesr2   nanlocwait_for_workersr,   ddfrom_pandas)r   r   r   rJ   r7   r5   r6   s          r=   check_uneven_nanrZ   P   s     >>				 
$$VLLLuU|%q"2EFGII0d
0aS4Z01!#jtDj#o)4NN1)4NN1)4	

 
 
s   CC66C?	worker_id	comm_argsis_qdmc           
      H   d}d}d}|dk7  }t               j                  j                  }	t        j                  j
                  dddi|5  t        j                  t        j                  |||||       ddi}
|rt        j                  |
|		      }nt        j                  |
|		      }i }t        j                  d
|	|d||dfgd|       t        j                  t        t        t           |d   d               sJ 	 ddd       g g g }}}t!        |      D ]S  }t        j                  |||||      \  }}}|j#                  |       |j#                  |       |j#                  |       U t%        |      }t%        |      }t%        |      }|rt        j&                  ||||	      }nt        j                  ||||	      }i }t        j                  d
|	|d||dfgd|       t(        j*                  j-                  d   d   |d   d   d       y# 1 sw Y   xY w)z-Basic checks for distributed external memory.r         r   dmlc_communicatorrabit)use_cupyr!   cache)nthreadhist)r   re   r   Train)evalsnum_boost_roundevals_resultrmseN)weightre   g-C6?rtol )r   statenthreadsr*   
collectiveCommunicatorContexttmIteratorForTestmake_batchesExtMemQuantileDMatrixDMatrixtrainnon_increasingr   r   floatrS   extendr   QuantileDMatrixr2   r3   r4   )r[   rJ   r   r\   r]   n_samples_per_batchr    	n_batchesrc   	n_threadsitXyresultslxlylwixr6   wr5   yconcatwconcatresults_locals                           r=   check_external_memoryr   e   s,    JIH""++I		+	+	Sg	S	S N__#!&	
 	
 !77INBR3B:<		"yFK=/ 	
   d5k773CF3K!LMMM/N2 RBB9 
//
1a 			!
		!
		!
 	r
ARjGRjG  GGYO[[GGYG<>MII9G
G}o" JJ -"8"@t  mN Ns   B4HH!c                 0    | j                  t        | |      S )z6Get RABIT collective communicator arguments for tests.)syncr   )r   rJ   s     r=   get_rabit_argsr      s    ;;	::r?   c                     t               t        d      k\  rddini } | j                  di |d   }t        |j	                               S )zGet workers from a dask client.z2025.4.0rJ   rL   workersro   )r   parse_versionscheduler_infolistkeys)r   kwargsr   s      r=   get_client_workersr      sH    "//]:5N"Nk2TVF#f##-f-i8Gr?   r   r    n_query_groupsmax_relc                   t        |       }|t        |      z  }|dk(  rddlm nddlm dt
        dt
        dt        j                  ffd}g }	d}
t        d||      D ]=  }| j                  |||||
t        |      z     g      }|	j                  |       |
d	z  }
? ||t        |      z  z
  }|dk7  r1| j                  |||t        |      z  
      }|	j                  |        |d	d      }t        j                  |	|      }t        |t        j                        sJ |j                  ddgd	      |j                  |j                  fS )z'Synthetic dataset for learning to rank.r   r   )rR   nseedr   c                     t         j                  j                  |      }t        | 

d	      \  }}|j	                  | fd      } |t        
      D cg c]  }d| 	 c}      }||d<   ||d<   |S c c}w )Nr   )n_informativen_redundant	n_classes)sizelowhighf)columnsqidr6   )r2   randomdefault_rngr   integersrS   )r   r   rngr5   r6   r   r   dfDFr   r    r   s           r=   makezmake_ltr.<locals>.make   s    ii##D)"zg
1 ll!.lAU:->?asG?@5	3	 @s   A9
)r   r   r   r"   )r   r   )metar   r6   )axis)r   lenpandasrR   cudfintrQ   rS   submitappendrX   from_delayed
isinstancedropr6   r   )r   r   r    r   r   r   r   n_samples_per_workerr   futuresr   kfutlastr   r   r   s     ```           @r=   make_ltrr      sT    !(G$G4*(	 	3 	2<< 	 	 G	A1i!56 mm(q71s7|CS;T:U  
 	s	Q ,s7|;<DqymmDD/Cc'l/RmSs1:D	t	,Bb",,'''77E3<a7("$$66r?   c                    t        | dddd|      \  }}}t        | dddd|      \  }}}t        j                  dd|	      }|j                  |||||f||fg||gd
       |j                  dk(  sJ |j
                  d   |j                  k(  sJ |j                         d   d   }	t        j                  |	dd d      sJ |	       t        j                  j                  |	d   dd       y)z)Test for the allow_group_split parameter.i      r_      )r   r   r   i   F$   )allow_group_splitr$   r   T)r   eval_seteval_qidverboser"   validation_0zndcg@32Nr`   g{Gz?)	tolerancerL   g      ?rm   )r   r0   DaskXGBRankerr,   n_features_in_shaperj   rt   non_decreasingr2   r3   r4   )
r   r   X_trq_try_trX_vaq_vay_valtrndcgs
             r=   check_no_group_splitr      s   c!QvD$  c!QvD$ 

u2f
UCGG,t-   $$$::a=C.....n-i8DT#2Y$7==7JJtBx48r?   )4__doc__typingr   r   r   r   r   numpyr2   r   rQ   r   r   r-   r	   rX   distributedr
   r   packaging.versionr   r   rB   r   xgboostr*   xgboost.testingr3   rt   xgboost.compatr   xgboost.testing.updaterr    r0   r   r   strr>   rG   rI   r   rZ   dictboolr   r   r   rR   rT   r   r   ro   r?   r=   <module>r      s   6 2 2      * 4 0   ! 1  188%m48>D8	8288%m48>D8	82;;%m4;>D;	;

!$
.5m.D
QT
	
*FFF F 	F
 F 
FR;6 ;c ;c ;
 v  $s)  .7.7.7 .7
 .7 .7 .7 2<<BII-..7b9 9 9 9r?   