class_docstr: Downloads and manages resources, pretrained models/pipelines.
  
  Usually you will not need to use this class directly. It is called by the
  `pretrained()` function of annotators.
  
  However, you can use this class to list the available pretrained resources.
  
  Examples
  --------
  If you want to list all NerDLModels for the english language you can run:
  
  >>> ResourceDownloader.showPublicModels("NerDLModel", "en")
  +-------------+------+---------+
  | Model       | lang | version |
  +-------------+------+---------+
  | onto_100    | en   | 2.1.0   |
  | onto_300    | en   | 2.1.0   |
  | ner_dl_bert | en   | 2.2.0   |
  |  ...        | ...  | ...     |
  
  
  Similarly for Pipelines:
  
  >>> ResourceDownloader.showPublicPipelines("en")
  +------------------+------+---------+
  | Pipeline         | lang | version |
  +------------------+------+---------+
  | dependency_parse | en   | 2.0.2   |
  | check_spelling   | en   | 2.1.0   |
  | match_datetime   | en   | 2.1.0   |
  |  ...             | ...  | ...     |
docstr: Downloads and loads a model with the default downloader. Usually this method
  does not need to be called directly, as it is called by the `pretrained()`
  method of the annotator.
  
  Parameters
  ----------
  reader : str
      Name of the class to read the model for
  name : str
      Name of the pretrained model
  language : str
      Language of the model
  remote_loc : str, optional
      Directory of the Spark NLP Folder, by default None
  j_dwn : str, optional
      Which java downloader to use, by default 'PythonResourceDownloader'
  
  Returns
  -------
  AnnotatorModel
      Loaded pretrained annotator/pipeline
docstr_tok: ["Downloads","and","loads","a","model","with","the","default","downloader",".","Usually","this","method","does","not","need","to","be","called","directly",",","as","it","is","called","by","the","`","pretrained","(",")","`","method","of","the","annotator",".","Parameters","--","--","--","--","--","reader",":","str","Name","of","the","class","to","read","the","model","for","name",":","str","Name","of","the","pretrained","model","language",":","str","Language","of","the","model","remote_loc",":","str",",","optional","Directory","of","the","Spark","NLP","Folder",",","by","default","None","j_dwn",":","str",",","optional","Which","java","downloader","to","use",",","by","default","'PythonResourceDownloader'","Returns","--","--","--","-","AnnotatorModel","Loaded","pretrained","annotator\/pipeline"]
code: def downloadModel(
      reader,
      name,
      language,
      remote_loc=None,
      j_dwn="PythonResourceDownloader",
  ):
      """Downloads and loads a model with the default downloader. Usually this method
      does not need to be called directly, as it is called by the `pretrained()`
      method of the annotator.
  
      Parameters
      ----------
      reader : str
          Name of the class to read the model for
      name : str
          Name of the pretrained model
      language : str
          Language of the model
      remote_loc : str, optional
          Directory of the Spark NLP Folder, by default None
      j_dwn : str, optional
          Which java downloader to use, by default 'PythonResourceDownloader'
  
      Returns
      -------
      AnnotatorModel
          Loaded pretrained annotator/pipeline
      """
      print(name + " download started this may take some time.")
      file_size = _internal._GetResourceSize(
          name, language, remote_loc
      ).apply()
      if file_size == "-1":
          print(
              "Can not find the model to download please check the name!"
          )
      else:
          print("Approximate size to download " + file_size)
          stop_threads = False
          t1 = threading.Thread(
              target=printProgress, args=(lambda: stop_threads,)
          )
          t1.start()
          try:
              j_obj = _internal._DownloadModel(
                  reader.name, name, language, remote_loc, j_dwn
              ).apply()
          except Py4JJavaError as e:
              sys.stdout.write("\n" + str(e))
              raise e
          finally:
              stop_threads = True
              t1.join()
  
          return reader(classname=None, java_model=j_obj)
  
file_path: spark-nlp/python/sparknlp/pretrained/resource_downloader.py
imports: import sys
  import threading
  from py4j.protocol import Py4JJavaError
  from pyspark.ml import PipelineModel
  import sparknlp.internal
  from sparknlp.pretrained.utils import printProgress
label_desc: Use image node_id 1 for calling the ResourceDownloader obj's underlying member method code with example usage: obj.downloadModel(reader, name, language, remote_loc, j_dwn) and returns: reader