|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Unreleased |
| 4 | + |
| 5 | +- Keep `UniqueList` membership in sync when replacing an indexed item, and |
| 6 | + leave membership unchanged when the index is out of range, contributed by |
| 7 | + @shkyyy18 in PR #51. |
| 8 | +- Keep `UniqueList` membership in sync for slice assignment, `extend`, `pop`, |
| 9 | + `remove`, `clear`, `+=` and `*=`, so `extend` and `+=` no longer add |
| 10 | + duplicates and removed values can be added again. |
| 11 | +- Accept one-shot iterables in `UniqueList` slice assignment, allow a slice to |
| 12 | + reuse the values it replaces, and reject a slice that repeats a value. |
| 13 | +- Make `copy.copy` and `copy.deepcopy` of a `UniqueList` return a working copy |
| 14 | + with its own membership. |
| 15 | +- Leave `UniqueList` membership unchanged when `insert` fails, and answer `in` |
| 16 | + for an unhashable value the way a `list` does. |
| 17 | +- Make `CastedDict` and `LazyCastedDict` load from `pickle` on every protocol, |
| 18 | + including pickles written by 4.0.1, and stop `copy.copy` and `copy.deepcopy` |
| 19 | + from casting the stored values a second time. |
| 20 | +- Cast what `setdefault` and `|=` store in a `CastedDict` or `LazyCastedDict`. |
| 21 | + A `None` default is stored as it is. |
| 22 | +- Cast the key of a `LazyCastedDict` once when it is stored. It was cast twice. |
| 23 | +- Let keyword arguments win over the mapping in `update` and the constructor |
| 24 | + of the casted dicts, as `dict` does. |
| 25 | +- Make `!=` the opposite of `==` for `SliceableDeque`, and compare unequal to a |
| 26 | + set when an item is unhashable. |
| 27 | +- Remove the iterable of mappings from the `DictUpdateArgs` type alias. The |
| 28 | + code never accepted that shape. |
| 29 | + |
3 | 30 | ## 4.0.1 - 2026-08-30 |
4 | 31 |
|
5 | 32 | - Allow `uv_build` 0.12.x, contributed by @felixonmars in PR #49. |
|
0 commit comments