class_docstr: Class to bring together url_res, credential, and authenticator
      
class_docstr_tok: ["Class","to","bring","together","url_res",",","credential",",","and","authenticator"]
code: def _get_downloader_class(cls, url):
      key = cls.get_scheme_from_url(url)
      if key in cls.DOWNLOADERS:
          entry = cls.DOWNLOADERS[key]
          klass = entry["class"]
          for ext in entry.get("externals", set()):
              if external_versions[ext] is None:
                  raise RuntimeError(
                      "For using %s downloader, you need '%s' dependency "
                      "which seems to be missing" % (klass, ext)
                  )
          return klass
      else:
          raise ValueError(
              "Do not know how to handle url %s for scheme %s. Known: %s"
              % (url, key, cls.DOWNLOADERS.keys())
          )
  
imports: from glob import glob
  from logging import getLogger
  import re
  from os.path import dirname, abspath, join
  from urllib.parse import urlparse
  from .base import NoneAuthenticator, NotImplementedAuthenticator
  from .http import HTMLFormAuthenticator, HTTPAnonBearerTokenAuthenticator, HTTPAuthAuthenticator, HTTPBasicAuthAuthenticator, HTTPDigestAuthAuthenticator, HTTPBearerTokenAuthenticator, HTTPDownloader
  from .s3 import S3Authenticator, S3Downloader
  from .shub import SHubDownloader
  from configparser import ConfigParser
  from datalad.support.external_versions import external_versions
  from datalad.support.network import RI
  from datalad.support import path
  from datalad.utils import auto_repr, ensure_list_from_str, get_dataset_root, Path
  from ..interface.common_cfg import dirs
  from datalad.downloaders import CREDENTIAL_TYPES
label_desc: Use image node_id 4 for calling the Provider obj's underlying member method code with example usage: obj._get_downloader_class(cls, url) and returns: klass