indico 0.9.5 → 0.9.6
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.
- data/lib/indico.rb +49 -33
- data/lib/indico/helper.rb +9 -3
- data/lib/indico/version.rb +1 -1
- data/spec/custom_spec.rb +101 -3
- data/spec/indico_spec.rb +2 -2
- metadata +2 -2
data/lib/indico.rb
CHANGED
@@ -170,13 +170,25 @@ module Indico
|
|
170
170
|
|
171
171
|
def initialize(collection, config = nil)
|
172
172
|
if collection.kind_of?(String)
|
173
|
-
@
|
174
|
-
|
173
|
+
@keywords = {
|
174
|
+
"shared" => config.nil? ? nil : config["shared"],
|
175
|
+
"domain" => config.nil? ? nil : config["domain"],
|
176
|
+
"collection" => collection
|
177
|
+
}
|
178
|
+
|
175
179
|
else
|
176
180
|
raise TypeError, "Collection must be initialized with a String name"
|
177
181
|
end
|
178
182
|
end
|
179
183
|
|
184
|
+
def _api_handler(data, api, config = nil, method = 'predict')
|
185
|
+
if config.nil?
|
186
|
+
config = Hash.new()
|
187
|
+
end
|
188
|
+
config = @keywords.merge(config)
|
189
|
+
Indico.api_handler(data, api, config, method)
|
190
|
+
end
|
191
|
+
|
180
192
|
def add_data(data, config = nil)
|
181
193
|
|
182
194
|
is_batch = data[0].kind_of?(Array)
|
@@ -187,23 +199,11 @@ module Indico
|
|
187
199
|
else
|
188
200
|
data[0] = Indico::preprocess(data[0], 512, true)
|
189
201
|
end
|
190
|
-
|
191
|
-
if config.nil?
|
192
|
-
config = Hash.new()
|
193
|
-
end
|
194
|
-
if @domain
|
195
|
-
config[:domain] = @domain
|
196
|
-
end
|
197
|
-
config[:collection] = @collection
|
198
|
-
Indico.api_handler(data, 'custom', config, 'add_data')
|
202
|
+
_api_handler(data, 'custom', config, 'add_data')
|
199
203
|
end
|
200
204
|
|
201
205
|
def train(config = nil)
|
202
|
-
|
203
|
-
config = Hash.new()
|
204
|
-
end
|
205
|
-
config[:collection] = @collection
|
206
|
-
Indico.api_handler(nil, 'custom', config, 'train')
|
206
|
+
_api_handler(nil, 'custom', config, 'train')
|
207
207
|
end
|
208
208
|
|
209
209
|
def wait(interval = 1)
|
@@ -220,40 +220,56 @@ module Indico
|
|
220
220
|
end
|
221
221
|
|
222
222
|
def info(config = nil)
|
223
|
-
|
224
|
-
config = Hash.new()
|
225
|
-
end
|
226
|
-
config[:collection] = @collection
|
227
|
-
Indico.api_handler(nil, 'custom', config, 'info')
|
223
|
+
_api_handler(nil, 'custom', config, 'info')
|
228
224
|
end
|
229
225
|
|
230
226
|
def predict(data, config = nil)
|
231
227
|
data = Indico::preprocess(data, 512, true)
|
228
|
+
_api_handler(data, 'custom', config, 'predict')
|
229
|
+
end
|
230
|
+
|
231
|
+
def remove_example(data, config = nil)
|
232
|
+
data = Indico::preprocess(data, 512, true)
|
233
|
+
_api_handler(data, 'custom', config, 'remove_example')
|
234
|
+
end
|
235
|
+
|
236
|
+
def clear(config = nil)
|
237
|
+
_api_handler(nil, 'custom', config, 'clear_collection')
|
238
|
+
end
|
239
|
+
|
240
|
+
def rename(name, config = nil)
|
232
241
|
if config.nil?
|
233
242
|
config = Hash.new()
|
234
243
|
end
|
235
|
-
config[:
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
Indico.api_handler(data, 'custom', config, 'predict')
|
244
|
+
config[:name] = name
|
245
|
+
result = _api_handler(nil, 'custom', config, 'rename')
|
246
|
+
@keywords['collection'] = name
|
247
|
+
return result
|
240
248
|
end
|
241
249
|
|
242
|
-
def
|
243
|
-
|
250
|
+
def register(config = nil)
|
251
|
+
_api_handler(nil, 'custom', config, 'register')
|
252
|
+
end
|
253
|
+
|
254
|
+
def deregister(config = nil)
|
255
|
+
_api_handler(nil, 'custom', config, 'deregister')
|
256
|
+
end
|
257
|
+
|
258
|
+
def authorize(email, permission_type = 'read', config = nil)
|
244
259
|
if config.nil?
|
245
260
|
config = Hash.new()
|
246
261
|
end
|
247
|
-
config[:
|
248
|
-
|
262
|
+
config[:email] = email
|
263
|
+
config[:permission_type] = permission_type
|
264
|
+
_api_handler(nil, 'custom', config, 'authorize')
|
249
265
|
end
|
250
266
|
|
251
|
-
def
|
267
|
+
def deauthorize(email, config = nil)
|
252
268
|
if config.nil?
|
253
269
|
config = Hash.new()
|
254
270
|
end
|
255
|
-
config[:
|
256
|
-
|
271
|
+
config[:email] = email
|
272
|
+
_api_handler(nil, 'custom', config, 'deauthorize')
|
257
273
|
end
|
258
274
|
end
|
259
275
|
end
|
data/lib/indico/helper.rb
CHANGED
@@ -17,10 +17,16 @@ module Indico
|
|
17
17
|
version = nil
|
18
18
|
|
19
19
|
d = {}
|
20
|
-
|
20
|
+
if data != nil
|
21
|
+
d['data'] = data
|
22
|
+
end
|
21
23
|
|
22
|
-
if
|
23
|
-
if api != "apis/intersections"
|
24
|
+
if !(api == "custom" && method == "add_data")
|
25
|
+
if api != "apis/intersections" and data.class == Array
|
26
|
+
api += "/batch"
|
27
|
+
end
|
28
|
+
else
|
29
|
+
if data.class == Array and data[0].class == Array
|
24
30
|
api += "/batch"
|
25
31
|
end
|
26
32
|
end
|
data/lib/indico/version.rb
CHANGED
data/spec/custom_spec.rb
CHANGED
@@ -3,6 +3,8 @@ require 'set'
|
|
3
3
|
|
4
4
|
test_data = [['input 1', 'label 1'], ['input 2', 'label 2'], ['input 3', 'label 3'], ['input 4', 'label 4']]
|
5
5
|
text_collection = '__test_ruby_text__'
|
6
|
+
alternate_name = '__alternate_test_ruby_text__'
|
7
|
+
test_user_email = 'contact@indico.io'
|
6
8
|
|
7
9
|
describe Indico do
|
8
10
|
before do
|
@@ -13,15 +15,33 @@ describe Indico do
|
|
13
15
|
after(:each) do
|
14
16
|
begin
|
15
17
|
collection = Indico::Collection.new(text_collection)
|
18
|
+
collection.deregister()
|
19
|
+
rescue
|
20
|
+
end
|
21
|
+
|
22
|
+
begin
|
23
|
+
collection = Indico::Collection.new(text_collection)
|
24
|
+
collection.clear()
|
25
|
+
rescue
|
26
|
+
end
|
27
|
+
|
28
|
+
begin
|
29
|
+
collection = Indico::Collection.new(alternate_name)
|
30
|
+
collection.deregister()
|
31
|
+
rescue
|
32
|
+
end
|
33
|
+
|
34
|
+
begin
|
35
|
+
collection = Indico::Collection.new(alternate_name)
|
16
36
|
collection.clear()
|
17
37
|
rescue
|
18
|
-
# no op -- collection doesn't
|
19
38
|
end
|
20
39
|
end
|
21
40
|
|
22
41
|
it 'should instantiate a Collection object and add data to the collection' do
|
23
42
|
collection = Indico::Collection.new(text_collection)
|
24
|
-
collection.add_data(test_data)
|
43
|
+
collection.add_data(test_data[0]) # single
|
44
|
+
collection.add_data(test_data) # batch
|
25
45
|
end
|
26
46
|
|
27
47
|
it "should add data, train, and predict" do
|
@@ -65,4 +85,82 @@ describe Indico do
|
|
65
85
|
expect(Indico::collections()).to_not have_key(text_collection)
|
66
86
|
end
|
67
87
|
|
68
|
-
|
88
|
+
it "should properly register a collection" do
|
89
|
+
collection = Indico::Collection.new(text_collection)
|
90
|
+
collection.add_data(test_data)
|
91
|
+
collection.train()
|
92
|
+
collection.wait()
|
93
|
+
collection.register()
|
94
|
+
expect(collection.info()['registered']).to be true
|
95
|
+
expect(collection.info()['public']).to be false
|
96
|
+
collection.deregister()
|
97
|
+
expect(collection.info()['registered']).to be false
|
98
|
+
expect(collection.info()['public']).to be false
|
99
|
+
collection.clear()
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should properly register a public collection" do
|
103
|
+
collection = Indico::Collection.new(text_collection)
|
104
|
+
collection.add_data(test_data)
|
105
|
+
collection.train()
|
106
|
+
collection.wait()
|
107
|
+
config = Hash.new()
|
108
|
+
config["make_public"] = true
|
109
|
+
collection.register(config)
|
110
|
+
expect(collection.info()['registered']).to be true
|
111
|
+
expect(collection.info()['public']).to be true
|
112
|
+
collection.deregister()
|
113
|
+
expect(collection.info()['registered']).to be false
|
114
|
+
expect(collection.info()['public']).to be false
|
115
|
+
collection.clear()
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should give a user read permissions" do
|
119
|
+
collection = Indico::Collection.new(text_collection)
|
120
|
+
collection.add_data(test_data)
|
121
|
+
collection.train()
|
122
|
+
collection.wait()
|
123
|
+
collection.register()
|
124
|
+
collection.authorize(email=test_user_email, permission_type='read')
|
125
|
+
expect(collection.info()['permissions']['read'] || []).to include(test_user_email)
|
126
|
+
expect(collection.info()['permissions']['write'] || []).not_to include(test_user_email)
|
127
|
+
collection.deauthorize(email=test_user_email)
|
128
|
+
expect(collection.info()['permissions']['read'] || []).not_to include(test_user_email)
|
129
|
+
expect(collection.info()['permissions']['write'] || []).not_to include(test_user_email)
|
130
|
+
collection.deregister()
|
131
|
+
collection.clear()
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should give a user write permissions" do
|
135
|
+
collection = Indico::Collection.new(text_collection)
|
136
|
+
collection.add_data(test_data)
|
137
|
+
collection.train()
|
138
|
+
collection.wait()
|
139
|
+
collection.register()
|
140
|
+
collection.authorize(email=test_user_email, permission_type='write')
|
141
|
+
expect(collection.info()['permissions']['write'] || []).to include(test_user_email)
|
142
|
+
expect(collection.info()['permissions']['read'] || []).not_to include(test_user_email)
|
143
|
+
collection.deauthorize(email=test_user_email)
|
144
|
+
expect(collection.info()['permissions']['read'] || []).not_to include(test_user_email)
|
145
|
+
expect(collection.info()['permissions']['write'] || []).not_to include(test_user_email)
|
146
|
+
collection.deregister()
|
147
|
+
collection.clear()
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should rename a collection" do
|
151
|
+
collection = Indico::Collection.new(text_collection)
|
152
|
+
collection.add_data(test_data)
|
153
|
+
collection.train()
|
154
|
+
collection.wait()
|
155
|
+
collection.rename(alternate_name)
|
156
|
+
new_collection = Indico::Collection.new(alternate_name)
|
157
|
+
|
158
|
+
# name no longer exists
|
159
|
+
collection = Indico::Collection.new(text_collection)
|
160
|
+
expect { collection.train() }.to raise_error
|
161
|
+
|
162
|
+
# collection is now accessible via the alternate name
|
163
|
+
new_collection.info()
|
164
|
+
new_collection.clear()
|
165
|
+
end
|
166
|
+
end
|
data/spec/indico_spec.rb
CHANGED
@@ -286,8 +286,8 @@ describe Indico do
|
|
286
286
|
test_image = File.open(File.dirname(__FILE__) + "/data/happy64.txt", 'rb') { |f| f.read }
|
287
287
|
silent_warnings do
|
288
288
|
image = Indico.preprocess(test_image, 128, true)
|
289
|
-
|
290
|
-
|
289
|
+
# Can't find a consistent way to load from b64 content (ChunkyPNG API has changed)
|
290
|
+
# For now let's simply ensure that no exceptions are raised
|
291
291
|
end
|
292
292
|
end
|
293
293
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: indico
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-
|
15
|
+
date: 2016-09-27 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: inifile
|