1 from collections
import Iterable
6 __all__
= ["flatten", "union", "log2_int", "bits_for", "deprecated"]
11 if isinstance(e
, Iterable
):
27 def log2_int(n
, need_pow2
=True):
30 r
= (n
- 1).bit_length()
31 if need_pow2
and (1 << r
) != n
:
32 raise ValueError("{} is not a power of 2".format(n
))
36 def bits_for(n
, require_sign_bit
=False):
38 r
= log2_int(n
+ 1, False)
40 require_sign_bit
= True
41 r
= log2_int(-n
, False)
47 def deprecated(message
):
50 def wrapper(*args
, **kwargs
):
51 warnings
.warn(message
, DeprecationWarning, stacklevel
=2)
52 return f(*args
, **kwargs
)