|
|
- # coding: utf-8
- """Utilities for installing extensions"""
-
- # Copyright (c) Jupyter Development Team.
- # Distributed under the terms of the Modified BSD License.
-
- import os
- from tornado.log import LogFormatter
- from traitlets import Bool, Any
- from jupyter_core.application import JupyterApp
- from jupyter_core.paths import (
- jupyter_config_dir, ENV_CONFIG_PATH, SYSTEM_CONFIG_PATH
- )
- from ._version import __version__
-
- class ArgumentConflict(ValueError):
- pass
-
- _base_flags = {}
- _base_flags.update(JupyterApp.flags)
- _base_flags.pop("y", None)
- _base_flags.pop("generate-config", None)
- _base_flags.update({
- "user" : ({
- "BaseExtensionApp" : {
- "user" : True,
- }}, "Apply the operation only for the given user"
- ),
- "system" : ({
- "BaseExtensionApp" : {
- "user" : False,
- "sys_prefix": False,
- }}, "Apply the operation system-wide"
- ),
- "sys-prefix" : ({
- "BaseExtensionApp" : {
- "sys_prefix" : True,
- }}, "Use sys.prefix as the prefix for installing nbextensions (for environments, packaging)"
- ),
- "py" : ({
- "BaseExtensionApp" : {
- "python" : True,
- }}, "Install from a Python package"
- )
- })
- _base_flags['python'] = _base_flags['py']
-
- _base_aliases = {}
- _base_aliases.update(JupyterApp.aliases)
-
-
- class BaseExtensionApp(JupyterApp):
- """Base nbextension installer app"""
- _log_formatter_cls = LogFormatter
- flags = _base_flags
- aliases = _base_aliases
- version = __version__
-
- user = Bool(False, config=True, help="Whether to do a user install")
- sys_prefix = Bool(False, config=True, help="Use the sys.prefix as the prefix")
- python = Bool(False, config=True, help="Install from a Python package")
-
- # Remove for 5.0...
- verbose = Any(None, config=True, help="DEPRECATED: Verbosity level")
-
- def _verbose_changed(self):
- """Warn about verbosity changes"""
- import warnings
- warnings.warn("`verbose` traits of `{}` has been deprecated, has no effects and will be removed in notebook 5.0.".format(type(self).__name__), DeprecationWarning)
-
- def _log_format_default(self):
- """A default format for messages"""
- return "%(message)s"
-
- def _get_config_dir(user=False, sys_prefix=False):
- """Get the location of config files for the current context
-
- Returns the string to the enviornment
-
- Parameters
- ----------
-
- user : bool [default: False]
- Get the user's .jupyter config directory
- sys_prefix : bool [default: False]
- Get sys.prefix, i.e. ~/.envs/my-env/etc/jupyter
- """
- user = False if sys_prefix else user
- if user and sys_prefix:
- raise ArgumentConflict("Cannot specify more than one of user or sys_prefix")
- if user:
- nbext = jupyter_config_dir()
- elif sys_prefix:
- nbext = ENV_CONFIG_PATH[0]
- else:
- nbext = SYSTEM_CONFIG_PATH[0]
- return nbext
-
- # Constants for pretty print extension listing function.
- # Window doesn't support coloring in the commandline
- GREEN_ENABLED = '\033[32m enabled \033[0m' if os.name != 'nt' else 'enabled '
- RED_DISABLED = '\033[31mdisabled\033[0m' if os.name != 'nt' else 'disabled'
- GREEN_OK = '\033[32mOK\033[0m' if os.name != 'nt' else 'ok'
- RED_X = '\033[31m X\033[0m' if os.name != 'nt' else ' X'
|