code: def conditional_http_tween_factory(handler, registry):
      
      settings = registry.settings if hasattr(registry, 'settings') else {}
      if 'generate_etag_for.list' in settings:
          route_names = settings.get('generate_etag_for.list').split()
          GENERATE_ETAG_ROUTE_NAMES.update(route_names)
  
      def conditional_http_tween(request):
          response = handler(request)
  
          if request.matched_route.name in GENERATE_ETAG_ROUTE_NAMES:
  
              # If the Last-Modified header has been set, we want to enable the
              # conditional response processing.
              if response.last_modified is not None:
                  response.conditional_response = True
  
              # We want to only enable the conditional machinery if either we
              # were given an explicit ETag header by the view or we have a
              # buffered response and can generate the ETag header ourself.
              if response.etag is not None:
                  response.conditional_response = True
              elif (isinstance(response.app_iter, Sequence) and
                            len(response.app_iter) == 1) and response.body is not None:
                  response.conditional_response = True
                  response.md5_etag()
  
          return response
  
      return conditional_http_tween
docs: Tween that adds ETag headers and tells Pyramid to enable 
      conditional responses where appropriate.