o
    Ú­jÜX  ã                   @   sx  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 4d¡Z5ddl5m6Z6 ddl7m8Z8 e 4d¡Z9ede:e;dœƒZ<de:fdd„Z=de;de<fdd„Z>de<fdd„Z?de<fdd„Z@de<fd d!„ZAde<fd"d#„ZBde<fd$d%„ZCde<fd&d'„ZDde<fd(d)„ZEde<fd*d+„ZFde<fd,d-„ZGde<fd.d/„ZHde<fd0d1„ZIde<fd2d3„ZJde<fd4d5„ZKde<fd6d7„ZLde<fd8d9„ZMde<fd:d;„ZNde<fd<d=„ZOde<fd>d?„ZPde<fd@dA„ZQdBede<fdCdD„ZRde<fdEdF„ZSdGeTdHeTdIe:dee#e#e#f fdJdK„ZUdLeTdHeTdMeTdNeVdeeejW eejX eejX f f
dOdP„ZYG dQdR„ dRƒZZ	Sd¸dGeTdHeTdTeTdUeTdVe:deejXejXejXejXf fdWdX„Z[de6j\fdYdZ„Z]e]ƒ Z^e6j\e_d[< e6 `eZd\d]d^„ d_d`ƒeZdadbd^„ d_d`ƒeZdcddd^„ d_d`ƒeZdedfd^„ d_d`ƒeZdgdhd^„ d_d`ƒg¡Zadie6j\deg e6j\eZ f fdjdk„Zbde6j\eZ fdldm„Zce6 `eZdne,dodpƒeZdqdrd^„ d_d`ƒeZdsdtd^„ dudvƒg¡Zdebedƒƒ Zeedwe jfe jgƒZhdxejXdye jideejXejXf fdzd{„Zjd|ejXdye jid}e:dee;ejkf fd~d„Zl	€d¹d�ejXd‚ejXd}e:dejkfdƒd„„Zmd�ejXd‚ejXdeVfd…d†„Znd‡ejXdejXfdˆd‰„Zo	‹dºdŒeTdIe:d�e;dŽe;de%f
d�d�„Zp	d»d�ejXd‘ejXd’eejX deejXejXf fd“d”„ZqG d•d–„ d–ƒZre
deeeef ddf fd—d˜„ƒZsdSd™œdšeTdBed›e:dœedef
d�dž„ZtdŸed ejuddfd¡d¢„Zvd£e;de;fd¤d¥„Zwd£e;de;fd¦d§„Zxd£e;de;fd¨d©„Zyd£e;dee jie jif fdªd«„Zzd£e;de;fd¬d­„Z{d®eTd¯ed°ef dBedœeddf
d±d²„Z|d³eee;eTf  d®eTdee; fd´dµ„Z}de:fd¶d·„Z~dS )¼zkUtilities for defining Python tests. The module is private and subject to frequent
change without notice.

é    N)Úcontextmanager)ÚStringIO©Úsystem)ÚAnyÚCallableÚDictÚ	GeneratorÚListÚOptionalÚ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               	   C   s
  t ƒ dvrdS tjrƒznt tjtj¡�[} t tjtj¡�8}|  d¡ |  ¡ d }|  ¡  | d|f¡ |  	¡ \}}| 
d ¡ ¡ | d¡ ¡ }|dksMJ ‚W d  ƒ n1 sWw   Y  W d  ƒ W d	S W d  ƒ W d	S 1 sqw   Y  W d	S  ty‚   Y dS w dS )
z+Check whether IPv6 is enabled on this host.)ÚLinuxÚWindowsF)ú::1r   r   r,   Úabcé   NT)r   ÚsocketÚhas_ipv6ÚAF_INET6ÚSOCK_STREAMÚbindÚgetsocknameÚlistenÚconnectÚacceptÚsendallÚencodeÚrecvÚdecodeÚOSError)ÚserverÚclientÚportÚconnÚ_Úmsg© rC   úU/var/www/html/CropPilot/venv/lib/python3.10/site-packages/xgboost/testing/__init__.pyr0   B   s:   
ÿþ
(òññþr0   Únamec                 C   s    t j | ¡}|d u | › d�dœS )Nz is not installed.r&   )Ú	importlibÚutilÚ	find_spec)rE   ÚspecrC   rC   rD   Úno_mod_   s   rJ   c                   C   s   t ƒ  ddœS )zPyTest skip mark for IPv6.zIPv6 is required to be enabled.r&   )r0   rC   rC   rC   rD   Úno_ipv6d   s   rK   c                   C   s   t ƒ dkddœS )Nr*   zLinux is required.r&   r   rC   rC   rC   rD   Ú	not_linuxi   s   rL   c                   C   ó   t dƒS )NÚubjson©rJ   rC   rC   rC   rD   Ú	no_ubjsonm   ó   rP   c                   C   rM   )NÚsklearnrO   rC   rC   rC   rD   Ú
no_sklearnq   rQ   rS   c                   C   rM   )NÚdaskrO   rC   rC   rC   rD   Úno_dasku   rQ   rU   c                   C   rM   )NÚlokyrO   rC   rC   rC   rD   Úno_lokyy   rQ   rW   c                   C   s   t j d¡rdddœS tdƒS )NÚwinúUnsupported platform.T©r(   r'   Údask_ml©ÚsysÚplatformÚ
startswithrJ   rC   rC   rC   rD   Ú
no_dask_ml}   s   
r`   c                   C   s*   t j d¡st j d¡rdddœS tdƒS )NrX   ÚdarwinrY   TrZ   Úpysparkr\   rC   rC   rC   rD   Úno_sparkƒ   s   
rc   c                   C   rM   )NÚpandasrO   rC   rC   rC   rD   Ú	no_pandas‰   rQ   re   c                   C   rM   )NÚpyarrowrO   rC   rC   rC   rD   Úno_arrow�   rQ   rg   c                   C   rM   )NÚpolarsrO   rC   rC   rC   rD   Ú	no_polars‘   rQ   ri   c                  C   sV   zdd l m}  | jg d¢g d¢gg d¢d� W n ty%   dddœ Y S w dddœS )	Nr   )r   ç       @T)r   g      @F)ÚaÚbÚc)ÚcolumnszFailed import modin.TrZ   )Úmodin.pandasrd   Ú	DataFrameÚImportError)ÚmdrC   rC   rD   Úno_modin•   s   "ÿ
rs   c                  C   s:   d} zdd l m} d| dœW S  ty   d| dœ Y S w )NzMatplotlib is not installed.r   Fr&   T)Úmatplotlib.pyplotÚpyplotrq   )r(   rA   rC   rC   rD   Úno_matplotlib    s   ÿrv   c                   C   rM   )NÚ	dask_cudarO   rC   rC   rC   rD   Úno_dask_cudaª   rQ   rx   c                   C   rM   )NÚcudfrO   rC   rC   rC   rD   Úno_cudf®   rQ   rz   c                  C   s\   t dƒ} | d s,tƒ dkr,dd l}z| g d¢¡ ¡  W | S  ty+   d| d< Y | S w | S )NÚcupyr'   r+   r   )r   r   r.   T)rJ   r   r{   ÚarrayÚsumÚ	Exception)Ú	skip_cupyÚcprC   rC   rD   Úno_cupy²   s   þ
þr�   c                   C   rM   )NÚ	dask_cudfrO   rC   rC   rC   rD   Úno_dask_cudf¿   rQ   rƒ   c                   C   rM   )NÚgraphvizrO   rC   rC   rC   rD   Úno_graphvizÃ   rQ   r…   c                   C   rM   )NÚrmmrO   rC   rC   rC   rD   Úno_rmmÇ   rQ   r‡   Úargsc                  G   s<   d}d}| D ]}|p|d }|d r|d } nq||dœS )NFÚ r'   r(   r&   rC   )rˆ   r'   r(   ÚargrC   rC   rD   Úno_multipleË   s   þ
r‹   c                   C   s   dt ƒ dœS )NrY   rZ   )Ú
is_windowsrC   rC   rC   rD   Úskip_winÖ   s   r�   Ú	n_samplesÚ
n_featuresÚuse_cupyc                 C   s*   t | |d|ƒ\}}}|d |d |d fS )z!Make a simple regression dataset.r   r   )r   )rŽ   r�   r�   ÚXÚyÚwrC   rC   rD   Úmake_regressionÚ   s   r”   Ún_samples_per_batchÚ	n_batchesÚsparsityc              	   C   s„   g }g }g }t j d¡}t|ƒD ],}tj| |d| dt j|d�}	| | ¡}
|jdd| d�}| |	¡ | |
¡ | |¡ q|||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“   ÚrngrA   Ú_XÚ_yÚ_wrC   rC   rD   Úmake_batches_sparseâ   s&   ú



r­   c                
   @   s–   e Zd ZdZdededededdf
dd	„Zd
eeef deeef fdd„Z	de
jfdd„Zdee de
jfdd„Zde
jfdd„Zdefdd„ZdS )ÚTestDatasetzPContains a dataset in numpy format as well as the relevant objective and metric.rE   Úget_datasetÚ	objectiveÚmetricr)   Nc                 C   s0   || _ || _|| _|ƒ \| _| _d | _d | _d S ©N)rE   r°   r±   r‘   r’   r“   Úmargin)ÚselfrE   r¯   r°   r±   rC   rC   rD   Ú__init__ý   s   
zTestDataset.__init__Ú	params_inc                 C   s:   | j |d< | j|d< | j dkrtt | j¡d ƒ|d< |S )Nr°   Úeval_metricúmulti:softmaxr   Ú	num_class)r°   r±   Úintr¡   Úmaxr’   )r´   r¶   rC   rC   rD   Ú
set_params  s
   


zTestDataset.set_paramsc                 C   s   t j| j| j| j| jdd�S )NT)ÚweightÚbase_marginÚenable_categorical)ÚxgbÚDMatrixr‘   r’   r“   r³   ©r´   rC   rC   rD   Úget_dmat  s   ûzTestDataset.get_dmatÚmax_binc                 C   s\   dd l }| jd u rd n| | j¡}|j| jtjd�}|j| jtjd�}tj|||| j	|d�S )Nr   ©rœ   )r½   r¾   rÄ   )
r{   r“   r|   r‘   r¡   r¥   r’   rÀ   ÚQuantileDMatrixr³   )r´   rÄ   r€   r“   r‘   r’   rC   rC   rD   Úget_device_dmat  s   ÿzTestDataset.get_device_dmatc                 C   sâ   | j jd }d}|| d }g }g }g }t|ƒD ]F}|| }t|d | |ƒ}	|	|ks-J ‚| j ||	…df }
| j||	… }| jd urI| j||	… nd }| |
¡ | |¡ |d ur^| |¡ qt|||rf|nd ddd�}t 	|¡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“   ÚitrC   rC   rD   Úget_external_dmat!  s4   


€
û
zTestDataset.get_external_dmatc                 C   s   | j S r²   )rE   rÂ   rC   rC   rD   Ú__repr__>  s   zTestDataset.__repr__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   rµ   r   r   r¼   rÀ   rÁ   rÃ   r   rº   rÆ   rÇ   rÔ   rÕ   rC   rC   rC   rD   r®   ú   s$    ÿÿÿÿ
þ"
	
r®   TÚn_query_groupsÚmax_relÚsort_qidc           
      C   sº   t j d¡}|jdd| | d� | |¡}t j|dd�}|| ¡ 8 }t  || ¡  | ¡ 	t j
¡}|jd|| t j
d�}|jdd|d�}	|	t  |	¡8 }	|	t  |	¡ }	|rWt  |¡}||||	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“   rC   rC   rD   Úmake_ltrB  s   
rè   c               	   C   sN   t jdtdtttttf fdd„ƒ} dtttttf dtfdd„}| ƒ  |¡S )NÚdrawr)   c                 S   sT   | t  dd¡ƒ}| t  dd¡ƒ}| t  dd¡ƒ}| t jd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—   rC   rC   rD   Ú	_make_catZ  s   ûÿ	z$_cat_sampled_from.<locals>._make_catrˆ   c                    sR   | d ‰| d ‰| d ‰ | d ‰t ˆ› dˆ› dˆ › dˆ› �‡ ‡‡‡fdd„d	d
ƒS )Nr   r   r   r.   Úxú-c                      s   t ˆˆˆ dˆd�S )NF)Úonehotr—   )r   rC   ©rò   r�   rŽ   r—   rC   rD   Ú<lambda>q  s    
ÿz3_cat_sampled_from.<locals>._build.<locals>.<lambda>úreg:squarederrorÚrmse)r®   )rˆ   rC   r÷   rD   Ú_buildj  s   úz!_cat_sampled_from.<locals>._build)r#   Ú	compositer   r   rº   Úfloatr®   Úmap)ró   rû   rC   rC   rD   Ú_cat_sampled_fromY  s    rÿ   Úcategorical_dataset_strategyz1e5x8-0.95-csrc                   C   ó   t tdƒdddƒS )Nç     jø@é   gffffffî?F©r   rº   rC   rC   rC   rD   rø   �  ó    rø   rù   rú   z1e5x8-0.5-csrc                   C   r  )Nr  r  ç      à?Fr  rC   rC   rC   rD   rø   ‡  r  z1e5x8-0.5-densec                   C   r  )Nr  r  r  Tr  rC   rC   rC   rD   rø   �  r  z1e5x8-0.05-csrc                   C   r  )Nr  r  çš™™™™™©?Fr  rC   rC   rC   rD   rø   “  r  z1e5x8-0.05-densec                   C   r  )Nr  r  r  Tr  rC   rC   rC   rD   rø   ™  r  Úunweighted_strategyc                    s    t jdtdtf‡ fdd„ƒ}|S )zgFactory function for creating strategies that generates datasets with weight and
    base margin.

    ré   r)   c                    sÜ   | ˆ ƒ}| t  ¡ ƒr| ttjt|jƒt  dd¡d�ƒ|_| t  ¡ ƒrld}|j	dkr4t
t |j¡d ƒ}n|j d¡r@|jjd }| ttj|jjd | t  dd	¡d�ƒ|_|jd us\J ‚|dkrl|j |jjd |¡|_|S )
Ngš™™™™™¹?rj   )Úelementsr   r¸   Úmtregr   r  r™   )r#   Úbooleansr$   r¡   Úfloat64Úlenr’   rñ   r“   r°   rº   r»   rE   r_   rË   r³   rá   )ré   Údatar¹   ©r  rC   rD   Úweight_margin©  s,   ÿ

ýÿz0make_datasets_with_margin.<locals>.weight_margin)r#   rü   r   r®   )r  r  rC   r  rD   Úmake_datasets_with_margin¡  s   r  c                  C   s`   t  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dƒg¡} t| ƒƒ S )NÚcalif_housingrù   rú   zcalif_housing-l1úreg:absoluteerrorÚmaeÚcancerzbinary:logisticÚloglossr   z	sparse-l1Úemptyc                   S   s   t  d¡t  d¡fS )N)r   éd   r   )r¡   r  rC   rC   rC   rD   rø   ×  s    z'make_dataset_strategy.<locals>.<lambda>)r#   Úsampled_fromr®   r   r   r   r  )Ú_unweighted_datasets_strategyrC   rC   rD   Úmake_dataset_strategyÉ  s&   ÿÿüöÿ
r  Údigitsr¸   Úmloglossr
  c                   C   ó   t jdddd�S ©Nrë   r   r.   )rŽ   r�   Ú	n_targets©Údatasetsr”   rC   rC   rC   rD   rø   å  ó    zmtreg-l1c                   C   r  r  r!  rC   rC   rC   rD   rø   ë  r#  r  r  ÚMÚpredsÚdtrainc                 C   s8   |  ¡ }ddt |  ¡  } | | }| d|   }||fS )z#Binary regression custom objective.r™   )Ú	get_labelr¡   Úexp)r%  r&  ÚlabelsÚgradÚhessrC   rC   rD   Ú	logregobjû  s
   r,  ÚpredtÚrev_linkc                 C   sš   |  ¡ }|rddt |  ¡  } d| k ¡ r| dk ¡ sJ ‚t | j¡}| dk}| jdkr4dt d¡fS d||  ||< | dk}|| ||< dt |¡fS )zžEvaluation metric for xgb.train.

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

    r™   ç        r  r   Ú	CustomErrr   )	r'  r¡   r(  ÚallÚzerosrË   r    r  r}   )r-  r&  r.  ÚlabelÚrÚgtÚlerC   rC   rD   Úeval_error_metric  s   

r7  FÚy_trueÚy_scorec                 C   sv   |rddt  | ¡  }d|k ¡ r|dk ¡ sJ ‚t  |j¡}|dk}d| |  ||< |dk}| | ||< t  |¡S )z>Evaluation metric that looks like metrics provided by sklearn.r™   r/  r  r   )r¡   r(  r1  r2  rË   r}   )r8  r9  r.  r4  r5  r6  rC   rC   rD   Úeval_error_metric_skl  s   
r:  c                 C   s$   ||  }t  t  ||¡|j ¡}|S r²   )r¡   ÚsqrtÚdotr    )r8  r9  Úerrrú   rC   rC   rD   Úroot_mean_square-  s   r>  rô   c                 C   s   t  | ¡}|t  |¡ S r²   )r¡   r(  r}   )rô   ÚerC   rC   rD   Úsoftmax3  s   
r@  ÚCr¥   ÚclassesÚorderÚgdtypec                    sF   |rddl ‰ nt‰ dˆ jdˆ jdtˆ jˆ jf f‡ ‡‡‡fd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   Nr)  r-  r)   c                    s&  | j d }ˆ j|ˆftjd�}ˆ j|ˆftjd�}d}t|j d ƒD ]O}| | }t||d d …f ƒ}t|j d ƒD ]7}	|dksE|ˆksEJ ‚|	|krO||	 d n||	 }
td||	  d||	    ¡ |ƒ}|
|||	f< ||||	f< q9q"| |ˆf¡}| |ˆf¡}ˆ j	|ˆˆd�}ˆ j	|ˆd�}||fS )	Nr   rÅ   g�íµ ÷Æ°>r   r™   rj   )Úrequirementsrœ   )rE  )
rË   r2  r¡   r¥   r¤   r@  r»   Úitemrá   Úrequire)r)  r-  Úrowsr*  r+  Úepsr4  ÚtargetÚprm   ÚgÚh©ÚbackendrB  rD  rC  rC   rD   r°   K  s&   
"ûzsoftprob_obj.<locals>.objective)r{   r¡   Úndarrayr   )rB  r�   rC  rD  r°   rC   rN  rD   Úsoftprob_obj8  s   
ÿÿþrQ  Úy_predÚsample_weightc                 C   s4   ||  }t  |j¡}|dur||9 }||9 }||fS )zLeast squared error.N)r¡   ÚonesrË   )r8  rR  rS  r*  r+  rC   rC   rD   Úls_obje  s   rU  c                   @   s@   e Zd ZdZddedefdd„Zdd	d
„Zdeddfdd„Z	dS )ÚDirectoryExcursionz\Change directory.  Change back and optionally cleaning up the directory when
    exit.

    FÚpathÚcleanupc                 C   s2   || _ tj  tj  tj j¡¡| _|| _tƒ | _d S r²   )rW  ÚosÚnormpathÚabspathÚcurdirrX  ÚsetÚfiles)r´   rW  rX  rC   rC   rD   rµ   w  s   zDirectoryExcursion.__init__r)   Nc                 C   s:   t  | j¡ | jrdd„ t  t j | j¡¡D ƒ| _d S d S )Nc                 S   ó*   h | ]\}}}|D ]	}t j ||¡’q	qS rC   ©rY  rW  Újoin©Ú.0ÚrootÚsubdirr^  ÚfrC   rC   rD   Ú	<setcomp>€  ó    ýþÿz/DirectoryExcursion.__enter__.<locals>.<setcomp>)rY  ÚchdirrW  rX  ÚwalkÚ
expanduserr^  rÂ   rC   rC   rD   Ú	__enter__}  s   þÿzDirectoryExcursion.__enter__rˆ   c                 G   sX   t  | j¡ | jr(dd„ t  t j | j¡¡D ƒ}| | j¡}|D ]	}t  	|¡ q d S d S )Nc                 S   r_  rC   r`  rb  rC   rC   rD   rg  ‰  rh  z.DirectoryExcursion.__exit__.<locals>.<setcomp>)
rY  ri  r\  rX  rj  rW  rk  Ú
differencer^  Úremove)r´   rˆ   r^  Údiffrf  rC   rC   rD   Ú__exit__†  s   þøzDirectoryExcursion.__exit__©F)r)   N)
rÖ   r×   rØ   rÙ   r   Úboolrµ   rl  r   rp  rC   rC   rC   rD   rV  q  s
    
	rV  c               	   c   s`   � t ƒ t ƒ } }tjtj}}z| |t_t_tjtjfV  W ||t_t_dS ||t_t_w )z×Reassign 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   r]   ÚstdoutÚstderr)Únew_outÚnew_errÚold_outÚold_errrC   rC   rD   Úcaptured_output“  s   €	"ry  )ÚenableÚsecrz  Úkwargsc                O   s8   |rt jj| g|¢R i |¤ŽS t jjdg|¢R i |¤ŽS )a   Make a pytest mark for the `pytest-timeout` package.

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

    Returns
    -------
    pytest.mark.timeout
    N)ÚpytestÚmarkÚtimeout)r{  rz  rˆ   r|  rC   rC   rD   r  ¥  s   r  rA   Úpytestconfigc                 C   sd   |  d¡r0tƒ d rtdƒ‚tƒ d rtdƒ‚dd l}ddlm} |jddtt	|ƒ ƒƒd	� d S d S )
Nz--use-rmm-poolr'   z2The --use-rmm-pool option requires the RMM packagez8The --use-rmm-pool option requires the dask_cuda packager   )Ú
get_n_gpusTi   @)Úpool_allocatorÚinitial_pool_sizeÚdevices)
Ú	getoptionr‡   rq   rx   r†   Údask_cuda.utilsr�  ÚreinitializeÚlistr¤   )rA   r€  r†   r�  rC   rC   rD   Úsetup_rmm_pool¹  s   


ÿ
ýör‰  rW  c                 C   sr   t tj | ¡ƒ} 	 dd„ t | ¡D ƒ}dd„ |D ƒ}d|v r%tj | d¡S t tj | tjj¡ƒ}|| ks6J ‚|} q	)z8Look for the demo directory based on the test file name.Tc                 S   s   g | ]	}|  ¡ r|j‘qS rC   )Úis_dirrW  )rc  rf  rC   rC   rD   Ú
<listcomp>Ï  s    zdemo_dir.<locals>.<listcomp>c                 S   s   g | ]}t j |¡‘qS rC   )rY  rW  Úbasename)rc  ÚdrC   rC   rD   r‹  Ð  s    Údemo)rZ  rY  rW  ÚdirnameÚscandirra  Úpardir)rW  ÚsubdirsÚnew_pathrC   rC   rD   Údemo_dirË  s   ùr”  c                 C   s   t j t j | ¡¡S r²   )rY  rW  rZ  r[  ©rW  rC   rC   rD   rZ  Ø  s   rZ  c                 C   s   t j t| ƒd¡S )Nr  )rY  rW  ra  r”  r•  rC   rC   rD   Údata_dirÜ  s   r–  c                 C   s8   t | ƒ}t tj |d¡¡}t tj |d¡¡}||fS )Nz agaricus.txt.train?format=libsvmzagaricus.txt.test?format=libsvm)r–  rÀ   rÁ   rY  rW  ra  )rW  Údpathr&  ÚdtestrC   rC   rD   Úload_agaricusà  s   r™  c                 C   s   t tj t| ƒtjj¡ƒS r²   )rZ  rY  rW  ra  r”  r‘  r•  rC   rC   rD   Úproject_rootç  s   rš  Ú
world_sizeÚtest_fn.c           	         s¸   t  ¡ ‰dtttttf f dd f‡ ‡‡‡fdd„}td| d�}| ¡  g }t| ƒD ]}t	j
|| ¡ fd�}| |¡ | ¡  q*|D ]}| ¡  ˆ ¡ sUJ dˆ ¡ › �ƒ‚qB| ¡  d S )	NÚ	rabit_envr)   c              
      s|   z%t jjdi | ¤Ž� ˆˆ i ˆ¤Ž W d   ƒ W d S 1 sw   Y  W d S  ty= } zˆ |¡ W Y d }~d S d }~ww )NrC   )rÀ   Ú
collectiveÚCommunicatorContextr~   Úput)r�  r?  ©rˆ   Úexception_queuer|  rœ  rC   rD   Ú
run_workerð  s   &ÿ€ÿz"run_with_rabit.<locals>.run_workerz	127.0.0.1)Úhost_ipÚ	n_workers)rJ  rˆ   zWorker failed: )ÚqueueÚQueuer   rÚ   r   rº   r   Ústartr¤   Ú	threadingÚThreadÚworker_argsr¨   ra  r  ÚgetÚwait_for)	r›  rœ  rˆ   r|  r£  ÚtrackerÚworkersrA   ÚworkerrC   r¡  rD   Úrun_with_rabitë  s   ,

r±  Úfeature_namesc                    s   ‡ fdd„t |ƒD ƒS )zBGet the global list of feature names from the local feature names.c                    s$   g | ]}ˆ D ]	}|› d |› �‘qqS )Ú.rC   )rc  ÚrankÚfeature©r²  rC   rD   r‹  
  s
    ÿÿz.column_split_feature_names.<locals>.<listcomp>)r¤   )r²  r›  rC   r¶  rD   Úcolumn_split_feature_names  s   
ÿr·  c                   C   s   t  ¡ dkS )z)Check if the current platform is Windows.r+   )r^   r   rC   rC   rC   rD   rŒ     s   rŒ   )Trq  )FrA  r¥   r²   )rÙ   Úimportlib.utilrF   rY  r^   r¦  r/   r]   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$   r"  rr  rÚ   r%   r0   rJ   rK   rL   rP   rS   rU   rW   r`   rc   re   rg   ri   rs   rv   rx   rz   r�   rƒ   r…   r‡   r‹   r�   rº   r”   rý   Ú
csr_matrixrP  r­   r®   rè   ÚSearchStrategyrÿ   r   Ú__annotations__r  Úsparse_datasets_strategyr  r  Ú#_unweighted_multi_datasets_strategyÚmulti_dataset_strategyÚBoosterÚXGBModelr$  rÁ   r,  r  r7  r:  r>  r@  rQ  rU  rV  ry  r  ÚConfigr‰  r”  rZ  r–  r™  rš  r±  r·  rŒ   rC   rC   rC   rD   Ú<module>   s¶   4(


ÿÿÿ
þÿÿÿÿ
þMûÿþýüû
ú"üüüüüçÿ$ÿ
þ(üüøÿÿ&	ÿÿÿ
þÿÿÿÿ
þÿÿÿÿÿ
þ.ÿÿÿÿ
þ""$ÿ
ÿÿÿ
þÿÿ
þ	