
    ^i                         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mZ ddlmZ  G d d	e      Zedddd
d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_deprecate_positional_argsmake_jcargs)RabitTrackerc                   `    e Zd ZdZedddd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,  )server_key_pathserver_cert_pathclient_cert_pathtimeout	n_workersportsecurer   r   r   r   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
             R/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/xgboost/federated.py__init__zFederatedTracker.__init__%   s]     ")#+--L	
 	D((v||F/CDE    )
__name__
__module____qualname____doc__r
   r   boolr   strr%    r&   r$   r   r      s    2   *.*.*. 
  "# #3- #3-  
  r&   r   Tr   )r   r   r   blockingr   r   r   r   r   r   r.   r   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>V   s       	Ds   )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&   )r*   r   	threadingr   typingr   r   r   corer   r	   r
   r   r;   r   r   r   r,   r+   r=   r-   r&   r$   <module>rA      s    :   & & L L !2| 2j 
 &*&*&*,,
, c]	,
 sm, sm, , , d38n, ,r&   