rbbt-util 5.25.33 → 5.25.34

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5224ee57ce9c9356d168864d1457989ab094b579
4
- data.tar.gz: ee950dc591700be501b2d1f84e23bae4492cea1d
3
+ metadata.gz: 5a19151d029e95e791eb078a3674524810940988
4
+ data.tar.gz: 828a0fadafa776b7e8b78dc44463fc506414205c
5
5
  SHA512:
6
- metadata.gz: 64f17229abeefc9faecec3519b347c069f2fd387205f59513fd5d2cf1b38d71eb8352dabefa9fc08c968cf76f0c6e544b061a8841d17ef9a7825930c7553b214
7
- data.tar.gz: 76975c93b0151e609959817f158130d0db5e57235cc4f5a6850f3d879912b09d7a3996b6fde0da1f1435ea769ebcd921050d1a54d40c08d99118576218063e6f
6
+ metadata.gz: 869494e15e50643fbf9f5256af85d7632ce8874ccb648b620db68ced62f27ae845d5d0ec0a8cbe447affae8ab7c1679317df8919d6f1f2e4b6458ba61d1bdb04
7
+ data.tar.gz: 282f5414814f58c91ba166ba8bf78e74051720a87983b29d482cb19b69c03c6dc56d80b98e5f43b85aaf7abd10115e9dc12c653b8e7f0f1d6b72bee43ee21345
data/lib/rbbt.rb CHANGED
@@ -3,3 +3,5 @@ module Rbbt
3
3
  extend Resource
4
4
  pkgdir = 'rbbt'
5
5
  end
6
+
7
+ require 'rbbt/util/version'
@@ -672,7 +672,7 @@ module TSV
672
672
  peek
673
673
  end
674
674
 
675
- def head(times=10)
675
+ def head_str(times=10)
676
676
  stream = dumper_stream
677
677
  str = ""
678
678
  times.times do |i|
@@ -682,6 +682,19 @@ module TSV
682
682
  str
683
683
  end
684
684
 
685
+ def head_tsv(times = 10)
686
+ new = self.annotate({})
687
+ i = 0
688
+ self.each do |k,v|
689
+ return new if i == times
690
+ new[k] = v
691
+ i += 1
692
+ end
693
+ new
694
+ end
695
+
696
+ alias head head_tsv
697
+
685
698
  def summary
686
699
 
687
700
  key = nil
@@ -1,6 +1,8 @@
1
1
  module Misc
2
2
  ARRAY_MAX_LENGTH = 1000
3
3
  STRING_MAX_LENGTH = ARRAY_MAX_LENGTH * 100
4
+ TSV_MAX_FIELDS=100
5
+ TSV_MAX_ROWS=100
4
6
 
5
7
  def self.break_lines(text, char_size=80)
6
8
  text = text.gsub("\n", " ")
@@ -120,7 +122,28 @@ module Misc
120
122
  filename = "STDIN(rand-#{rand(10000000)})" if filename == '-'
121
123
  remove_long_items("TSV Stream: " + filename + " -- " << Misc.fingerprint(obj.options))
122
124
  when TSV === obj
123
- remove_long_items((obj.all_fields || []) + obj.keys.sort)
125
+ tsv = obj
126
+ fields = tsv.fields
127
+
128
+ if obj.size > TSV_MAX_ROWS
129
+ tsv = obj.head(TSV_MAX_ROWS)
130
+ tsv["Truncated rows at #{TSV_MAX_ROWS} (#{obj.size})"] = nil
131
+ end
132
+
133
+ if fields && fields.length > TSV_MAX_FIELDS
134
+ tsv = obj.slice(fields[0..TSV_MAX_ROWS-1])
135
+ tsv.add_field "Truncated at #{TSV_MAX_ROWS} (#{fields.length})" do
136
+ nil
137
+ end
138
+ elsif fields.nil?
139
+ new = tsv.annotate({})
140
+ tsv.each do |k,v|
141
+ new[k] = Misc.remove_long_items(v)
142
+ end
143
+ tsv = new
144
+ end
145
+
146
+ tsv
124
147
  when (Array === obj and obj.length > ARRAY_MAX_LENGTH)
125
148
  remove_long_items(obj[0..ARRAY_MAX_LENGTH-2] << "TRUNCATED at #{ ARRAY_MAX_LENGTH }/#{obj.length}")
126
149
  when (Hash === obj and obj.length > ARRAY_MAX_LENGTH)
@@ -173,7 +173,7 @@ module Misc
173
173
 
174
174
  muts = muts.collect do |m|
175
175
  case
176
- when ref.empty?
176
+ when (ref.empty? or ref == '-')
177
177
  "+" << m
178
178
  when (m.length < ref.length and (m.empty? or ref.index(m)))
179
179
  "-" * (ref.length - m.length)
@@ -0,0 +1,45 @@
1
+ module Rbbt
2
+ VERSIONS = IndiferentHash.setup({})
3
+
4
+ def self.add_version(file)
5
+ dir = Path.caller_lib_dir(file)
6
+ libname = File.basename(dir).sub('rbbt-','')
7
+ return if VERSIONS.include? libname
8
+
9
+ version = if dir.VERSION.exists?
10
+ dir.VERSION.read
11
+ elsif dir[".git"].exists?
12
+ head = dir[".git"]["HEAD"].read.split(" ").last.strip
13
+ dir[".git"][head].read.strip
14
+ elsif libname.include?("-")
15
+ name,_sep, v = libname.partition("-")
16
+ if v =~ /^\d+\.\d+\.\d+$/
17
+ libname = name
18
+ v
19
+ else
20
+ nil
21
+ end
22
+ else
23
+ nil
24
+ end
25
+ return if version.nil?
26
+
27
+ VERSIONS[libname] = version
28
+ end
29
+
30
+ def self.versions
31
+ versions = Rbbt::VERSIONS
32
+ Gem.loaded_specs.keys.each do |gem|
33
+ next unless gem.include? 'rbbt'
34
+ iii gem
35
+ name = gem.sub('rbbt-','')
36
+ next if versions.include? name
37
+ version = Gem.loaded_specs[gem].version.version
38
+ versions[name] = version
39
+ end
40
+ versions
41
+ end
42
+
43
+ Rbbt.add_version(__FILE__)
44
+ end
45
+
data/lib/rbbt/workflow.rb CHANGED
@@ -63,6 +63,8 @@ module Workflow
63
63
 
64
64
  filename = File.expand_path(filename)
65
65
 
66
+ Rbbt.add_version(filename)
67
+
66
68
  require filename
67
69
  Log.debug{"Workflow loaded from: #{ filename }"}
68
70
  return true
@@ -184,8 +184,8 @@ class Step
184
184
  end
185
185
  end
186
186
 
187
- def init_info
188
- return nil if @exec or info_file.nil? or Open.exists?(info_file)
187
+ def init_info(force = false)
188
+ return nil if @exec or info_file.nil? or (Open.exists?(info_file) and ! force)
189
189
  Open.lock(info_file, :lock => info_lock) do
190
190
  i = {:status => :waiting, :pid => Process.pid, :path => path}
191
191
  i[:dependencies] = dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]} if dependencies
@@ -220,7 +220,7 @@ class Step
220
220
  Open.write(pid_file, Process.pid.to_s) unless Open.exists? pid_file
221
221
 
222
222
  @exec = false
223
- init_info
223
+ init_info(true)
224
224
 
225
225
  log :setup, "#{Log.color :green, "Setup"} step #{Log.color :yellow, task.name.to_s || ""}"
226
226
 
@@ -234,7 +234,8 @@ class Step
234
234
  :task_name => @task.name,
235
235
  :result_type => @task.result_type,
236
236
  :result_description => @task.result_description,
237
- :dependencies => dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]}
237
+ :dependencies => dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]},
238
+ :versions => Rbbt.versions
238
239
  })
239
240
 
240
241
 
@@ -609,4 +609,16 @@ EOF
609
609
  assert_equal 60*60*24, Misc.timespan('1d')
610
610
  assert_equal 60*60*24, Misc.timespan('1d')
611
611
  end
612
+
613
+ def test_remove_long_items
614
+ tsv = TSV.setup({}, "key~value1,value2#:type=:list")
615
+ tsv["a"] = [2,3]
616
+ tsv["b"] = [6,7]
617
+ iii Misc.remove_long_items(tsv)
618
+ 1000.times do |n|
619
+ tsv[n] = [n*2, n*3]
620
+ end
621
+ iii Misc.remove_long_items(tsv)
622
+ end
612
623
  end
624
+
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.25.33
4
+ version: 5.25.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-15 00:00:00.000000000 Z
11
+ date: 2019-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -315,6 +315,7 @@ files:
315
315
  - lib/rbbt/util/task/job.rb
316
316
  - lib/rbbt/util/tc_cache.rb
317
317
  - lib/rbbt/util/tmpfile.rb
318
+ - lib/rbbt/util/version.rb
318
319
  - lib/rbbt/workflow.rb
319
320
  - lib/rbbt/workflow/accessor.rb
320
321
  - lib/rbbt/workflow/annotate.rb