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.0.tar.gz
(3.4 kB
view hashes)
Built Distribution
Close
Hashes for bisect_list-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e584d73107fc2697aeb682d72c20c9cde9ae405b3743c94615bc91141b5630e7 |
|
MD5 | d76cbe2682704ff43ad2cc9d0bbc1a42 |
|
BLAKE2b-256 | eeea3b0e78b0d6b3478dae7ee302517bf8c96dcb0895e83c64923652f5133a58 |