
    rii                         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dS )z4XGBoost Experimental Federated Learning related API.    N)Thread)AnyDictOptional   )_LIB_check_call_deprecate_positional_argsmake_jcargs)RabitTrackerc                   z    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	dS )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        |                               || _        d S )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
             W/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/xgboost/federated.py__init__zFederatedTracker.__init__%   su     "")#+--LL	
 	
 	
 	D(v|F/C/CDDEE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          	      x   d| i}t          d |||fD                       }t          | ||||||          }	|	                                 |r|	                                 dS t	          |	j                  }
d|
_        |
                                 |                    |	                                           |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V  	d S )Nr-   ).0paths     r$   	<genexpr>z'run_federated_server.<locals>.<genexpr>V   s;         	D     r&   )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 MMOOO t7+,,,FFM
LLNNNKK##%%&&&Kr&   )r*   r   	threadingr   typingr   r   r   corer   r	   r
   r   r;   r   r   r   r,   r+   r=   r-   r&   r$   <module>rA      sP   : :        & & & & & & & & & & L L L L L L L L L L L L ! ! ! ! ! !2 2 2 2 2| 2 2 2j 
 &*&*&*, , ,,
, c]	,
 sm, sm, , , d38n, , , , , ,r&   