Find bad values in a list, logarithmically (FAST)!
Project description
bisect-list
Find bad values in a list, logarithmically (FAST!)!
install
poetry add bisect-list
usage
bisect_exception(values, func)
Logarithmically removes items that don't trigger an exception.
Useful for finding the minimal list of items that triggers an excetpion.
from unittest.mock import MagicMock
from bisect_list import bisect_exception
def error_3705_and_7399(values):
if 3705 in values and 7399 in values:
raise Exception(f"Never mix 2 with 5!")
mock_func = MagicMock(side_effect=error_3705_and_7399)
values = list(range(10_000))
result = bisect_exception(values, mock_func)
assert result == [3705, 7399]
assert mock_func.call_count == 53
bisect_same_exception(values, func)
Same as bisect_exception
, except makes sure the type of the exception is the same as when calling func(values)
before starting the bisection.
from bisect_list import bisect_same_exception
class SpecialException(Exception):
pass
def error_2_and_5(values):
if 2 in values and 5 in values:
raise SpecialException(f"Never mix 2 with 5!")
raise Exception("different exception")
values = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = bisect_same_exception(values, error_2_and_5)
assert result == [2, 5]
biest(values, test)
from bisect_list import bisect
result = bisect(
[1, 2, 3, 4, 5, 6, 7, 8, 9],
test=lambda xs: 2 in xs and 8 in xs
)
assert result == [2, 8]
license
MIT
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 Distribution
bisect_list-0.1.1.tar.gz
(3.5 kB
view hashes)
Built Distribution
Close
Hashes for bisect_list-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23eda24319d61b1cba6638b27a53fcfb9f28dd7bf4c5b85c3abcc61357353603 |
|
MD5 | bbe2d505060d147c6f96866d788bca7d |
|
BLAKE2b-256 | a3cafc949e5dcf91113937d392cb8993fb6cf9439e450a32dfaedf7cdf757158 |