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.6'
Class Method Summary collapse
- .get_kernel(name) ⇒ Object
- .get_kernel_json(name) ⇒ Object
- .kernel_dirs ⇒ Object
- .kernel_json_path(name) ⇒ Object
- .kernels ⇒ Object
- .make_env_kernel(kernel_name, env_name, kind: 'conda', user: true) ⇒ Object
-
.run ⇒ Object
Start the a2km entrypoint.
- .save_kernel_json(name, data) ⇒ Object
- .user_kernel_dir ⇒ Object
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 |