rbbt-util 5.32.15 → 5.32.16
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/tsv.rb +5 -0
- data/lib/rbbt/tsv/parallel/traverse.rb +1 -1
- data/lib/rbbt/workflow.rb +12 -2
- data/lib/rbbt/workflow/definition.rb +1 -1
- data/lib/rbbt/workflow/util/provenance.rb +26 -7
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c2898a052d60bd9d6c05e3d277482e2221d07c18067b592fe7b8fefd796e8a6a
|
|
4
|
+
data.tar.gz: 55bdd8b9a78d2d35a2c4c1574da11113c66b7621128076f29128941a5a0caf77
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3dd350c68a0c931da771f789aa934e3a94cf52be343101743a14eb2e049b782665db8f941da1f28e7503386af3f17c6ef4e53afa0ef388aecb65c9571ea974a5
|
|
7
|
+
data.tar.gz: 110a0a0eed2343835e3c4598f9c91c0280e28c64911a4fa18662c423d4f3d1774893b2e0ed848676a60878cae608a9b3d2e50de7c1c724935894971320628f2e
|
data/lib/rbbt/tsv.rb
CHANGED
|
@@ -98,6 +98,11 @@ module TSV
|
|
|
98
98
|
stream = get_stream source, options.merge(open_options)
|
|
99
99
|
parse stream, data, options.merge(:tsv_grep => tsv_grep)
|
|
100
100
|
|
|
101
|
+
if ! open_options[:noclose]
|
|
102
|
+
stream.close unless stream.closed?
|
|
103
|
+
stream.join if stream.respond_to?(:join)
|
|
104
|
+
end
|
|
105
|
+
|
|
101
106
|
data.filename = filename.to_s unless filename.nil?
|
|
102
107
|
|
|
103
108
|
if data.identifiers.nil? and Path === filename and filename.identifier_file_path
|
|
@@ -389,7 +389,7 @@ module TSV
|
|
|
389
389
|
when Set
|
|
390
390
|
traverse_array(obj.to_a, options, &block)
|
|
391
391
|
when String
|
|
392
|
-
if Open.remote?
|
|
392
|
+
if Open.remote?(obj) or Misc.is_filename?(obj)
|
|
393
393
|
Open.open(obj) do |s|
|
|
394
394
|
traverse_obj(s, options, &block)
|
|
395
395
|
end
|
data/lib/rbbt/workflow.rb
CHANGED
|
@@ -411,12 +411,22 @@ module Workflow
|
|
|
411
411
|
|
|
412
412
|
overriden = has_overriden_inputs || overriden_deps.any?
|
|
413
413
|
|
|
414
|
+
extension = task.extension
|
|
415
|
+
|
|
416
|
+
if extension == :dep_task
|
|
417
|
+
extension = nil
|
|
418
|
+
if dependencies.any?
|
|
419
|
+
dep_basename = File.basename(dependencies.last.path)
|
|
420
|
+
extension = dep_path.split(".").last if dep_basename.include?('.')
|
|
421
|
+
end
|
|
422
|
+
end
|
|
423
|
+
|
|
414
424
|
if real_inputs.empty? && Workflow::TAG != :inputs && ! overriden
|
|
415
|
-
step_path = step_path taskname, jobname, [], [],
|
|
425
|
+
step_path = step_path taskname, jobname, [], [], extension
|
|
416
426
|
input_values = task.take_input_values(inputs)
|
|
417
427
|
else
|
|
418
428
|
input_values = task.take_input_values(inputs)
|
|
419
|
-
step_path = step_path taskname, jobname, input_values, dependencies,
|
|
429
|
+
step_path = step_path taskname, jobname, input_values, dependencies, extension
|
|
420
430
|
end
|
|
421
431
|
|
|
422
432
|
job = get_job_step step_path, task, input_values, dependencies
|
|
@@ -73,7 +73,7 @@ module Workflow
|
|
|
73
73
|
REMOVE_DEP_TASKS = ENV["RBBT_REMOVE_DEP_TASKS"] == "true"
|
|
74
74
|
def dep_task(name, workflow, oname, *rest, &block)
|
|
75
75
|
dep(workflow, oname, *rest, &block)
|
|
76
|
-
extension
|
|
76
|
+
extension :dep_task unless @extension
|
|
77
77
|
returns workflow.tasks[oname].result_description if workflow.tasks.include?(oname) unless @result_description
|
|
78
78
|
task name do
|
|
79
79
|
raise RbbtException, "dependency not found in dep_task" if dependencies.empty?
|
|
@@ -26,7 +26,7 @@ class Step
|
|
|
26
26
|
Log.color(color, status.to_s)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def self.prov_report_msg(status, name, path, info = nil)
|
|
29
|
+
def self.prov_report_msg(status, name, path, info, input = nil)
|
|
30
30
|
parts = path.sub(/\{.*/,'').split "/"
|
|
31
31
|
|
|
32
32
|
parts.pop
|
|
@@ -43,10 +43,17 @@ class Step
|
|
|
43
43
|
rescue Exception
|
|
44
44
|
nil
|
|
45
45
|
end
|
|
46
|
+
|
|
47
|
+
if input.nil? || input.empty?
|
|
48
|
+
input_str = nil
|
|
49
|
+
else
|
|
50
|
+
input_str = Log.color(:magenta, "-> ") + input.collect{|dep,name| Log.color(:yellow, dep.task_name.to_s) + ":" + Log.color(:yellow, name) }.uniq * " "
|
|
51
|
+
end
|
|
52
|
+
|
|
46
53
|
str = if ! (Open.remote?(path) || Open.ssh?(path)) && (Open.exists?(path) && $main_mtime && path_mtime && ($main_mtime - path_mtime) < -2)
|
|
47
|
-
prov_status_msg(status.to_s) << " " << [workflow, task, path].compact * " " << " (#{Log.color(:red, "Mtime out of sync") })"
|
|
54
|
+
prov_status_msg(status.to_s) << " " << [workflow, task, path, input_str].compact * " " << " (#{Log.color(:red, "Mtime out of sync") })"
|
|
48
55
|
else
|
|
49
|
-
prov_status_msg(status.to_s) << " " << [workflow, task, path].compact * " "
|
|
56
|
+
prov_status_msg(status.to_s) << " " << [workflow, task, path, input_str].compact * " "
|
|
50
57
|
end
|
|
51
58
|
|
|
52
59
|
if $inputs and $inputs.any?
|
|
@@ -74,7 +81,7 @@ class Step
|
|
|
74
81
|
str << "\n"
|
|
75
82
|
end
|
|
76
83
|
|
|
77
|
-
def self.prov_report(step, offset = 0, task = nil, seen = [], expand_repeats = false)
|
|
84
|
+
def self.prov_report(step, offset = 0, task = nil, seen = [], expand_repeats = false, input = nil)
|
|
78
85
|
info = step.info || {}
|
|
79
86
|
info[:task_name] = task
|
|
80
87
|
path = step.path
|
|
@@ -85,13 +92,25 @@ class Step
|
|
|
85
92
|
status = :notfound if status == :noinfo and not Open.exist?(path)
|
|
86
93
|
|
|
87
94
|
str = " " * offset
|
|
88
|
-
str << prov_report_msg(status, name, path, info)
|
|
95
|
+
str << prov_report_msg(status, name, path, info, input)
|
|
96
|
+
|
|
97
|
+
input_dependencies = {}
|
|
98
|
+
step.dependencies.each do |dep|
|
|
99
|
+
if dep.input_dependencies.any?
|
|
100
|
+
dep.input_dependencies.each do |id|
|
|
101
|
+
input_name = dep.inputs.fields.zip(dep.inputs).select{|f,d| d == id || String === d && d.start_with?(id.files_dir) }.first.first
|
|
102
|
+
input_dependencies[id] ||= []
|
|
103
|
+
input_dependencies[id] << [dep, input_name]
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
89
108
|
step.dependencies.reverse.each do |dep|
|
|
90
109
|
path = dep.path
|
|
91
110
|
new = ! seen.include?(path)
|
|
92
111
|
if new
|
|
93
112
|
seen << path
|
|
94
|
-
str << prov_report(dep, offset + 1, task, seen, expand_repeats)
|
|
113
|
+
str << prov_report(dep, offset + 1, task, seen, expand_repeats, input_dependencies[dep])
|
|
95
114
|
else
|
|
96
115
|
if expand_repeats
|
|
97
116
|
str << Log.color(Step.status_color(dep.status), Log.uncolor(prov_report(dep, offset+1, task)))
|
|
@@ -103,7 +122,7 @@ class Step
|
|
|
103
122
|
status = :unsync if status == :done and not Open.exist?(path)
|
|
104
123
|
status = :notfound if status == :noinfo and not Open.exist?(path)
|
|
105
124
|
|
|
106
|
-
str << Log.color(Step.status_color(status), " " * (offset + 1) + Log.uncolor(prov_report_msg(status, name, path, info)))
|
|
125
|
+
str << Log.color(Step.status_color(status), " " * (offset + 1) + Log.uncolor(prov_report_msg(status, name, path, info, input_dependencies[dep])))
|
|
107
126
|
end
|
|
108
127
|
end
|
|
109
128
|
end if step.dependencies
|
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.32.
|
|
4
|
+
version: 5.32.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|