69
69
Anything like int(None) is going to cause a loud error. """
70
70
71
71
72
- def bit_get (bint : int , index : int ) -> int :
72
+ def bit_get (bint : int , index : int ) -> int | None :
73
73
"""Get value of bit at index in bint.
74
74
75
75
>>> bit_get(15, 0)
@@ -87,7 +87,7 @@ def bit_get(bint: int, index: int) -> int:
87
87
return multibit_get (bint , index , 1 )
88
88
89
89
90
- def bit_set (bint : int , index : int , value : int = 1 ) -> int :
90
+ def bit_set (bint : int , index : int , value : int = 1 ) -> int | None :
91
91
"""Set bit at index to value 1 or 0, like set() or unset().
92
92
93
93
>>> bit_set(15, 0, 0)
@@ -106,7 +106,7 @@ def bit_set(bint: int, index: int, value: int = 1) -> int:
106
106
return multibit_set (bint , index , 1 , value )
107
107
108
108
109
- def bit_insert (bint : int , index : int , value : int = 1 ) -> int :
109
+ def bit_insert (bint : int , index : int , value : int = 1 ) -> int | None :
110
110
"""Insert bit value before index.
111
111
112
112
>>> bit_insert(15, 0, 0)
@@ -125,7 +125,7 @@ def bit_insert(bint: int, index: int, value: int = 1) -> int:
125
125
return multibit_insert (bint , index , 1 , value )
126
126
127
127
128
- def bit_remove (bint : int , index : int ) -> int :
128
+ def bit_remove (bint : int , index : int ) -> int | None :
129
129
"""Remove the bit at index from bint.
130
130
131
131
>>> bit_remove(15, 0)
@@ -141,7 +141,7 @@ def bit_remove(bint: int, index: int) -> int:
141
141
return multibit_remove (bint , index , 1 )
142
142
143
143
144
- def multibit_get (bint : int , index : int , bit_len : int ) -> int :
144
+ def multibit_get (bint : int , index : int , bit_len : int ) -> int | None :
145
145
"""Get bit_len number of bits starting from index.
146
146
819 = 1100110011.
147
147
@@ -161,7 +161,7 @@ def multibit_get(bint: int, index: int, bit_len: int) -> int:
161
161
return (bint >> index ) & ((1 << bit_len ) - 1 )
162
162
163
163
164
- def multibit_set (bint : int , index : int , bit_len : int , value : int ) -> int :
164
+ def multibit_set (bint : int , index : int , bit_len : int , value : int ) -> int | None :
165
165
"""Overlay bint at index with value for bit_len bits.
166
166
167
167
>>> multibit_set(0, 1, 1, 0)
@@ -186,7 +186,7 @@ def multibit_set(bint: int, index: int, bit_len: int, value: int) -> int:
186
186
)
187
187
188
188
189
- def multibit_insert (bint : int , index : int , bit_len : int , value : int ) -> int :
189
+ def multibit_insert (bint : int , index : int , bit_len : int , value : int ) -> int | None :
190
190
"""Insert before index-th slot
191
191
192
192
>>> multibit_insert(0, 1, 1, 1)
@@ -209,7 +209,7 @@ def multibit_insert(bint: int, index: int, bit_len: int, value: int) -> int:
209
209
return ((((bint >> index ) << bit_len ) | value ) << index ) | bint & ((1 << index ) - 1 )
210
210
211
211
212
- def multibit_remove (bint : int , index : int , bit_len : int ) -> int :
212
+ def multibit_remove (bint : int , index : int , bit_len : int ) -> int | None :
213
213
"""Remove bits in bint from index to index+bit_len.
214
214
215
215
>>> multibit_remove(3, 1, 1)
@@ -231,6 +231,7 @@ def multibit_remove(bint: int, index: int, bit_len: int) -> int:
231
231
232
232
233
233
if __name__ == "__main__" :
234
+
234
235
import doctest
235
236
236
237
doctest .testmod ()
0 commit comments