class_docstr: Builds target formats from the reST sources.
class_docstr_tok: ["Builds","target","formats","from","the","reST","sources","."]
code: def write(
      self,
      build_docnames: Iterable[str] | None,
      updated_docnames: Sequence[str],
      method: str = "update",
  ) -> None:
      if build_docnames is None or build_docnames == ["__all__"]:
          # build_all
          build_docnames = self.env.found_docs
      if method == "update":
          # build updated ones as well
          docnames = set(build_docnames) | set(updated_docnames)
      else:
          docnames = set(build_docnames)
      logger.debug(
          __("docnames to write: %s"), ", ".join(sorted(docnames))
      )
  
      # add all toctree-containing files that may have changed
      for docname in list(docnames):
          for tocdocname in self.env.files_to_rebuild.get(
              docname, set()
          ):
              if tocdocname in self.env.found_docs:
                  docnames.add(tocdocname)
      docnames.add(self.config.root_doc)
  
      with progress_message(__("preparing documents")):
          self.prepare_writing(docnames)
  
      with progress_message(__("copying assets")):
          self.copy_assets()
  
      if self.parallel_ok:
          # number of subprocesses is parallel-1 because the main process
          # is busy loading doctrees and doing write_doc_serialized()
          self._write_parallel(
              sorted(docnames), nproc=self.app.parallel - 1
          )
      else:
          self._write_serial(sorted(docnames))
  
imports: from __future__ import annotations
  import codecs
  import pickle
  import time
  from os import path
  from typing import TYPE_CHECKING, Any
  from docutils import nodes
  from docutils.utils import DependencyList
  from sphinx.environment import CONFIG_CHANGED_REASON, CONFIG_OK, BuildEnvironment
  from sphinx.environment.adapters.asset import ImageAdapter
  from sphinx.errors import SphinxError
  from sphinx.locale import __
  from sphinx.util import UnicodeDecodeErrorHandler, get_filetype, import_object, logging, rst
  from sphinx.util.build_phase import BuildPhase
  from sphinx.util.console import bold
  from sphinx.util.display import progress_message, status_iterator
  from sphinx.util.docutils import sphinx_domains
  from sphinx.util.i18n import CatalogInfo, CatalogRepository, docname_to_domain
  from sphinx.util.osutil import SEP, ensuredir, relative_uri, relpath
  from sphinx.util.parallel import ParallelTasks, SerialTasks, make_chunks, parallel_available
  from sphinx import directives
  from sphinx import roles
label_desc: Use image node_id 24 for calling the Builder obj's underlying member method code with example usage: obj.write(build_docnames, updated_docnames, method) without return types