code: def compute_etag(self) -> Optional[str]:
          
          hasher = hashlib.sha1()
          for part in self._write_buffer:
              hasher.update(part)
          return '"%s"' % hasher.hexdigest()
docs: Computes the etag header to be used for this request.
  
          By default uses a hash of the content written so far.
  
          May be overridden to provide custom etag implementations,
          or may return None to disable tornado's default etag support.