4.14.0 — 2026-07-13¶
← 4.15.0 | 4.13.2 → | ↑ 4.x series
Added¶
Adapters - Elasticsearch¶
- Document Scanning - Added
scan()toElasticsearchPortandasync scan()toAsyncElasticsearchPort, delegating toelasticsearch.helpers.scanandelasticsearch.helpers.async_scanfor scroll-based iteration over large result sets without manual scroll lifecycle management. - Bulk Action Types - Added
ElasticsearchBulkActionTypeandElasticsearchBulkResultTypealiases for helper-format bulk actions and(success_count, error_count_or_error_list)return tuples.
Adapters - Redis¶
- INCREX Window Counter - Added
incrextoRedisPortandAsyncRedisPort(and adapters/mocks), wrapping the Redis 8.8INCREXcommand for atomic counter increments with optional bounds (lbound,ubound,saturate), expiration (ex,px,exat,pxat,persist,enx), and float or integer step sizes (byfloat,byint). - Array Data Structure - Added Redis 8.8 array commands to sync and async ports and adapters.
arsetto write contiguous values at a starting index.argetto read a single index.arlento return the array length.ardelto delete one or more indices.arringto append into a fixed-size ring buffer.
- Sorted Set Aggregators - Added
zunionandzinterto sync and async ports and adapters, including support for the Redis 8.8COUNTaggregator that scores members by the number of input sets containing them (or weighted sum when per-set weights are provided). - Runtime Configuration - Added
config_setandconfig_getto sync and async ports and adapters for reading and updating Redis server parameters (for examplenotify-keyspace-eventsfor keyspace and subkey notifications).
Helpers - FastAPI Rate Limit¶
- Atomic Rate Limiting -
FastAPIRestRateLimitHandlernow uses RedisINCREXwithsaturate=True,enx=True, and millisecond expiry instead of separateGET/SET/INCRBY/PTTLcalls, eliminating check-then-act races under concurrent requests.
Changed¶
Adapters - Elasticsearch¶
- Bulk Helper Integration -
bulk()andasync bulk()now delegate toelasticsearch.helpers.bulkandelasticsearch.helpers.async_bulkinstead of the low-level clientbulkAPI.actionsaccepts anyIterable[ElasticsearchBulkActionType](generators supported) instead of requiring a materializedlist[dict[str, Any]].- Added
stats_onlyparameter to return only success and error counts. - Return type changed from
ElasticsearchResponseTypetoElasticsearchBulkResultType— a(success_count, error_count_or_error_list)tuple. Update callers that previously parsed the raw client response. - Failures raise
BulkIndexErrorwhenraise_on_erroris true (default helper behaviour).
Tests¶
Tests - Elasticsearch Adapter¶
- Bulk and Scan Scenarios - Added sync and async BDD scenarios for helper-format bulk operations (index, update, delete) and document scanning.
- Step Refactor - Updated Elasticsearch step definitions to assert helper bulk result tuples and scan hit counts.
Tests - Redis Adapter¶
- Redis 8.8 Feature Coverage - Added BDD scenarios for array operations (
arset,arget,arlen,ardel,arring),INCREXrate-limit semantics,ZUNION/ZINTERwithCOUNTaggregator, and hash subkey notifications viaconfig_set+PSUBSCRIBE. - Sync and Async Parity - New scenarios cover mock, container, and cluster adapter types for sync paths; container and cluster for async paths where applicable.
- Test Image - Bumped Redis test container image to
redis:8.8.0-alpinein.env.testto exercise Redis 8.8 commands.
Tests - FastAPI Rate Limit¶
- Rate Limit Feature Suite - Added
features/fastapi_rate_limit.featurewith scenarios for within-limit success, 429 rejection withRetry-After, window expiry reset, and per-client isolation usingX-Real-IP.
Documentation¶
Tutorials - Elasticsearch¶
- Bulk and Scan Guides - Expanded the Elasticsearch adapter tutorial with helper-format bulk action generators,
stats_onlyusage,scan()/async scan()examples,BulkIndexErrortroubleshooting, and performance guidance for batch writes and large result iteration.
Tutorials - Redis¶
- INCREX Window Counter - Added sync and async
increx()examples, parameter reference, Redis 8.8 requirement, and cross-link to the FastAPI rate limiting guide.
Tutorials - Interceptors¶
- FastAPI Rate Limiting - Added a
FastAPIRestRateLimitHandlerdependency guide covering installation,Dependsusage,INCREX-backed atomic limiting, client identification headers, and per-query-parameter buckets.
Dependencies¶
- Python Packages - Bumped anyio
4.14.1→4.14.2. - Dev Tools - Updated ty
0.0.58→0.0.59and types-boto3 stubs7.0.0.20260518→7.0.0.20260713.