iruby 0.2.7 → 0.5.0
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.
- checksums.yaml +5 -5
- data/.github/workflows/ubuntu.yml +62 -0
- data/CHANGES +62 -0
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/README.md +148 -27
- data/Rakefile +36 -10
- data/ci/Dockerfile.base.erb +41 -0
- data/ci/Dockerfile.main.erb +7 -0
- data/ci/requirements.txt +1 -0
- data/docker/setup.sh +15 -0
- data/docker/test.sh +7 -0
- data/iruby.gemspec +14 -18
- data/lib/iruby.rb +19 -3
- data/lib/iruby/backend.rb +22 -2
- data/lib/iruby/command.rb +76 -13
- data/lib/iruby/display.rb +69 -39
- data/lib/iruby/formatter.rb +5 -4
- data/lib/iruby/input.rb +41 -0
- data/lib/iruby/input/README.ipynb +502 -0
- data/lib/iruby/input/README.md +299 -0
- data/lib/iruby/input/autoload.rb +25 -0
- data/lib/iruby/input/builder.rb +67 -0
- data/lib/iruby/input/button.rb +47 -0
- data/lib/iruby/input/cancel.rb +32 -0
- data/lib/iruby/input/checkbox.rb +74 -0
- data/lib/iruby/input/date.rb +37 -0
- data/lib/iruby/input/field.rb +31 -0
- data/lib/iruby/input/file.rb +57 -0
- data/lib/iruby/input/form.rb +77 -0
- data/lib/iruby/input/label.rb +27 -0
- data/lib/iruby/input/multiple.rb +76 -0
- data/lib/iruby/input/popup.rb +41 -0
- data/lib/iruby/input/radio.rb +59 -0
- data/lib/iruby/input/select.rb +59 -0
- data/lib/iruby/input/textarea.rb +23 -0
- data/lib/iruby/input/widget.rb +34 -0
- data/lib/iruby/jupyter.rb +77 -0
- data/lib/iruby/kernel.rb +67 -22
- data/lib/iruby/ostream.rb +24 -8
- data/lib/iruby/session.rb +85 -67
- data/lib/iruby/session/cztop.rb +70 -0
- data/lib/iruby/session/ffi_rzmq.rb +87 -0
- data/lib/iruby/session/mixin.rb +47 -0
- data/lib/iruby/session_adapter.rb +66 -0
- data/lib/iruby/session_adapter/cztop_adapter.rb +45 -0
- data/lib/iruby/session_adapter/ffirzmq_adapter.rb +55 -0
- data/lib/iruby/session_adapter/pyzmq_adapter.rb +77 -0
- data/lib/iruby/utils.rb +5 -2
- data/lib/iruby/version.rb +1 -1
- data/run-test.sh +12 -0
- data/tasks/ci.rake +65 -0
- data/test/helper.rb +90 -0
- data/test/integration_test.rb +22 -11
- data/test/iruby/backend_test.rb +37 -0
- data/test/iruby/command_test.rb +207 -0
- data/test/iruby/jupyter_test.rb +27 -0
- data/test/iruby/mime_test.rb +32 -0
- data/test/iruby/multi_logger_test.rb +1 -2
- data/test/iruby/session_adapter/cztop_adapter_test.rb +20 -0
- data/test/iruby/session_adapter/ffirzmq_adapter_test.rb +20 -0
- data/test/iruby/session_adapter/session_adapter_test_base.rb +27 -0
- data/test/iruby/session_adapter_test.rb +91 -0
- data/test/iruby/session_test.rb +47 -0
- data/test/run-test.rb +18 -0
- metadata +130 -46
- data/.travis.yml +0 -16
- data/CONTRIBUTORS +0 -19
- data/test/test_helper.rb +0 -5
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'iruby/jupyter'
|
2
|
+
|
3
|
+
module IRubyTest
|
4
|
+
class JupyterDefaultKernelSpecDirectoryTest < TestBase
|
5
|
+
def setup
|
6
|
+
@kernel_spec = IRuby::Jupyter.kernelspec_dir
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_default_windows
|
10
|
+
windows_only
|
11
|
+
appdata = IRuby::Jupyter.send :windows_user_appdata
|
12
|
+
assert_equal(File.join(appdata, 'jupyter/kernels'), @kernel_spec)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_default_apple
|
16
|
+
apple_only
|
17
|
+
assert_equal(File.expand_path('~/Library/Jupyter/kernels'), @kernel_spec)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_default_unix
|
21
|
+
unix_only
|
22
|
+
with_env('XDG_DATA_HOME' => nil) do
|
23
|
+
assert_equal(File.expand_path('~/.local/share/jupyter/kernels'), @kernel_spec)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class IRubyTest::MimeTest < IRubyTest::TestBase
|
2
|
+
sub_test_case("IRuby::Display") do
|
3
|
+
def test_display_with_mime_type
|
4
|
+
html = "<b>Bold Text</b>"
|
5
|
+
|
6
|
+
obj = Object.new
|
7
|
+
obj.define_singleton_method(:to_s) { html }
|
8
|
+
|
9
|
+
res = IRuby::Display.display(obj, mime: "text/html")
|
10
|
+
assert_equal({ plain: obj.inspect, html: html },
|
11
|
+
{ plain: res["text/plain"], html: res["text/html"] })
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
sub_test_case("Rendering a file") do
|
16
|
+
def setup
|
17
|
+
@html = "<b>Bold Text</b>"
|
18
|
+
Dir.mktmpdir do |tmpdir|
|
19
|
+
@file = File.join(tmpdir, "test.html")
|
20
|
+
File.write(@file, @html)
|
21
|
+
yield
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_display
|
26
|
+
File.open(@file, "rb") do |f|
|
27
|
+
res = IRuby::Display.display(f)
|
28
|
+
assert_equal(@html, res["text/html"])
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -1,8 +1,7 @@
|
|
1
1
|
require 'stringio'
|
2
|
-
require 'test_helper'
|
3
2
|
require 'iruby/logger'
|
4
3
|
|
5
|
-
class MultiLoggerTest < IRubyTest
|
4
|
+
class IRubyTest::MultiLoggerTest < IRubyTest::TestBase
|
6
5
|
def test_multilogger
|
7
6
|
out, err = StringIO.new, StringIO.new
|
8
7
|
logger = IRuby::MultiLogger.new(Logger.new(out), Logger.new(err))
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'session_adapter_test_base'
|
2
|
+
require 'iruby'
|
3
|
+
|
4
|
+
module IRubyTest
|
5
|
+
if ENV['IRUBY_TEST_SESSION_ADAPTER_NAME'] == 'cztop'
|
6
|
+
class CztopAdapterTest < SessionAdapterTestBase
|
7
|
+
def adapter_class
|
8
|
+
IRuby::SessionAdapter::CztopAdapter
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_send
|
12
|
+
assert(adapter_class.available?)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_recv
|
16
|
+
omit
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'session_adapter_test_base'
|
2
|
+
require 'iruby'
|
3
|
+
|
4
|
+
module IRubyTest
|
5
|
+
if ENV['IRUBY_TEST_SESSION_ADAPTER_NAME'] == 'ffi-rzmq'
|
6
|
+
class FfirzmqAdapterTest < SessionAdapterTestBase
|
7
|
+
def adapter_class
|
8
|
+
IRuby::SessionAdapter::FfirzmqAdapter
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_send
|
12
|
+
assert(adapter_class.available?)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_recv
|
16
|
+
omit
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module IRubyTest
|
2
|
+
class SessionAdapterTestBase < TestBase
|
3
|
+
# https://jupyter-client.readthedocs.io/en/stable/kernels.html#connection-files
|
4
|
+
def make_connection_config
|
5
|
+
{
|
6
|
+
"control_port" => 50160,
|
7
|
+
"shell_port" => 57503,
|
8
|
+
"transport" => "tcp",
|
9
|
+
"signature_scheme" => "hmac-sha256",
|
10
|
+
"stdin_port" => 52597,
|
11
|
+
"hb_port" => 42540,
|
12
|
+
"ip" => "127.0.0.1",
|
13
|
+
"iopub_port" => 40885,
|
14
|
+
"key" => "a0436f6c-1916-498b-8eb9-e81ab9368e84"
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@config = make_connection_config
|
20
|
+
@session_adapter = adapter_class.new(@config)
|
21
|
+
|
22
|
+
unless adapter_class.available?
|
23
|
+
omit("#{@session_adapter.name} is unavailable")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module IRubyTest
|
2
|
+
class SessionAdapterTest < TestBase
|
3
|
+
def test_available_p_return_false_when_load_error
|
4
|
+
subclass = Class.new(IRuby::SessionAdapter::BaseAdapter)
|
5
|
+
class << subclass
|
6
|
+
def load_requirements
|
7
|
+
raise LoadError
|
8
|
+
end
|
9
|
+
end
|
10
|
+
refute subclass.available?
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_select_adapter_class_with_cztop
|
14
|
+
assert_rr do
|
15
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { true }
|
16
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
|
17
|
+
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }
|
18
|
+
|
19
|
+
cls = IRuby::SessionAdapter.select_adapter_class
|
20
|
+
assert_equal IRuby::SessionAdapter::CztopAdapter, cls
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_select_adapter_class_with_ffirzmq
|
25
|
+
assert_rr do
|
26
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { true }
|
27
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
|
28
|
+
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }
|
29
|
+
|
30
|
+
cls = IRuby::SessionAdapter.select_adapter_class
|
31
|
+
assert_equal IRuby::SessionAdapter::FfirzmqAdapter, cls
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_select_adapter_class_with_pyzmq
|
36
|
+
omit("pyzmq adapter is disabled")
|
37
|
+
assert_rr do
|
38
|
+
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { true }
|
39
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
|
40
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
|
41
|
+
|
42
|
+
cls = IRuby::SessionAdapter.select_adapter_class
|
43
|
+
assert_equal IRuby::SessionAdapter::PyzmqAdapter, cls
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_select_adapter_class_with_env
|
48
|
+
with_env('IRUBY_SESSION_ADAPTER' => 'cztop') do
|
49
|
+
assert_rr do
|
50
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { true }
|
51
|
+
assert_equal IRuby::SessionAdapter::CztopAdapter, IRuby::SessionAdapter.select_adapter_class
|
52
|
+
end
|
53
|
+
|
54
|
+
assert_rr do
|
55
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
|
56
|
+
assert_raises IRuby::SessionAdapterNotFound do
|
57
|
+
IRuby::SessionAdapter.select_adapter_class
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
with_env('IRUBY_SESSION_ADAPTER' => 'ffi-rzmq') do
|
63
|
+
assert_rr do
|
64
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { true }
|
65
|
+
assert_equal IRuby::SessionAdapter::FfirzmqAdapter, IRuby::SessionAdapter.select_adapter_class
|
66
|
+
end
|
67
|
+
|
68
|
+
assert_rr do
|
69
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
|
70
|
+
assert_raises IRuby::SessionAdapterNotFound do
|
71
|
+
IRuby::SessionAdapter.select_adapter_class
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
with_env('IRUBY_SESSION_ADAPTER' => 'pyzmq') do
|
77
|
+
# pyzmq adapter is disabled
|
78
|
+
#
|
79
|
+
# IRuby::SessionAdapter::PyzmqAdapter.stub :available?, true do
|
80
|
+
# assert_equal IRuby::SessionAdapter::PyzmqAdapter, IRuby::SessionAdapter.select_adapter_class
|
81
|
+
# end
|
82
|
+
#
|
83
|
+
# IRuby::SessionAdapter::PyzmqAdapter.stub :available?, false do
|
84
|
+
# assert_raises IRuby::SessionAdapterNotFound do
|
85
|
+
# IRuby::SessionAdapter.select_adapter_class
|
86
|
+
# end
|
87
|
+
# end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module IRubyTest
|
2
|
+
class SessionAdapterSelectionTest < TestBase
|
3
|
+
def setup
|
4
|
+
# https://jupyter-client.readthedocs.io/en/stable/kernels.html#connection-files
|
5
|
+
@session_config = {
|
6
|
+
"control_port" => 0,
|
7
|
+
"shell_port" => 0,
|
8
|
+
"transport" => "tcp",
|
9
|
+
"signature_scheme" => "hmac-sha256",
|
10
|
+
"stdin_port" => 0,
|
11
|
+
"hb_port" => 0,
|
12
|
+
"ip" => "127.0.0.1",
|
13
|
+
"iopub_port" => 0,
|
14
|
+
"key" => "a0436f6c-1916-498b-8eb9-e81ab9368e84"
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_new_with_session_adapter
|
19
|
+
adapter_name = ENV['IRUBY_TEST_SESSION_ADAPTER_NAME']
|
20
|
+
adapter_class = case adapter_name
|
21
|
+
when 'cztop'
|
22
|
+
IRuby::SessionAdapter::CztopAdapter
|
23
|
+
when 'ffi-rzmq'
|
24
|
+
IRuby::SessionAdapter::FfirzmqAdapter
|
25
|
+
when 'pyzmq'
|
26
|
+
omit("pyzmq adapter is disabled")
|
27
|
+
# IRuby::SessionAdapter::PyzmqAdapter
|
28
|
+
else
|
29
|
+
flunk "Unknown session adapter: #{adapter_name.inspect}"
|
30
|
+
end
|
31
|
+
|
32
|
+
session = IRuby::Session.new(@session_config, adapter_name)
|
33
|
+
assert_kind_of(adapter_class, session.adapter)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_without_any_session_adapter
|
37
|
+
assert_rr do
|
38
|
+
stub(IRuby::SessionAdapter::CztopAdapter).available? { false }
|
39
|
+
stub(IRuby::SessionAdapter::FfirzmqAdapter).available? { false }
|
40
|
+
stub(IRuby::SessionAdapter::PyzmqAdapter).available? { false }
|
41
|
+
assert_raises IRuby::SessionAdapterNotFound do
|
42
|
+
IRuby::Session.new(@session_config)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/test/run-test.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$VERBOSE = true
|
4
|
+
|
5
|
+
require "pathname"
|
6
|
+
|
7
|
+
base_dir = Pathname.new(__dir__).parent.expand_path
|
8
|
+
|
9
|
+
lib_dir = base_dir + "lib"
|
10
|
+
test_dir = base_dir + "test"
|
11
|
+
|
12
|
+
$LOAD_PATH.unshift(lib_dir.to_s)
|
13
|
+
|
14
|
+
require_relative "helper"
|
15
|
+
|
16
|
+
ENV["TEST_UNIT_MAX_DIFF_TARGET_STRING_SIZE"] ||= "10000"
|
17
|
+
|
18
|
+
exit Test::Unit::AutoRunner.run(true, test_dir)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Mendler
|
@@ -9,64 +9,64 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-03-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: bond
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
21
|
-
type: :
|
20
|
+
version: '0.5'
|
21
|
+
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '0.5'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: data_uri
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
35
|
-
type: :
|
34
|
+
version: '0.1'
|
35
|
+
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '0.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: ffi-rzmq
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0
|
48
|
+
version: '0'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0
|
55
|
+
version: '0'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: mime-types
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
62
|
+
version: 3.3.1
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 3.3.1
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: multi_json
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,21 +82,62 @@ dependencies:
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '1.11'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: pycall
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
|
-
- - "
|
88
|
+
- - ">="
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
91
|
-
type: :
|
90
|
+
version: 1.2.1
|
91
|
+
type: :development
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
|
-
- - "
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 1.2.1
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: rake
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: test-unit
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: test-unit-rr
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
96
138
|
- !ruby/object:Gem::Version
|
97
|
-
version: '0
|
98
|
-
description: A Ruby kernel for Jupyter
|
99
|
-
try.jupyter.org.
|
139
|
+
version: '0'
|
140
|
+
description: A Ruby kernel for Jupyter environment. Try it at try.jupyter.org.
|
100
141
|
email:
|
101
142
|
- mail@daniel-mendler.de
|
102
143
|
executables:
|
@@ -104,15 +145,19 @@ executables:
|
|
104
145
|
extensions: []
|
105
146
|
extra_rdoc_files: []
|
106
147
|
files:
|
148
|
+
- ".github/workflows/ubuntu.yml"
|
107
149
|
- ".gitignore"
|
108
|
-
- ".travis.yml"
|
109
150
|
- CHANGES
|
110
|
-
- CONTRIBUTORS
|
111
151
|
- Gemfile
|
112
152
|
- LICENSE
|
113
153
|
- README.md
|
114
154
|
- Rakefile
|
115
155
|
- bin/iruby
|
156
|
+
- ci/Dockerfile.base.erb
|
157
|
+
- ci/Dockerfile.main.erb
|
158
|
+
- ci/requirements.txt
|
159
|
+
- docker/setup.sh
|
160
|
+
- docker/test.sh
|
116
161
|
- iruby.gemspec
|
117
162
|
- lib/iruby.rb
|
118
163
|
- lib/iruby/assets/kernel.css
|
@@ -124,31 +169,62 @@ files:
|
|
124
169
|
- lib/iruby/command.rb
|
125
170
|
- lib/iruby/display.rb
|
126
171
|
- lib/iruby/formatter.rb
|
172
|
+
- lib/iruby/input.rb
|
173
|
+
- lib/iruby/input/README.ipynb
|
174
|
+
- lib/iruby/input/README.md
|
175
|
+
- lib/iruby/input/autoload.rb
|
176
|
+
- lib/iruby/input/builder.rb
|
177
|
+
- lib/iruby/input/button.rb
|
178
|
+
- lib/iruby/input/cancel.rb
|
179
|
+
- lib/iruby/input/checkbox.rb
|
180
|
+
- lib/iruby/input/date.rb
|
181
|
+
- lib/iruby/input/field.rb
|
182
|
+
- lib/iruby/input/file.rb
|
183
|
+
- lib/iruby/input/form.rb
|
184
|
+
- lib/iruby/input/label.rb
|
185
|
+
- lib/iruby/input/multiple.rb
|
186
|
+
- lib/iruby/input/popup.rb
|
187
|
+
- lib/iruby/input/radio.rb
|
188
|
+
- lib/iruby/input/select.rb
|
189
|
+
- lib/iruby/input/textarea.rb
|
190
|
+
- lib/iruby/input/widget.rb
|
191
|
+
- lib/iruby/jupyter.rb
|
127
192
|
- lib/iruby/kernel.rb
|
128
193
|
- lib/iruby/logger.rb
|
129
194
|
- lib/iruby/ostream.rb
|
130
195
|
- lib/iruby/session.rb
|
196
|
+
- lib/iruby/session/cztop.rb
|
197
|
+
- lib/iruby/session/ffi_rzmq.rb
|
198
|
+
- lib/iruby/session/mixin.rb
|
199
|
+
- lib/iruby/session_adapter.rb
|
200
|
+
- lib/iruby/session_adapter/cztop_adapter.rb
|
201
|
+
- lib/iruby/session_adapter/ffirzmq_adapter.rb
|
202
|
+
- lib/iruby/session_adapter/pyzmq_adapter.rb
|
131
203
|
- lib/iruby/utils.rb
|
132
204
|
- lib/iruby/version.rb
|
133
205
|
- logo/logo-32x32.png
|
134
206
|
- logo/logo-64x64.png
|
135
207
|
- logo/ruby.svg
|
208
|
+
- run-test.sh
|
209
|
+
- tasks/ci.rake
|
210
|
+
- test/helper.rb
|
136
211
|
- test/integration_test.rb
|
212
|
+
- test/iruby/backend_test.rb
|
213
|
+
- test/iruby/command_test.rb
|
214
|
+
- test/iruby/jupyter_test.rb
|
215
|
+
- test/iruby/mime_test.rb
|
137
216
|
- test/iruby/multi_logger_test.rb
|
138
|
-
- test/
|
217
|
+
- test/iruby/session_adapter/cztop_adapter_test.rb
|
218
|
+
- test/iruby/session_adapter/ffirzmq_adapter_test.rb
|
219
|
+
- test/iruby/session_adapter/session_adapter_test_base.rb
|
220
|
+
- test/iruby/session_adapter_test.rb
|
221
|
+
- test/iruby/session_test.rb
|
222
|
+
- test/run-test.rb
|
139
223
|
homepage: https://github.com/SciRuby/iruby
|
140
224
|
licenses:
|
141
225
|
- MIT
|
142
226
|
metadata: {}
|
143
|
-
post_install_message:
|
144
|
-
Consider installing the optional dependencies to get additional functionality:
|
145
|
-
* pry
|
146
|
-
* pry-doc
|
147
|
-
* awesome_print
|
148
|
-
* gnuplot
|
149
|
-
* rubyvis
|
150
|
-
* nyaplot
|
151
|
-
|
227
|
+
post_install_message:
|
152
228
|
rdoc_options: []
|
153
229
|
require_paths:
|
154
230
|
- lib
|
@@ -156,20 +232,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
156
232
|
requirements:
|
157
233
|
- - ">="
|
158
234
|
- !ruby/object:Gem::Version
|
159
|
-
version: 2.
|
235
|
+
version: 2.3.0
|
160
236
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
237
|
requirements:
|
162
238
|
- - ">="
|
163
239
|
- !ruby/object:Gem::Version
|
164
240
|
version: '0'
|
165
241
|
requirements: []
|
166
|
-
|
167
|
-
rubygems_version: 2.2.2
|
242
|
+
rubygems_version: 3.2.3
|
168
243
|
signing_key:
|
169
244
|
specification_version: 4
|
170
|
-
summary: Ruby Kernel for Jupyter
|
245
|
+
summary: Ruby Kernel for Jupyter
|
171
246
|
test_files:
|
247
|
+
- test/helper.rb
|
172
248
|
- test/integration_test.rb
|
249
|
+
- test/iruby/backend_test.rb
|
250
|
+
- test/iruby/command_test.rb
|
251
|
+
- test/iruby/jupyter_test.rb
|
252
|
+
- test/iruby/mime_test.rb
|
173
253
|
- test/iruby/multi_logger_test.rb
|
174
|
-
- test/
|
175
|
-
|
254
|
+
- test/iruby/session_adapter/cztop_adapter_test.rb
|
255
|
+
- test/iruby/session_adapter/ffirzmq_adapter_test.rb
|
256
|
+
- test/iruby/session_adapter/session_adapter_test_base.rb
|
257
|
+
- test/iruby/session_adapter_test.rb
|
258
|
+
- test/iruby/session_test.rb
|
259
|
+
- test/run-test.rb
|