Explicitly restrict prelude imports.
authorwhitequark <whitequark@whitequark.org>
Mon, 21 Oct 2019 10:39:21 +0000 (10:39 +0000)
committerwhitequark <whitequark@whitequark.org>
Mon, 21 Oct 2019 10:39:21 +0000 (10:39 +0000)
It turns out that while Python does not import _private identifiers
when using * imports, it does nevertheless import all submodules.

Avoid polluting the namespace in the prelude by explicitly listing
all exported identifiers.

nmigen/__init__.py
nmigen/hdl/__init__.py

index e90da10a56df62348519589b19d3e22a7824119b..bb0c2392ee167077945e0be11c49661ee75be1f3 100644 (file)
@@ -4,4 +4,18 @@ try:
 except pkg_resources.DistributionNotFound:
     pass
 
+
 from .hdl import *
+
+
+__all__ = [
+    "Shape", "unsigned", "signed",
+    "Value", "Const", "C", "Mux", "Cat", "Repl", "Array", "Signal", "ClockSignal", "ResetSignal",
+    "Module",
+    "ClockDomain",
+    "Elaboratable", "Fragment", "Instance",
+    "Memory",
+    "Record",
+    "DomainRenamer", "ResetInserter", "EnableInserter",
+    "CEInserter", # TODO(nmigen-0.2): remove this
+]
index 355b9f8747f956b1ceb263e664054e4b65b0c6e7..9b53c87dfa45044e2355b2fd30d9fbdbda02602b 100644 (file)
@@ -6,4 +6,17 @@ from .ir import Elaboratable, Fragment, Instance
 from .mem import Memory
 from .rec import Record
 from .xfrm import DomainRenamer, ResetInserter, EnableInserter, \
-                  CEInserter # deprecated
+                  CEInserter # TODO(nmigen-0.2): remove this
+
+
+__all__ = [
+    "Shape", "unsigned", "signed",
+    "Value", "Const", "C", "Mux", "Cat", "Repl", "Array", "Signal", "ClockSignal", "ResetSignal",
+    "Module",
+    "ClockDomain",
+    "Elaboratable", "Fragment", "Instance",
+    "Memory",
+    "Record",
+    "DomainRenamer", "ResetInserter", "EnableInserter",
+    "CEInserter", # TODO(nmigen-0.2): remove this
+]