code: def get_connection(self,
          scheme='',
          hostname=None,
          port=None,
          username=None,
          password=None,
          vpath_connector=None,
          **extras
          ):
          
          if scheme not in self.schemes:
              raise NoSchemeError(
                  'There is no handler registered for "{}" (available: {})'.format(scheme, list(self.schemes.keys()))
                  )
          key = (
              scheme,
              hostname,
              port,
              username,
              password,
              vpath_connector,
              frozenset(extras.items())
              )
  
          if not key in self.connections:
              self.create(scheme, key, extras)
          return self.connections[key]
docs: get_connection: get connection for 'scheme' or create a new one.
  
          @type scheme: str
          @param scheme: the scheme to use (i.e. 'file', 'ssh', etc.)
  
          @type hostname: str|None
          @param hostname: the hostname (extracted from parsed uri)
  
          @type port: str|None
          @param port: the port (extracted from parsed uri)
  
          @type username: str|None
          @param username: the username (extracted from parsed uri)
  
          @type password: str|None
          @param password: the password (extracted from parsed uri)
  
          @type extras: dict
          @param extras: parameters that are given to the backend factory
  
          A key is calculated from given parameters. This key is used
          to check for existing connection.