Skip to content

Commit 572a60d

Browse files
committed
hdl: add missing compatibility shims.
These were originally planned to be committed as a part of 5dd1223, but were lost during rebasing.
1 parent 1506f08 commit 572a60d

File tree

6 files changed

+148
-0
lines changed

6 files changed

+148
-0
lines changed

amaranth/hdl/ast.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _ast as __origin
5+
6+
7+
__all__ = [
8+
"Shape", "signed", "unsigned", "ShapeCastable", "ShapeLike",
9+
"Value", "Const", "C", "AnyConst", "AnySeq", "Operator", "Mux", "Part", "Slice", "Cat", "Repl",
10+
"Array", "ArrayProxy",
11+
"Signal", "ClockSignal", "ResetSignal",
12+
"ValueCastable", "ValueLike",
13+
"Initial",
14+
"Statement", "Switch",
15+
"Property", "Assign", "Assert", "Assume", "Cover",
16+
"ValueKey", "ValueDict", "ValueSet", "SignalKey", "SignalDict", "SignalSet",
17+
]
18+
19+
20+
def __getattr__(name):
21+
import warnings
22+
if name in __hdl.__dict__:
23+
if not (name.startswith("__") and name.endswith("__")):
24+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
25+
DeprecationWarning, stacklevel=2)
26+
return getattr(__origin, name)
27+
elif name in __origin.__dict__:
28+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
29+
f"should not be imported",
30+
DeprecationWarning, stacklevel=2)
31+
return getattr(__origin, name)
32+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

amaranth/hdl/cd.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _cd as __origin
5+
6+
7+
__all__ = ["ClockDomain", "DomainError"]
8+
9+
10+
def __getattr__(name):
11+
import warnings
12+
if name in __hdl.__dict__:
13+
if not (name.startswith("__") and name.endswith("__")):
14+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
15+
DeprecationWarning, stacklevel=2)
16+
return getattr(__origin, name)
17+
elif name in __origin.__dict__:
18+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
19+
f"should not be imported",
20+
DeprecationWarning, stacklevel=2)
21+
return getattr(__origin, name)
22+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

amaranth/hdl/dsl.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _dsl as __origin
5+
6+
7+
__all__ = ["SyntaxError", "SyntaxWarning", "Module"]
8+
9+
10+
def __getattr__(name):
11+
import warnings
12+
if name in __hdl.__dict__:
13+
if not (name.startswith("__") and name.endswith("__")):
14+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
15+
DeprecationWarning, stacklevel=2)
16+
return getattr(__origin, name)
17+
elif name in __origin.__dict__:
18+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
19+
f"should not be imported",
20+
DeprecationWarning, stacklevel=2)
21+
return getattr(__origin, name)
22+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

amaranth/hdl/ir.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _ir as __origin
5+
6+
7+
__all__ = ["UnusedElaboratable", "Elaboratable", "DriverConflict", "Fragment", "Instance"]
8+
9+
10+
def __getattr__(name):
11+
import warnings
12+
if name in __hdl.__dict__:
13+
if not (name.startswith("__") and name.endswith("__")):
14+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
15+
DeprecationWarning, stacklevel=2)
16+
return getattr(__origin, name)
17+
elif name in __origin.__dict__:
18+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
19+
f"should not be imported",
20+
DeprecationWarning, stacklevel=2)
21+
return getattr(__origin, name)
22+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

amaranth/hdl/mem.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _mem as __origin
5+
6+
7+
__all__ = ["Memory", "ReadPort", "WritePort", "DummyPort"]
8+
9+
10+
def __getattr__(name):
11+
import warnings
12+
if name in __hdl.__dict__:
13+
if not (name.startswith("__") and name.endswith("__")):
14+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
15+
DeprecationWarning, stacklevel=2)
16+
return getattr(__origin, name)
17+
elif name in __origin.__dict__:
18+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
19+
f"should not be imported",
20+
DeprecationWarning, stacklevel=2)
21+
return getattr(__origin, name)
22+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

amaranth/hdl/xfrm.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# TODO(amaranth-0.6): remove module
2+
3+
from .. import hdl as __hdl
4+
from . import _xfrm as __origin
5+
6+
7+
__all__ = ["ValueVisitor", "ValueTransformer",
8+
"StatementVisitor", "StatementTransformer",
9+
"FragmentTransformer",
10+
"TransformedElaboratable",
11+
"DomainCollector", "DomainRenamer", "DomainLowerer",
12+
"SwitchCleaner", "LHSGroupAnalyzer", "LHSGroupFilter",
13+
"ResetInserter", "EnableInserter"]
14+
15+
16+
def __getattr__(name):
17+
import warnings
18+
if name in __hdl.__dict__:
19+
if not (name.startswith("__") and name.endswith("__")):
20+
warnings.warn(f"instead of `{__name__}.{name}`, use `{__hdl.__name__}.{name}`",
21+
DeprecationWarning, stacklevel=2)
22+
return getattr(__origin, name)
23+
elif name in __origin.__dict__:
24+
warnings.warn(f"name `{__name__}.{name}` is a private implementation detail and "
25+
f"should not be imported",
26+
DeprecationWarning, stacklevel=2)
27+
return getattr(__origin, name)
28+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

0 commit comments

Comments
 (0)