convert a binary value to its decimal equivalent bintodecimal101 5 bintodecimal 1010 10 bintodecimal11101 29 bintodecimal0 0 bintodecimala traceback most recent call last valueerror nonbinary value was passed to the function bintodecimal traceback most recent call last valueerror empty string was passed to the function bintodecimal39 traceback most recent call last valueerror nonbinary value was passed to the function convert a binary value to its decimal equivalent bin_to_decimal 101 5 bin_to_decimal 1010 10 bin_to_decimal 11101 29 bin_to_decimal 0 0 bin_to_decimal a traceback most recent call last valueerror non binary value was passed to the function bin_to_decimal traceback most recent call last valueerror empty string was passed to the function bin_to_decimal 39 traceback most recent call last valueerror non binary value was passed to the function
def bin_to_decimal(bin_string: str) -> int:
    
    bin_string = str(bin_string).strip()
    if not bin_string:
        raise ValueError("Empty string was passed to the function")
    is_negative = bin_string[0] == "-"
    if is_negative:
        bin_string = bin_string[1:]
    if not all(char in "01" for char in bin_string):
        raise ValueError("Non-binary value was passed to the function")
    decimal_number = 0
    for char in bin_string:
        decimal_number = 2 * decimal_number + int(char)
    return -decimal_number if is_negative else decimal_number


if __name__ == "__main__":
    from doctest import testmod

    testmod()