tessl install tessl/pypi-hishel@0.1.0Persistent cache implementation for httpx and httpcore following RFC 9111 specification
Agent Success
Agent success rate when using this tile
74%
Improvement
Agent success rate improvement when using this tile compared to baseline
1.48x
Baseline
Agent success rate without this tile
50%
{
"context": "This evaluation criteria assesses the engineer's ability to use the hishel HTTP caching library to implement conditional request generation with If-None-Match and If-Modified-Since headers, along with proper 304 Not Modified response handling.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Storage backend usage",
"description": "Uses hishel's storage backend (AsyncSqliteStorage, SyncSqliteStorage, or BaseStorage) to persist cached responses with their validator headers (ETag, Last-Modified)",
"max_score": 15
},
{
"name": "Cache entry creation",
"description": "Properly creates cache entries using storage.create_entry() or equivalent, storing Request and Response models with validator headers preserved",
"max_score": 15
},
{
"name": "Conditional header injection",
"description": "Uses hishel's automatic conditional request generation to add If-None-Match header when ETag is present in cached response, or If-Modified-Since when Last-Modified is present",
"max_score": 25
},
{
"name": "ETag prioritization",
"description": "Demonstrates understanding that hishel prioritizes ETag over Last-Modified by using If-None-Match when both validators are available (as per RFC 9111 behavior in SpecificationPolicy)",
"max_score": 15
},
{
"name": "304 response handling",
"description": "Uses hishel's state machine or controller logic to handle 304 Not Modified responses, specifically the NeedToBeUpdated state or equivalent that merges new headers into cached response while preserving the original body",
"max_score": 20
},
{
"name": "Cache entry updates",
"description": "Uses storage.update_entry() or equivalent to update cached responses with new validator headers from 304 responses, or storage.create_entry() to replace entire entry on 200 responses",
"max_score": 10
}
]
}