Fix type hints, validation errors

Add type hints and fix leading spaces issues.
This commit is contained in:
Bill Breitmayer 2024-05-29 11:31:58 -04:00
parent a471d00d75
commit 93610d9744

View File

@ -14,9 +14,9 @@ All parameters must be must be int >= 0, referred to as a 'bit integer'.
index:int index:int
The offset into the bit position from right, The offset into the bit position from right,
0b010111 -> list [1,1,1,0,1,0]. big-endian -> little-endian 0b010111 -> list [1,1,1,0,1,0]. big-endian -> little-endian
For inserts, index is the position to the right of index, For inserts, index is the position to the right of index,
index 0 -> right of rightmost bit. index 0 -> right of rightmost bit.
For gets, sets and removes, it is the position of the bit itself. For gets, sets and removes, it is the position of the bit itself.
value:int value:int
@ -24,7 +24,7 @@ All parameters must be must be int >= 0, referred to as a 'bit integer'.
bitlen:int bitlen:int
The effective mask length, spec. leading zeros The effective mask length, spec. leading zeros
( bitlen 4 value 1 -> 0001 ) ( bitlen 4 value 1 -> 0001 )
The bitwise expressions may look convoluted, but basically, there are The bitwise expressions may look convoluted, but basically, there are
just three parts: left-hand side, value, right-hand side. just three parts: left-hand side, value, right-hand side.
@ -68,7 +68,7 @@ bit_length = int.bit_length
Anything like int(None) is going to cause a loud error. """ Anything like int(None) is going to cause a loud error. """
def bit_get(bint: int, index: int): def bit_get(bint: int, index: int) -> int:
"""Get value of bit at index in bint. """Get value of bit at index in bint.
>>> bit_get(15, 0) >>> bit_get(15, 0)
@ -86,7 +86,7 @@ def bit_get(bint: int, index: int):
return multibit_get(bint, index, 1) return multibit_get(bint, index, 1)
def bit_set(bint: int, index: int, value: int = 1): def bit_set(bint: int, index: int, value: int = 1) -> int:
"""Set bit at index to value 1 or 0, like set() or unset(). """Set bit at index to value 1 or 0, like set() or unset().
>>> bit_set(15, 0, 0) >>> bit_set(15, 0, 0)
@ -105,7 +105,7 @@ def bit_set(bint: int, index: int, value: int = 1):
return multibit_set(bint, index, 1, value) return multibit_set(bint, index, 1, value)
def bit_insert(bint: int, index: int, value: int = 1): def bit_insert(bint: int, index: int, value: int = 1) -> int:
"""Insert bit value before index. """Insert bit value before index.
>>> bit_insert(15, 0, 0) >>> bit_insert(15, 0, 0)
@ -223,13 +223,14 @@ def multibit_remove(bint: int, index: int, bit_len: int) -> int:
2 2
""" """
if bint < 0 or index < 0: if bint < 0 or index < 0 or bit_len < 0:
return None # error return None # error
return ((bint >> index + bit_len) << index) | bint & ((1 << index) - 1) return ((bint >> index + bit_len) << index) | bint & ((1 << index) - 1)
if __name__ == "__main__": if __name__ == "__main__":
import doctest import doctest
doctest.testmod() doctest.testmod()