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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1a0dc0772864a83c7c6b159d53dc1c5d95e7f58619c4e4b0c630e8240a621aa
4
- data.tar.gz: c8a029debfd1ee7c820185aa1dead29575ecd173a1868692751c6a01dc7be01a
3
+ metadata.gz: da3b496fd0fb7d9ff645cba0fb4ba3914288fb0b88bf80f43a79d02bd1ee2cfd
4
+ data.tar.gz: ab120f9bb96f1b0628f1edc6dc114a43c32ed39a5c29ce5252bbf85383d24359
5
5
  SHA512:
6
- metadata.gz: b151561ce56b42af19160eff58a8f45be7fedd6226d960987111e8b9d1147802eb612f96b85a47ad849476b7d4520df457ed70e91e9528d67e9e03a6959f78c4
7
- data.tar.gz: 60b1a486a88bd2c65a4c003130c7c81de42ce72446420797132d1047be2446fce74f7cb35c80a652a1f56dcc630ba6e32d7c991a524efeab85a05325aaae1024
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 && located
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
- dep = dep[:workflow]._job(dep[:task], dep[:jobname], _inputs)
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
@@ -526,6 +526,7 @@ class Step
526
526
  end
527
527
 
528
528
  def overriden?
529
+ return @overriden
529
530
  return true if @overriden
530
531
  return true if dependencies && dependencies.select{|dep| TrueClass === dep.overriden }.any?
531
532
  info[:archived_info].each do |f,i|
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
- overriden = has_overriden_inputs || overriden_deps.any?
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
- case not_overriden
501
- when TrueClass
502
- job.overriden = has_overriden_inputs || true_overriden_deps.any?
503
- when :not_overriden_dep
504
- job.overriden = true if has_overriden_inputs || true_overriden_deps.any?
505
- else
506
- job.overriden = true if has_overriden_inputs || true_overriden_deps.any?
507
- end
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
@@ -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 + '.yaml']
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.25
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-12 00:00:00.000000000 Z
11
+ date: 2022-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake