ó Ú_e[c@s dZdefd„ƒYZdS(sV High level authentication logic module. Largely replaces what used to be implemented solely within `SSHClient` and its ``_auth()`` method. Technically, this module's main API member - `Authenticator` - sits below `SSHClient` (meaning it can be used by non-Client-based code) and above `Transport` (which provides the bare auth SSH message 'levers' only.) .. note:: This is not to be confused with the `paramiko.auth_handler` module, which sits *below* (or within) `Transport`, handling the low level guts of submitting authentication protocol messages and awaiting their responses. t AuthenticatorcBs2eZdZd„Zd„Zd„Zd„ZRS(sK Wraps a `Transport` and uses it to authenticate or die trying. Lifecycle is relatively straightforward: - Instantiate with a handle onto a `Transport` object. This object must already have been prepared for authentication by calling `Transport.start_client`. - Call the instance's `authenticate_with_kwargs` method with as many or few auth-source keyword arguments as needed, which will: - attempt to authenticate in a documented order of preference - if successful, return an `AuthenticationResult` - if unsuccessful or if additional auth factors are required, raise an `AuthenticationException` (or subclass thereof) which will exhibit a ``.result`` attribute whose value is an `AuthenticationResult`. - either way, the point is that the caller will have access to an `AuthenticationResult` object exposing the various auth sources tried, what order they were tried in, and what the result was. - see API docs for `authenticate` for further details. - Alternately, for tighter control of which auth sources are tried and in what order, call `authenticate` directly (it's what implements the guts of `authenticate_with_kwargs`) which foregoes most kwargs in lieu of an iterable containing `AuthSource` objects. cCsdS(N((tselft transport((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pyt__init__*scCsdS(N((Rtlots_o_kwargs_here((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pytauthenticate_with_kwargs2scGsdS(N((Rtusernametsources((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pyt authenticate<scCsdS(N((Rtkwargs((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pytsources_from_kwargsEs(t__name__t __module__t__doc__RRRR (((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pyRs   N(R tobjectR(((s:/tmp/pip-install-KP2Jbq/paramiko/paramiko/authenticator.pyts