Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parametrizing kernels #1

Open
wants to merge 40 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
151528d
Add checking custom kernel specs
AnastasiaSliusar May 6, 2024
f5fb178
Add replacing custom kernel specs
AnastasiaSliusar May 7, 2024
ce0864c
Clear kernel spec variables from kernel.json
AnastasiaSliusar May 10, 2024
d796294
Fix cleanup
AnastasiaSliusar May 14, 2024
4aecf42
Add small fixes for validation and cleanup
AnastasiaSliusar May 16, 2024
49e3b9a
Getting default values and fix updating env
AnastasiaSliusar May 21, 2024
6518491
Fix defining custom env parameters
AnastasiaSliusar May 31, 2024
7c21d47
add logging
AnastasiaSliusar Jun 10, 2024
2e62e53
Fix custom parameters of a kernel
AnastasiaSliusar Jun 12, 2024
f6440a9
Fix restarting a kernel with custom env variable and clean printing v…
AnastasiaSliusar Jun 13, 2024
d25af7d
Merge branch 'main' into parametrizing_kernels
AnastasiaSliusar Jun 13, 2024
8cdac5c
Clean printing
AnastasiaSliusar Jun 13, 2024
1b0c92e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 13, 2024
610f018
Fix updating launch parameters when a new kernel is selected
AnastasiaSliusar Jun 21, 2024
db2b88e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 21, 2024
2d3c923
Fix updating launch parameters when a new kernel is selected
AnastasiaSliusar Jun 21, 2024
4e56a30
Add switching parameter
AnastasiaSliusar Jun 24, 2024
c3ac039
Merge branch 'parametrizing_kernels' of https://github.com/AnastasiaS…
AnastasiaSliusar Jun 24, 2024
6c6d9af
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 24, 2024
e6f68e2
Support replacing env and argv by default parameters
AnastasiaSliusar Jun 25, 2024
47400a4
Resolve and merge conflicts
AnastasiaSliusar Jun 25, 2024
b7fac4a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 25, 2024
85d0829
Update a parameter
AnastasiaSliusar Jun 26, 2024
2267438
Resolving conflicts and merging
AnastasiaSliusar Jun 26, 2024
b044207
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 26, 2024
072da9a
Count kernel variables
AnastasiaSliusar Jul 1, 2024
562a3ea
resolving conflicts
AnastasiaSliusar Jul 1, 2024
b646dc1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 1, 2024
7620d38
Update filtering kernels spec
AnastasiaSliusar Jul 2, 2024
a747ee5
resolving conflicts
AnastasiaSliusar Jul 2, 2024
b6f2406
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 2, 2024
3444a5e
Fix checking default values,setup is_secure flag for a kernel spec file
AnastasiaSliusar Jul 4, 2024
622945f
resolving conflicts
AnastasiaSliusar Jul 4, 2024
3e29e21
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 4, 2024
a55983b
Fix defining when a kernel is insecure
AnastasiaSliusar Jul 4, 2024
3ed3db7
resolving conflicts
AnastasiaSliusar Jul 4, 2024
4e93a12
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 4, 2024
ec2f5e7
Fix filtering kernel spec files
AnastasiaSliusar Jul 5, 2024
1c38f12
resolving conflicts
AnastasiaSliusar Jul 5, 2024
5e8bc79
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
  • Loading branch information
pre-commit-ci[bot] committed Jul 4, 2024
commit 3e29e21573de26d23cff20078b1e49b191db607e
106 changes: 50 additions & 56 deletions jupyter_client/kernelspec.py
Original file line number Diff line number Diff line change
@@ -241,18 +241,18 @@ def _check_parameterized_kernel(self, kspec: KernelSpec) -> KernelSpec:
is_secure = self.check_kernel_is_secure(kspec=kspec)
if is_secure == True:
if kspec.metadata and isinstance(kspec.metadata, dict):
kspec.metadata.update({'is_secure':True})
kspec.metadata.update({"is_secure": True})
else:
kspec.metadata = {}
kspec.metadata.update({'is_secure':True})
print('---is_secure---')
return kspec # a kernel spec is allowed
kspec.metadata.update({"is_secure": True})
print("---is_secure---")
return kspec # a kernel spec is allowed
else:
if kspec.metadata and isinstance(kspec.metadata, dict):
kspec.metadata.update({'is_secure':False})
kspec.metadata.update({"is_secure": False})
else:
kspec.metadata = {}
kspec.metadata.update({'is_secure':False})
kspec.metadata.update({"is_secure": False})
if self._allow_insecure_kernelspec_params == True:
print("---_allow_insecure_kernelspec_params---")
return kspec # a kernel spec is allowed
@@ -261,17 +261,17 @@ def _check_parameterized_kernel(self, kspec: KernelSpec) -> KernelSpec:
kspec_data = self.check_kernel_custom_all_default_values(kspec=kspec)
print("kspec_data")
print(kspec_data)
print('??????')
print("??????")
print(kspec_data["all_have_default"])

if kspec_data['all_have_default'] == True:
print('default_true')
return kspec_data["kspec"] # a kernel spec is modyfied and is allowed
if kspec_data["all_have_default"] == True:
print("default_true")
return kspec_data["kspec"] # a kernel spec is modyfied and is allowed
else:
return None

def check_kernel_is_secure(self, kspec):
print('check_kernel_is_secure')
print("check_kernel_is_secure")
is_secure = False
if (
kspec.metadata
@@ -281,8 +281,10 @@ def check_kernel_is_secure(self, kspec):
and "properties" in kspec.metadata["parameters"]
and isinstance(kspec.metadata["parameters"]["properties"], dict)
):
counter_secure_kernel_variables = self.get_count_secure_kernel_variables(obj=kspec.metadata["parameters"], counter_secure_kernel_variables=0)

counter_secure_kernel_variables = self.get_count_secure_kernel_variables(
obj=kspec.metadata["parameters"], counter_secure_kernel_variables=0
)

total_sum_kernel_variables = self.get_argv_env_kernel_variables(kspec=kspec)

if counter_secure_kernel_variables == total_sum_kernel_variables:
@@ -318,27 +320,32 @@ def get_count_secure_kernel_variables(self, obj, counter_secure_kernel_variables
print("get_count_secure_kernel_variables")
print("---obj---")
print(obj)

print(counter_secure_kernel_variables)
is_secure = True
if "properties" in obj:
propetries = obj["properties"].items()
if len(propetries) > 0:
for property_key, property_value in propetries:
if property_value.get("type") == 'string' or property_value.get("type") == 'null':
if (
property_value.get("type") == "string"
or property_value.get("type") == "null"
):
if property_value.get("enum"):
counter_secure_kernel_variables = counter_secure_kernel_variables + 1
else:
print('string, null')
print("string, null")
is_secure = False
elif property_value.get("enum"):
counter_secure_kernel_variables = counter_secure_kernel_variables + 1
print('if enum counter_secure_kernel_variables')

elif property_value.get("type") == 'object':
counter_secure_kernel_variables = self.get_count_secure_kernel_variables(obj=obj, counter_secure_kernel_variables=counter_secure_kernel_variables)
print('if object counter_secure_kernel_variables')

print("if enum counter_secure_kernel_variables")

elif property_value.get("type") == "object":
counter_secure_kernel_variables = self.get_count_secure_kernel_variables(
obj=obj, counter_secure_kernel_variables=counter_secure_kernel_variables
)
print("if object counter_secure_kernel_variables")

if is_secure == False:
counter_secure_kernel_variables = 0
print("counter_secure_kernel_variables")
@@ -368,12 +375,12 @@ def has_variable(self, string: str):
if match is None:
pattern = re.compile(r"\{([A-Za-z0-9_]+)\}")
matches = pattern.findall(string)
print('matches')
print("matches")
print(matches)
if len(matches) > 0:
print('-match yes')
print("-match yes")
return True
else:
else:
return False
else:
return False
@@ -401,31 +408,19 @@ def check_kernel_custom_all_default_values(self, kspec):
has_default = False

if has_default == False:
result = {
"kspec": kspec,
"all_have_default" : False
}
result = {"kspec": kspec, "all_have_default": False}
else:
#check if there is anything after replacing
# check if there is anything after replacing
total_sum_kernel_variables = self.get_argv_env_kernel_variables(kspec=new_kspec)
print('---default total_sum_kernel_variables---')
print("---default total_sum_kernel_variables---")
print(total_sum_kernel_variables)

if total_sum_kernel_variables > 0:
result = {
"kspec": kspec,
"all_have_default" : False
}
else:
result = {
"kspec": new_kspec,
"all_have_default" : True
}
result = {"kspec": kspec, "all_have_default": False}
else:
result = {"kspec": new_kspec, "all_have_default": True}
else:
result = {
"kspec": kspec,
"all_have_default" : False
}
result = {"kspec": kspec, "all_have_default": False}
print("result")
print(result["all_have_default"])
return result
@@ -440,26 +435,27 @@ def replaceByDefault(self, kspec, kernel_variable, default_value):
new_argv = []
if hasattr(kspec, "env"):
tmp_env = kspec.env.copy()
if 'env' in tmp_env:
print('----tmp_env---')
if "env" in tmp_env:
print("----tmp_env---")
print(tmp_env)
env = tmp_env.env


print('replaceByDefault env')

print("replaceByDefault env")
print(env)
# check and replace env variables

for env_key, env_item in env.items():
new_env_item = self.replace_spec_parameter(kernel_variable, default_value, env_item)
new_env_item = self.replace_spec_parameter(
kernel_variable, default_value, env_item
)
new_env[env_key] = new_env_item

if len(new_env) > 0:
tmp_env.update(new_env)
kspec.env = tmp_env

# check and replace argv parameters
if hasattr(kspec, 'argv') and kspec.argv is not None:
if hasattr(kspec, "argv") and kspec.argv is not None:
argv = kspec.argv.copy()
for argv_item in argv:
new_argv_item = self.replace_spec_parameter(
@@ -494,15 +490,13 @@ def _get_kernel_spec_by_name(self, kernel_name: str, resource_dir: str) -> Kerne
raise NoSuchKernel(kernel_name)

kspec = self._check_parameterized_kernel(kspec)
print('new kspec')
print("new kspec")
print(kspec)
if kspec is not None:
return kspec
return kspec
else:
return None



def _find_spec_directory(self, kernel_name: str) -> str | None:
"""Find the resource directory of a named kernel spec"""
for kernel_dir in [kd for kd in self.kernel_dirs if os.path.isdir(kd)]: