Module: A2KM
- Defined in:
- lib/a2km/version.rb,
lib/a2km/api.rb,
lib/a2km/env.rb,
lib/a2km/command.rb
Overview
Copyright Min RK, License: BSD 3-clause
Defined Under Namespace
Modules: ENV_UTILS
Classes: CLI
Constant Summary
collapse
- VERSION =
'0.0.7'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.get_kernel(name) ⇒ Object
30
31
32
33
34
35
36
37
38
|
# File 'lib/a2km/api.rb', line 30
def A2KM.get_kernel(name)
"Get a kernel by name. Die with message if not found."
if not kernels.has_key? name
STDERR.puts "No such kernel: #{name}"
STDERR.puts "Found kernels: #{kernels.keys.sort.join(' ')}"
exit(-1)
end
kernels[name]
end
|
.get_kernel_json(name) ⇒ Object
46
47
48
49
50
51
|
# File 'lib/a2km/api.rb', line 46
def A2KM.get_kernel_json(name)
"Return kernel.json contents for a given kernelspec"
File.open(kernel_json_path(name)) do |f|
return JSON.parse f.read
end
end
|
.kernel_dirs ⇒ Object
19
20
21
22
23
24
|
# File 'lib/a2km/api.rb', line 19
def A2KM.kernel_dirs
paths = JSON.parse `jupyter --paths --json`
paths['data'].map do |p|
p + '/' + 'kernels'
end
end
|
.kernel_json_path(name) ⇒ Object
40
41
42
43
44
|
# File 'lib/a2km/api.rb', line 40
def A2KM.kernel_json_path(name)
"Return path to a kernel's kernel.json"
kernel = get_kernel(name)
File.join(kernel['resource_dir'], 'kernel.json')
end
|
.kernels ⇒ Object
11
12
13
14
15
16
17
|
# File 'lib/a2km/api.rb', line 11
def A2KM.kernels
if @kernels.nil?
js = JSON.parse `jupyter kernelspec list --json`
@kernels = js['kernelspecs']
end
@kernels
end
|
.make_env_kernel(kernel_name, env_name, kind: 'conda', user: true) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/a2km/env.rb', line 80
def self.make_env_kernel(kernel_name, env_name, kind: 'conda', user: true)
v = ENV_UTILS.ipykernel_version(env_name, kind: kind)
puts "Found ipykernel-#{v}"
if user
user_arg = '--user'
else
user_arg = ''
end
ENV_UTILS.in_env(env_name, "python -m ipykernel.kernelspec --name #{kernel_name} #{user_arg}", kind: kind)
exe = ENV_UTILS.make_kernel_exe(kernel_name, env_name, kind: kind)
spec = A2KM.get_kernel_json(kernel_name)
spec['argv'] = [exe, '-f', '{connection_file}']
spec['display_name'] = "#{spec['display_name']} (#{kind}:#{env_name})"
A2KM.save_kernel_json(kernel_name, spec)
end
|
.run ⇒ Object
Start the a2km entrypoint
13
14
15
|
# File 'lib/a2km/command.rb', line 13
def A2KM.run
CLI.new.run
end
|
.save_kernel_json(name, data) ⇒ Object
53
54
55
56
57
58
|
# File 'lib/a2km/api.rb', line 53
def A2KM.save_kernel_json(name, data)
"save new kernel JSON"
File.open(kernel_json_path(name), 'w') do |f|
f.write JSON.pretty_generate(data)
end
end
|
.user_kernel_dir ⇒ Object
26
27
28
|
# File 'lib/a2km/api.rb', line 26
def A2KM.user_kernel_dir
kernel_dirs.first
end
|
Instance Method Details
#initialize ⇒ Object
7
8
9
|
# File 'lib/a2km/api.rb', line 7
def initialize
@kernels = nil
end
|