iruby 0.2.9 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ubuntu.yml +62 -0
  3. data/CHANGES +64 -0
  4. data/Gemfile +3 -1
  5. data/LICENSE +1 -1
  6. data/README.md +120 -92
  7. data/Rakefile +36 -10
  8. data/ci/Dockerfile.base.erb +41 -0
  9. data/ci/Dockerfile.main.erb +7 -0
  10. data/ci/requirements.txt +1 -0
  11. data/docker/setup.sh +15 -0
  12. data/docker/test.sh +7 -0
  13. data/iruby.gemspec +13 -18
  14. data/lib/iruby.rb +13 -6
  15. data/lib/iruby/backend.rb +38 -9
  16. data/lib/iruby/command.rb +68 -12
  17. data/lib/iruby/display.rb +81 -41
  18. data/lib/iruby/event_manager.rb +40 -0
  19. data/lib/iruby/formatter.rb +3 -3
  20. data/lib/iruby/input.rb +6 -6
  21. data/lib/iruby/input/README.ipynb +55 -3
  22. data/lib/iruby/input/README.md +299 -0
  23. data/lib/iruby/input/autoload.rb +3 -2
  24. data/lib/iruby/input/builder.rb +4 -4
  25. data/lib/iruby/input/button.rb +2 -2
  26. data/lib/iruby/input/cancel.rb +1 -1
  27. data/lib/iruby/input/checkbox.rb +22 -4
  28. data/lib/iruby/input/date.rb +17 -6
  29. data/lib/iruby/input/field.rb +5 -4
  30. data/lib/iruby/input/file.rb +3 -3
  31. data/lib/iruby/input/form.rb +6 -6
  32. data/lib/iruby/input/label.rb +9 -3
  33. data/lib/iruby/input/multiple.rb +76 -0
  34. data/lib/iruby/input/popup.rb +5 -2
  35. data/lib/iruby/input/radio.rb +18 -6
  36. data/lib/iruby/input/select.rb +26 -12
  37. data/lib/iruby/input/textarea.rb +2 -1
  38. data/lib/iruby/input/widget.rb +2 -2
  39. data/lib/iruby/jupyter.rb +77 -0
  40. data/lib/iruby/kernel.rb +171 -31
  41. data/lib/iruby/ostream.rb +29 -8
  42. data/lib/iruby/session.rb +116 -0
  43. data/lib/iruby/session/{rbczmq.rb → cztop.rb} +21 -19
  44. data/lib/iruby/session/ffi_rzmq.rb +1 -1
  45. data/lib/iruby/session_adapter.rb +72 -0
  46. data/lib/iruby/session_adapter/cztop_adapter.rb +45 -0
  47. data/lib/iruby/session_adapter/ffirzmq_adapter.rb +55 -0
  48. data/lib/iruby/session_adapter/pyzmq_adapter.rb +77 -0
  49. data/lib/iruby/session_adapter/test_adapter.rb +49 -0
  50. data/lib/iruby/utils.rb +13 -2
  51. data/lib/iruby/version.rb +1 -1
  52. data/run-test.sh +12 -0
  53. data/tasks/ci.rake +65 -0
  54. data/test/helper.rb +133 -0
  55. data/test/integration_test.rb +22 -11
  56. data/test/iruby/backend_test.rb +37 -0
  57. data/test/iruby/command_test.rb +207 -0
  58. data/test/iruby/event_manager_test.rb +92 -0
  59. data/test/iruby/jupyter_test.rb +27 -0
  60. data/test/iruby/kernel_test.rb +153 -0
  61. data/test/iruby/mime_test.rb +43 -0
  62. data/test/iruby/multi_logger_test.rb +1 -2
  63. data/test/iruby/session_adapter/cztop_adapter_test.rb +20 -0
  64. data/test/iruby/session_adapter/ffirzmq_adapter_test.rb +20 -0
  65. data/test/iruby/session_adapter/session_adapter_test_base.rb +27 -0
  66. data/test/iruby/session_adapter_test.rb +91 -0
  67. data/test/iruby/session_test.rb +48 -0
  68. data/test/run-test.rb +19 -0
  69. metadata +107 -50
  70. data/.travis.yml +0 -16
  71. data/CONTRIBUTORS +0 -19
  72. data/test/test_helper.rb +0 -5
@@ -0,0 +1,48 @@
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
+ stub(IRuby::SessionAdapter::TestAdapter).available? { false }
42
+ assert_raises IRuby::SessionAdapterNotFound do
43
+ IRuby::Session.new(@session_config)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
data/test/run-test.rb ADDED
@@ -0,0 +1,19 @@
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
+ ENV["IRUBY_TEST_SESSION_ADAPTER_NAME"] ||= "ffi-rzmq"
18
+
19
+ 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.2.9
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler
@@ -9,50 +9,50 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-05-03 00:00:00.000000000 Z
12
+ date: 2021-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: data_uri
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '10.4'
21
- type: :development
20
+ version: '0.1'
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: '10.4'
27
+ version: '0.1'
28
28
  - !ruby/object:Gem::Dependency
29
- name: minitest
29
+ name: ffi-rzmq
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '5.6'
35
- type: :development
34
+ version: '0'
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: '5.6'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: bond
43
+ name: mime-types
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0.5'
48
+ version: 3.3.1
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.5'
55
+ version: 3.3.1
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: multi_json
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -68,35 +68,62 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.11'
70
70
  - !ruby/object:Gem::Dependency
71
- name: mimemagic
71
+ name: pycall
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: '0.3'
77
- type: :runtime
76
+ version: 1.2.1
77
+ type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '0.3'
83
+ version: 1.2.1
84
84
  - !ruby/object:Gem::Dependency
85
- name: data_uri
85
+ name: rake
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - "~>"
88
+ - - ">="
89
89
  - !ruby/object:Gem::Version
90
- version: '0.1'
91
- type: :runtime
90
+ version: '0'
91
+ type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
95
+ - - ">="
96
96
  - !ruby/object:Gem::Version
97
- version: '0.1'
98
- description: A Ruby kernel for Jupyter/IPython frontends (e.g. notebook). Try it at
99
- try.jupyter.org.
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: test-unit
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-rr
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
+ description: A Ruby kernel for Jupyter environment. Try it at try.jupyter.org.
100
127
  email:
101
128
  - mail@daniel-mendler.de
102
129
  executables:
@@ -104,15 +131,19 @@ executables:
104
131
  extensions: []
105
132
  extra_rdoc_files: []
106
133
  files:
134
+ - ".github/workflows/ubuntu.yml"
107
135
  - ".gitignore"
108
- - ".travis.yml"
109
136
  - CHANGES
110
- - CONTRIBUTORS
111
137
  - Gemfile
112
138
  - LICENSE
113
139
  - README.md
114
140
  - Rakefile
115
141
  - bin/iruby
142
+ - ci/Dockerfile.base.erb
143
+ - ci/Dockerfile.main.erb
144
+ - ci/requirements.txt
145
+ - docker/setup.sh
146
+ - docker/test.sh
116
147
  - iruby.gemspec
117
148
  - lib/iruby.rb
118
149
  - lib/iruby/assets/kernel.css
@@ -123,9 +154,11 @@ files:
123
154
  - lib/iruby/comm.rb
124
155
  - lib/iruby/command.rb
125
156
  - lib/iruby/display.rb
157
+ - lib/iruby/event_manager.rb
126
158
  - lib/iruby/formatter.rb
127
159
  - lib/iruby/input.rb
128
160
  - lib/iruby/input/README.ipynb
161
+ - lib/iruby/input/README.md
129
162
  - lib/iruby/input/autoload.rb
130
163
  - lib/iruby/input/builder.rb
131
164
  - lib/iruby/input/button.rb
@@ -136,38 +169,52 @@ files:
136
169
  - lib/iruby/input/file.rb
137
170
  - lib/iruby/input/form.rb
138
171
  - lib/iruby/input/label.rb
172
+ - lib/iruby/input/multiple.rb
139
173
  - lib/iruby/input/popup.rb
140
174
  - lib/iruby/input/radio.rb
141
175
  - lib/iruby/input/select.rb
142
176
  - lib/iruby/input/textarea.rb
143
177
  - lib/iruby/input/widget.rb
178
+ - lib/iruby/jupyter.rb
144
179
  - lib/iruby/kernel.rb
145
180
  - lib/iruby/logger.rb
146
181
  - lib/iruby/ostream.rb
182
+ - lib/iruby/session.rb
183
+ - lib/iruby/session/cztop.rb
147
184
  - lib/iruby/session/ffi_rzmq.rb
148
185
  - lib/iruby/session/mixin.rb
149
- - lib/iruby/session/rbczmq.rb
186
+ - lib/iruby/session_adapter.rb
187
+ - lib/iruby/session_adapter/cztop_adapter.rb
188
+ - lib/iruby/session_adapter/ffirzmq_adapter.rb
189
+ - lib/iruby/session_adapter/pyzmq_adapter.rb
190
+ - lib/iruby/session_adapter/test_adapter.rb
150
191
  - lib/iruby/utils.rb
151
192
  - lib/iruby/version.rb
152
193
  - logo/logo-32x32.png
153
194
  - logo/logo-64x64.png
154
195
  - logo/ruby.svg
196
+ - run-test.sh
197
+ - tasks/ci.rake
198
+ - test/helper.rb
155
199
  - test/integration_test.rb
200
+ - test/iruby/backend_test.rb
201
+ - test/iruby/command_test.rb
202
+ - test/iruby/event_manager_test.rb
203
+ - test/iruby/jupyter_test.rb
204
+ - test/iruby/kernel_test.rb
205
+ - test/iruby/mime_test.rb
156
206
  - test/iruby/multi_logger_test.rb
157
- - test/test_helper.rb
207
+ - test/iruby/session_adapter/cztop_adapter_test.rb
208
+ - test/iruby/session_adapter/ffirzmq_adapter_test.rb
209
+ - test/iruby/session_adapter/session_adapter_test_base.rb
210
+ - test/iruby/session_adapter_test.rb
211
+ - test/iruby/session_test.rb
212
+ - test/run-test.rb
158
213
  homepage: https://github.com/SciRuby/iruby
159
214
  licenses:
160
215
  - MIT
161
216
  metadata: {}
162
- post_install_message: |+
163
- Consider installing the optional dependencies to get additional functionality:
164
- * pry
165
- * pry-doc
166
- * awesome_print
167
- * gnuplot
168
- * rubyvis
169
- * nyaplot
170
-
217
+ post_install_message:
171
218
  rdoc_options: []
172
219
  require_paths:
173
220
  - lib
@@ -175,20 +222,30 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
222
  requirements:
176
223
  - - ">="
177
224
  - !ruby/object:Gem::Version
178
- version: 2.1.0
225
+ version: 2.3.0
179
226
  required_rubygems_version: !ruby/object:Gem::Requirement
180
227
  requirements:
181
228
  - - ">="
182
229
  - !ruby/object:Gem::Version
183
230
  version: '0'
184
231
  requirements: []
185
- rubyforge_project:
186
- rubygems_version: 2.4.6
232
+ rubygems_version: 3.2.3
187
233
  signing_key:
188
234
  specification_version: 4
189
- summary: Ruby Kernel for Jupyter/IPython
235
+ summary: Ruby Kernel for Jupyter
190
236
  test_files:
237
+ - test/helper.rb
191
238
  - test/integration_test.rb
239
+ - test/iruby/backend_test.rb
240
+ - test/iruby/command_test.rb
241
+ - test/iruby/event_manager_test.rb
242
+ - test/iruby/jupyter_test.rb
243
+ - test/iruby/kernel_test.rb
244
+ - test/iruby/mime_test.rb
192
245
  - test/iruby/multi_logger_test.rb
193
- - test/test_helper.rb
194
- has_rdoc:
246
+ - test/iruby/session_adapter/cztop_adapter_test.rb
247
+ - test/iruby/session_adapter/ffirzmq_adapter_test.rb
248
+ - test/iruby/session_adapter/session_adapter_test_base.rb
249
+ - test/iruby/session_adapter_test.rb
250
+ - test/iruby/session_test.rb
251
+ - test/run-test.rb
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - ruby-head
5
- - 2.2.2
6
- - 2.1.6
7
- - 2.0.0
8
-
9
- before_install:
10
- - "sudo apt-get install libzmq3-dev"
11
- - "sudo pip install 'ipython[notebook]'"
12
-
13
- script: bundle exec rake
14
-
15
- notifications:
16
- irc: "chat.freenode.net#sciruby"
data/CONTRIBUTORS DELETED
@@ -1,19 +0,0 @@
1
- Carlos Agarie <carlos.agarie@gmail.com>
2
- Damián Silvani <munshkr@gmail.com>
3
- Dangyi Liu <LeedyPKU@gmail.com>
4
- Daniel Mendler <mail@daniel-mendler.de>
5
- Dimitris Zorbas <zorbash@skroutz.gr>
6
- Domitry <domitry@gmail.com>
7
- Jan Vlnas <git@jan.vlnas.cz>
8
- John Woods <jwoods@vt.edu>
9
- Josh Adams <josh@isotope11.com>
10
- Julia Evans <julia@jvns.ca>
11
- martin sarsale <martin@properati.com>
12
- Matthias Bussonnier <bussonniermatthias@gmail.com>
13
- Michael Hauser-Raspe <michael.hauser-raspe@cantab.net>
14
- MinRK <benjaminrk@gmail.com>
15
- Naoki Nishida <domitry@gmail.com>
16
- Robby Clements <rclements@isotope11.com>
17
- Spacewander <spacewanderlzx@gmail.com>
18
- Takahiro Satoh <zalt50cc@gmail.com>
19
- Robert Haines <robert.haines@manchester.ac.uk>
data/test/test_helper.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'iruby'
2
- require 'minitest/autorun'
3
-
4
- class IRubyTest < Minitest::Test
5
- end