Skip to main content

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


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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bisect_list-0.1.1-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

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

Hashes for bisect_list-0.1.1.tar.gz
Algorithm Hash digest
SHA256 befee8700588d07bcf0b52c80d1463156209ab4755c21d5730147e6bd23f9d2d
MD5 f488dc5c2680277f07762cd65272d491
BLAKE2b-256 cfebf0308d7406a40369336ef76806cabf1d88be7d7ae14a0002d670449723c1

See more details on using hashes here.

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

Hashes for bisect_list-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 23eda24319d61b1cba6638b27a53fcfb9f28dd7bf4c5b85c3abcc61357353603
MD5 bbe2d505060d147c6f96866d788bca7d
BLAKE2b-256 a3cafc949e5dcf91113937d392cb8993fb6cf9439e450a32dfaedf7cdf757158

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page