From c89f4113b138362b97e55a24ebad4575f210afe1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20Gon=C3=A7alves?= Date: Mon, 9 Dec 2024 15:21:36 +0000 Subject: [PATCH] refactor(magic): create singlestoredb.magics module --- run_personal/__init__.py | 4 --- run_shared/__init__.py | 4 --- singlestoredb/magics/__init__.py | 34 +++++++++++++++++++ .../magics/run_personal.py | 30 ---------------- .../magics/run_shared.py | 29 ---------------- 5 files changed, 34 insertions(+), 67 deletions(-) delete mode 100644 run_personal/__init__.py delete mode 100644 run_shared/__init__.py create mode 100644 singlestoredb/magics/__init__.py rename run_personal/magic.py => singlestoredb/magics/run_personal.py (65%) rename run_shared/magic.py => singlestoredb/magics/run_shared.py (64%) diff --git a/run_personal/__init__.py b/run_personal/__init__.py deleted file mode 100644 index 71629f1e..00000000 --- a/run_personal/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from run_personal.magic import load_ipython_extension - - -__all__ = ['load_ipython_extension'] diff --git a/run_shared/__init__.py b/run_shared/__init__.py deleted file mode 100644 index a08fabd9..00000000 --- a/run_shared/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from run_shared.magic import load_ipython_extension - - -__all__ = ['load_ipython_extension'] diff --git a/singlestoredb/magics/__init__.py b/singlestoredb/magics/__init__.py new file mode 100644 index 00000000..174e182f --- /dev/null +++ b/singlestoredb/magics/__init__.py @@ -0,0 +1,34 @@ +from IPython.core.interactiveshell import InteractiveShell + +from .run_personal import RunPersonalMagic +from .run_shared import RunSharedMagic + +# In order to actually use these magics, we must register them with a +# running IPython. + + +def load_ipython_extension(ip: InteractiveShell) -> None: + """ + Any module file that define a function named `load_ipython_extension` + can be loaded via `%load_ext module.path` or be configured to be + autoloaded by IPython at startup time. + """ + + # Load jupysql extension + # This is necessary for jupysql to initialize internal state + # required to render messages + assert ip.extension_manager is not None + result = ip.extension_manager.load_extension('sql') + if result == 'no load function': + raise RuntimeError('Could not load sql extension. Is jupysql installed?') + + # Check if %run magic command is defined + if ip.find_line_magic('run') is None: + raise RuntimeError( + '%run magic command is not defined. ' + 'Is it available in your IPython environment?', + ) + + # Register run_personal and run_shared + ip.register_magics(RunPersonalMagic(ip)) + ip.register_magics(RunSharedMagic(ip)) diff --git a/run_personal/magic.py b/singlestoredb/magics/run_personal.py similarity index 65% rename from run_personal/magic.py rename to singlestoredb/magics/run_personal.py index 20999974..6c624b8f 100644 --- a/run_personal/magic.py +++ b/singlestoredb/magics/run_personal.py @@ -55,33 +55,3 @@ def run_personal(self, line: str, local_ns: Any = None) -> Any: # Delete the local file after running it if os.path.exists(local_filename): os.remove(local_filename) - - -# In order to actually use these magics, you must register them with a -# running IPython. - - -def load_ipython_extension(ip: InteractiveShell) -> None: - """ - Any module file that define a function named `load_ipython_extension` - can be loaded via `%load_ext module.path` or be configured to be - autoloaded by IPython at startup time. - """ - - # Load jupysql extension - # This is necessary for jupysql to initialize internal state - # required to render messages - assert ip.extension_manager is not None - result = ip.extension_manager.load_extension('sql') - if result == 'no load function': - raise RuntimeError('Could not load sql extension. Is jupysql installed?') - - # Check if %run magic command is defined - if ip.find_line_magic('run') is None: - raise RuntimeError( - '%run magic command is not defined. ' - 'Is it available in your IPython environment?', - ) - - # Register run_personal - ip.register_magics(RunPersonalMagic(ip)) diff --git a/run_shared/magic.py b/singlestoredb/magics/run_shared.py similarity index 64% rename from run_shared/magic.py rename to singlestoredb/magics/run_shared.py index 442578f3..393ca4bd 100644 --- a/run_shared/magic.py +++ b/singlestoredb/magics/run_shared.py @@ -53,32 +53,3 @@ def run_shared(self, line: str, local_ns: Any = None) -> Any: # Delete the local file after running it if os.path.exists(local_filename): os.remove(local_filename) - -# In order to actually use these magics, you must register them with a -# running IPython. - - -def load_ipython_extension(ip: InteractiveShell) -> None: - """ - Any module file that define a function named `load_ipython_extension` - can be loaded via `%load_ext module.path` or be configured to be - autoloaded by IPython at startup time. - """ - - # Load jupysql extension - # This is necessary for jupysql to initialize internal state - # required to render messages - assert ip.extension_manager is not None - result = ip.extension_manager.load_extension('sql') - if result == 'no load function': - raise RuntimeError('Could not load sql extension. Is jupysql installed?') - - # Check if %run magic command is defined - if ip.find_line_magic('run') is None: - raise RuntimeError( - '%run magic command is not defined. ' - 'Is it available in your IPython environment?', - ) - - # Register run_shared - ip.register_magics(RunSharedMagic(ip))