
    :[g                         d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	m
Z
mZ ddlmZ  G d d	e      Z	 	 	 	 	 dd
ededee   dee   dee   dededeeeef      fdZy)z4XGBoost Experimental Federated Learning related API.    N)Thread)AnyDictOptional   )_LIB_check_callmake_jcargs)RabitTrackerc                   T    e Zd ZdZ	 	 	 	 ddedededee   dee   dee   d	ed
dfdZy)FederatedTrackera  Tracker for federated training.

    Parameters
    ----------
    n_workers :
        The number of federated workers.

    port :
        The port to listen on.

    secure :
        Whether this is a secure instance. If True, then the following arguments for SSL
        must be provided.

    server_key_path :
        Path to the server private key file.

    server_cert_path :
        Path to the server certificate file.

    client_cert_path :
        Path to the client certificate file.

    N	n_workersportsecureserver_key_pathserver_cert_pathclient_cert_pathtimeoutreturnc                     t        j                         }t        ||d||||t        |            }	t	        t        j                  |	t        j                  |                   || _        y )N	federated)r   r   dmlc_communicatorfederated_securer   r   r   r   )	ctypesc_void_pr
   intr	   r   XGTrackerCreatebyrefhandle)
selfr   r   r   r   r   r   r   r   argss
             L/var/www/html/bid-api/venv/lib/python3.12/site-packages/xgboost/federated.py__init__zFederatedTracker.__init__%   s]     ")#+--L	
 	D((v||F/CDE    )NNN,  )	__name__
__module____qualname____doc__r   boolr   strr#    r$   r"   r   r      st    < *.*.*.  	
 "# #3- #3-  
r$   r   r   r   r   r   r   blockingr   r   c           	      :   d| i}t        d |||fD              }t        | ||||||      }	|	j                          |r|	j                          yt	        |	j                        }
d|
_        |
j                          |j                  |	j                                |S )a|  See :py:class:`~xgboost.federated.FederatedTracker` for more info.

    Parameters
    ----------
    blocking :
        Block the server until the training is finished. If set to False, the function
        launches an additional thread and returns the worker arguments. The default is
        True and a higher level framework is responsible for setting worker parameters.

    r   c              3   $   K   | ]  }|d u 
 y w)Nr,   ).0paths     r"   	<genexpr>z'run_federated_server.<locals>.<genexpr>R   s      ID 	DIs   )r   r   r   r   r   r   r   N)targetT)allr   startwait_forr   daemonupdateworker_args)r   r   r   r   r   r-   r   r!   r   trackerthreads              r"   run_federated_serverr<   >   s    & (3D $&68HI F '))G MMO7++,FFM
LLNKK##%&Kr$   )NNNTr%   )r)   r   	threadingr   typingr   r   r   corer   r	   r
   r:   r   r   r   r+   r*   r<   r,   r$   r"   <module>r@      s    :   & & 0 0 !0| 0l &*&*&*++
+ c]+ sm	+
 sm+ + + d38n+r$   