rbbt-util 5.32.30 → 5.33.0

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: e173c4373fc6358b63964247a0d81bab2bd632a2e6bce1b93ff9ac1bd6aa53ca
4
- data.tar.gz: 26c3352b53615f1e1c057727ac6f129dedbb9fabb09742513b2368b0b2bd7327
3
+ metadata.gz: 1a6b198e57fe73c0e36e7aea6164bafd1a8a97d10b3a992f17d0ba6dc531a3c7
4
+ data.tar.gz: 5aa8b8753fc88d5de6fa8f6db31b9b71a57ee5dcc86380041582a4985984f749
5
5
  SHA512:
6
- metadata.gz: f8d84e234a76a38352786f869aaf5fee4f4b159a402b9241707c18f7cbe595d630a645e75bad7ae512652d664b98c61a13c24beb972e1c55db2b300a8c82744b
7
- data.tar.gz: 0fdcfe8522907197eeacfffa0551dbde81db0fc859f0f85eb4281e87df44c9a0b90026423dfad79fd6c9cd8429be655eadc94e94c85cd79d0b971134ea6427ee
6
+ metadata.gz: a61b6e6671803d73b7993b2de9c6cf16d4f463ddd04f9378b54c77a00eb7292b4e817eea14cce81704fe3f2640d38ede202a3928d293ab1fe7e0e67fa87a35b0
7
+ data.tar.gz: d41b1477aab34bfc08610602a3e333a5701edb58d9fa10ecf24436659c4e996bb000ceccb20bbcba1f153ec4e888264ae47ab28689b9e2879601da0b7822e831
@@ -111,6 +111,31 @@ module Persist
111
111
  end
112
112
  end
113
113
 
114
+ def with_read(&block)
115
+ if read? || write?
116
+ return yield
117
+ else
118
+ read_and_close &block
119
+ end
120
+ end
121
+
122
+ def with_write(&block)
123
+ if write?
124
+ return yield
125
+ else
126
+ if self.read?
127
+ self.write_and_read do
128
+ return yield
129
+ end
130
+ else
131
+ self.write_and_close do
132
+ return yield
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+
114
139
  def read_and_close
115
140
  if read? || write?
116
141
  begin
data/lib/rbbt/persist.rb CHANGED
@@ -423,6 +423,8 @@ module Persist
423
423
  end
424
424
  end
425
425
 
426
+ repo.read
427
+
426
428
  case
427
429
  when (keys.length == 1 and keys.first == subkey + 'NIL')
428
430
  nil
@@ -430,19 +432,19 @@ module Persist
430
432
  []
431
433
  when (keys.length == 1 and keys.first =~ /:SINGLE$/)
432
434
  key = keys.first
433
- values = repo.read_and_close do
435
+ values = repo.with_read do
434
436
  repo[key]
435
437
  end
436
438
  Annotated.load_tsv_values(key, values, "literal", "annotation_types", "JSON")
437
439
  when (keys.any? and not keys.first =~ /ANNOTATED_DOUBLE_ARRAY/)
438
- repo.read_and_close do
440
+ repo.with_read do
439
441
  keys.sort_by{|k| k.split(":").last.to_i}.collect{|key|
440
442
  v = repo[key]
441
443
  Annotated.load_tsv_values(key, v, "literal", "annotation_types", "JSON")
442
444
  }
443
445
  end
444
446
  when (keys.any? and keys.first =~ /ANNOTATED_DOUBLE_ARRAY/)
445
- repo.read_and_close do
447
+ repo.with_read do
446
448
 
447
449
  res = keys.sort_by{|k| k.split(":").last.to_i}.collect{|key|
448
450
  v = repo[key]
@@ -457,7 +459,7 @@ module Persist
457
459
  else
458
460
  entities = yield
459
461
 
460
- repo.write_and_close do
462
+ repo.write_and_read do
461
463
  case
462
464
  when entities.nil?
463
465
  repo[subkey + "NIL"] = nil
@@ -462,4 +462,8 @@ module Path
462
462
  Path.setup relative_file , @pkgdir, @resource
463
463
  end
464
464
  end
465
+
466
+ def clean_annotations
467
+ "" << self.to_s
468
+ end
465
469
  end
data/lib/rbbt/tsv/util.rb CHANGED
@@ -297,6 +297,8 @@ module TSV
297
297
  when :double
298
298
  if field.nil?
299
299
  through do |k,v| new[k] = v.first end
300
+ elsif field == :all
301
+ through do |k,v| new[k] = v.flatten.compact end
300
302
  else
301
303
  pos = identify_field field
302
304
  through do |k,v| new[k] = v[pos] end
@@ -313,7 +315,16 @@ module TSV
313
315
  end
314
316
  end
315
317
  self.annotate(new)
316
- new.fields = new.fields[0..0] if new.fields
318
+ if new.fields
319
+ case field
320
+ when nil
321
+ new.fields = new.fields[0..0]
322
+ when :all
323
+ new.fields = [new.fields * "+"]
324
+ else
325
+ new.fields = [field]
326
+ end
327
+ end
317
328
  new.type = :flat
318
329
  new
319
330
  end
@@ -205,7 +205,8 @@ class RbbtProcessQueue
205
205
  end
206
206
 
207
207
  @queue.close_read
208
- Log.info "Cpu process (#{num_processes}) started with master: #{@master_pid}"
208
+ Log.info "Cpu process #{@master_pid} with #{num_processes} workers."
209
+ Log.low "Signal #{@master_pid} USR1/USR2 (#10/#12) to increase/decrease workers."
209
210
  end
210
211
 
211
212
  def init(&block)
@@ -44,7 +44,7 @@ class Step
44
44
  end
45
45
 
46
46
  def self.files_dir(path)
47
- path.nil? ? nil : path + '.files'
47
+ path.nil? ? nil : Path.setup(path + '.files')
48
48
  end
49
49
 
50
50
  def self.info_file(path)
@@ -154,8 +154,12 @@ class Step
154
154
  value = Annotated.purge value if defined? Annotated
155
155
  Open.lock(info_file, :lock => info_lock) do
156
156
  i = info(false).dup
157
+ value = Annotated.purge(value)
158
+
157
159
  i[key] = value
160
+
158
161
  dump = Step.serialize_info(i)
162
+
159
163
  @info_cache = IndiferentHash.setup(i)
160
164
  Misc.sensiblewrite(info_file, dump, :force => true, :lock => false) if Open.exists?(info_file)
161
165
  @info_cache_time = Time.now
@@ -101,7 +101,7 @@ class Step
101
101
  seen = []
102
102
  while path = deps.pop
103
103
  dep_info = archived_info[path]
104
- if dep_info
104
+ if Hash === dep_info
105
105
  dep_info[:inputs].each do |k,v|
106
106
  all_inputs[k] = v unless all_inputs.include?(k)
107
107
  end if dep_info[:inputs]
@@ -26,7 +26,11 @@ module Workflow
26
26
 
27
27
  type = :path if file.split(".").last == 'as_path'
28
28
 
29
+ type = :nofile if file.split(".").last == 'nofile'
30
+
29
31
  case type
32
+ when :nofile
33
+ inputs[input.to_sym] = Open.realpath(file)
30
34
  when :path
31
35
  inputs[input.to_sym] = Open.realpath(Open.read(file).strip)
32
36
  when :io
@@ -65,7 +65,10 @@ module Workflow
65
65
 
66
66
  IndiferentHash.setup(resources)
67
67
 
68
- default_resources = rules["default_resources"] || rules["defaults"]["resources"]
68
+ default_resources = rules["default_resources"]
69
+ default_resources ||= rules["defaults"]["resources"] if rules["defaults"]
70
+ default_resources ||= {}
71
+
69
72
  default_resources.each{|k,v| resources[k] ||= v } if default_resources
70
73
 
71
74
  resources
@@ -98,6 +101,10 @@ module Workflow
98
101
  candidates
99
102
  end
100
103
 
104
+ def self.process(*args)
105
+ self.new.process(*args)
106
+ end
107
+
101
108
  attr_accessor :available_resources, :resources_requested, :resources_used, :timer
102
109
 
103
110
  def initialize(timer = 5, available_resources = {})
@@ -176,7 +183,9 @@ module Workflow
176
183
  end
177
184
  end
178
185
 
179
- def process(rules, jobs)
186
+ def process(rules, jobs = nil)
187
+ jobs, rules = rules, {} if jobs.nil?
188
+ jobs = [jobs] if Step === jobs
180
189
  begin
181
190
 
182
191
  workload = Orchestrator.workload(jobs)
@@ -191,6 +191,7 @@ The `recursive_clean` cleans all the job dependency steps recursively.
191
191
  -rcl--recursive_clean Clean the last step and its dependencies to recompute the job completely
192
192
  -uaj--update_all_jobs Consider all dependencies when checking for updates, even when they have no info files
193
193
  --fork Run job asyncronously and monitor progress. It monitors detached processes as well
194
+ --orchestrate Run the job through the orchestrator
194
195
  --detach Run job asyncronously and detach process
195
196
  --exec Run job with no persistence
196
197
  -O--output* Save job result into file
@@ -438,6 +439,9 @@ begin
438
439
  end
439
440
 
440
441
  job.fork
442
+ elsif options[:orchestrate]
443
+ require 'rbbt/workflow/util/orchestrator'
444
+ Workflow::Orchestrator.process job
441
445
  else
442
446
  job.run(:stream)
443
447
  res = job
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.32.30
4
+ version: 5.33.0
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-02-14 00:00:00.000000000 Z
11
+ date: 2022-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake