Ë
    °Ó^jïX  ã                   ó 	  — 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	 d…d0eTd1eTd;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	 d†d`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	 d‡dfeTd2e:dge;dhe;de%f
di„Zp	 dˆd`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d€ef   d-edseddf
d�„Z|d‚e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         úc/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/xgboost/testing/__init__.pyr2   r2   B   s  € ô ƒxÐ+Ñ+Øä‡ƒð	ä—‘œfŸo™o¬v×/AÑ/AÓBð$ØFLÜ—‘œfŸo™o¬v×/AÑ/AÓBð$àFLà—‘˜JÔ'Ø×)Ñ)Ó+¨AÑ.�Ø—‘”à—‘  t˜}Ô-Ø Ÿ-™-›/‘��aà—‘˜uŸ|™|›~Ô.Ø—i‘i “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Ø ˜°D°6Ð9KÐ1LÑ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   e   s   € ä%›Z˜Ð3TÑUÐUrM   c                  ó"   — t        «       dk7  ddœS )Nr,   zLinux is required.r'   r   rO   rM   rE   Ú	not_linuxrR   j   s   € Ü› WÑ,Ð8LÑMÐMrM   c                  ó   — t        d«      S )NÚubjson©rL   rO   rM   rE   Ú	no_ubjsonrV   n   ó   € Ü�(ÓÐrM   c                  ó   — t        d«      S )NÚsklearnrU   rO   rM   rE   Ú
no_sklearnrZ   r   ó   € Ü�)ÓÐrM   c                  ó   — t        d«      S )NÚdaskrU   rO   rM   rE   Úno_daskr^   v   ó   € Ü�&‹>ÐrM   c                  ó   — t        d«      S )NÚlokyrU   rO   rM   rE   Úno_lokyrb   z   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Ý!à
�‰’n¢oÐ6ÂˆÔPð -¸4Ñ@Ð@øô ò EØ0¸tÑ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ð5ús   „
 � Ÿ 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Ø�[Ò!¤f£h°)Ò&;Ûð	*Ø�H‰H’YÓ×#Ñ#Ô%ð Ðˆ9Ðøô ò 	*Ø%)ˆI�kÒ"ØÐð	*ú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   € Ø-¼J»LÑ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   € ô ˜9 j°!°XÓ>�G€A€qˆ!ØˆQ‰4��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ØÜ—*‘*Øô
ˆð �Y‰YÐ*Ó+ˆØ�[‰[˜Q QÐ-@ˆ[ÓAˆØ	�‰�ŒØ	�‰�ŒØ	�‰��ðð ˆa�ˆ7€NrM   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   € Ø!%§¡ˆ	�+ÑØ#'§;¡;ˆ	�-Ñ Ø�>‰>˜_Ò,Ü%(¬¯©°·±«¸!Ñ);Ó%<ˆI�kÑ"ØÐ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   € Ü�{‰{Ø�F‰FØ�F‰FØ—6‘6ØŸ™Ø#ô
ð 	
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   € Ûà—F‘F�N‰D¨¯©°·±Ó(8ˆØ�H‰H�T—V‘V¤2§:¡:ˆHÓ.ˆØ�H‰H�T—V‘V¤2§:¡:ˆ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  € Ø—F‘F—L‘L ‘Oˆ	Øˆ	Ø Ñ*¨QÑ.ˆ	àˆ	ØˆØˆÜ�yÓ!ò 
	!ˆAØ�i‘-ˆCÜ�q˜1‘u 	Ñ)¨9Ó5ˆCØ˜#’:Ð�:Ø—‘�s˜3�w �|Ñ$ˆAØ—‘�s˜3�ˆAØ#'§6¡6Ð#5�—‘�s˜3‘¸4ˆAØ×Ñ˜QÔØ�O‰O˜AÔØ‰}Ø—‘˜aÕ ð
	!ô ØØÙ‰F $ØØô
ˆô �{‰{˜2‹ÐrM   c                 ó   — | j                   S rÑ   )rF   rã   s    rE   Ú__repr__zTestDataset.__repr__?  s   € Ø�y‰yÐ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Ø;>ð1ØHKð1à	ó1ð D¨¨c¨¡Nð °t¸CÀ¸H±~ó ð
˜#Ÿ+™+ó 
ð
 x°¡}ð 
¸×9LÑ9Ló 
ð 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  C  s÷   € ô �)‰)×
Ñ
 Ó
%€CØ�
‰
�1�c 	¨JÑ 6ˆ
Ó7×?Ñ?À	È:ÓV€AÜ
�‰ˆq�qÔ€AØˆ�‰‹�L€AÜ
�‰��Q—U‘U“W‘˜wÑ&Ó'×.Ñ.¬r¯x©xÓ8€Aà
�,‰,�q˜.¨yÄÇÁˆ,Ó
I€CØ�
‰
�1�c ˆ
Ó/€AØŒ�‰�‹�N€AØŒ�‰�‹�N€AÙÜ�g‰g�c‹lˆØˆ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_cat[  s   € áœ×,Ñ,¨Q°Ó4Ó5ˆ	Ùœ*×-Ñ-¨a°Ó3Ó4ˆ
Ù”j×)Ñ)¨!¨SÓ1Ó2ˆÙÜ×ÑØØØØ$Ø %ôó
ˆð ˜* f¨hÐ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>r  s   ø€ Ô$Ø˜: v°eÀhô€ rM   úreg:squarederrorÚrmse)rÌ   )r¡   r  rª   r©   r³   s    @@@@rE   Ú_buildz!_cat_sampled_from.<locals>._buildk  s[   û€ Ø˜‘Gˆ	Ø˜!‘Wˆ
Ø�a‘ˆØ˜‘7ˆÜØˆk˜˜:˜, a¨ x¨q°°
Ð;öð Øó
ð 	
rM   )r$   Ú	compositer   r   rÚ   ÚfloatrÌ   Úmap)r  r#  s     rE   Ú_cat_sampled_fromr'  Z  sj   € Ü×Ñð7œð 7¤U¬3´´S¼%Ð+?Ñ%@ò 7ó ð7ð
”Uœ3¤¤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   ‚  ó   € Ô*¬3¨s«8°Q¸¸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   € Ô*¬3¨s«8°Q¸¸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   € Ô*¬3¨s«8°Q¸¸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   € Ô*¬3¨s«8°Q¸¸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ˆÙ”
×#Ñ#Ó%Ô&ÙÜ”r—z‘z¤C¨¯©£K¼:×;LÑ;LÈSÐRUÓ;VÔWóˆDŒFñ ”
×#Ñ#Ó%Õ&ØˆIØ�~‰~ Ò0Ü¤§¡ t§v¡v£°Ñ 2Ó3‘	Ø—‘×%Ñ% gÔ.Ø ŸF™FŸL™L¨™O�	áÜÜ—J‘JØ—V‘V—\‘\ !‘_ yÑ0Ü'×.Ñ.¨s°CÓ8ôóˆDŒKð —;‘;Ð*Ð*Ð*Ø˜AŠ~Ø"Ÿk™k×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   € œŸ™ (Ó+¬R¯X©X°a«[Ð9€ rM   )r$   Úsampled_fromrÌ   r   r   r   r>  )Ú_unweighted_datasets_strategys    rE   Úmake_dataset_strategyrJ  Ê  s™   € Ü$.×$;Ñ$;äØÔ!7Ð9KÈVóô Ø"Ô$:Ð<OÐQVóô ˜¤*Ð.?ÀÓKÜ˜¤*Ð.@À&ÓIÜ˜¤ZÐ1DÀeÓ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×,Ñ,°sÀqÐTUÐ,Ó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 )zžEvaluation 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ÙØ�sœRŸV™V U F›^Ñ+Ñ,ˆØ�5‰L×ÑÔ U¨c¡\×$6Ñ$6Ô$8Ð8Ð8Ü
�‰�—‘Ó€AØ	�‰€BØ‡z�z�Q‚ØœBŸJ™J s›OÐ+Ð+Ø��b‘	‰M€A€b�EØ	�#‰€BØ�"‰I€A€b�EØœŸ™˜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–   € ñ
 Ø˜œrŸv™v w hÓ/Ñ/Ñ0ˆØ�7‰N×ÑÔ! w°#¡~×&:Ñ&:Ô&<Ð<Ð<ä
�‰�—‘Ó€AØ	�3‰€BØ��r‘
‰N€A€b�EØ	�C‰€BØ�2‰J€A€b�EÜ�6‰6�!‹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Ü�7‰7”2—6‘6˜#˜sÓ# g§l¡lÑ2Ó3€DØ€KrM   r  c                 ó\   — t        j                  | «      }|t        j                  |«      z  S rÑ   )r¾   rY  r“   )r  Úes     rE   Úsoftmaxru  4  s!   € Ü
�‰ˆq‹	€AØŒr�v‰v�a‹y‰=Ð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>.objectiveL  se  ø€ ð �|‰|˜A‰ˆØ�}‰}˜d G˜_´B·J±Jˆ}Ó?ˆØ�}‰}˜d G˜_´B·J±Jˆ}Ó?ˆØˆÜ�u—{‘{ 1‘~Ó&ò 	ˆAØ˜A‘YˆFÜ˜˜a¢˜d™Ó$ˆAÜ˜5Ÿ;™; q™>Ó*ò �Ø ’{ f°Ò&7Ð7Ð7Ø"# v¢+�A�a‘D˜3’J°1°Q±4�Ü˜˜q ™t™ s¨Q¨q©T¡zÑ2×8Ñ8Ó:¸CÓ@�Ø��Q˜�T‘
Ø��Q˜�T’
ñð	ð �|‰|˜T 7˜OÓ,ˆØ�|‰|˜T 7˜OÓ,ˆØ�‰˜t°%¸vˆÓFˆØ�‰˜t°%ˆÓ8ˆØ�TˆzÐrM   )r‘   r¾   Úndarrayr   )rv  r«   rw  rx  rÎ   r„  s   ` `` @rE   Úsoftprob_objr†  9  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‹  f  sC   € ð �F‰?€DÜ�7‰7�4—:‘:Ó€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__x  sD   € ØˆŒ	Ü—g‘g×&Ñ&¤r§w¡w§¡´r·w±w·~±~Ó'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Š   € Ü
�‰�—‘ÔØ�<Š<ô ,.¯7©7´2·7±7×3EÑ3EÀdÇiÁiÓ3PÓ+Q÷ñ á'�D˜& %Øòð ô —‘—‘˜T 1Õ%ðØ%õˆD�Jð ùõs   Á-2B,
r¡   c                 óÌ  — t        j                  | j                  «       | j                  r±t        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¸   € Ü
�‰�—‘ÔØ�<Š<ô ,.¯7©7´2·7±7×3EÑ3EÀdÇiÁiÓ3PÓ+Q÷ñ á'�D˜& %Øòð ô —‘—‘˜T 1Õ%ðØ%õˆEð
 ×#Ñ# D§J¡JÓ/ˆDØò �Ü—	‘	˜!•ñð ùõs   Á-2C
©F)r*   N)
rú   rû   rü   rý   r   ÚboolrÔ   rŸ  r   r¤  rO   rM   rE   r�  r�  r  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)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   ri   ÚstdoutÚstderr)Únew_outÚnew_errÚold_outÚold_errs       rE   Úcaptured_outputr®  ”  sn   è ø€ ô  “z¤8£:ˆW€GÜ—z‘z¤3§:¡:ˆW€Gð2Ø!(¨'ÐŒŒ
”C”JÜ�j‰jœ#Ÿ*™*Ð$Ò$à!(¨'ÐŒŒ
”C•Jø ¨'ÐŒŒ
”C•Jüs   ‚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Ð5 dÒ5¨fÑ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   € Ø×ÑÐ.Ô/Ü‹8�KÒ ÜÐ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Â   € ä”B—G‘G—O‘O DÓ)Ó*€DØ
Ü#%§:¡:¨dÓ#3ÖB˜a°q·x±xµz�1—6“6ÐBˆÐBØ07Ö8¨1”2—7‘7×#Ñ# AÕ&Ð8ˆÐ8Ø�WÑÜ—7‘7—<‘<  fÓ-Ð-ÜœBŸG™GŸL™L¨¬r¯w©w¯~©~Ó>Ó?ˆØ˜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$   € Ü�7‰7×ÑœBŸG™GŸO™O¨DÓ1Ó2Ð2rM   c                 óT   — t         j                  j                  t        | «      d«      S )Nr<  )r‘  rŽ  r›  rË  rÍ  s    rE   Údata_dirrÏ  Ý  s   € Ü�7‰7�<‰<œ ›¨Ó/Ð/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   € Ü�T‹N€EÜ�[‰[œŸ™Ÿ™ eÐ-OÓPÓQ€FÜ�K‰KœŸ™Ÿ™ UÐ,MÓNÓO€EØ�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(   € Ü”B—G‘G—L‘L¤¨$£´·±·±Ó@Ó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ð#œd¤3¬¬c´3¨h©Ð#7Ñ8ð #¸T÷ #ð #ô  ;¸*ÔE€GØ‡M�M„Oà€GÜ�:Óò ˆÜ×!Ñ!¨¸7×;NÑ;NÓ;PÐ:RÔSˆØ�‰�vÔØ�‰�ðð ò RˆØ�‰ŒØ×$Ñ$Õ&ÐQ¨/¸/×:MÑ:MÓ:OÐ9PÐ(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÷Ø $ÈòØ>Eˆ4ˆ&��'�ÒðØóð ùó 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€á�|°4À3Ñ%GÓH€
ð�$ó ð<N�ð N˜ó Nð
V�ó Vð
N�:ó Nð�:ó ð�Jó ð�ó ð�ó ð�Jó ð�*ó ð�:ó ð�*ó ð�:ó ðA�*ó Að5�zó 5ð�jó ð�ó ð
�ó 
ð�jó ð�Zó ð�
ó ð6�sð 6˜zó 6ðJ�*ó JðØðØ #ðØ/3ðà
ˆ9�i Ð*Ñ+óðØðØ*-ðØ:=ðØINðà
ˆ4�×!Ñ!Ñ" D¨¯©Ñ$4°d¸2¿:¹:Ñ6FÐFÑGó÷0Eñ EðZ ñØðàðð ðð ð	ð
 ðð ˆ2�:‰:�r—z‘z 2§:¡:¨r¯z©zÐ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×&=Ñ&=á�H˜j¨/¸:ÓFÙØÙVØØó		
ñ 	ØÙVØØó		
ðó'Ð #ð&Ñ2Ø'óó Ð ñ
 ˆC�—‘˜cŸl™lÓ+€ð�R—Z‘Zð ¨¯©ð ¸¸r¿z¹zÈ2Ï:É:Ð?UÑ9Vó ð"Ø�:‰:ð"Ø"Ÿ{™{ð"Ø6:ð"à
ˆ3�—
‘
ˆ?Ñó"ð2 ?DñØ�J‰JðØ!#§¡ðØ7;ðà‡Z�Zóð"˜RŸZ™Zð °"·*±*ð Àó ðˆr�z‰zð ˜bŸj™jó ð KTñ*Øð*Ø ð*Ø14ð*ØDGð*àó*ð\ SWñ	Ø�J‰Jð	Ø "§
¡
ð	Ø;CÀBÇJÁJÑ;Oð	à
ˆ2�:‰:�r—z‘zÐ!Ñ"ó	÷ñ ðD ð2˜ 5¨°8Ð);Ñ#<¸dÀDÐ#HÑIò 2ó ð2ð" 26ò 6�ð 6˜Sð 6¨$ð 6Àð 6Èó 6ð(
�cð 
¨¯©ð 
¸4ó 
ð$
�3ð 
˜3ó 
ð3�3ð 3˜3ó 3ð0�3ð 0˜3ó 0ð˜ð   c§k¡k°3·;±;Ð&>Ñ ?ó ðB�sð B˜só BðØðØ& s¨C xÑ0ðØ9<ðØHKðà	óð6Ø˜˜c 3˜h™Ñ(ðØ69ðà	ˆ#�Yóð*�Dô *rM   