pinokiod 1.2.4 → 1.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -31,9 +31,9 @@ class Conda {
31
31
  // CONDA_ROOT: this.kernel.bin.path("miniconda"),
32
32
  CONDA_PREFIX: this.kernel.bin.path("miniconda"),
33
33
  PYTHON: this.kernel.bin.path("miniconda/python"),
34
- PATH: this.paths[this.kernel.platform].map((p) => {
35
- return this.kernel.bin.path(p)
36
- })
34
+ // PATH: this.paths[this.kernel.platform].map((p) => {
35
+ // return this.kernel.bin.path(p)
36
+ // })
37
37
  }
38
38
  if (this.kernel.platform === "win32") {
39
39
  base.CONDA_BAT = this.kernel.bin.path("miniconda/condabin/conda.bat")
@@ -65,16 +65,17 @@ class Conda {
65
65
  }
66
66
  ondata({ raw: `${cmd}\r\n` })
67
67
  ondata({ raw: `path: ${this.kernel.bin.path()}\r\n` })
68
- await this.kernel.bin.exec({ message: cmd, }, (stream) => {
68
+ await this.kernel.bin.exec({ message: cmd, skip_conda: true }, (stream) => {
69
69
  ondata(stream)
70
70
  })
71
71
  // await this.activate()
72
72
  await this.kernel.bin.exec({
73
73
  message: [
74
- (this.kernel.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
75
- (this.platform === 'win32' ? `activate base` : `conda activate base`),
74
+ // (this.kernel.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
75
+ // (this.platform === 'win32' ? `activate base` : `conda activate base`),
76
76
  "conda config --add create_default_packages python=3.10",
77
77
  "conda install -y -c conda-forge pip brotli brotlipy",
78
+ "conda update --all",
78
79
  // "conda update -y --all",
79
80
  ]
80
81
  }, (stream) => {
@@ -3,20 +3,16 @@ class Cuda {
3
3
  if (this.kernel.platform === "win32") {
4
4
  await this.kernel.bin.exec({
5
5
  message: "conda install -y cudnn libzlib-wapi -c conda-forge",
6
- conda: "base",
7
6
  }, ondata)
8
7
  await this.kernel.bin.exec({
9
8
  message: "conda install -y cuda -c nvidia/label/cuda-11.8.0",
10
- conda: "base",
11
9
  }, ondata)
12
10
  } else {
13
11
  await this.kernel.bin.exec({
14
12
  message: "conda install -y cudnn -c conda-forge",
15
- conda: "base",
16
13
  }, ondata)
17
14
  await this.kernel.bin.exec({
18
15
  message: "conda install -y cuda -c nvidia/label/cuda-11.8.0",
19
- conda: "base",
20
16
  }, ondata)
21
17
  }
22
18
  }
@@ -42,7 +38,6 @@ class Cuda {
42
38
  async uninstall(req, ondata) {
43
39
  await this.kernel.bin.exec({
44
40
  message: "conda remove cudnn cuda",
45
- conda: "base",
46
41
  }, ondata)
47
42
  }
48
43
  }
@@ -6,7 +6,6 @@ class Ffmpeg {
6
6
  async install(req, ondata) {
7
7
  await this.kernel.bin.exec({
8
8
  message: "conda install -y -c conda-forge ffmpeg",
9
- conda: "base"
10
9
  }, ondata)
11
10
  }
12
11
  async installed() {
@@ -15,7 +14,6 @@ class Ffmpeg {
15
14
  async uninstall(req, ondata) {
16
15
  await this.kernel.bin.exec({
17
16
  message: "conda remove ffmpeg",
18
- conda: "base"
19
17
  }, ondata)
20
18
  }
21
19
  }
package/kernel/bin/git.js CHANGED
@@ -5,7 +5,7 @@ const { rimraf } = require('rimraf')
5
5
  const path = require("path")
6
6
  class Git {
7
7
  async install(req, ondata) {
8
- await this.kernel.bin.exec({ conda: "base", message: "conda install -y -c conda-forge git git-lfs" }, ondata)
8
+ await this.kernel.bin.exec({ message: "conda install -y -c conda-forge git git-lfs" }, ondata)
9
9
  if (this.kernel.platform === 'win32') {
10
10
  let gitconfig_path = path.resolve(this.kernel.homedir, "gitconfig")
11
11
  // check if gitconfig exists
@@ -23,7 +23,7 @@ class Git {
23
23
  return this.kernel.bin.installed.conda.has("git")
24
24
  }
25
25
  async uninstall(req, ondata) {
26
- await this.kernel.bin.exec({ conda: "base", message: "conda remove git" }, ondata)
26
+ await this.kernel.bin.exec({ message: "conda remove git" }, ondata)
27
27
  }
28
28
  env() {
29
29
  if (this.kernel.platform === 'win32') {
@@ -244,7 +244,7 @@ class Bin {
244
244
  let res
245
245
  let lines
246
246
  if (conda_exists) {
247
- res = await this.exec({ message: `conda list`, conda: "base" }, (stream) => {
247
+ res = await this.exec({ message: `conda list` }, (stream) => {
248
248
  // console.log("conda list check", { stream })
249
249
  })
250
250
 
@@ -431,11 +431,11 @@ class Bin {
431
431
  if (type === "conda") {
432
432
  const message = (install ? install : `conda install ${name} -y ${args}`)
433
433
  ondata({ html: `<b>${progress} Installing ${name}</b><br>${message}` }, "notify")
434
- await this.exec({ message, conda: "base" }, ondata)
434
+ await this.exec({ message }, ondata)
435
435
  } else if (type === "pip") {
436
436
  const message = (install ? install : `pip install ${name} ${args}`)
437
437
  ondata({ html: `<b>${progress} Installing ${name}</b><br>${message}` }, "notify")
438
- await this.exec({ message, conda: "base" }, ondata)
438
+ await this.exec({ message }, ondata)
439
439
  } else if (type === "brew") {
440
440
  const message = (install ? install : `brew install ${name} ${args}`)
441
441
  ondata({ html: `<b>${progress} Installing ${name}</b><br>${message}` }, "notify")
@@ -3,7 +3,7 @@ class LLVM {
3
3
  if (this.kernel.platform === 'darwin') {
4
4
  await bin.exec({ message: "brew install llvm" }, ondata)
5
5
  } else {
6
- await bin.exec({ message: "conda install -y -c conda-forge llvm", conda: "base" }, ondata)
6
+ await bin.exec({ message: "conda install -y -c conda-forge llvm" }, ondata)
7
7
  }
8
8
  }
9
9
  async installed() {
@@ -14,7 +14,7 @@ class LLVM {
14
14
  }
15
15
  }
16
16
  async uninstall(req, ondata) {
17
- await this.kernel.bin.exec({ message: "conda remove llvm", conda: "base" }, ondata)
17
+ await this.kernel.bin.exec({ message: "conda remove llvm" }, ondata)
18
18
  }
19
19
  }
20
20
  module.exports = LLVM
package/kernel/bin/zip.js CHANGED
@@ -6,7 +6,7 @@ class Zip {
6
6
  } else {
7
7
  cmd = "conda install -y -c conda-forge p7zip"
8
8
  }
9
- await this.kernel.bin.exec({ conda: "base", message: cmd }, ondata)
9
+ await this.kernel.bin.exec({ message: cmd }, ondata)
10
10
  }
11
11
  async installed() {
12
12
  if (this.kernel.platform === 'win32') {
@@ -22,7 +22,7 @@ class Zip {
22
22
  } else {
23
23
  cmd = "conda remove p7zip"
24
24
  }
25
- await this.kernel.bin.exec({ conda: "base", message: cmd }, ondata)
25
+ await this.kernel.bin.exec({ message: cmd }, ondata)
26
26
  }
27
27
  }
28
28
  module.exports = Zip
@@ -11,7 +11,6 @@ class Python {
11
11
  this.kernel.exec({
12
12
  message: "uvicorn --port 42001 server:app",
13
13
  path: modpath,
14
- conda: "base"
15
14
  }, (s) => {
16
15
  // process.stdout.write(s)
17
16
  ondata(s)
package/kernel/shell.js CHANGED
@@ -463,125 +463,115 @@ class Shell {
463
463
  }
464
464
  }
465
465
  async activate(params) {
466
+
467
+ // conda and venv can coexist
468
+ // 1. first process conda
469
+ // - if conda is not specified => base => no need to create
470
+ // - if conda is specified
471
+ // - if string => the string is the path => create if doesn't exist yet
472
+ // - if object => the conda.path is the path => create if doesn't exist yet
473
+ // 2. then process venv
474
+
475
+
476
+ // 1. conda
477
+ let conda
466
478
  if (params.conda) {
467
- if (params.conda === "base") {
468
- // using the base env
469
- params.message = [
470
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
471
- `conda deactivate`,
472
- `conda deactivate`,
473
- `conda deactivate`,
474
- `conda activate ${params.conda}`,
475
- // 'pip install --upgrade wheel pip setuptools',
476
- ].concat(params.message)
477
- } else {
478
- if (typeof params.conda === "string") {
479
- let env_path = path.resolve(params.path, params.conda)
480
- let env_exists = await this.exists(env_path)
481
- if (env_exists) {
482
- params.message = [
483
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
484
- //`conda activate ${params.conda}`,
485
- `conda deactivate`,
486
- `conda deactivate`,
487
- `conda deactivate`,
488
- `conda activate ${env_path}`,
489
- // 'pip install --upgrade wheel pip setuptools',
490
- ].concat(params.message)
479
+ conda = params.conda
480
+ } else {
481
+ conda = null
482
+ }
483
+
484
+ let conda_activation
485
+ if (params.skip_conda) {
486
+ // don't activate
487
+ conda_activation = []
488
+ } else {
489
+ if (conda) {
490
+ let conda_path
491
+ let conda_python
492
+ if (typeof conda === "string") {
493
+ conda_path = conda
494
+ conda_python = "python=3.10"
495
+ } else {
496
+ if (conda.path) {
497
+ conda_path = conda.path
491
498
  } else {
492
- params.message = [
493
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
494
- `conda create -y -p ${env_path} python=3.10`,
495
- //`conda activate ${params.conda}`,
496
- `conda deactivate`,
497
- `conda deactivate`,
498
- `conda deactivate`,
499
- `conda activate ${env_path}`,
500
- // 'pip install --upgrade wheel pip setuptools',
501
- ].concat(params.message)
499
+ throw new Error("when specifying conda as an object, the conda.path must exist")
502
500
  }
503
- } else if (typeof params.conda === "object" && params.conda.path) {
504
- let env_path = path.resolve(params.path, params.conda.path)
505
- let env_exists = await this.exists(env_path)
506
- if (env_exists) {
507
- params.message = [
508
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
509
- `conda deactivate`,
510
- `conda deactivate`,
511
- `conda deactivate`,
512
- `conda activate ${env_path}`,
513
- // 'pip install --upgrade wheel pip setuptools',
514
- ].concat(params.message)
501
+ if (conda.python) {
502
+ conda_python = conda.python
515
503
  } else {
516
- let create_command
517
- if (params.conda.python) {
518
- create_command = `conda create -y -p ${env_path} python=${params.conda.python}`
519
- } else {
520
- create_command = `conda create -y -p ${env_path} python=3.10`
521
- }
522
- params.message = [
523
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
524
- create_command,
525
- `conda deactivate`,
526
- `conda deactivate`,
527
- `conda deactivate`,
528
- `conda activate ${env_path}`,
529
- // 'pip install --upgrade wheel pip setuptools',
530
- ].concat(params.message)
504
+ conda_python = "python=3.10"
531
505
  }
532
506
  }
533
- }
534
- if (this.env) {
535
- // this.env.CONDA_PIP_INTEROP_ENABLED = "1"
536
- this.env.CONDA_AUTO_ACTIVATE_BASE = "false"
537
- this.env.PYTHONNOUSERSITE = "1"
538
- } else {
539
- //this.env = { CONDA_PIP_INTEROP_ENABLED: "1", CONDA_AUTO_ACTIVATE_BASE: "false", PYTHONNOUSERSITE: "1" }
540
- this.env = { CONDA_AUTO_ACTIVATE_BASE: "false", PYTHONNOUSERSITE: "1" }
541
- }
542
- } else if (params.venv) {
543
- let env_path = path.resolve(params.path, params.venv)
544
- let activate_path = (this.platform === 'win32' ? path.resolve(env_path, "Scripts", "activate") : path.resolve(env_path, "bin", "activate"))
545
- let env_exists = await this.exists(env_path)
546
- if (env_exists) {
547
- params.message = [
548
507
 
549
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
550
- `conda deactivate`,
551
- `conda deactivate`,
552
- `conda deactivate`,
553
- `conda activate base`,
508
+ let env_path = path.resolve(params.path, conda_path)
509
+ let env_exists = await this.exists(env_path)
510
+ if (env_exists) {
511
+ conda_activation = [
512
+ (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
513
+ `conda deactivate`,
514
+ `conda deactivate`,
515
+ `conda deactivate`,
516
+ `conda activate ${env_path}`,
517
+ ]
518
+ } else {
519
+ conda_activation = [
520
+ (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
521
+ `conda create -y -p ${env_path} ${conda_python}`,
522
+ `conda deactivate`,
523
+ `conda deactivate`,
524
+ `conda deactivate`,
525
+ `conda activate ${env_path}`,
526
+ ]
527
+ }
554
528
 
555
- (this.platform === "win32" ? `${activate_path} ${env_path}` : `source ${activate_path} ${env_path}`),
556
- //'pip install --upgrade pip',
557
- // 'pip install --upgrade wheel pip setuptools',
558
- ].concat(params.message)
559
529
  } else {
560
- params.message = [
561
-
530
+ // base environment => no need to create
531
+ conda_activation = [
562
532
  (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
563
533
  `conda deactivate`,
564
534
  `conda deactivate`,
565
535
  `conda deactivate`,
566
536
  `conda activate base`,
537
+ ]
538
+ }
539
+ }
567
540
 
541
+ // Update env setting
542
+ if (this.env) {
543
+ // this.env.CONDA_PIP_INTEROP_ENABLED = "1"
544
+ this.env.CONDA_AUTO_ACTIVATE_BASE = "false"
545
+ this.env.PYTHONNOUSERSITE = "1"
546
+ } else {
547
+ //this.env = { CONDA_PIP_INTEROP_ENABLED: "1", CONDA_AUTO_ACTIVATE_BASE: "false", PYTHONNOUSERSITE: "1" }
548
+ this.env = { CONDA_AUTO_ACTIVATE_BASE: "false", PYTHONNOUSERSITE: "1" }
549
+ }
568
550
 
551
+
552
+
553
+ // 2. venv
554
+ let venv_activation
555
+ if (params.venv) {
556
+ let env_path = path.resolve(params.path, params.venv)
557
+ let activate_path = (this.platform === 'win32' ? path.resolve(env_path, "Scripts", "activate") : path.resolve(env_path, "bin", "activate"))
558
+ let env_exists = await this.exists(env_path)
559
+ if (env_exists) {
560
+ venv_activation = [
561
+ (this.platform === "win32" ? `${activate_path} ${env_path}` : `source ${activate_path} ${env_path}`),
562
+ ]
563
+ } else {
564
+ venv_activation = [
569
565
  `python -m venv ${env_path}`,
570
566
  (this.platform === "win32" ? `${activate_path} ${env_path}` : `source ${activate_path} ${env_path}`),
571
- //'pip install --upgrade pip',
572
- // 'pip install --upgrade wheel pip setuptools',
573
- ].concat(params.message)
567
+ ]
574
568
  }
575
569
  } else {
576
- params.message = [
577
- (this.platform === 'win32' ? 'conda_hook' : `eval "$(conda shell.bash hook)"`),
578
- `conda deactivate`,
579
- `conda deactivate`,
580
- `conda deactivate`,
581
- `conda activate base`,
582
- ].concat(params.message)
570
+ venv_activation = []
583
571
  }
584
572
 
573
+ // 3. construct params.message
574
+ params.message = conda_activation.concat(venv_activation).concat(params.message)
585
575
  return params
586
576
  }
587
577
  async exec(params) {
package/kernel/sysinfo.js CHANGED
@@ -100,7 +100,7 @@ class Sysinfo {
100
100
  } else {
101
101
  cmd = "env"
102
102
  }
103
- let res = await this.kernel.bin.exec({ message: cmd, conda: "base" }, (stream) => {
103
+ let res = await this.kernel.bin.exec({ message: cmd }, (stream) => {
104
104
  })
105
105
  let lines = res.response.split(/[\r\n]+/)
106
106
  let vars = []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pinokiod",
3
- "version": "1.2.4",
3
+ "version": "1.2.6",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {