class_docstr: Interface for an SSHManager
      
class_docstr_tok: ["Interface","for","an","SSHManager"]
docstr: Get an SSH connection handler
  
  Parameters
  ----------
  url: str
    ssh url
  use_remote_annex_bundle : bool, optional
    If enabled, look for a git-annex installation on the remote and
    prefer its Git binaries in the search path (i.e. prefer a bundled
    Git over a system package). See also the configuration setting
    datalad.ssh.try-use-annex-bundled-git
  force_ip : {False, 4, 6}
    Force the use of IPv4 or IPv6 addresses.
  
  Returns
  -------
  BaseSSHConnection
  
  .. versionchanged:: 0.16
     The default for `use_remote_annex_bundle` changed from `True`
     to `None`. Instead of attempting to use a potentially available
     git-annex bundle on the remote host by default, this behavior
     is now conditional on the `datalad.ssh.try-use-annex-bundled-git`
     (off by default).
code: def get_connection(
      self, url, use_remote_annex_bundle=None, force_ip=False
  ):
      """Get an SSH connection handler
  
      Parameters
      ----------
      url: str
        ssh url
      use_remote_annex_bundle : bool, optional
        If enabled, look for a git-annex installation on the remote and
        prefer its Git binaries in the search path (i.e. prefer a bundled
        Git over a system package). See also the configuration setting
        datalad.ssh.try-use-annex-bundled-git
      force_ip : {False, 4, 6}
        Force the use of IPv4 or IPv6 addresses.
  
      Returns
      -------
      BaseSSHConnection
  
      .. versionchanged:: 0.16
         The default for `use_remote_annex_bundle` changed from `True`
         to `None`. Instead of attempting to use a potentially available
         git-annex bundle on the remote host by default, this behavior
         is now conditional on the `datalad.ssh.try-use-annex-bundled-git`
         (off by default).
      """
      raise NotImplementedError
  
imports: import fasteners
  import os
  import logging
  from socket import gethostname
  from hashlib import md5
  from subprocess import Popen
  import tempfile
  import threading
  from datalad.utils import quote_cmdlinearg
  from datalad.support.exceptions import CapturedException, CommandError, ConnectionOpenFailedError
  from datalad.support.external_versions import external_versions
  from datalad.utils import auto_repr, Path, ensure_list, on_windows
  from datalad.cmd import NoCapture, StdOutErrCapture, WitlessRunner
  from ..None import cfg
label_desc: Use image node_id 2 for calling the BaseSSHManager obj's underlying member method code with example usage: obj.get_connection(url, use_remote_annex_bundle, force_ip) without return types