docs: def temp_file(
          content=None,
          suffix='',
          prefix='tmp',
          parent_dir=None):
      """
      Create a temporary file and optionally populate it with content. The file
      is deleted when the context exits.
  
      The temporary file is created when entering the context manager and
      deleted when exiting it.
      >>> import temporary
      >>> with temporary.temp_file() as temp_file:
      ...     assert temp_file.exists()
      >>> assert not temp_file.exists()
  
      The user may also supply some content for the file to be populated with:
      >>> with temporary.temp_file('hello!') as temp_file:
      ...     with temp_file.open() as f:
      ...         assert f.read() == 'hello!'
  
      The temporary file can be placed in a custom directory:
      >>> with temporary.temp_dir() as temp_dir:
      ...     with temporary.temp_file(parent_dir=temp_dir) as temp_file:
      ...         assert temp_file.parent == temp_dir
  
      If, for some reason, the user wants to delete the temporary file before
      exiting the context, that's okay too:
      >>> with temporary.temp_file() as temp_file:
      ...     temp_file.unlink()
      """
      binary = isinstance(content, (bytes, bytearray))
      parent_dir = parent_dir if parent_dir is None else str(parent_dir)
      fd, abs_path = tempfile.mkstemp(suffix, prefix, parent_dir, text=False)
      path = pathlib.Path(abs_path)
      try:
          try:
              if content:
                  os.write(fd, content if binary else content.encode())
          finally:
              os.close(fd)
          yield path.resolve()
      finally:
          with temporary.util.allow_missing_file():
              path.unlink()