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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bisect_list-0.1.1.tar.gz.
File metadata
- Download URL: bisect_list-0.1.1.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.11.0 Darwin/22.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
befee8700588d07bcf0b52c80d1463156209ab4755c21d5730147e6bd23f9d2d
|
|
| MD5 |
f488dc5c2680277f07762cd65272d491
|
|
| BLAKE2b-256 |
cfebf0308d7406a40369336ef76806cabf1d88be7d7ae14a0002d670449723c1
|
File details
Details for the file bisect_list-0.1.1-py3-none-any.whl.
File metadata
- Download URL: bisect_list-0.1.1-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.11.0 Darwin/22.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23eda24319d61b1cba6638b27a53fcfb9f28dd7bf4c5b85c3abcc61357353603
|
|
| MD5 |
bbe2d505060d147c6f96866d788bca7d
|
|
| BLAKE2b-256 |
a3cafc949e5dcf91113937d392cb8993fb6cf9439e450a32dfaedf7cdf757158
|