From dbd119b851c9645904ed435cedcc516bf9400607 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 16:09:27 -0500 Subject: [PATCH 1/9] rename trait to allowed_kernel_names --- jupyter_client/kernelspec.py | 36 +++++++++++++++++++++++-- jupyter_client/tests/test_kernelspec.py | 12 +++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index 99b35447d..3a6bf034d 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -16,6 +16,7 @@ from traitlets import Dict from traitlets import HasTraits from traitlets import List +from traitlets import observe from traitlets import Set from traitlets import Type from traitlets import Unicode @@ -147,6 +148,11 @@ def _user_kernel_dir_default(self): return pjoin(self.data_dir, "kernels") whitelist = Set( + config=True, + help="""Deprecated, use `KernelSpecManager.allowed_kernel_names` + """, + ) + allowed_kernel_names = Set( config=True, help="""Whitelist of allowed kernel names. @@ -157,6 +163,32 @@ def _user_kernel_dir_default(self): help="List of kernel directories to search. Later ones take priority over earlier." ) + _deprecated_aliases = { + "whitelist": ("allowed_kernel_names", "7.0"), + } + + # Method copied from + # https://github.com/jupyterhub/jupyterhub/blob/d1a85e53dccfc7b1dd81b0c1985d158cc6b61820/jupyterhub/auth.py#L143-L161 + @observe(*list(_deprecated_aliases)) + def _deprecated_trait(self, change): + """observer for deprecated traits""" + old_attr = change.name + new_attr, version = self._deprecated_aliases.get(old_attr) + new_value = getattr(self, new_attr) + if new_value != change.new: + # only warn if different + # protects backward-compatible config from warnings + # if they set the same value under both names + self.log.warning( + "{cls}.{old} is deprecated in JupyterLab {version}, use {cls}.{new} instead".format( + cls=self.__class__.__name__, + old=old_attr, + new=new_attr, + version=version, + ) + ) + setattr(self, new_attr, change.new) + def _kernel_dirs_default(self): dirs = jupyter_path("kernels") # At some point, we should stop adding .ipython/kernels to the path, @@ -196,9 +228,9 @@ def find_kernel_specs(self): except ImportError: self.log.warning("Native kernel (%s) is not available", NATIVE_KERNEL_NAME) - if self.whitelist: + if self.allowed_kernel_names: # filter if there's a whitelist - d = {name: spec for name, spec in d.items() if name in self.whitelist} + d = {name: spec for name, spec in d.items() if name in self.allowed_kernel_names} return d # TODO: Caching? diff --git a/jupyter_client/tests/test_kernelspec.py b/jupyter_client/tests/test_kernelspec.py index 19436e311..99a6c6dbc 100644 --- a/jupyter_client/tests/test_kernelspec.py +++ b/jupyter_client/tests/test_kernelspec.py @@ -59,6 +59,18 @@ def test_find_kernel_specs(self): kernels = self.ksm.find_kernel_specs() self.assertEqual(kernels["sample"], self.sample_kernel_dir) + def test_allowed_kernel_names(self): + ksm = kernelspec.KernelSpecManager() + ksm.allowed_kernel_names = ["foo"] + kernels = ksm.find_kernel_specs() + assert not len(kernels) + + def test_deprecated_whitelist(self): + ksm = kernelspec.KernelSpecManager() + ksm.whitelist = ["bar"] + kernels = ksm.find_kernel_specs() + assert not len(kernels) + def test_get_kernel_spec(self): ks = self.ksm.get_kernel_spec("SAMPLE") # Case insensitive self.assertEqual(ks.resource_dir, self.sample_kernel_dir) From c83a5204b4029f9cfd06d0f11bc85934c6c0fcd6 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 17:21:50 -0500 Subject: [PATCH 2/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index 3a6bf034d..65d905ebf 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -154,7 +154,7 @@ def _user_kernel_dir_default(self): ) allowed_kernel_names = Set( config=True, - help="""Whitelist of allowed kernel names. + help="""List of allowed kernel names. By default, all installed kernels are allowed. """, From e512b457549a31c3b340ed7dab5a6714fd04396c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 17:21:59 -0500 Subject: [PATCH 3/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index 65d905ebf..dc85af595 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -229,7 +229,7 @@ def find_kernel_specs(self): self.log.warning("Native kernel (%s) is not available", NATIVE_KERNEL_NAME) if self.allowed_kernel_names: - # filter if there's a whitelist + # filter if there's an allow list d = {name: spec for name, spec in d.items() if name in self.allowed_kernel_names} return d # TODO: Caching? From 178faba9c2236c55ee74b99db9b574f51944d592 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:17:28 -0500 Subject: [PATCH 4/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index dc85af595..f1e4df889 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -149,7 +149,7 @@ def _user_kernel_dir_default(self): whitelist = Set( config=True, - help="""Deprecated, use `KernelSpecManager.allowed_kernel_names` + help="""Deprecated, use `KernelSpecManager.allowed_kernelspecs` """, ) allowed_kernel_names = Set( From f694942234c8cf4075bc4906d3548c1767f70d1c Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:17:36 -0500 Subject: [PATCH 5/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index f1e4df889..d3e82d3d0 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -164,7 +164,7 @@ def _user_kernel_dir_default(self): ) _deprecated_aliases = { - "whitelist": ("allowed_kernel_names", "7.0"), + "whitelist": ("allowed_kernelspecs", "7.0"), } # Method copied from From d0570c8ab5e36c5b82601446d2c05e826e33be35 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:17:42 -0500 Subject: [PATCH 6/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index d3e82d3d0..a60166a3c 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -230,7 +230,7 @@ def find_kernel_specs(self): if self.allowed_kernel_names: # filter if there's an allow list - d = {name: spec for name, spec in d.items() if name in self.allowed_kernel_names} + d = {name: spec for name, spec in d.items() if name in self.allowed_kernelspecs} return d # TODO: Caching? From 86c5951a59955e2485db93d85652a6056e96e5c5 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:17:50 -0500 Subject: [PATCH 7/9] Update jupyter_client/tests/test_kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/tests/test_kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/tests/test_kernelspec.py b/jupyter_client/tests/test_kernelspec.py index 99a6c6dbc..6953d4b18 100644 --- a/jupyter_client/tests/test_kernelspec.py +++ b/jupyter_client/tests/test_kernelspec.py @@ -61,7 +61,7 @@ def test_find_kernel_specs(self): def test_allowed_kernel_names(self): ksm = kernelspec.KernelSpecManager() - ksm.allowed_kernel_names = ["foo"] + ksm.allowed_kernelspecs = ["foo"] kernels = ksm.find_kernel_specs() assert not len(kernels) From e56da87ec539a6eef440e98310a70b88f6a8e0a1 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:18:45 -0500 Subject: [PATCH 8/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index a60166a3c..16dfce5b2 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -152,7 +152,7 @@ def _user_kernel_dir_default(self): help="""Deprecated, use `KernelSpecManager.allowed_kernelspecs` """, ) - allowed_kernel_names = Set( + allowed_kernelspecs = Set( config=True, help="""List of allowed kernel names. From e3d5bcc3a8842a0048dd50cb7db6c77e33897098 Mon Sep 17 00:00:00 2001 From: Steven Silvester Date: Wed, 4 Aug 2021 20:18:52 -0500 Subject: [PATCH 9/9] Update jupyter_client/kernelspec.py Co-authored-by: Kevin Bates --- jupyter_client/kernelspec.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jupyter_client/kernelspec.py b/jupyter_client/kernelspec.py index 16dfce5b2..ab62f5458 100644 --- a/jupyter_client/kernelspec.py +++ b/jupyter_client/kernelspec.py @@ -228,7 +228,7 @@ def find_kernel_specs(self): except ImportError: self.log.warning("Native kernel (%s) is not available", NATIVE_KERNEL_NAME) - if self.allowed_kernel_names: + if self.allowed_kernelspecs: # filter if there's an allow list d = {name: spec for name, spec in d.items() if name in self.allowed_kernelspecs} return d