class_docstr: Download files collector for sphinx.environment.
docstr: Process downloadable file paths.
docstr_tok: ["Process","downloadable","file","paths","."]
code: def process_doc(self, app: Sphinx, doctree: nodes.document) -> None:
      """Process downloadable file paths."""
      for node in doctree.findall(addnodes.download_reference):
          targetname = node["reftarget"]
          if "://" in targetname:
              node["refuri"] = targetname
          else:
              rel_filename, filename = app.env.relfn2path(
                  targetname, app.env.docname
              )
              app.env.dependencies[app.env.docname].add(rel_filename)
              if not os.access(filename, os.R_OK):
                  logger.warning(
                      __("download file not readable: %s") % filename,
                      location=node,
                      type="download",
                      subtype="not_readable",
                  )
                  continue
              node["filename"] = app.env.dlfiles.add_file(
                  app.env.docname, rel_filename
              )
  
imports: from __future__ import annotations
  import os
  from glob import glob
  from os import path
  from typing import TYPE_CHECKING, Any
  from docutils import nodes
  from docutils.utils import relative_path
  from sphinx import addnodes
  from sphinx.environment.collectors import EnvironmentCollector
  from sphinx.locale import __
  from sphinx.util import logging
  from sphinx.util.i18n import get_image_filename_for_language, search_image_for_language
  from sphinx.util.images import guess_mimetype
label_desc: Use image node_id 3 for calling the DownloadFileCollector obj's underlying member method code with example usage: obj.process_doc(app, doctree) without return types