rbbt-util 5.34.25 → 5.34.26
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/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
|