Icepool

Latest version: v2.0.2

Safety actively analyzes 723217 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 11 of 16

0.10.2

* Operators other than `[]` are performed element-wise on tuples.
* Rename `DicePool` to just `Pool`. Merge the old factory function into the constructor.

0.10.1

* Fix denominator_method='reduce' in die creation.
* Fix outcomes consisting of empty tuple `()`.
* `apply()` with no dice produces an empty die.

0.10.0

Retired the `EmptyDie` / `ScalarDie` / `VectorDie` distinction.

* There is now only one `Die` class; it behaves similarly to how `ScalarDie` used to.
* There is no more `ndim`.
* The `[]` operator now forwards to the outcome, acting similar to what `VectorDie.dim[]` used to do.
* Removed `PoolEval.bind_dice()`. It was cute, but I'm not convinced it was worth spending API on.

0.9.1

* This will probably be the last version with a `VectorDie` distinction.
* Dice cannot have negative weights.
* `VectorDie` cannot be nested inside tuple outcomes.

0.9.0

* Die and dict arguments to `Die()` are now expanded, including when nested.
* Add `Die.if_else()` method, which acts as a ternary conditional operator on outcomes.
* Dice are now hashable. `==` and `!=` return dice with truth values based on whether the two dice have identical outcomes and weights.
* `ndim` now uses singletons `icepool.Scalar` and `icepool.Empty`.

0.8.0

* `EvalPool.eval()` can now be provided with single rolls of a pool.
This can be a dict-like mapping individual die outcomes to counts or a sequence of individual die outcomes.
* `EvalPool.next_state()` can not expect that the outcomes it sees are consecutive,
though they are guaranteed to be seen in monotonic order.
* `FindBestRun()` no longer assumes consecutive outcomes.
* Added `DicePool.sample()`.
* Added `die.truncate()`.
* `min_outcomes`, `max_outcomes` (for pool definitions) renamed to `truncate_min`, `truncate_max`.
* Removed `die.getitem()`.
* `DicePool` is no longer iterable, since there isn't an intuitive, unambiguous way of doing so.
* `align_range()` now only operates on scalar outcomes.

Page 11 of 16

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.