rbbt-util 5.34.25 → 5.34.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/workflow/dependencies.rb +30 -13
- data/lib/rbbt/workflow/step/dependencies.rb +1 -0
- data/lib/rbbt/workflow.rb +14 -16
- data/test/rbbt/test_workflow.rb +43 -2
- 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: da3b496fd0fb7d9ff645cba0fb4ba3914288fb0b88bf80f43a79d02bd1ee2cfd
|
4
|
+
data.tar.gz: ab120f9bb96f1b0628f1edc6dc114a43c32ed39a5c29ce5252bbf85383d24359
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f5b5326a834f1f972756919ea2f04c9626998be3c9ca058fd386c06787011ad021798e6091eb8eae1f7873dcceb9adcfa02de14a5269dadef4a2902d5475a9d
|
7
|
+
data.tar.gz: d74344affb899a6b62a494d02e9058dc338a7be4138b9ce32331d0657bc121035b312da21f48827751dc13e1bdee4511fb6f1eeaf481d39f73e5967ff3243800
|
@@ -72,12 +72,7 @@ module Workflow
|
|
72
72
|
def setup_override_dependency(dep, workflow, task_name)
|
73
73
|
return [] if dep == :skip || dep == 'skip'
|
74
74
|
|
75
|
-
if not Step === dep
|
76
|
-
located = Open.exists?(dep) || Open.exists?(dep + '.info')
|
77
|
-
dep = Workflow.load_step(dep)
|
78
|
-
else
|
79
|
-
located = true
|
80
|
-
end
|
75
|
+
dep = Workflow.load_step(dep) if not Step === dep
|
81
76
|
|
82
77
|
dep.original_workflow ||= dep.workflow if dep.workflow
|
83
78
|
dep.original_task_name ||= dep.task_name if dep.task_name
|
@@ -88,7 +83,6 @@ module Workflow
|
|
88
83
|
dep.workflow = workflow
|
89
84
|
dep.info[:name] = dep.name
|
90
85
|
|
91
|
-
|
92
86
|
begin
|
93
87
|
workflow = Kernel.const_get workflow if String === workflow
|
94
88
|
dep.task = workflow.tasks[task_name] if dep.task.nil? && workflow.tasks.include?(task_name)
|
@@ -97,13 +91,17 @@ module Workflow
|
|
97
91
|
end
|
98
92
|
|
99
93
|
dep.task_name = task_name
|
100
|
-
dep.overriden = dep.original_task_name.to_sym if dep.original_task_name
|
94
|
+
dep.overriden = dep.original_task_name.to_sym if dep.original_task_name
|
101
95
|
|
102
96
|
dep.extend step_module
|
103
97
|
|
104
98
|
dep
|
105
99
|
end
|
106
100
|
|
101
|
+
def unlocated_override?(dep)
|
102
|
+
String === dep && ! (Open.exists?(dep) || Open.exists?(dep + '.info'))
|
103
|
+
end
|
104
|
+
|
107
105
|
def assign_dep_inputs(_inputs, options, all_d, task_info)
|
108
106
|
IndiferentHash.setup(_inputs)
|
109
107
|
|
@@ -155,6 +153,7 @@ module Workflow
|
|
155
153
|
|
156
154
|
override_dependencies = override_dependencies(inputs)
|
157
155
|
|
156
|
+
overriden = false
|
158
157
|
dependencies.each do |dependency|
|
159
158
|
_inputs = IndiferentHash.setup(inputs.dup)
|
160
159
|
jobname = orig_jobname
|
@@ -165,6 +164,7 @@ module Workflow
|
|
165
164
|
workflow, dep_task, options = dependency
|
166
165
|
|
167
166
|
if override_dependencies[workflow.to_s] && value = override_dependencies[workflow.to_s][dep_task]
|
167
|
+
overriden = true if (options.nil? || ! options[:not_overriden]) && ! unlocated_override?(value)
|
168
168
|
setup_override_dependency(value, workflow, dep_task)
|
169
169
|
else
|
170
170
|
|
@@ -177,15 +177,23 @@ module Workflow
|
|
177
177
|
|
178
178
|
job = workflow._job(dep_task, jobname, _inputs)
|
179
179
|
ComputeDependency.setup(job, compute) if compute
|
180
|
+
|
181
|
+
overriden = true if TrueClass === job.overriden && (options.nil? || ! options[:not_overriden])
|
182
|
+
|
180
183
|
job
|
181
184
|
end
|
182
185
|
when Step
|
183
|
-
dependency
|
186
|
+
job = dependency
|
187
|
+
overriden = true if TrueClass === job.overriden && (options.nil? || ! options[:not_overriden])
|
188
|
+
job
|
184
189
|
when Symbol
|
185
190
|
if override_dependencies[self.to_s] && value = override_dependencies[self.to_s][dependency]
|
191
|
+
overriden = true if (options.nil? || ! options[:not_overriden]) && ! unlocated_override?(value)
|
186
192
|
setup_override_dependency(value, self, dependency)
|
187
193
|
else
|
188
|
-
_job(dependency, jobname, _inputs)
|
194
|
+
job = _job(dependency, jobname, _inputs)
|
195
|
+
overriden = true if TrueClass === job.overriden && (options.nil? || ! options[:not_overriden])
|
196
|
+
job
|
189
197
|
end
|
190
198
|
when Proc
|
191
199
|
if DependencyBlock === dependency
|
@@ -193,6 +201,7 @@ module Workflow
|
|
193
201
|
wf, task_name, options = orig_dep
|
194
202
|
|
195
203
|
if override_dependencies[wf.to_s] && value = override_dependencies[wf.to_s][task_name]
|
204
|
+
overriden = true if (options.nil? || ! options[:not_overriden]) && ! unlocated_override?(value)
|
196
205
|
dep = setup_override_dependency(value, wf, task_name)
|
197
206
|
else
|
198
207
|
|
@@ -208,16 +217,20 @@ module Workflow
|
|
208
217
|
dep.each{|d|
|
209
218
|
next if d.nil?
|
210
219
|
if Hash === d
|
220
|
+
d = d.merge(options)
|
211
221
|
d[:workflow] ||= wf
|
212
222
|
d[:task] ||= task_name
|
213
223
|
_override_dependencies = override_dependencies.merge(override_dependencies(d[:inputs] || {}))
|
214
224
|
d = if _override_dependencies[d[:workflow].to_s] && value = _override_dependencies[d[:workflow].to_s][d[:task]]
|
225
|
+
overriden = true if (options.nil? || ! options[:not_overriden]) && ! unlocated_override?(value)
|
215
226
|
setup_override_dependency(value, d[:workflow], d[:task])
|
216
227
|
else
|
217
228
|
task_info = d[:workflow].task_info(d[:task])
|
218
229
|
|
219
230
|
_inputs = assign_dep_inputs({}, options.merge(d[:inputs] || {}), real_dependencies, task_info)
|
220
|
-
d[:workflow]._job(d[:task], d[:jobname], _inputs)
|
231
|
+
job = d[:workflow]._job(d[:task], d[:jobname], _inputs)
|
232
|
+
overriden = true if TrueClass === job.overriden && (d.nil? || ! d[:not_overriden])
|
233
|
+
job
|
221
234
|
end
|
222
235
|
end
|
223
236
|
ComputeDependency.setup(d, compute) if compute
|
@@ -232,11 +245,15 @@ module Workflow
|
|
232
245
|
dep[:workflow] ||= wf || self
|
233
246
|
_override_dependencies = override_dependencies.merge(override_dependencies(dep[:inputs] || {}))
|
234
247
|
if _override_dependencies[dep[:workflow].to_s] && value = _override_dependencies[dep[:workflow].to_s][dep[:task]]
|
248
|
+
overriden = true if (options.nil? || ! options[:not_overriden]) && ! unlocated_override?(value)
|
235
249
|
setup_override_dependency(value, dep[:workflow], dep[:task])
|
236
250
|
else
|
237
251
|
task_info = (dep[:task] && dep[:workflow]) ? dep[:workflow].task_info(dep[:task]) : nil
|
238
252
|
_inputs = assign_dep_inputs({}, dep[:inputs], real_dependencies, task_info)
|
239
|
-
|
253
|
+
job = dep[:workflow]._job(dep[:task], dep[:jobname], _inputs)
|
254
|
+
job = d[:workflow]._job(d[:task], d[:jobname], _inputs)
|
255
|
+
overriden = true if TrueClass === job.overriden && (d.nil? || ! d[:not_overriden])
|
256
|
+
job
|
240
257
|
end
|
241
258
|
end
|
242
259
|
end
|
@@ -248,6 +265,6 @@ module Workflow
|
|
248
265
|
|
249
266
|
real_dependencies << real_dep
|
250
267
|
end
|
251
|
-
real_dependencies.flatten.compact
|
268
|
+
[real_dependencies.flatten.compact, overriden]
|
252
269
|
end
|
253
270
|
end
|
data/lib/rbbt/workflow.rb
CHANGED
@@ -285,6 +285,7 @@ module Workflow
|
|
285
285
|
|
286
286
|
workdir[taskname][tagged_jobname].find
|
287
287
|
end
|
288
|
+
|
288
289
|
def import_task(workflow, orig, new)
|
289
290
|
orig_task = workflow.tasks[orig]
|
290
291
|
new_task = orig_task.dup
|
@@ -442,10 +443,8 @@ module Workflow
|
|
442
443
|
end
|
443
444
|
|
444
445
|
real_inputs = {}
|
445
|
-
has_overriden_inputs = false
|
446
446
|
|
447
447
|
inputs.each do |k,v|
|
448
|
-
#has_overriden_inputs = true if String === k and k.include? "#"
|
449
448
|
next unless (task_inputs.include?(k.to_sym) or task_inputs.include?(k.to_s))
|
450
449
|
default = all_defaults[k]
|
451
450
|
next if default == v
|
@@ -461,12 +460,10 @@ module Workflow
|
|
461
460
|
|
462
461
|
jobname = DEFAULT_NAME if jobname.nil? or jobname.empty?
|
463
462
|
|
464
|
-
dependencies = real_dependencies(task, jobname, defaults.merge(inputs), task_dependencies[taskname] || [])
|
465
|
-
|
466
|
-
overriden_deps = dependencies.select{|d| d.overriden }
|
467
|
-
true_overriden_deps = overriden_deps.select{|d| TrueClass === d.overriden }
|
463
|
+
dependencies, overriden = real_dependencies(task, jobname, defaults.merge(inputs), task_dependencies[taskname] || [])
|
468
464
|
|
469
|
-
|
465
|
+
#overriden_deps = dependencies.select{|d| Symbol === d.overriden }
|
466
|
+
#overriden_target_deps = overriden_deps.select{|d| TrueClass === d.overriden }
|
470
467
|
|
471
468
|
extension = task.extension
|
472
469
|
|
@@ -492,19 +489,20 @@ module Workflow
|
|
492
489
|
step_path = step_path taskname, jobname, input_values, dependencies, extension
|
493
490
|
end
|
494
491
|
|
495
|
-
|
496
492
|
job = get_job_step step_path, task, input_values, dependencies
|
497
493
|
job.workflow = self
|
494
|
+
job.overriden ||= overriden
|
498
495
|
job.clean_name = jobname
|
499
496
|
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
497
|
+
#iif [job, not_overriden]
|
498
|
+
#case not_overriden
|
499
|
+
#when TrueClass
|
500
|
+
# job.overriden = false
|
501
|
+
#when :not_overriden_dep
|
502
|
+
# job.overriden = true if overriden_target_deps.any?
|
503
|
+
#else
|
504
|
+
# job.overriden = true if overriden_deps.any?
|
505
|
+
#end
|
508
506
|
|
509
507
|
job.real_inputs = real_inputs.keys
|
510
508
|
job
|
data/test/rbbt/test_workflow.rb
CHANGED
@@ -166,6 +166,33 @@ for this dependency
|
|
166
166
|
dep = dependencies.flatten.first
|
167
167
|
end
|
168
168
|
|
169
|
+
task :overr_orig => :string do
|
170
|
+
"over"
|
171
|
+
end
|
172
|
+
|
173
|
+
task :overr_alt => :string do
|
174
|
+
"alt"
|
175
|
+
end
|
176
|
+
|
177
|
+
dep :overr_orig
|
178
|
+
task :overr_target => :string do
|
179
|
+
step(:overr_orig).load.reverse
|
180
|
+
end
|
181
|
+
|
182
|
+
dep :overr_alt, :not_overriden => true
|
183
|
+
dep :overr_target, "TestWF#overr_orig" => :overr_alt, :not_overriden => true
|
184
|
+
task :overr_action => :string do
|
185
|
+
step(:overr_target).load.upcase
|
186
|
+
end
|
187
|
+
|
188
|
+
|
189
|
+
dep :overr_alt, :not_overriden => true
|
190
|
+
dep :overr_target, "TestWF#overr_orig" => :overr_alt
|
191
|
+
task :overr_action2 => :string do
|
192
|
+
step(:overr_target).load.upcase
|
193
|
+
end
|
194
|
+
|
195
|
+
|
169
196
|
end
|
170
197
|
|
171
198
|
TestWF.workdir = Rbbt.tmp.test.jobs.TestWF
|
@@ -419,7 +446,7 @@ class TestWorkflow < Test::Unit::TestCase
|
|
419
446
|
TmpFile.with_file do |dir|
|
420
447
|
Path.setup(dir)
|
421
448
|
Step.save_job_inputs(job, dir)
|
422
|
-
assert_equal Dir.glob(dir + "/*"), [dir.file.find]
|
449
|
+
assert_equal Dir.glob(dir + "/*"), [dir.file.find + '.as_path']
|
423
450
|
end
|
424
451
|
end
|
425
452
|
|
@@ -427,7 +454,7 @@ class TestWorkflow < Test::Unit::TestCase
|
|
427
454
|
TmpFile.with_file do |dir|
|
428
455
|
Path.setup(dir)
|
429
456
|
Step.save_job_inputs(job, dir)
|
430
|
-
assert_equal Dir.glob(dir + "/*"), [dir.file.find + '.
|
457
|
+
assert_equal Dir.glob(dir + "/*"), [dir.file.find + '.as_path']
|
431
458
|
inputs = Workflow.load_inputs(dir, [:file], :file => :file)
|
432
459
|
assert_equal inputs, {:file => 'code'}
|
433
460
|
end
|
@@ -472,4 +499,18 @@ class TestWorkflow < Test::Unit::TestCase
|
|
472
499
|
end
|
473
500
|
end
|
474
501
|
end
|
502
|
+
|
503
|
+
def test_overriden
|
504
|
+
job = TestWF.job(:overr_action)
|
505
|
+
job.recursive_clean
|
506
|
+
assert_equal "TLA", job.run
|
507
|
+
|
508
|
+
assert Symbol === job.step(:overr_orig).overriden
|
509
|
+
assert TrueClass === job.step(:overr_target).overriden
|
510
|
+
assert ! job.overriden
|
511
|
+
|
512
|
+
job = TestWF.job(:overr_action2)
|
513
|
+
assert_equal "TLA", job.run
|
514
|
+
assert job.overriden
|
515
|
+
end
|
475
516
|
end
|
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.34.
|
4
|
+
version: 5.34.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|