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 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