Skip to main content

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

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.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Supported by

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