# hishel

> Elegant HTTP Caching for Python

- **URL**: https://www.freshcrate.ai/projects/hishel
- **Author**: pypi
- **Category**: Frameworks
- **Latest version**: `1.2.1` (2026-04-27)
- **License**: Unknown
- **Source**: https://github.com/karpetrosyan/hishel
- **Homepage**: https://pypi.org/project/hishel/
- **Language**: Python
- **GitHub**: 379 stars, 47 forks
- **Registry**: pypi (`hishel`)
- **Tags**: `pypi`

## Description

<p align="center">
  <img alt="Hishel Logo" width="350" src="https://raw.githubusercontent.com/karpetrosyan/hishel/master/docs/static/Shelkopryad_350x250_yellow.png#gh-dark-mode-only">
</p>

<h1 align="center">Hishel</h1>

<p align="center">
  <strong>Elegant HTTP Caching for Python</strong>
</p>

<p align="center">
  <a href="https://pypi.org/project/hishel">
    <img src="https://img.shields.io/pypi/v/hishel.svg" alt="PyPI version">
  </a>
  <a href="https://pypi.org/project/hishel">
    <img src="https://img.shields.io/pypi/pyversions/hishel.svg" alt="Python versions">
  </a>
  <a href="https://github.com/karpetrosyan/hishel/blob/master/LICENSE">
    <img src="https://img.shields.io/pypi/l/hishel" alt="License">
  </a>
  <a href="https://coveralls.io/github/karpetrosyan/hishel">
    <img src="https://img.shields.io/coverallsCoverage/github/karpetrosyan/hishel" alt="Coverage">
  </a>
  <a href="https://static.pepy.tech/badge/hishel/month">
    <img src="https://static.pepy.tech/badge/hishel/month" alt="Downloads">
  </a>
</p>

---

**Hishel** (հիշել, *to remember* in Armenian) is a modern HTTP caching library for Python that implements [RFC 9111](https://www.rfc-editor.org/rfc/rfc9111.html) specifications. It provides seamless caching integration for popular HTTP clients with minimal code changes.

## ✨ Features

- 🎯 **RFC 9111 Compliant** - Fully compliant with the latest HTTP caching specification
- 🔌 **Easy Integration** - Drop-in support for HTTPX, Requests, ASGI, FastAPI, and BlackSheep
- 💾 **Flexible Storage** - SQLite backend with more coming soon
- ⚡ **High Performance** - Efficient caching with minimal overhead
- 🔄 **Async & Sync** - Full support for both synchronous and asynchronous workflows
- 🎨 **Type Safe** - Fully typed with comprehensive type hints
- 🧪 **Well Tested** - Extensive test coverage and battle-tested
- 🎛️ **Configurable** - Fine-grained control over caching behavior with flexible policies
- 💨 **Memory Efficient** - Streaming support prevents loading large payloads into memory
- 🌐 **Universal** - Works with any ASGI application (Starlette, Litestar, BlackSheep, etc.)
- 🎯 **GraphQL Support** - Cache GraphQL queries with body-sensitive content caching

Documentation is available at: [https://hishel.com](https://hishel.com)## What's Changed in 1.1.10
### ⚙️ Miscellaneous Tasks

* fix non-existing rfc reference by @karpetrosyan
### 🐛 Bug Fixes

* don't discard no-cache and vary-mismatched entries by @karpetrosyan
* fix: properly save per-request hishel_ttl setting by @LiteralGenie in [#445](https://github.com/karpetrosyan/hishel/pull/445)
### 📚 Documentation

* document storages by @karpetrosyan
* move docs to vitepress by @karpetrosyan

### Contributors
* @karpetrosyan
* @LiteralGenie

**Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.9...1.1.10

## What's Changed in 1.1.9
### ⚙️ Miscellaneous Tasks

* chore: drop python 3.9 support by @CharString in [#418](https://github.com/karpetrosyan/hishel/pull/418)
### 📦 Dependencies

* chore(deps-dev): bump the python-packages group across 1 directory with 5 updates by @dependabot[bot] in [#440](https://github.com/karpetrosyan/hishel/pull/440)

### Contributors
* @karpetrosyan
* @CharString
* @dependabot[bot]

**Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.8...1.1.9

## What's Changed in 1.1.8
### ⚙️ Miscellaneous Tasks

* chore(ci): remove redis action by @karpetrosyan in [#428](https://github.com/karpetrosyan/hishel/pull/428)
### 🐛 Bug Fixes

* fix: prevent race conditions by @karpetrosyan in [#436](https://github.com/karpetrosyan/hishel/pull/436)

### Contributors
* @karpetrosyan

**Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.7...1.1.8

## What's Changed in 1.1.7
### ♻️ Refactoring

* refactor(storage): create sqlite database path only when creating connections by @jeefberkey in [#426](https://github.com/karpetrosyan/hishel/pull/426)
### ⚙️ Miscellaneous Tasks

* chore(deps-dev): bump the python-packages group with 5 updates by @dependabot[bot] in [#424](https://github.com/karpetrosyan/hishel/pull/424)
### 🐛 Bug Fixes

* fix(cache): Lambda parameter name clashes the loop variable being closed over by @dump247 in [#427](https://github.com/karpetrosyan/hishel/pull/427)
### 📚 Documentation

* add release process guidelines for maintainers by @karpetrosyan
### 🚀 Features

* Feature/accept pathlib path in SqliteStorage by @daudef in [#419](https://github.com/karpetrosyan/hishel/pull/419)

### Contributors
* @karpetrosyan
* @daudef
* @dependabot[bot]
* @jeefberkey
* @dump247

**Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.6...1.1.7

## What's Changed in 1.1.6
### 📚 Documentation

* remove some stale httpx configs by @karpetrosyan
### 🚀 Features

* Add support for request no-cache directive by @karpetrosyan in [#416](https://github.com/karpetrosyan/hishel/pull/416)

### Contributors
* @karpetrosyan

**Full Changelog**: https://github.

## Recent releases

| Version | Date | Urgency | Changes |
| --- | --- | --- | --- |
| `1.2.1` | 2026-04-27 | High | ## What's Changed in 1.2.1 ### ⚙️ Miscellaneous Tasks  * explicitly set build backend by @karpetrosyan  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.2.0...1.2.1 |
| `1.2.0` | 2026-04-26 | High | ## What's Changed in 1.2.0 ### ♻️ Refactoring  * improve sqlite concurrency by @karpetrosyan ### ⚙️ Miscellaneous Tasks  * simplify pyproject.toml, use src layout by @karpetrosyan ### 📚 Documentation  * mention support for Zapros HTTP Client by @karpetrosyan ### 🚀 Features  * feat: add support for redis by @karpetrosyan in [#455](https://github.com/karpetrosyan/hishel/pull/455)  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.10...1.2.0 |
| `1.1.10` | 2026-04-21 | Low | Imported from PyPI (1.1.10) |
| `1.1.9` | 2026-02-05 | Low | ## What's Changed in 1.1.9 ### ⚙️ Miscellaneous Tasks  * chore: drop python 3.9 support by @CharString in [#418](https://github.com/karpetrosyan/hishel/pull/418) ### 📦 Dependencies  * chore(deps-dev): bump the python-packages group across 1 directory with 5 updates by @dependabot[bot] in [#440](https://github.com/karpetrosyan/hishel/pull/440)  ### Contributors * @karpetrosyan * @CharString * @dependabot[bot]  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.8...1.1.9 |
| `1.1.8` | 2026-01-11 | Low | ## What's Changed in 1.1.8 ### ⚙️ Miscellaneous Tasks  * chore(ci): remove redis action by @karpetrosyan in [#428](https://github.com/karpetrosyan/hishel/pull/428) ### 🐛 Bug Fixes  * fix: prevent race conditions by @karpetrosyan in [#436](https://github.com/karpetrosyan/hishel/pull/436)  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.7...1.1.8 |
| `1.1.7` | 2025-12-03 | Low | ## What's Changed in 1.1.7 ### ♻️ Refactoring  * refactor(storage): create sqlite database path only when creating connections by @jeefberkey in [#426](https://github.com/karpetrosyan/hishel/pull/426) ### ⚙️ Miscellaneous Tasks  * chore(deps-dev): bump the python-packages group with 5 updates by @dependabot[bot] in [#424](https://github.com/karpetrosyan/hishel/pull/424) ### 🐛 Bug Fixes  * fix(cache): Lambda parameter name clashes the loop variable being closed over by @dump247 in [#427](https:/ |
| `1.1.6` | 2025-11-17 | Low | ## What's Changed in 1.1.6 ### 📚 Documentation  * remove some stale httpx configs by @karpetrosyan ### 🚀 Features  * Add support for request no-cache directive by @karpetrosyan in [#416](https://github.com/karpetrosyan/hishel/pull/416)  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.5...1.1.6 |
| `1.1.5` | 2025-11-08 | Low | ## What's Changed in 1.1.5 ### 🐛 Bug Fixes  * filter out soft-deleted, expired and incomplete entries in `get_entries` by @karpetrosyan  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.4...1.1.5 |
| `1.1.4` | 2025-11-06 | Low | ## What's Changed in 1.1.4 ### 🐛 Bug Fixes  * don't raise an error on consumed streams that were read into memory by @karpetrosyan * close sqlite connections properly by @karpetrosyan  ### Contributors * @karpetrosyan  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.3...1.1.4 |
| `1.1.3` | 2025-11-06 | Low | ## What's Changed in 1.1.3 ### ⚙️ Miscellaneous Tasks  * improve git-cliff docs by @karpetrosyan ### 🐛 Bug Fixes  * fix: add BaseFilter to __all__ exports by @martinblech in [#408](https://github.com/karpetrosyan/hishel/pull/408) * fix: set `after_revalidation=True` for `NeedsToBeUpdated` -> `FromCache` transition by @jlopex in [#402](https://github.com/karpetrosyan/hishel/pull/402)  **Full Changelog**: https://github.com/karpetrosyan/hishel/compare/1.1.2...1.1.3 |

## Citation

- HTML: https://www.freshcrate.ai/projects/hishel
- Markdown: https://www.freshcrate.ai/projects/hishel.md
- Dependencies JSON: https://www.freshcrate.ai/api/projects/hishel/deps

_Generated by freshcrate.ai. Indexes pypi releases for AI-agent ecosystem packages._
