docs: def _write_stream(self, src, dst, size=None, size_limit=None,
                        chunk_size=None, progress_callback=None):
          """Get helper to save stream from src to dest + compute checksum.
  
          :param src: Source stream.
          :param dst: Destination stream.
          :param size: If provided, this exact amount of bytes will be
              written to the destination file.
          :param size_limit: ``FileSizeLimit`` instance to limit number of bytes
              to write.
          """
          chunk_size = chunk_size_or_default(chunk_size)
  
          algo, m = self._init_hash()
          bytes_written = 0
  
          while 1:
              # Check that size limits aren't bypassed
              check_sizelimit(size_limit, bytes_written, size)
  
              chunk = src.read(chunk_size)
  
              if not chunk:
                  if progress_callback:
                      progress_callback(bytes_written, bytes_written)
                  break
  
              dst.write(chunk)
  
              bytes_written += len(chunk)
  
              if m:
                  m.update(chunk)
  
              if progress_callback:
                  progress_callback(None, bytes_written)
  
          check_size(bytes_written, size)
  
          return bytes_written, '{0}:{1}'.format(
              algo, m.hexdigest()) if m else None