rbbt-util 5.25.33 → 5.25.34

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: 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