rbbt-util 5.13.19 → 5.13.20

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,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b571306a9f5980baaa8c5d13939442178440a9e
4
- data.tar.gz: de34e0b79dc8e1736732e64d42af40d17f2ad53f
3
+ metadata.gz: 66e0264c3104ab53b278845aaab51e2ae75b5d40
4
+ data.tar.gz: 7abc522ee044b2527b0a6a40acff4a8fde3c7c90
5
5
  SHA512:
6
- metadata.gz: 6e13708123ad0a40e9bc2dfc99cbdc6c67959f2a39aa5f8c5ac512cd933775374f1195f3d5b7a127787c4eafbf99bd18bd248b296957ae28974d51041563f5a5
7
- data.tar.gz: 034c6c8e537be9f35f8c5630f2dd40810747bdda97126303f7737adc2d7cec2d7e2e19c31568f64caf0bddffaabc6762c32fdbdfaca8bb2eebb05210bf31e891
6
+ metadata.gz: 925b812e86aed64d95cb08b6f56491518640953f8284168bbefd21e5500989b9a6a8755df667d552115f908a5e4913b4d9c5fac3b9fba2214c66e0162c492c1e
7
+ data.tar.gz: 0af9ab272db85087c7c2244d894a0af2c68867c93117d6d1e594bb676b59978bdb1fa5790e915204be8a2423187713b344b02d56af19abcd9ac19d146bc61b6c
@@ -74,6 +74,7 @@ module TSV
74
74
 
75
75
  lines = []
76
76
  fields = []
77
+ sizes = []
77
78
  key_fields = []
78
79
  input_options = []
79
80
  empty = []
@@ -84,6 +85,7 @@ module TSV
84
85
  empty << stream if parser.first_line.nil?
85
86
  key_fields << parser.key_field
86
87
  fields << parser.fields
88
+ sizes << parser.fields.length
87
89
  input_options << parser.options
88
90
 
89
91
  parser.stream
@@ -113,7 +115,6 @@ module TSV
113
115
  keys[i] = key
114
116
  parts[i] = p
115
117
  end
116
- sizes = parts.collect{|p| p.length }
117
118
  last_min = nil
118
119
  while lines.compact.any?
119
120
  min = keys.compact.sort.first
@@ -12,7 +12,7 @@ class RbbtProcessQueue
12
12
  key = "/" << rand(100000000).to_s;
13
13
  @write_sem = key + '.in'
14
14
  @read_sem = key + '.out'
15
- Log.warn "Creating socket semaphores: #{key}"
15
+ Log.low "Creating socket semaphores: #{key}"
16
16
  RbbtSemaphore.create_semaphore(@write_sem,1)
17
17
  RbbtSemaphore.create_semaphore(@read_sem,1)
18
18
  end
@@ -20,7 +20,7 @@ class RbbtProcessQueue
20
20
  def clean
21
21
  @sread.close unless @sread.closed?
22
22
  @swrite.close unless @swrite.closed?
23
- Log.warn "Destroying socket semaphores"
23
+ Log.low "Destroying socket semaphores"
24
24
  RbbtSemaphore.delete_semaphore(@write_sem)
25
25
  RbbtSemaphore.delete_semaphore(@read_sem)
26
26
  end
data/lib/rbbt/util/log.rb CHANGED
@@ -6,6 +6,8 @@ module Log
6
6
  extend Term::ANSIColor
7
7
 
8
8
 
9
+ LOG_MUTEX = Mutex.new
10
+
9
11
  SEVERITY_NAMES ||= begin
10
12
  names = %w(DEBUG LOW MEDIUM HIGH INFO WARN ERROR )
11
13
  names.each_with_index do |name,i|
@@ -14,6 +16,20 @@ module Log
14
16
  names
15
17
  end
16
18
 
19
+ def self.ignore_stderr
20
+ backup_stderr = STDERR.dup
21
+ LOG_MUTEX.synchronize do
22
+ begin
23
+ File.open('/dev/null', 'w') do |f|
24
+ STDERR.reopen(f)
25
+ yield
26
+ end
27
+ ensure
28
+ STDERR.reopen backup_stderr
29
+ end
30
+ end
31
+ end
32
+
17
33
  def self.get_level(level)
18
34
  case level
19
35
  when Fixnum
@@ -35,8 +51,11 @@ module Log
35
51
 
36
52
  self.nocolor = ENV["RBBT_NOCOLOR"] == 'true'
37
53
 
38
- require "highline/system_extensions.rb"
39
- self.tty_size = HighLine::SystemExtensions.terminal_size.first
54
+ self.ignore_stderr do
55
+ require 'nokogiri'
56
+ require "highline/system_extensions.rb"
57
+ self.tty_size = HighLine::SystemExtensions.terminal_size.first
58
+ end
40
59
 
41
60
  def self.with_severity(level)
42
61
  orig = Log.severity
@@ -95,7 +114,6 @@ module Log
95
114
  end
96
115
  end
97
116
 
98
- LOG_MUTEX = Mutex.new
99
117
  LAST = "log"
100
118
  def self.log(message = nil, severity = MEDIUM, &block)
101
119
  return if severity < self.severity
@@ -21,11 +21,6 @@ class Step
21
21
  else
22
22
  Log.medium "Duplicating file #{ Misc.fingerprint(current) } #{current.inspect}"
23
23
  Misc.dup_stream(current)
24
- #STREAM_CACHE[stream] = new
25
- #new
26
- #new = current.dup
27
- #new.rewind
28
- #new
29
24
  end
30
25
 
31
26
  else
@@ -145,7 +140,7 @@ class Step
145
140
  next if dependency.running?
146
141
  dependency.clean
147
142
  else
148
- dependency.clean if (dependency.error? or dependency.aborted? or not dependency.done?)
143
+ dependency.clean if (dependency.error? or dependency.aborted? or dependency.status.nil?)# or not dependency.done?)
149
144
  end
150
145
 
151
146
  unless dependency.result or dependency.done?
@@ -178,7 +173,7 @@ class Step
178
173
 
179
174
  Open.rm info_file if Open.exists? info_file
180
175
 
181
- log :setup, "#{Log.color :magenta, "Task"} #{Log.color :yellow, task.name.to_s || ""}"
176
+ log :setup, "#{Log.color :cyan, "Setup"} #{Log.color :yellow, task.name.to_s || ""}"
182
177
 
183
178
  merge_info({
184
179
  :pid => Process.pid,
@@ -199,13 +194,13 @@ class Step
199
194
  set_info :inputs, Misc.remove_long_items(Misc.zip2hash(task.inputs, @inputs)) unless task.inputs.nil?
200
195
 
201
196
  set_info :started, (start_time = Time.now)
202
- log :started, "#{Log.color :green, "Starting task"} #{Log.color :yellow, task.name.to_s || ""}"
197
+ log :started, "#{Log.color :magenta, "Starting"} #{Log.color :yellow, task.name.to_s || ""}"
203
198
 
204
199
  begin
205
200
  result = _exec
206
201
  rescue Aborted
207
202
  stop_dependencies
208
- log(:error, "Aborted")
203
+ log(:aborted, "Aborted")
209
204
  raise $!
210
205
  rescue Exception
211
206
  backtrace = $!.backtrace
@@ -224,16 +219,21 @@ class Step
224
219
  result = prepare_result result.stream, @task.description, info if TSV::Dumper === result
225
220
  end
226
221
 
227
- case result
228
- when IO
222
+ stream = case result
223
+ when IO
224
+ result
225
+ when TSV::Dumper
226
+ result.stream
227
+ end
229
228
 
230
- log :streaming, "#{Log.color :magenta, "Streaming IO"} #{Log.color :yellow, task.name.to_s || ""}"
231
- ConcurrentStream.setup result do
229
+ if stream
230
+ log :streaming, "#{Log.color :magenta, "Streaming"} #{Log.color :yellow, task.name.to_s || ""}"
231
+ ConcurrentStream.setup stream do
232
232
  begin
233
233
  if status != :done
234
234
  set_info :done, (done_time = Time.now)
235
235
  set_info :time_elapsed, (time_elapsed = done_time - start_time)
236
- log :done, "#{Log.color :red, "Completed"} #{Log.color :yellow, task.name.to_s || ""} in #{time_elapsed.to_i} sec."
236
+ log :done, "#{Log.color :magenta, "Completed"} #{Log.color :yellow, task.name.to_s || ""} in #{time_elapsed.to_i} sec."
237
237
  end
238
238
  rescue
239
239
  Log.exception $!
@@ -241,7 +241,7 @@ class Step
241
241
  join
242
242
  end
243
243
  end
244
- result.abort_callback = Proc.new do
244
+ stream.abort_callback = Proc.new do
245
245
  begin
246
246
  log :aborted, "#{Log.color :red, "Aborted"} #{Log.color :yellow, task.name.to_s || ""}" if status == :streaming
247
247
  rescue
@@ -250,32 +250,10 @@ class Step
250
250
  join
251
251
  end
252
252
  end
253
- when TSV::Dumper
254
- log :streaming, "#{Log.color :magenta, "Streaming TSV::Dumper"} #{Log.color :yellow, task.name.to_s || ""}"
255
- ConcurrentStream.setup result.stream do
256
- begin
257
- if status != :done
258
- set_info :done, (done_time = Time.now)
259
- set_info :time_elapsed, (time_elapsed = done_time - start_time)
260
- log :done, "#{Log.color :red, "Completed"} #{Log.color :yellow, task.name.to_s || ""} in #{time_elapsed.to_i} sec."
261
- end
262
- rescue
263
- Log.exception $!
264
- ensure
265
- join
266
- end
267
- end
268
- result.stream.abort_callback = Proc.new do
269
- begin
270
- log :aborted, "#{Log.color :red, "Aborted"} #{Log.color :yellow, task.name.to_s || ""}" if status == :streaming
271
- rescue Exception
272
- Log.exception $!
273
- end
274
- end
275
253
  else
276
254
  set_info :done, (done_time = Time.now)
277
255
  set_info :time_elapsed, (time_elapsed = done_time - start_time)
278
- log :done, "#{Log.color :red, "Completed"} #{Log.color :yellow, task.name.to_s || ""} in #{time_elapsed.to_i} sec."
256
+ log :done, "#{Log.color :magenta, "Completed"} #{Log.color :yellow, task.name.to_s || ""} in #{time_elapsed.to_i} sec."
279
257
  end
280
258
 
281
259
  result
@@ -470,6 +448,7 @@ class Step
470
448
  dependencies.each{|dep| dep.join }
471
449
  end
472
450
  self
451
+ sleep 1 until path.exists?
473
452
  ensure
474
453
  set_info :joined, true
475
454
  end
@@ -23,7 +23,7 @@ max = 0
23
23
  avg = 0
24
24
  all = []
25
25
  scale = 5
26
- bar = Log::ProgressBar.new_bar nil
26
+ bar = Log::ProgressBar.new_bar nil, :desc => "Throughput"
27
27
 
28
28
  while line = STDIN.gets
29
29
  bar.tick
@@ -6,8 +6,9 @@ require 'rbbt/workflow'
6
6
 
7
7
  workflow = ARGV.shift
8
8
 
9
- Workflow.require_workflow workflow
10
- dir = $command_dir = Workflow.workflows.last.libdir.share.rbbt_commands
9
+ wf = Workflow.require_workflow workflow
10
+ dir = $command_dir = wf.libdir.share.rbbt_commands
11
+
11
12
  def commands(prev)
12
13
  rbbt_command_dir = $command_dir
13
14
 
@@ -89,4 +89,37 @@ row2 cc
89
89
  assert_equal ["AA", "BB", "CC", "aa", "bb", "cc"], tsv["row2"]
90
90
  assert_equal ["AAA", "BBB", "CCC", "aaa", "bbb", "ccc"], tsv["row3"]
91
91
  end
92
+
93
+ def test_paste_stream_missing
94
+ text1=<<-EOF
95
+ #: :sep=" "
96
+ #Row LabelA LabelB LabelC
97
+ row2 AA BB CC
98
+ row1 A B C
99
+ EOF
100
+
101
+ text2=<<-EOF
102
+ #: :sep=" "
103
+ #Row Labela Labelb
104
+ row1 a b
105
+ row2 aa bb
106
+ EOF
107
+
108
+ text3=<<-EOF
109
+ #: :sep=" "
110
+ #Row Labelc
111
+ row3 ccc
112
+ row2 cc
113
+ EOF
114
+
115
+ s1 = StringIO.new text1
116
+ s2 = StringIO.new text2
117
+ s3 = StringIO.new text3
118
+ tsv = TSV.open TSV.paste_streams([s1,s2,s3], :sep => " ", :type => :list, :sort => true)
119
+ assert_equal "Row", tsv.key_field
120
+ assert_equal %w(LabelA LabelB LabelC Labela Labelb Labelc), tsv.fields
121
+ assert_equal ["A", "B", "C", "a", "b", ""], tsv["row1"]
122
+ assert_equal ["AA", "BB", "CC", "aa", "bb", "cc"], tsv["row2"]
123
+ assert_equal ["", "", "", "", "", "ccc"], tsv["row3"]
124
+ end
92
125
  end
@@ -14,8 +14,10 @@ class TestLog < Test::Unit::TestCase
14
14
  assert Log.color(:green, "green")
15
15
  end
16
16
 
17
- def test_return_line
18
- puts Log.return_line + "ccc"*3
17
+ def test_no_stderr
18
+ Log.ignore_stderr do
19
+ STDERR.puts "NOPRINT"
20
+ end
19
21
  end
20
22
  end
21
23
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.13.19
4
+ version: 5.13.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-23 00:00:00.000000000 Z
11
+ date: 2014-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake