Skip to content

Commit bf98136

Browse files
committed
Implement RFC 17: Remove log2_int.
1 parent 055d6a4 commit bf98136

File tree

3 files changed

+2
-32
lines changed

3 files changed

+2
-32
lines changed

amaranth/utils.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from ._utils import deprecated
44

55

6-
__all__ = ["ceil_log2", "exact_log2", "log2_int", "bits_for"]
6+
__all__ = ["ceil_log2", "exact_log2", "bits_for"]
77

88

99
def ceil_log2(n):
@@ -30,17 +30,6 @@ def exact_log2(n):
3030
return (n - 1).bit_length()
3131

3232

33-
@deprecated("instead of `log2_int(n, True)`, use `exact_log2(n)`; instead of `log2_int(n, False)` use `ceil_log2(n)`")
34-
def log2_int(n, need_pow2=True):
35-
n = operator.index(n)
36-
if n == 0:
37-
return 0
38-
r = (n - 1).bit_length()
39-
if need_pow2 and (1 << r) != n:
40-
raise ValueError(f"{n} is not a power of 2")
41-
return r
42-
43-
4433
def bits_for(n, require_sign_bit=False):
4534
n = operator.index(n)
4635
if n > 0:

docs/changes.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ Language changes
3636
* Removed: (deprecated in 0.5.0) :meth:`Value.implies`.
3737
* Removed: (deprecated in 0.5.0) :meth:`Const.width`, :meth:`Const.signed`, :meth:`Signal.width`, :meth:`Signal.signed`.
3838
* Removed: (deprecated in 0.5.0) upwards propagation of clock domains. (`RFC 59`_)
39+
* Removed: (deprecated in 0.5.0) :func:`amaranth.utils.log2_int`. (`RFC 17`_)
3940

4041

4142
Standard library changes

tests/test_utils.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,6 @@ def test_exact_log2(self):
3030
with self.assertRaises(TypeError):
3131
exact_log2(1.5)
3232

33-
@_ignore_deprecated
34-
def test_log2_int(self):
35-
self.assertEqual(log2_int(1), 0)
36-
self.assertEqual(log2_int(2), 1)
37-
self.assertEqual(log2_int(4), 2)
38-
self.assertEqual(log2_int(8), 3)
39-
for val in [-1, 3, 5, 6, 7, 9]:
40-
with self.assertRaises(ValueError):
41-
log2_int(val)
42-
with self.assertRaises(TypeError):
43-
log2_int(1.5)
44-
self.assertEqual(log2_int(0, False), 0)
45-
self.assertEqual(log2_int(1, False), 0)
46-
self.assertEqual(log2_int(2, False), 1)
47-
self.assertEqual(log2_int(3, False), 2)
48-
self.assertEqual(log2_int(4, False), 2)
49-
self.assertEqual(log2_int(5, False), 3)
50-
self.assertEqual(log2_int(8, False), 3)
51-
self.assertEqual(log2_int(9, False), 4)
52-
5333
def test_bits_for(self):
5434
self.assertEqual(bits_for(-4), 3)
5535
self.assertEqual(bits_for(-3), 3)

0 commit comments

Comments
 (0)