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

Jupyter explicit kernel #3337

Merged
merged 63 commits into from Mar 28, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
add8246
jupyter: start branch for an explicit kernel selection
haraldschilly Nov 6, 2018
6f18902
jupyter: full kernel specs
haraldschilly Nov 7, 2018
3ad0549
jupyter kernel selection with suggested kernels
haraldschilly Nov 7, 2018
0be0d41
jupyter kernel selection, no default kernel
haraldschilly Nov 7, 2018
cfe1c77
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 8, 2018
fa962ac
jupyter/explicit kernel selection: also cover case of "unknown" kernel
haraldschilly Nov 8, 2018
af10762
jupyter explicit kernel selection: slow but steady progress, fixing i…
haraldschilly Nov 8, 2018
93322bf
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 8, 2018
13f5088
jupyter kernel selector: details
haraldschilly Nov 8, 2018
999ca02
jupyter kernel selector: some cleanup and close button
haraldschilly Nov 8, 2018
ee119b5
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 9, 2018
85cc186
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 12, 2018
d9c8f70
jupyter/kernel selection: readability
haraldschilly Nov 12, 2018
df329fc
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 14, 2018
f642ff4
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 15, 2018
b59a3c3
jupyter/kernel selector: make a distinction between user opening the …
haraldschilly Nov 15, 2018
2a916be
jupyter/select kernel: some rearrangements and checks ...
haraldschilly Nov 15, 2018
2e8c299
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 27, 2018
a1e19b1
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 27, 2018
bd9565a
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 28, 2018
e8c8988
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 28, 2018
50699a4
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Nov 30, 2018
9a6dee0
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Dec 3, 2018
2699e6e
webapp/jupyter: explicitly set init values
haraldschilly Dec 3, 2018
62fc255
webapp/jupyter: tweak initialization
haraldschilly Dec 4, 2018
cc06eae
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Dec 10, 2018
b4a1168
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Dec 14, 2018
11b11eb
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 4, 2019
bb9ef03
jupyter/kernel selector: partial bugfixes
haraldschilly Jan 8, 2019
4efa485
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 8, 2019
9eaa5fb
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 9, 2019
fb6f404
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 10, 2019
9505049
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 11, 2019
4556677
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 17, 2019
5bfcdfd
webapp/jupyter: remove unused variable and noopener ref for external …
haraldschilly Jan 17, 2019
39be01d
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 22, 2019
3a28c2d
webapp/jupyter: renaming type info
haraldschilly Jan 22, 2019
2081c2b
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 28, 2019
f596202
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Jan 30, 2019
ca7a21a
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 4, 2019
642799f
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 6, 2019
3b0561a
webapp/jupyter: modifying some initialization checks
haraldschilly Feb 6, 2019
211b8df
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 6, 2019
20b342e
misc/closest_kernel_match: add test for R
haraldschilly Feb 6, 2019
beba91e
misc/closest_kernel_match: use negative priority to filter kernels
haraldschilly Feb 6, 2019
2161791
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 11, 2019
41c6e46
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 14, 2019
95818ab
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 20, 2019
4481910
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 22, 2019
38bf546
webapp/jupyter: kernel selector checkbox to disable asking about sele…
haraldschilly Feb 22, 2019
8b9e86f
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 24, 2019
984dd84
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 25, 2019
303d3d8
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Feb 27, 2019
e0af543
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Mar 4, 2019
f6d5202
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Mar 8, 2019
f72380d
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Mar 13, 2019
906749d
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Mar 16, 2019
6d5823f
Merge remote-tracking branch 'origin/master' into jupyter-explicit-ke…
haraldschilly Mar 24, 2019
354b45b
webapp/jupyter: using ask_jupyter_kernel account setting to select a …
haraldschilly Mar 25, 2019
818d0c9
jupyter/kernel selector: fix details found by LGTM
haraldschilly Mar 25, 2019
5dd020e
jupyter/kernel selector: remove logging
haraldschilly Mar 25, 2019
cd516f8
Merge branch 'master' into jupyter-explicit-kernel
williamstein Mar 28, 2019
6f5fd61
Merge branch 'master' into jupyter-explicit-kernel
williamstein Mar 28, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/smc-project/jupyter/kernel-data.ts
Expand Up @@ -2,6 +2,8 @@
Use nteracts kernelspecs module to get data about all installed Jupyter kernels.

The result is cached for 5s to avoid wasted effort in case of a flurry of calls.

Specs: https://jupyter-client.readthedocs.io/en/stable/kernels.html#kernel-specs
*/

import { findAll } from "kernelspecs";
Expand All @@ -25,7 +27,10 @@ export async function get_kernel_data(): Promise<any> {
v.push({
name: kernel,
display_name: value.spec.display_name,
language: value.spec.language
language: value.spec.language,
interrupt_mode: value.spec.interrupt_mode,
env: value.spec.env,
metadata: value.spec.metadata
});
}
v.sort(field_cmp("display_name"));
Expand Down
8 changes: 4 additions & 4 deletions src/smc-util/db-schema.js
Expand Up @@ -318,7 +318,8 @@ schema.accounts = {
jupyter_classic: false,
show_exec_warning: true,
physical_keyboard: "default",
keyboard_variant: ""
keyboard_variant: "",
ask_jupyter_kernel: true
},
other_settings: {
katex: true,
Expand Down Expand Up @@ -1783,8 +1784,7 @@ schema.mentions = {
},
error: {
type: "string",
desc:
"some sort of error occured handling this mention"
desc: "some sort of error occured handling this mention"
},
action: {
type: "string",
Expand All @@ -1802,7 +1802,7 @@ schema.mentions = {
path: true,
source: "account_id",
target: true,
priority:true
priority: true
},
required_fields: {
project_id: true,
Expand Down
4 changes: 3 additions & 1 deletion src/smc-util/misc.js
Expand Up @@ -3173,6 +3173,7 @@ exports.jupyter_language_to_name = function(lang) {
// Find the kernel whose name is closest to the given name.
exports.closest_kernel_match = function(name, kernel_list) {
name = name.toLowerCase().replace("matlab", "octave");
name = name === "python" ? "python3" : name;
let bestValue = -1;
let bestMatch = null;
for (
Expand All @@ -3181,6 +3182,8 @@ exports.closest_kernel_match = function(name, kernel_list) {
asc ? i++ : i--
) {
const k = kernel_list.get(i);
// filter out kernels with negative priority (using the priority would be great, though)
if (k.getIn(["metadata", "cocalc", "priority"], 0) < 0) continue;
const kernel_name = k.get("name").toLowerCase();
let v = 0;
for (
Expand All @@ -3194,7 +3197,6 @@ exports.closest_kernel_match = function(name, kernel_list) {
break;
}
}
// TODO: don't use regular name comparison, use compareVersionStrings
if (
v > bestValue ||
(v === bestValue &&
Expand Down
11 changes: 9 additions & 2 deletions src/smc-util/test/misc-test.coffee
Expand Up @@ -1518,10 +1518,17 @@ describe 'test closest kernel matching method', ->
python3 = immutable.fromJS {name:"python3", display_name:"Python 3", language:"python"}
sage8_2 = immutable.fromJS {name:"sage8.2", display_name:"Sagemath 8.2", language:"python"}
sage8_10 = immutable.fromJS {name:"sage8.10", display_name:"Sagemath 8.10", language:"python"}
kernels = immutable.fromJS([octave,python3,python3,sage8_2,sage8_10])
ir = immutable.fromJS {name:"ir", display_name:"R (R-Project)", language:"r"}
ir_old = immutable.fromJS {name:"ir-old", display_name: "R (old)", language: "r", metadata: {cocalc: {priority: -10}}}
kernels = immutable.fromJS([octave, python3, python3, sage8_2, sage8_10, ir, ir_old])
it 'thinks python8 should be python3', ->
expect(misc.closest_kernel_match("python8",kernels)).toEqual(python3)
it 'replaces "matlab" with "octave"', ->
expect(misc.closest_kernel_match("matlabe",kernels)).toEqual(octave)
expect(misc.closest_kernel_match("matlab",kernels)).toEqual(octave)
it 'suggests sage8.10 over sage8.2', ->
expect(misc.closest_kernel_match("sage8",kernels)).toEqual(sage8_10)
it 'suggests R over ir35', ->
expect(misc.closest_kernel_match("ir35",kernels)).toEqual(ir)
it 'suggests R over ir-35', ->
expect(misc.closest_kernel_match("ir-35",kernels)).toEqual(ir)