module A2KM

Copyright Min RK, License: BSD 3-clause

Constants

VERSION

Public Class Methods

get_kernel(name) click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# 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) click to toggle source
# 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
new() click to toggle source
# File lib/a2km/api.rb, line 7
def initialize
  @kernels = nil
end
run() click to toggle source

Start the a2km entrypoint

# File lib/a2km/command.rb, line 13
def A2KM.run
  CLI.new.run
end
save_kernel_json(name, data) click to toggle source
# 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() click to toggle source
# File lib/a2km/api.rb, line 26
def A2KM.user_kernel_dir
  kernel_dirs.first
end