Skip to content

Update fakeredis to 2.37.1 - #3018

Open
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-fakeredis-2.33.0-to-2.37.1
Open

Update fakeredis to 2.37.1#3018
pyup-bot wants to merge 1 commit into
masterfrom
pyup-update-fakeredis-2.33.0-to-2.37.1

Conversation

@pyup-bot

Copy link
Copy Markdown
Collaborator

This PR updates fakeredis from 2.33.0 to 2.37.1.

Changelog

2.37.1

🐛 Bug Fixes

- fix: honor the `FILTER-EF` (max filtering effort) option in `VSIM` — the value was previously parsed but ignored, so a
low `FILTER-EF` could return filter matches that real Redis skips
- fix: `ZPOPMIN`/`ZPOPMAX` in RESP3 now return a flat `[member, score]` pair when no count is given (an array of pairs is
only returned when an explicit count is passed), matching real Redis
- fix: `ZPOPMIN`/`ZPOPMAX` now reject a negative count with `value is out of range, must be positive`
- fix: `ZPOPMIN`/`ZPOPMAX`/`BZPOPMIN`/`BZPOPMAX`/`ZMPOP`/`BZMPOP` now delete the sorted set key once its last member is
popped
- fix: `LTRIM` now signals the key as modified even when the trim is a no-op, so a `WATCH` on that key correctly aborts
the following transaction, matching real Redis
- fix: align stream group errors with Redis — `XPENDING` on a missing key or unknown group now raises `NOGROUP` instead
of returning `0`/an empty array, and neither `XPENDING` nor `XINFO GROUPS` creates the key as a side effect (532)

🧰 Maintenance

- perf: `VADD`/`VSIM` keep a row-oriented matrix of the vector set resident and reuse it, instead of restacking every
stored vector on each call; re-adding an existing member now replaces its row rather than leaving a stale one
- perf: cache compiled `JSONPath` objects in the JSON stack mixin (538)
- build: drop Python 3.9, target Python 3.10+ (534)
- Update to redis-py 8.1
- refactor: modernize typing for Ruff 0.16 defaults (533)
- test: refactor hypothesis tests

2.37.0

🚀 Features

- feat: implement connection commands `RESET`, `CLIENT KILL`, `CLIENT UNBLOCK`, `CLIENT REPLY`, `CLIENT PAUSE`,
`CLIENT UNPAUSE`, `CLIENT NO-EVICT` and `CLIENT NO-TOUCH`. `CLIENT PAUSE` validates and records its arguments but does
not actually suspend command processing; the client-side caching commands (`CLIENT TRACKING`, `CLIENT TRACKINGINFO`,
`CLIENT CACHING`, `CLIENT GETREDIR`) remain unsupported
- feat: support `INCREX` command (redis 8.8) (520)
- feat: support `FPHA` argument in `JSON.SET` to force homogeneous numeric arrays to a floating-point type (redis 8.8) (
523)
- feat: support hash field subkey notifications (redis 8.8) (525)
- feat: support multiple aggregators in `TS.RANGE`/`TS.REVRANGE`/`TS.MRANGE`/`TS.MREVRANGE` (redis 8.8) (524)
- feat: support `COUNT` aggregator in `ZUNION`/`ZINTER`/`ZUNIONSTORE`/`ZINTERSTORE` (redis 8.8) (522)
- feat: support `CLAIM min-idle-time` option in `XREADGROUP` (redis 8.4) (527)
- feat(bitfield): support ``-prefixed offsets in `BITFIELD`

🐛 Bug Fixes

- fix: align `XNACK` with redis 8.8 semantics (521)
- fix: `HEXPIRE`/`HPEXPIRE` now raise an error on negative expiration time
- fix: `GEOADD` now rejects longitude/latitude pairs outside the valid range
- fix: validate command option values that real Redis rejects instead of silently acting on them — negative
expirations in `HGETEX`/`HSETEX`, non-positive `COUNT`/`numkeys` in `LMPOP`/`BLMPOP`/`ZMPOP`/`BZMPOP` and
`SINTERCARD`, negative `LPOS` `COUNT`/`MAXLEN`, out-of-range `COPY` `DB` index, negative blocking timeouts,
non-positive `SCAN`/`SSCAN`/`HSCAN`/`ZSCAN` `COUNT`, and invalid `BITCOUNT`/`BITPOS` range arguments (528)

🧰 Maintenance

- Update to redis-py 8.0.1
- Update Valkey version used in CI to 8.1.8
- refactor: reorganize and clean up command classes in `_commands.py` and related mixins
- test: skip subkey notification tests on redis-py below 5 (526)
- doc: fix link to implement command guide (519)

2.36.2

🐛 Bug Fixes

- fix: replace async `can_read` busy-poll with event-based wakeup (506)
- fix: enforce `GT`/`LT` conditions in `ZADD` with `INCR` (507)
- fix: reject negative `LIMIT` in `SINTERCARD` and `ZINTERCARD` (508)
- fix: EXPIRE GT/LT mishandle keys with no existing TTL (509)
- fix: restore missing `addr`/`laddr`/`fd` fields in `CLIENT LIST`/`CLIENT INFO` (512)
- fix: SORT/SORT_RO BY <constant> must keep natural order (510)

2.36.1

🐛 Bug Fixes

- fix: `TypeError` on import in Python 3.8 due to `list[Any]` annotation in `sort` command (490)
- fix: Using path in connection
- fix(async): `_decode` recurses into `dict` so RESP3 `HGETALL` responses are decoded (492)
- fix: `Database` now uses stable identity-based `__hash__`/`__eq__` (previously returned an unstable hash)

🧰 Maintenance

- Restored support for redis-py 4.6 493
- Update the default server version to 8.
- refactor: deduplicate sync and async client construction into a shared `build_client_kwds` helper
- chore: remove dead code in connection/socket setup

2.36.0

🚀 Features

- Implement keyspace notifications alexbthundiyil-spec (463)
- feat(lua): add server global alias for Valkey przemub (480)
- feat(streams): implement `XACKDEL`, `XDELEX`, `XIDMPRECORD`, `XNACK` commands (484)
- feat: add `VISMEMBER` command to check element existence in vector set
- feat: implement array commands (`ARSET`, `ARGET`, `ARLEN`, `ARGETRANGE`, `ARINSERT`, `ARDEL`, etc.) for Redis 8.8 (
487)

🐛 Bug Fixes

- fix: XREADGROUP with non-'>' ID returns consumer PEL tomtom103 470
- fix: similarity calculation in vector set `VSIM` command
- fix: `CF.RESERVE` and `CF.SCANDUMP` should not create keys if they do not exist
- fix: various issues in vector set commands `VSET`
- fix(tcp_server): clean up handler threads on shutdown (479)

🧰 Maintenance

- Improved `CLIENT INFO` and `CLIENT GETNAME` commands
- Better TDigest implementation
- Update Redis 8 image used in CI to 8.8
- Update to redis-py 8.0.0
- perf(hash): make HSET O(1) by using len(h) instead of len(h.keys()) invoker-bot (473)
- refactor: introduce `CommandsMixinBase` to centralise shared mixin attributes (482)
- refactor: VectorSet improvements (476)
- refactor: async Redis tests to use `AsyncClientType` for improved type safety

2.35.1

🐛 Bug Fixes

- fix: Breaking change in 2.35.0: FakeConnection renamed without backward-compatible alias 468

2.35.0

🚀 Features

- Support for idempotent message processing introduced in Redis 8.6 461
- Support for vector set commands `VADD`, `VCARD`, `VDIM`, `VEMB`, `VGETATTR`, `VINFO`, `VLINKS`, `VRANDMEMBER`,
`VRANGE`, `VREM`, `VSETATTR`, `VSIM` 451

🐛 Bug Fixes

- fix XREADGROUP on multiple streams only returns one message 460
- fix: XDEL sending ResponseError when stream ID is invalid 465
- Fix DeprecationWarning caused by mixing valkey and redis classes kurtmckee 462 464
- fix: bug referencing non existing variable 465

🧰 Maintenance

- Update typing-extensions version constraint to support newer versions 458
- Improved documentation with mermaidjs diagrams 467
- Move documentation dependencies to pyproject.toml

2.34.1

🐛 Bug Fixes

- Fix handling of deprecated arguments in `FakeRedis` to support redis-py 7.2.0 457
- Blocking `XREAD` with `block=0` works as expected 453

2.34.0

🚀 Features

- TcpFakeServer supports RESP3 437

🐛 Bug Fixes

- Add missing keys to `XINFO STREAM` 445
- Caching LuaRuntime to prevent memory leak in eval() chrisguidry 449 446

🧰 Maintenance

- Refactor models to use BaseModel with redis-type 454
Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant