zillabyte 0.1.29 → 0.1.31

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 CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c56762d0640d1c5508e38e60e1355135782355c5
4
- data.tar.gz: 8e9c679dd7253bd675dcd4a5211341dba9ebbf8b
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZGI5MDc1YmU2MzlmNzUxZDBhMzJiMjgxNzVhOGJjMTMxNDUwOGIxMw==
5
+ data.tar.gz: !binary |-
6
+ NzE0NzI4OTU0YzQ4YjVhNjQyMDljOTgyMGY3MjJiNmRhMzMyNzI0Ng==
5
7
  SHA512:
6
- metadata.gz: b4272038da2c89843ffcd7605de3b9d7bf3360b5e71d303be565edab0a616660ad54c5376179e5a9bcb7d887c73d8751b0d79c2b19e6ca6b9e14b05634c5b00c
7
- data.tar.gz: 2a22c7f7f0b2ded8a77d1c8ce032b8ca8bbf1c9b43269798235fdeb1d61abe27d3eb80fe67663be3b03db51e084b2607f67060e936233f82a9415c435d789485
8
+ metadata.gz: !binary |-
9
+ MTMyMDU4OGRiMjA1ZjIxMTk3MjllNTZkNDA1MDVlOTQyZmM5NzQ2NTdhNWEw
10
+ YTg3OTU2ZGEwNzY2ZmUzMjI5ZGQwMjJhY2ZkYTcwYWI3MjIyOWQ2N2Q3MzQ3
11
+ MzY3ZmQ0NzYyY2FhNmNjOWZhMmRiMzNiNmI4ZGRkMTRiZTgxOGI=
12
+ data.tar.gz: !binary |-
13
+ N2E5NDEyM2QwYzViODU5ODU1Mzg1YTRlMjVlMDU2YmJiYjAzN2MxMjI0OTRl
14
+ ZTQ4OTQ4NWQwMjU4ZWExZjc4YjY1MDllYTMyNzc2ZDVkODkwZTA0YTU3MWI1
15
+ Y2ZkYmZiNjMyMGQxNmI4MTdlMmY5N2FkNDM3OTQ5MzU4NmJiYTU=
@@ -0,0 +1,34 @@
1
+ class Zillabyte::Harness::Clump
2
+ attr_accessor :_name, :_type, :_emits, :_output_format, :_parallelism, :_prepare, :_execute
3
+
4
+ def initialize()
5
+ @_name = "clump_"+Zillabyte::Harness::Counter.get()
6
+ @_type = "clump"
7
+ @_output_format = :replace
8
+ end
9
+
10
+ def name(v)
11
+ @_name = v
12
+ end
13
+
14
+ def emits(*v)
15
+ @_emits = *v
16
+ end
17
+
18
+ def output_format(v)
19
+ @_output_format = v
20
+ end
21
+
22
+ def parallelism(v)
23
+ @_parallelism = v
24
+ end
25
+
26
+ def prepare(&block)
27
+ @_prepare = block
28
+ end
29
+
30
+ def execute(&block)
31
+ @_execute = block
32
+ end
33
+
34
+ end
@@ -17,6 +17,7 @@ class Zillabyte::Harness::Component < Zillabyte::Harness::Base
17
17
  def inputs(*args, &block)
18
18
  h = Zillabyte::Harness::ComponentSource.new
19
19
  h.instance_eval(&block)
20
+ h._name ||= "comp_input.#{Zillabyte::Harness::Counter.get()}"
20
21
  Zillabyte::Harness::Helper.check_name("inputs", h._name, @_names)
21
22
  Zillabyte::Harness::Helper.check_component_source(h)
22
23
 
@@ -2,9 +2,10 @@ require 'zillabyte/harness/stream'
2
2
 
3
3
  class Zillabyte::Harness::ComponentStream < Zillabyte::Harness::Stream
4
4
 
5
- def sink(*args, &block)
5
+ def outputs(*args, &block)
6
6
  h = Zillabyte::Harness::ComponentSink.new
7
7
  h.instance_eval(&block)
8
+ h._name ||= "comp_output.#{Zillabyte::Harness::Counter.get()}"
8
9
  Zillabyte::Harness::Helper.check_name("outputs", h._name, @_app._names)
9
10
  Zillabyte::Harness::Helper.check_component_sink(h)
10
11
 
@@ -15,6 +16,6 @@ class Zillabyte::Harness::ComponentStream < Zillabyte::Harness::Stream
15
16
  Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
16
17
  end
17
18
  end
18
- alias :outputs :sink
19
+
19
20
 
20
21
  end
@@ -55,7 +55,7 @@ class Zillabyte::Harness::Helper
55
55
  ee = "Error in \"#{operation}\" at \"name\": \n\t "
56
56
 
57
57
  # \w matchs [a-zA-Z0-9_]
58
- if(!(name.is_a?(String) or name.is_a?(Symbol)) or (name =~ /^\w+$/).nil?)
58
+ if(!(name.is_a?(String) or name.is_a?(Symbol)) or (name =~ /^[\w\.]+$/).nil?)
59
59
  msg = "#{ee}\"Name\" must be a non-empty STRING with only alphanumeric and underscore characters at \"#{name}\". Apps and components must have names. The following methods must have names as well: \"sink\", \"inputs\" and \"outputs\"."
60
60
  Zillabyte::Harness::Helper.print_error(msg)
61
61
  end
@@ -134,7 +134,7 @@ class Zillabyte::Harness::Helper
134
134
  end
135
135
 
136
136
  emits.each do |e|
137
- if(!e.instance_of?(String) or (e =~ /^\w+$/).nil?)
137
+ if(!e.instance_of?(String) or (e =~ /^[\w\.]+$/).nil?)
138
138
  msg = "#{ee}An \"#{oo}\" stream name must be a non-empty STRING with only alphanumeric and underscore characters in \"#{e}\". #{pp}"
139
139
  Zillabyte::Harness::Helper.print_error(msg)
140
140
  end
@@ -182,6 +182,23 @@ class Zillabyte::Harness::Helper
182
182
 
183
183
  Zillabyte::Harness::Helper.check_output_format("each", each._output_format)
184
184
  end
185
+
186
+ def self.check_clump(clump)
187
+ ee = "Error in \"clump\": \n\t "
188
+ pp = @@_print_check_clump
189
+
190
+ if clump._parallelism && clump._parallelism.to_i <= 0
191
+ msg = "Parallelism for clump must be positive integer"
192
+ Zillabyte::Harness::Helper.print_error(msg)
193
+ end
194
+
195
+ if !clump._execute
196
+ msg = "#{ee}A \"clump\" must contain an \"execute\" block. #{pp}"
197
+ Zillabyte::Harness::Helper.print_error(msg)
198
+ end
199
+
200
+ Zillabyte::Harness::Helper.check_output_format("clump", clump._output_format)
201
+ end
185
202
 
186
203
  def self.check_group_by(group_by)
187
204
  ee = "Error in \"group_by\": \n\t "
@@ -259,7 +276,7 @@ class Zillabyte::Harness::Helper
259
276
  Zillabyte::Harness::Helper.print_error(msg)
260
277
  end
261
278
 
262
- if(!(id.is_a?(String) or id.is_a?(Symbol)) or (id =~ /^\w+$/).nil?)
279
+ if(!(id.is_a?(String) or id.is_a?(Symbol)) or (id =~ /^[\w\.]+$/).nil?)
263
280
  msg = "#{ee}The \"component_id\" must be a non-empty STRING with only alphanumeric and underscore characters in \"#{id}\". #{pp}"
264
281
  Zillabyte::Harness::Helper.print_error(msg)
265
282
  end
@@ -361,6 +378,23 @@ class Zillabyte::Harness::Helper
361
378
  Zillabyte::Harness::Helper.check_field_format("outputs", pp, cname, ctype, node._name)
362
379
  end
363
380
  end
381
+
382
+ def self.get_non_option_args(args)
383
+ if args.last.is_a?(Hash)
384
+ return args[0..-2]
385
+ else
386
+ return args
387
+ end
388
+ end
389
+
390
+ def self.get_options(args)
391
+ if args.last.is_a?(Hash)
392
+ return args.last
393
+ else
394
+ return {}
395
+ end
396
+ end
397
+
364
398
 
365
399
  # Test helper...
366
400
  def self.argv()
@@ -527,4 +561,32 @@ OUTPUT
527
561
  * The number of input and output streams specified must match the number listed for the component.
528
562
  OUTPUT
529
563
 
564
+
565
+ @@_print_check_clump = <<-OUTPUT
566
+ \n\n"Clump" Syntax:
567
+ Simplified syntax:
568
+ stream.clump do |tuples|
569
+ tuples.each do |tuple|
570
+ |=block=|
571
+ end
572
+ end
573
+ - This is equivalent to just specifying an \"execute\" block below.
574
+ - Note that this syntax only works for a single output stream.
575
+
576
+ Custom clump:
577
+ stream.clump do
578
+ name "name" \t\t\t\t\t => optional
579
+ emits "stream_1", "stream_2", ... \t\t => optional for single output stream
580
+ output_format :replace OR :merge \t\t => optional, defaults to :replace
581
+ prepare |=block=| \t\t\t\t => optional if no initialization needed
582
+ execute |=block=|
583
+ end
584
+ - The allowed output formats are :replace and :merge.
585
+ * :replace - discards the input tuple values and only emits the specified values. This is the default.
586
+ * :merge - re-emits the input tuple values along with the specified values.
587
+ - The "prepare" and "execute" blocks can be in do...end format or {} format.
588
+ * the "prepare" block is where any setup is done to prepare for tuple processing in the "execute" block.
589
+ * the "execute" block is where the tuples are actually processed. It must take in a single argument (the "tuple").
590
+ OUTPUT
591
+
530
592
  end
@@ -15,7 +15,7 @@ module Zillabyte
15
15
  module Protocol
16
16
 
17
17
  READ_SOFT_TIMEOUT = 20 # Amount of time to wait until we send a 'ping' to the parent
18
- DEATH_TIMEOUT = READ_SOFT_TIMEOUT * 3 # If no activity from the parent (even response to a ping) time before we kill ourself.
18
+ DEATH_TIMEOUT = READ_SOFT_TIMEOUT * 6 # If no activity from the parent (even response to a ping) time before we kill ourself.
19
19
 
20
20
  class << self
21
21
  attr_accessor :mode, :emits, :end_cycle_policy, :pending_commands, :pipe_name, :pipe_to_java, :pipe_from_java
@@ -13,7 +13,7 @@ class Zillabyte::Harness::Stream
13
13
  @_name
14
14
  end
15
15
 
16
- def each(&block)
16
+ def each(options = {}, &block)
17
17
  h = Zillabyte::Harness::Each.new()
18
18
  # Does the block take 0 arguments? If so it's not just an execute block.
19
19
  if(block.arity == 0)
@@ -35,7 +35,12 @@ class Zillabyte::Harness::Stream
35
35
 
36
36
  if(@_app._options[:command] == :info)
37
37
 
38
- node_hash = {"name" => h._name, "type" => h._type, "output_format" => h._output_format}
38
+ node_hash = {
39
+ :name => h._name,
40
+ :type => h._type,
41
+ :output_format => h._output_format,
42
+ :config => options
43
+ }
39
44
  if (h._parallelism)
40
45
  node_hash["parallelism"] = h._parallelism
41
46
  end
@@ -57,7 +62,8 @@ class Zillabyte::Harness::Stream
57
62
  output_streams
58
63
  end
59
64
 
60
- def filter(&block)
65
+
66
+ def filter(options = {}, &block)
61
67
  h = Zillabyte::Harness::Filter.new()
62
68
  # Does the block take 0 arguments? If so it's not just a keep block.
63
69
  if(block.arity == 0)
@@ -84,7 +90,12 @@ class Zillabyte::Harness::Stream
84
90
  end
85
91
 
86
92
  Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
87
- arc_hash = {"name" => @_name, "origin" => @_previous_node_name, "dest" => h._name}
93
+ arc_hash = {
94
+ :name => @_name,
95
+ :origin => @_previous_node_name,
96
+ :dest => h._name,
97
+ :config => options
98
+ }
88
99
  Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
89
100
  elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
90
101
  pipe_name = @_app._options[:pipe]
@@ -95,11 +106,14 @@ class Zillabyte::Harness::Stream
95
106
  output_stream = self.class.new(h._emits[0], @_app, h._name) # filters only have one output stream
96
107
  output_stream
97
108
  end
109
+
98
110
 
99
111
  def group_by(*args, &block)
100
112
 
101
113
  # Init
102
- h = Zillabyte::Harness::GroupBy.new(*args)
114
+ group_args = Zillabyte::Harness::Helper.get_non_option_args(args)
115
+ options = Zillabyte::Harness::Helper.get_options(args)
116
+ h = Zillabyte::Harness::GroupBy.new(*group_args)
103
117
 
104
118
  # Yield
105
119
  h.instance_eval(&block)
@@ -119,7 +133,12 @@ class Zillabyte::Harness::Stream
119
133
  if(@_app._options[:command] == :info)
120
134
 
121
135
  # Info..
122
- node_hash = {"name" => h._name, "type" => h._type, "group_by" => h._group_by}
136
+ node_hash = {
137
+ :name => h._name,
138
+ :type => h._type,
139
+ :group_by => h._group_by,
140
+ :config => options
141
+ }
123
142
  if(h._parallelism)
124
143
  node_hash["parallelism"] = h._parallelism
125
144
  end
@@ -147,10 +166,11 @@ class Zillabyte::Harness::Stream
147
166
 
148
167
  end
149
168
 
150
- def join_with(rhs_stream, *args, &block)
169
+
170
+ def join_with(rhs_stream, options = {}, &block)
151
171
 
152
172
  # Init
153
- h = Zillabyte::Harness::Join.new(*args)
173
+ h = Zillabyte::Harness::Join.new(options)
154
174
 
155
175
  # Yield
156
176
  throw "programmable joins are not supported at this time" unless block.nil?
@@ -172,11 +192,14 @@ class Zillabyte::Harness::Stream
172
192
  # Handle incoming command..
173
193
  if(@_app._options[:command] == :info)
174
194
  # Info..
175
- node_hash = {"name" => h._name,
176
- "type" => h._type,
177
- "lhs_fields" => h._lhs_fields,
178
- "rhs_fields" => h._rhs_fields,
179
- "join_type" => h._join_type}
195
+ node_hash = {
196
+ :name => h._name,
197
+ :type => h._type,
198
+ :lhs_fields => h._lhs_fields,
199
+ :rhs_fields => h._rhs_fields,
200
+ :join_type => h._join_type,
201
+ :config => options
202
+ }
180
203
 
181
204
  Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
182
205
  arc_hash1 = {"name" => @_name, "origin" => @_previous_node_name, "dest" => h._name, "left" => 1}
@@ -197,7 +220,7 @@ class Zillabyte::Harness::Stream
197
220
 
198
221
  end
199
222
 
200
- def call_component(comp_id = nil, &block)
223
+ def call_component(comp_id = nil, options = {}, &block)
201
224
 
202
225
  h = Zillabyte::Harness::InjectedComponent.new()
203
226
  h.instance_eval(&block) if block_given?
@@ -210,7 +233,13 @@ class Zillabyte::Harness::Stream
210
233
  @_app._nodes << h
211
234
 
212
235
  if(@_app._options[:command] == :info)
213
- node_hash = {"name" => h._name, "type" => h._type, "id" => h._id, "output_format" => h._output_format}
236
+ node_hash = {
237
+ :name => h._name,
238
+ :type => h._type,
239
+ :id => h._id,
240
+ :output_format => h._output_format,
241
+ :config => options
242
+ }
214
243
  Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
215
244
  arc_hash = {"name" => @_name, "origin" => @_previous_node_name, "dest" => h._name}
216
245
  Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
@@ -228,6 +257,10 @@ class Zillabyte::Harness::Stream
228
257
  output_streams = output_streams[0] if output_streams.size == 1
229
258
  output_streams
230
259
  end
260
+ alias_method :executes, :call_component
261
+ alias_method :execute, :call_component
262
+
263
+
231
264
 
232
265
  def sink(&block)
233
266
  h = Zillabyte::Harness::Sink.new()
@@ -243,4 +276,213 @@ class Zillabyte::Harness::Stream
243
276
  end
244
277
  end
245
278
 
279
+
280
+
281
+ # Unique's a stream. Executed on backend
282
+ def unique(*args)
283
+
284
+ # INIT
285
+ group_fields = Zillabyte::Harness::Helper.get_non_option_args(args)
286
+ options = Zillabyte::Harness::Helper.get_options(args)
287
+
288
+ if(@_app._options[:command] == :info)
289
+
290
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
291
+ node_name = "unique_#{Zillabyte::Harness::Counter.get()}"
292
+ node_hash = {
293
+ :name => node_name,
294
+ :type => "unique",
295
+ :group_fields => group_fields,
296
+ :config => options
297
+ }
298
+ arc_hash = {
299
+ :name => @_name,
300
+ :origin => @_previous_node_name,
301
+ :dest => node_name
302
+ }
303
+
304
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
305
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
306
+ return self.class.new(emits, @_app, node_name)
307
+
308
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
309
+ throw "should not execute in multilang"
310
+ end
311
+
312
+ end
313
+
314
+
315
+
316
+ # Counts fields. Executed on backend
317
+ def count(*args)
318
+
319
+ # Init
320
+ group_fields = Zillabyte::Harness::Helper.get_non_option_args(args)
321
+ options = Zillabyte::Harness::Helper.get_options(args)
322
+
323
+ if(@_app._options[:command] == :info)
324
+
325
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
326
+ node_name = "count_#{Zillabyte::Harness::Counter.get()}"
327
+ node_hash = {
328
+ :name => node_name,
329
+ :type => "count",
330
+ :group_fields => group_fields,
331
+ :config => options
332
+ }
333
+ arc_hash = {
334
+ :name => @_name,
335
+ :origin => @_previous_node_name,
336
+ :dest => node_name
337
+ }
338
+
339
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
340
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
341
+ return self.class.new(emits, @_app, node_name)
342
+
343
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
344
+ throw "should not execute in multilang"
345
+ end
346
+
347
+ end
348
+
349
+
350
+
351
+
352
+ # Removes fields from the stream.
353
+ def remove(*args)
354
+
355
+ # Init
356
+ remove_fields = Zillabyte::Harness::Helper.get_non_option_args(args)
357
+ options = Zillabyte::Harness::Helper.get_options(args)
358
+
359
+ if(@_app._options[:command] == :info)
360
+
361
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
362
+ node_name = "remove_#{Zillabyte::Harness::Counter.get()}"
363
+ node_hash = {
364
+ :name => node_name,
365
+ :type => "remove",
366
+ :remove => remove_fields,
367
+ :config => options
368
+ }
369
+ arc_hash = {
370
+ :name => @_name,
371
+ :origin => @_previous_node_name,
372
+ :dest => node_name
373
+ }
374
+
375
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
376
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
377
+ return self.class.new(emits, @_app, node_name)
378
+
379
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
380
+ throw "should not execute in multilang"
381
+ end
382
+
383
+ end
384
+
385
+
386
+
387
+ # Retains fields from the stream and removes everything else
388
+ def retain(*args)
389
+
390
+ # Init
391
+ retain_fields = Zillabyte::Harness::Helper.get_non_option_args(args)
392
+ options = Zillabyte::Harness::Helper.get_options(args)
393
+
394
+ if(@_app._options[:command] == :info)
395
+
396
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
397
+ node_name = "retain_#{Zillabyte::Harness::Counter.get()}"
398
+ node_hash = {
399
+ :name => node_name,
400
+ :type => "retain",
401
+ :retain => retain_fields,
402
+ :config => options
403
+ }
404
+ arc_hash = {
405
+ :name => @_name,
406
+ :origin => @_previous_node_name,
407
+ :dest => node_name
408
+ }
409
+
410
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
411
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
412
+ return self.class.new(emits, @_app, node_name)
413
+
414
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
415
+ throw "should not execute in multilang"
416
+ end
417
+
418
+ end
419
+
420
+
421
+
422
+
423
+
424
+ # Groups together N arbitrary tuples (usefull for mini-batch processing)
425
+ def clump(options = {})
426
+
427
+ if(@_app._options[:command] == :info)
428
+
429
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
430
+ node_name = "clump_#{Zillabyte::Harness::Counter.get()}"
431
+ node_hash = {
432
+ :name => node_name,
433
+ :type => "clump",
434
+ :config => options
435
+ }
436
+ arc_hash = {
437
+ :name => @_name,
438
+ :origin => @_previous_node_name,
439
+ :dest => node_name
440
+ }
441
+
442
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
443
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
444
+ return self.class.new(emits, @_app, node_name)
445
+
446
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
447
+ throw "should not execute in multilang"
448
+ end
449
+
450
+ end
451
+
452
+
453
+
454
+
455
+
456
+ # Renames fields..
457
+ def rename(rename_map)
458
+
459
+ if(@_app._options[:command] == :info)
460
+
461
+ emits = ["stream_"+Zillabyte::Harness::Counter.get()]
462
+ node_name = "rename_#{Zillabyte::Harness::Counter.get()}"
463
+ node_hash = {
464
+ :name => node_name,
465
+ :type => "rename",
466
+ :rename => rename_map
467
+ }
468
+ arc_hash = {
469
+ :name => @_name,
470
+ :origin => @_previous_node_name,
471
+ :dest => node_name
472
+ }
473
+
474
+ Zillabyte::Harness::Helper.write_node_to_file(node_hash, @_app._info_file)
475
+ Zillabyte::Harness::Helper.write_arc_to_file(arc_hash, @_app._info_file)
476
+ return self.class.new(emits, @_app, node_name)
477
+
478
+ elsif(@_app._options[:command] == :execute and @_app._options[:name] == h._name)
479
+ throw "should not execute in multilang"
480
+ end
481
+
482
+ end
483
+
484
+
485
+
486
+
487
+
246
488
  end
@@ -1,3 +1,3 @@
1
1
  module Zillabyte
2
- VERSION = "0.1.29" unless defined?(VERSION)
2
+ VERSION = "0.1.31" unless defined?(VERSION)
3
3
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zillabyte
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - zillabyte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-08 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: mkfifo
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: zillabyte-cli
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.29
47
+ version: 0.1.31
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.29
54
+ version: 0.1.31
55
55
  description: The Official Zillabyte Gem
56
56
  email:
57
57
  - gem@zillabyte.com
@@ -64,6 +64,7 @@ files:
64
64
  - ruby/lib/zillabyte/harness.rb
65
65
  - ruby/lib/zillabyte/harness/app.rb
66
66
  - ruby/lib/zillabyte/harness/base.rb
67
+ - ruby/lib/zillabyte/harness/clump.rb
67
68
  - ruby/lib/zillabyte/harness/component.rb
68
69
  - ruby/lib/zillabyte/harness/component_sink.rb
69
70
  - ruby/lib/zillabyte/harness/component_source.rb
@@ -91,12 +92,12 @@ require_paths:
91
92
  - ruby/lib
92
93
  required_ruby_version: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - ">="
95
+ - - ! '>='
95
96
  - !ruby/object:Gem::Version
96
97
  version: '0'
97
98
  required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  requirements:
99
- - - ">="
100
+ - - ! '>='
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []