From 9a8291a14407a9e12074e335690a0fad0c3a960a Mon Sep 17 00:00:00 2001
From: Cammille Carinan <cammille.carinan@xfel.eu>
Date: Wed, 12 May 2021 17:50:55 +0200
Subject: [PATCH] Refactor top-level module importing

---
 src/toolbox_scs/__init__.py            | 53 +++++++++-----------------
 src/toolbox_scs/constants.py           |  5 +++
 src/toolbox_scs/load.py                |  7 ++++
 src/toolbox_scs/mnemonics_machinery.py |  4 ++
 4 files changed, 34 insertions(+), 35 deletions(-)

diff --git a/src/toolbox_scs/__init__.py b/src/toolbox_scs/__init__.py
index f1acd89..a3fdeb0 100644
--- a/src/toolbox_scs/__init__.py
+++ b/src/toolbox_scs/__init__.py
@@ -1,39 +1,22 @@
-from .load import (load, concatenateRuns, get_array, run_by_path)
-from .constants import mnemonics
-from .mnemonics_machinery import mnemonics_for_run
-
-__all__ = (
-    # functions
-    "load",
-    "concatenateRuns",
-    "get_array",
-    "run_by_path",
-    "mnemonics_for_run",
-    # Classes
-    # Variables
-    "mnemonics",
-)
+from .constants import *
+from .detectors import *
 
+# Module name is the same as a child function, we use alias to avoid conflict
+import load as load_module
+from .load import *
 
-# ------------------------------------------------------------------------------
-# Clean namespace
-# clean_ns is a collection of undesired items in the namespace
-# ------------------------------------------------------------------------------
+from .misc import *
+from .mnemonics_machinery import *
+from .routines import *
 
-clean_ns = [
-    # filenames
-    'constants',
-    'mnemonics_machinery'
-    # folders
-    'misc',
-    'util',
-    'detectors',
-    'routines',
-    ]
-
-for name in dir():
-    if name in clean_ns:
-        del globals()[name]
+__all__ = (
+    # top-level modules
+    constants.__all__
+    + load_module.__all__
+    + mnemonics_machinery.__all__
 
-del globals()['clean_ns']
-del globals()['name']
+    # submodules
+    + detectors.__all__
+    + misc.__all__
+    + routines.__all__
+)
diff --git a/src/toolbox_scs/constants.py b/src/toolbox_scs/constants.py
index 28587b5..09784e7 100644
--- a/src/toolbox_scs/constants.py
+++ b/src/toolbox_scs/constants.py
@@ -1,3 +1,8 @@
+__all__ = [
+    'mnemonics'
+]
+
+
 mnemonics = {
     # Machine
     "sase3": ({'source': 'SCS_RR_UTC/MDL/BUNCH_DECODER',
diff --git a/src/toolbox_scs/load.py b/src/toolbox_scs/load.py
index 48360c7..d51b5b1 100644
--- a/src/toolbox_scs/load.py
+++ b/src/toolbox_scs/load.py
@@ -21,6 +21,13 @@ from .mnemonics_machinery import mnemonics_for_run
 from .util.exceptions import ToolBoxValueError
 import toolbox_scs.detectors as tbdet
 
+__all__ = [
+    'concatenateRuns',
+    'get_array',
+    'load',
+    'run_by_path',
+]
+
 log = logging.getLogger(__name__)
 
 
diff --git a/src/toolbox_scs/mnemonics_machinery.py b/src/toolbox_scs/mnemonics_machinery.py
index f09e14b..a3aa8f0 100644
--- a/src/toolbox_scs/mnemonics_machinery.py
+++ b/src/toolbox_scs/mnemonics_machinery.py
@@ -10,6 +10,10 @@ import logging
 
 from .constants import mnemonics as _mnemonics
 
+__all__ = [
+    'mnemonics_for_run'
+]
+
 log = logging.getLogger(__name__)
 
 
-- 
GitLab