diff --git a/nglview/__init__.py b/nglview/__init__.py index 35bcf1a0..073455a8 100644 --- a/nglview/__init__.py +++ b/nglview/__init__.py @@ -2,8 +2,6 @@ __version__ = get_versions()['version'] del get_versions -from .install import install_nglview_js_widgets -from .install import enable_nglview_js_widgets import warnings with warnings.catch_warnings(): warnings.simplefilter("ignore") @@ -27,11 +25,6 @@ def _jupyter_labextension_paths(): }] -# call install after defining -# _jupyter_nbextension_paths and _jupyter_labextension_paths methods -install_nglview_js_widgets() -enable_nglview_js_widgets() - # TODO: do not use import * # interface from .config import BACKENDS diff --git a/nglview/install.py b/nglview/install.py deleted file mode 100644 index 365474f8..00000000 --- a/nglview/install.py +++ /dev/null @@ -1,61 +0,0 @@ -import argparse -from os.path import join -from notebook import nbextensions -from glob import glob - - -def install_nglview_js_widgets(user=True, - symlink=False, - overwrite=True, - debug=False, - **kwargs): - """Install nglview-js-widgets nbextension. - - Parameters - ---------- - user: bool, default True - Install for current user instead of system-wide. - symlink: bool, default False - Symlink instead of copy (for development). - overwrite: bool, default True - Overwrite previously-installed files for this extension - **kwargs: keyword arguments - Other keyword arguments passed to the install_nbextension command - """ - nglivew_js_dirs = nbextensions.install_nbextension_python( - 'nglview', user=user, symlink=symlink, overwrite=overwrite, **kwargs) - if debug: - print(nglivew_js_dirs) - print([glob(join(my_dir, '*')) for my_dir in nglivew_js_dirs]) - - -def enable_nglview_js_widgets(user=True): - nbextensions.enable_nbextension_python('nglview', user=user) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(description="nglview-js-widgets") - parser.add_argument( - "-u", - "--user", - help="Install as current user instead of system-wide", - action="store_true") - parser.add_argument( - "-s", - "--symlink", - help="Symlink instead of copying files", - action="store_true") - parser.add_argument( - "-f", - "--force", - help="Overwrite any previously-installed files for this extension", - action="store_true") - parser.add_argument( - "-d", "--debug", help="print nglivew-js-widgets", action="store_true") - args = parser.parse_args() - install_nglview_js_widgets( - user=args.user, - symlink=args.symlink, - overwrite=args.force, - debug=args.debug) - enable_nglview_js_widgets() diff --git a/nglview/scripts/nglview.py b/nglview/scripts/nglview.py index 8052ff66..3e4ba12a 100755 --- a/nglview/scripts/nglview.py +++ b/nglview/scripts/nglview.py @@ -170,13 +170,19 @@ def main(notebook_dict=notebook_dict, cmd_arg=sys.argv[1:]): action='store_true', help='delete temp file after closing notebook') parser.add_argument( - '--disable-autorun', + '--auto', action='store_true', - help='do not run 1st cell right after openning notebook') + help='Run 1st cell right after openning notebook') parser.add_argument('--test', action='store_true', help='test') args = parser.parse_args(cmd_arg) command = args.command + if command in ['install', 'enable']: + subprocess.check_call([ + 'jupyter', 'nbextension', command, '--py', + '--sys-prefix', 'nglview' + ]) + sys.exit(0) crd = args.traj if args.traj is not None else args.crd if crd is None: @@ -246,7 +252,7 @@ def main(notebook_dict=notebook_dict, cmd_arg=sys.argv[1:]): print('NOTE: make sure to open {0} in your local machine\n'.format( notebook_name)) - if args.disable_autorun or command is None: + if not args.auto or command is None: try: disable_extension(jupyter=args.jexe) except CalledProcessError: @@ -265,7 +271,7 @@ def main(notebook_dict=notebook_dict, cmd_arg=sys.argv[1:]): if args.clean and create_new_nb: print("deleting {}".format(notebook_name)) os.remove(notebook_name) - if not args.disable_autorun: + if args.auto: disable_extension(jupyter=args.jexe) diff --git a/nglview/tests/test_cli.py b/nglview/tests/test_cli.py index f554af25..f17ed81b 100644 --- a/nglview/tests/test_cli.py +++ b/nglview/tests/test_cli.py @@ -37,7 +37,7 @@ def func(): subprocess.check_call(command.split()) # single pdb, disable-autorun - command = 'nglview {} --disable-autorun --test'.format(datafiles.PDB) + command = 'nglview {} --auto --test'.format(datafiles.PDB) subprocess.check_call(command.split()) # single pdb, specify browser diff --git a/setup.py b/setup.py index e42fd55b..2d4e9ea0 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,5 @@ from __future__ import print_function +import subprocess from setuptools import setup, find_packages, Command from setuptools.command.egg_info import egg_info from subprocess import check_call @@ -44,23 +45,25 @@ def enable_extentions(): # enable_nbextension_python does not exist in older notebook # use try ... except in case users do not have notebook yet from notebook.nbextensions import enable_nbextension_python - from nglview.install import install_nglview_js_widgets - from nglview.install import enable_nglview_js_widgets enable_nbextension_python('widgetsnbextension') - # user=True - # TODO: sys_prefix? Using user specified option? (--user) - install_nglview_js_widgets(user=True, debug=True) - enable_nglview_js_widgets(user=True) + subprocess.check_call([ + 'jupyter', 'nbextension', 'install', '--py', + '--sys-prefix', 'nglview' + ]) + + subprocess.check_call([ + 'jupyter', 'nbextension', 'enable', '--py', + '--sys-prefix', 'nglview' + ]) print("Seems OK") - except (ImportError, OSError) as e: + except (ImportError, OSError, subprocess.CalledProcessError) as e: # TODO: add type of exception here? # Case: # - notebook is not installed before nglview # - permission denied? print('Failed to enable extensions.') - print(e) - print('Skip') + print('Skip. Tips: Do it yourself') def js_prerelease(command, strict=False): """decorator for building minified js/css prior to another command"""