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 +4 -4
- data/lib/rbbt.rb +2 -0
- data/lib/rbbt/tsv/accessor.rb +14 -1
- data/lib/rbbt/util/misc/inspect.rb +24 -1
- data/lib/rbbt/util/misc/omics.rb +1 -1
- data/lib/rbbt/util/version.rb +45 -0
- data/lib/rbbt/workflow.rb +2 -0
- data/lib/rbbt/workflow/accessor.rb +2 -2
- data/lib/rbbt/workflow/step/run.rb +3 -2
- data/test/rbbt/util/test_misc.rb +12 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5a19151d029e95e791eb078a3674524810940988
|
|
4
|
+
data.tar.gz: 828a0fadafa776b7e8b78dc44463fc506414205c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 869494e15e50643fbf9f5256af85d7632ce8874ccb648b620db68ced62f27ae845d5d0ec0a8cbe447affae8ab7c1679317df8919d6f1f2e4b6458ba61d1bdb04
|
|
7
|
+
data.tar.gz: 282f5414814f58c91ba166ba8bf78e74051720a87983b29d482cb19b69c03c6dc56d80b98e5f43b85aaf7abd10115e9dc12c653b8e7f0f1d6b72bee43ee21345
|
data/lib/rbbt.rb
CHANGED
data/lib/rbbt/tsv/accessor.rb
CHANGED
|
@@ -672,7 +672,7 @@ module TSV
|
|
|
672
672
|
peek
|
|
673
673
|
end
|
|
674
674
|
|
|
675
|
-
def
|
|
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
|
-
|
|
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)
|
data/lib/rbbt/util/misc/omics.rb
CHANGED
|
@@ -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
|
@@ -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
|
|
data/test/rbbt/util/test_misc.rb
CHANGED
|
@@ -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.
|
|
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-
|
|
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
|