code: def build_etag(self, response, include_etag=True, **kwargs):
          
          if not include_etag:
              return
  
          if not spooky:
              # use built-in md5
              response.add_etag()
              return
  
          # use spooky
          response.headers["ETag"] = quote_etag(
              hexlify(
                  spooky.hash128(
                      response.get_data(),
                  ).to_bytes(16, "little"),
              ).decode("utf-8"),
          )
docs: Add an etag to the response body.
  
          Uses spooky where possible because it is empirically fast and well-regarded.
  
          See: http://blog.reverberate.org/2012/01/state-of-hash-functions-2012.html