rbbt-util 5.26.15 → 5.26.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ca1b6e54187f2a185a4808e193c8a7edf119c727ebd458a43de22c2ce459dbe
4
- data.tar.gz: df37635156a96711ac3a17eb92ec342200d37561a24af7c159ef947f3b0b4520
3
+ metadata.gz: 0a5b6df0bdc2e42626606a7acb81daea7045d4b9084e55397e26bd43cf649bed
4
+ data.tar.gz: 0a02c5606b3ad0db3f49bb08253b3319086275f8c628c2058cfb947dad8589cc
5
5
  SHA512:
6
- metadata.gz: d0f65a81a0bb09e76ed0dbb7460a3d3703d4bc4df4f1486ae40fec511b0fb931ea9d35b0db468a2ee8d266af367ca42ed61522c4b04c730b824695ecbf9bfb7c
7
- data.tar.gz: 4265b0702cf71164fc828a8cc60c98c032be79734d0aa93f0b694d5698c82d89e599cab0456458aa778a649946e71da151c6a8888fa54ab85732b749b9844beb
6
+ metadata.gz: dbffbfb520c2ae55920a7bacbcb06fd9b329ccd4be1707b524661b39e0bf402d739687f010f85adc31dd2efdbbeb92108e05fc8fe69abcc1026719d7046359af
7
+ data.tar.gz: 5e9581b07924542606bc900acf1f808990f7527bb4082a054ac0fb3e2a42042f15ee14a2004a97734c9f9e379990b0c552972dc7b75393a60a3a7f56ec21fef2
data/lib/rbbt/workflow.rb CHANGED
@@ -214,7 +214,17 @@ module Workflow
214
214
  end
215
215
 
216
216
  def import_task(workflow, orig, new)
217
- new_task = workflow.tasks[orig].clone
217
+ orig_task = workflow.tasks[orig]
218
+ new_task = orig_task.dup
219
+ options = {}
220
+ orig_task.singleton_methods.
221
+ select{|method| method.to_s[-1] != "="[0]}.each{|method|
222
+ if orig_task.respond_to?(method.to_s + "=")
223
+ options[method.to_s] = orig_task.send(method.to_s)
224
+ end
225
+ }
226
+
227
+ Task.setup(options, &new_task)
218
228
  new_task.workflow = self
219
229
  new_task.name = new
220
230
  tasks[new] = new_task
@@ -64,16 +64,18 @@ module Workflow
64
64
  end
65
65
 
66
66
  FORGET_DEP_TASKS = ENV["RBBT_FORGET_DEP_TASKS"] == "true"
67
- def dep_task(name, *dependency, &block)
68
- dep(*dependency, &block)
67
+ def dep_task(name, workflow, oname, *rest, &block)
68
+ dep(workflow, oname, *rest, &block)
69
+ extension workflow.tasks[oname].extension if workflow.tasks.include?(oname) unless @extension
69
70
  task name do
70
71
  raise RbbtException, "dependency not found in dep_task" if dependencies.empty?
71
72
  dep = dependencies.last.join
72
73
  set_info :result_type, dep.info[:result_type]
73
74
  forget = config :forget_dep_tasks, :forget_dep_tasks, :default => FORGET_DEP_TASKS
74
75
  if forget
76
+ self.set_info :archived_info, archived_info
77
+ self.set_info :archived_dependencies, info[:dependencies]
75
78
  self.dependencies = self.dependencies - [dep]
76
- self.set_info :dependency, dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]}
77
79
  Open.rm_rf self.files_dir if Open.exist? self.files_dir
78
80
  FileUtils.cp_r dep.files_dir, self.files_dir if Open.exist? dep.files_dir
79
81
  Open.ln_h dep.path, self.tmp_path
@@ -67,6 +67,7 @@ class Step
67
67
  @workflow || info[:workflow]
68
68
  end
69
69
 
70
+
70
71
  def load_inputs_from_info
71
72
  if info[:inputs]
72
73
  info_inputs = info[:inputs]
@@ -92,6 +93,37 @@ class Step
92
93
  @inputs || []
93
94
  end
94
95
 
96
+ def archived_info
97
+ return info[:archived_info] if info[:archived_info]
98
+
99
+ archived_info = {}
100
+ dependencies.each do |dep|
101
+ archived_info[dep.path] = dep.info
102
+ archived_info.merge!(dep.archived_info)
103
+ end if dependencies
104
+
105
+ archived_info
106
+ end
107
+
108
+ def archived_inputs
109
+ return {} unless info[:archived_dependencies]
110
+ archived_info = self.archived_info
111
+
112
+ all_inputs = IndiferentHash.setup({})
113
+ deps = info[:archived_dependencies].collect{|p| p.last}
114
+ seen = []
115
+ while path = deps.pop
116
+ dep_info = archived_info[path]
117
+ dep_info[:inputs].each do |k,v|
118
+ all_inputs[k] = v unless all_inputs.include?(k)
119
+ end
120
+ deps.concat(dep_info[:dependencies].collect{|p| p.last } - seen)
121
+ seen << path
122
+ end
123
+
124
+ all_inputs
125
+ end
126
+
95
127
  def recursive_inputs
96
128
  if NamedArray === inputs
97
129
  i = {}
@@ -103,6 +135,7 @@ class Step
103
135
  end
104
136
  rec_dependencies.each do |dep|
105
137
  next unless NamedArray === dep.inputs
138
+
106
139
  dep.inputs.zip(dep.inputs.fields).each do |v,f|
107
140
  if i.include?(f) && i[f] != v
108
141
  Log.debug "Conflict in #{ f }: #{[i[f].inspect, v.inspect] * " <-> "}"
@@ -111,7 +144,16 @@ class Step
111
144
  i[f] = v
112
145
  end
113
146
  end
147
+
148
+ dep.archived_inputs.each do |k,v|
149
+ i[k] = v unless i.include? k
150
+ end
114
151
  end
152
+
153
+ self.archived_inputs.each do |k,v|
154
+ i[k] = v unless i.include? k
155
+ end
156
+
115
157
  #dependencies.each do |dep|
116
158
  # di = dep.recursive_inputs
117
159
  # next unless NamedArray === di
@@ -119,6 +161,7 @@ class Step
119
161
  # i[k] = v unless i.include? k
120
162
  # end
121
163
  #end
164
+
122
165
  v = i.values
123
166
  NamedArray.setup v, i.keys
124
167
  v
@@ -84,7 +84,7 @@ messages = info[:messages]
84
84
  backtrace = info[:backtrace]
85
85
  pid = info[:pid]
86
86
  exception = info[:exception]
87
- rest = info.keys - [:inputs, :dependencies, :status, :time_elapsed, :messages, :backtrace, :exception, :pid]
87
+ rest = info.keys - [:inputs, :dependencies, :status, :time_elapsed, :messages, :backtrace, :exception, :pid, :archived_info]
88
88
 
89
89
  puts Log.color(:magenta, "File") << ": " << step.path
90
90
  puts Log.color(:magenta, "Status") << ": " << status_msg(status) << ((step.aborted? || step.error?) && step.recoverable_error? ? " (recoverable)" : "" ) << (step.dirty? ? " (dirty)" : "")
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.26.15
4
+ version: 5.26.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: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2019-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake