SYMBOL INDEX (48 symbols across 5 files) FILE: pyshamir/_utils.py function add (line 7) | def add(a: int, b: int) -> int: function inverse (line 15) | def inverse(a: int) -> int: function mul (line 29) | def mul(a: int, b: int) -> int: function div (line 45) | def div(a: int, b: int) -> int: class Polynomial (line 59) | class Polynomial: method __init__ (line 62) | def __init__(self, degree: int) -> None: method evaluate (line 65) | def evaluate(self, x: int) -> int: function make_polynomial (line 79) | def make_polynomial(intercept: int, degree: int) -> Polynomial: function interpolate_polynomial (line 97) | def interpolate_polynomial(x_samples: bytearray, y_samples: bytearray, x... function generate_x_coordinates (line 114) | def generate_x_coordinates(n: int) -> list[int]: FILE: pyshamir/shamir.py function combine (line 6) | def combine(parts: list[bytearray]) -> bytearray: function split (line 59) | def split(secret: bytes, parts: int, threshold: int) -> list[bytearray]: FILE: tests/test_shamir.py function test_split_returns_correct_part_count_and_length (line 14) | def test_split_returns_correct_part_count_and_length(): function test_split_produces_distinct_parts (line 21) | def test_split_produces_distinct_parts(): function test_split_invalid_arguments (line 35) | def test_split_invalid_arguments(parts, threshold, message): function test_split_invalid_secret (line 41) | def test_split_invalid_secret(secret): function test_combine_recovers_secret_from_any_threshold_subset (line 51) | def test_combine_recovers_secret_from_any_threshold_subset(indices): function test_combine_with_too_few_parts (line 58) | def test_combine_with_too_few_parts(parts): function test_combine_with_mismatched_part_lengths (line 63) | def test_combine_with_mismatched_part_lengths(): function test_combine_with_too_short_parts (line 68) | def test_combine_with_too_short_parts(): function test_combine_with_duplicate_samples (line 73) | def test_combine_with_duplicate_samples(): FILE: tests/test_utils.py function test_add_is_xor (line 30) | def test_add_is_xor(a, b): function test_add_zero_is_identity (line 34) | def test_add_zero_is_identity(): function test_add_self_is_zero (line 40) | def test_add_self_is_zero(): function test_mul_zero_annihilates (line 48) | def test_mul_zero_annihilates(): function test_mul_one_is_identity (line 54) | def test_mul_one_is_identity(): function test_mul_known_vectors (line 73) | def test_mul_known_vectors(a, b, expected): function test_mul_is_commutative (line 77) | def test_mul_is_commutative(): function test_inverse_times_self_is_one (line 86) | def test_inverse_times_self_is_one(): function test_inverse_of_zero_is_zero (line 91) | def test_inverse_of_zero_is_zero(): function test_div_by_zero_raises (line 100) | def test_div_by_zero_raises(): function test_div_zero_numerator_returns_zero (line 105) | def test_div_zero_numerator_returns_zero(): function test_div_inverts_mul (line 110) | def test_div_inverts_mul(): function test_polynomial_evaluate_at_zero_returns_intercept (line 119) | def test_polynomial_evaluate_at_zero_returns_intercept(): function test_polynomial_evaluate_matches_manual_horner (line 129) | def test_polynomial_evaluate_matches_manual_horner(x): function test_make_polynomial_sets_intercept_and_size (line 148) | def test_make_polynomial_sets_intercept_and_size(): function test_interpolate_recovers_intercept (line 158) | def test_interpolate_recovers_intercept(intercept): function test_generate_x_coordinates_returns_permutation (line 169) | def test_generate_x_coordinates_returns_permutation(): function test_generate_x_coordinates_is_shuffled (line 176) | def test_generate_x_coordinates_is_shuffled(): FILE: tests/test_utils_properties.py function test_add_is_commutative (line 33) | def test_add_is_commutative(a: int, b: int) -> None: function test_add_is_associative (line 38) | def test_add_is_associative(a: int, b: int, c: int) -> None: function test_add_zero_is_identity (line 43) | def test_add_zero_is_identity(a: int) -> None: function test_mul_is_commutative (line 51) | def test_mul_is_commutative(a: int, b: int) -> None: function test_mul_distributes_over_add (line 56) | def test_mul_distributes_over_add(a: int, b: int, c: int) -> None: function test_mul_one_is_identity (line 61) | def test_mul_one_is_identity(a: int) -> None: function test_inverse_is_multiplicative_inverse (line 69) | def test_inverse_is_multiplicative_inverse(a: int) -> None: function test_div_inverts_mul (line 74) | def test_div_inverts_mul(a: int, b: int) -> None: function test_interpolate_recovers_intercept (line 83) | def test_interpolate_recovers_intercept(intercept: int, degree: int) -> ...