Skip to content

Commit

Permalink
Consider higher levels when toggling plugin (jupyterlab#16251)
Browse files Browse the repository at this point in the history
* Consider higher levels when toggling plugin

* Add usage tests
  • Loading branch information
divyansshhh authored and gderocher committed Apr 26, 2024
1 parent 17884c6 commit 55a22a5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
17 changes: 11 additions & 6 deletions jupyterlab/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -1135,24 +1135,29 @@ def toggle_extension(self, extension, value, level="sys_prefix"):
self.logger.info("Extension locked at a higher level, cannot toggle status")
return False

page_config = get_static_page_config(
complete_page_config = get_static_page_config(
app_settings_dir=app_settings_dir, logger=self.logger, level="all"
)

level_page_config = get_static_page_config(
app_settings_dir=app_settings_dir, logger=self.logger, level=level
)

disabled = page_config.get("disabledExtensions", {})
disabled = complete_page_config.get("disabledExtensions", {})
disabled_at_level = level_page_config.get("disabledExtensions", {})
did_something = False
is_disabled = disabled.get(extension, False)

if value and not is_disabled:
disabled[extension] = True
disabled_at_level[extension] = True
did_something = True
elif not value and is_disabled:
disabled[extension] = False
disabled_at_level[extension] = False
did_something = True

if did_something:
page_config["disabledExtensions"] = disabled
write_page_config(page_config, level=level)
level_page_config["disabledExtensions"] = disabled_at_level
write_page_config(level_page_config, level=level)
return did_something

def _maybe_mirror_disabled_in_locked(self, level="sys_prefix"):
Expand Down
5 changes: 5 additions & 0 deletions scripts/ci_script.sh
Original file line number Diff line number Diff line change
Expand Up @@ -215,10 +215,15 @@ if [[ $GROUP == usage ]]; then
! cat labextensions | grep -L "@jupyterlab/console-extension (all plugins)"

# Test locking at higher level
jupyter labextension enable @jupyterlab/notebook-extension --level sys_prefix
jupyter labextension lock @jupyterlab/notebook-extension --level sys_prefix
jupyter labextension disable @jupyterlab/notebook-extension --level user 2>&1 | grep "Extension locked at a higher level, cannot toggle status"
jupyter labextension unlock @jupyterlab/notebook-extension --level sys_prefix
jupyter labextension disable @jupyterlab/notebook-extension --level user
USER_PAGE_CONFIG=$(jupyter --config-dir)/labconfig/page_config.json
cat $USER_PAGE_CONFIG | grep "\"@jupyterlab/notebook-extension\": true"
jupyter labextension enable @jupyterlab/notebook-extension --level user
cat $USER_PAGE_CONFIG | grep "\"@jupyterlab/notebook-extension\": false"

# Test with a prebuilt install
jupyter labextension develop extension --debug
Expand Down

0 comments on commit 55a22a5

Please sign in to comment.