Cache-aware requests session with r/w/rw disk modes and condition validation
Project description
SmartRequests
A lightweight wrapper around requests.Session that adds transparent disk caching with simple r / w / rw mode control and response condition validation.
Install
pip install smart_session
Standard vs Smart
Standard requests — fetches every time:
import requests
session = requests.Session()
resp = session.get("https://example.com/data.json")
print(resp.text) # hits network every single run
SmartRequests — fetches once, reads from disk after:
import requests
from SmartRequests import smart_session
session = smart_session(requests.Session())
resp = session.get(
"https://example.com/data.json",
mode="rw",
filepath="/cache/data.json",
)
print(resp.text) # network on first run, disk on every run after
That's the only change. Everything else (headers, cookies, params, data, json) works exactly as before.
Modes
| Mode | Behavior |
|---|---|
r |
Read from cache only — raises error if file missing |
w |
Always fetch from network, write result to disk |
rw |
Return cache if exists, otherwise fetch and store |
rb / wb / rwb |
Same as above but read/write raw bytes (images, PDFs) |
Condition Validation
Conditions are lambdas evaluated against the response before writing to disk. If any condition fails, the file is never written and a ValueError is raised — so you never cache a bad response.
Without SmartRequests — bad response silently saved:
resp = session.post(url, data=payload)
with open("result.html", "w") as f:
f.write(resp.text) # saves error page, captcha page, anything
With SmartRequests — only valid responses are cached:
resp = session.post(
url,
data=payload,
mode="w",
filepath="/cache/result.html",
conditions=[
lambda r: r.status_code == 200,
lambda r: len(r.content) > 500,
lambda r: "error" not in r.text,
lambda r: "captcha" not in r.text.lower(),
],
)
Full Parameter Reference
| Parameter | Type | Description |
|---|---|---|
mode |
str |
One of r, w, rw, rb, wb, rwb |
filepath |
str |
Absolute path to cache file — required when mode is set |
conditions |
list[callable] |
Lambdas evaluated against response before writing — raises ValueError on first failure |
Contact Developer
Dharmik Vadher — dharmik.vadher@xbyte.io
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file smart_session-0.32-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: smart_session-0.32-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 88.6 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0319e1ac26681aba168e0a5896a880173ca91e712d8a8308968919969568096b
|
|
| MD5 |
7bc05de25256b80f5e69504cf0052837
|
|
| BLAKE2b-256 |
dc50254d9350fef9eb76c46cf293366e24ee26941960bc9cecb25881c487b31d
|