scout-gear 10.0.1 → 10.1.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 +4 -4
- data/.vimproject +1 -78
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/lib/scout/tsv/util/sort.rb +74 -0
- data/lib/scout/tsv/util.rb +1 -0
- data/lib/scout/workflow/step/status.rb +1 -0
- data/lib/scout/workflow/step.rb +47 -47
- data/scout-gear.gemspec +6 -4
- data/scout_commands/workflow/task +3 -3
- data/test/scout/tsv/test_open.rb +1 -1
- data/test/scout/tsv/util/test_sort.rb +23 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab089af23ec3cb6d23db1190f712d2a981db96e818572aa5b561227a9601b9b8
|
4
|
+
data.tar.gz: d72662def6d6b7207d015d7cea613a1882578efe201ed391f79d37027ab7c70e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5b67fdc030ad2ed3dd4d9da47d7f12068b71f14a1ae390f65c411bc2e835ac2da1648fccb554cbda4a3a56bdf6b16fc63080620453e75481590622cfd883247
|
7
|
+
data.tar.gz: 97fa38ef8db895d3a8aa05d2e4e521bb98d28924b389429994f6e98bceb7bfa7ad74920676c17b8b124bf288700e80078909ea20a84c3c0b24efd0cf7b0632cb
|
data/.vimproject
CHANGED
@@ -28,81 +28,6 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
28
28
|
rbbt-scout.rb
|
29
29
|
scout.rb
|
30
30
|
scout=scout{
|
31
|
-
meta_extension.rb
|
32
|
-
exceptions.rb
|
33
|
-
|
34
|
-
misc.rb
|
35
|
-
misc=misc{
|
36
|
-
format.rb
|
37
|
-
insist.rb
|
38
|
-
digest.rb
|
39
|
-
filesystem.rb
|
40
|
-
monitor.rb
|
41
|
-
system.rb
|
42
|
-
}
|
43
|
-
named_array.rb
|
44
|
-
indiferent_hash.rb
|
45
|
-
indiferent_hash=indiferent_hash{
|
46
|
-
case_insensitive.rb
|
47
|
-
options.rb
|
48
|
-
}
|
49
|
-
log.rb
|
50
|
-
log=log{
|
51
|
-
color.rb
|
52
|
-
color_class.rb
|
53
|
-
fingerprint.rb
|
54
|
-
progress.rb
|
55
|
-
progress=progress{
|
56
|
-
report.rb
|
57
|
-
util.rb
|
58
|
-
}
|
59
|
-
trap.rb
|
60
|
-
}
|
61
|
-
tmpfile.rb
|
62
|
-
simple_opt.rb
|
63
|
-
simple_opt=simple_opt{
|
64
|
-
accessor.rb
|
65
|
-
doc.rb
|
66
|
-
parse.rb
|
67
|
-
get.rb
|
68
|
-
setup.rb
|
69
|
-
}
|
70
|
-
path.rb
|
71
|
-
path=path{
|
72
|
-
find.rb
|
73
|
-
util.rb
|
74
|
-
tmpfile.rb
|
75
|
-
}
|
76
|
-
concurrent_stream.rb
|
77
|
-
cmd.rb
|
78
|
-
open.rb
|
79
|
-
open=open{
|
80
|
-
lock.rb
|
81
|
-
remote.rb
|
82
|
-
stream.rb
|
83
|
-
util.rb
|
84
|
-
lock=lock{
|
85
|
-
lockfile.rb
|
86
|
-
}
|
87
|
-
}
|
88
|
-
resource.rb
|
89
|
-
resource=resource{
|
90
|
-
produce.rb
|
91
|
-
produce=produce{
|
92
|
-
rake.rb
|
93
|
-
}
|
94
|
-
software.rb
|
95
|
-
scout.rb
|
96
|
-
util.rb
|
97
|
-
path.rb
|
98
|
-
}
|
99
|
-
config.rb
|
100
|
-
persist.rb
|
101
|
-
persist=persist{
|
102
|
-
serialize.rb
|
103
|
-
open.rb
|
104
|
-
path.rb
|
105
|
-
}
|
106
31
|
workflow.rb
|
107
32
|
workflow=workflow{
|
108
33
|
definition.rb
|
@@ -146,6 +71,7 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
146
71
|
process.rb
|
147
72
|
unzip.rb
|
148
73
|
reorder.rb
|
74
|
+
sort.rb
|
149
75
|
}
|
150
76
|
parser.rb
|
151
77
|
dumper.rb
|
@@ -173,9 +99,6 @@ scout-gear=/$PWD filter="*.rb *.yaml" {
|
|
173
99
|
sync.rb
|
174
100
|
step.rb
|
175
101
|
}
|
176
|
-
hpc=hpc{
|
177
|
-
slurm.rb
|
178
|
-
}
|
179
102
|
}
|
180
103
|
}
|
181
104
|
test=test {
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
10.0
|
1
|
+
10.1.0
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module TSV
|
2
|
+
def sort_by(field = nil, just_keys = false, &block)
|
3
|
+
field = :all if field.nil?
|
4
|
+
|
5
|
+
if field == :all
|
6
|
+
elems = collect
|
7
|
+
else
|
8
|
+
elems = []
|
9
|
+
case type
|
10
|
+
when :single
|
11
|
+
through :key, field do |key, field|
|
12
|
+
elems << [key, field]
|
13
|
+
end
|
14
|
+
when :list, :flat
|
15
|
+
through :key, field do |key, fields|
|
16
|
+
elems << [key, fields.first]
|
17
|
+
end
|
18
|
+
when :double
|
19
|
+
through :key, field do |key, fields|
|
20
|
+
elems << [key, fields.first]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
if not block_given?
|
26
|
+
if fields == :all
|
27
|
+
if just_keys
|
28
|
+
keys = elems.sort_by{|key, value| key }.collect{|key, values| key}
|
29
|
+
keys = prepare_entity(keys, key_field, entity_options.merge(:dup_array => true))
|
30
|
+
else
|
31
|
+
elems.sort_by{|key, value| key }
|
32
|
+
end
|
33
|
+
else
|
34
|
+
sorted = elems.sort do |a, b|
|
35
|
+
a_value = a.last
|
36
|
+
b_value = b.last
|
37
|
+
a_empty = a_value.nil? or (a_value.respond_to?(:empty?) and a_value.empty?)
|
38
|
+
b_empty = b_value.nil? or (b_value.respond_to?(:empty?) and b_value.empty?)
|
39
|
+
case
|
40
|
+
when (a_empty and b_empty)
|
41
|
+
0
|
42
|
+
when a_empty
|
43
|
+
-1
|
44
|
+
when b_empty
|
45
|
+
1
|
46
|
+
when Array === a_value
|
47
|
+
if a_value.length == 1 and b_value.length == 1
|
48
|
+
a_value.first <=> b_value.first
|
49
|
+
else
|
50
|
+
a_value.length <=> b_value.length
|
51
|
+
end
|
52
|
+
else
|
53
|
+
a_value <=> b_value
|
54
|
+
end
|
55
|
+
end
|
56
|
+
if just_keys
|
57
|
+
keys = sorted.collect{|key, value| key}
|
58
|
+
keys = prepare_entity(keys, key_field, entity_options.merge(:dup_array => true)) unless @unnamed
|
59
|
+
keys
|
60
|
+
else
|
61
|
+
sorted.collect{|key, value| [key, self[key]]}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
else
|
65
|
+
if just_keys
|
66
|
+
keys = elems.sort_by(&block).collect{|key, value| key}
|
67
|
+
keys = prepare_entity(keys, key_field, entity_options.merge(:dup_array => true)) unless @unnamed
|
68
|
+
keys
|
69
|
+
else
|
70
|
+
elems.sort_by(&block).collect{|key, value| [key, self[key]]}
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/lib/scout/tsv/util.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative 'util/process'
|
|
6
6
|
require_relative 'util/select'
|
7
7
|
require_relative 'util/reorder'
|
8
8
|
require_relative 'util/unzip'
|
9
|
+
require_relative 'util/sort'
|
9
10
|
module TSV
|
10
11
|
def self.identify_field(key_field, fields, name, strict: nil)
|
11
12
|
return :key if name == :key || (! strict && NamedArray.field_match(key_field, name))
|
data/lib/scout/workflow/step.rb
CHANGED
@@ -124,62 +124,62 @@ class Step
|
|
124
124
|
return @result || self.load if done?
|
125
125
|
prepare_dependencies
|
126
126
|
run_dependencies
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
end
|
127
|
+
begin
|
128
|
+
@result = Persist.persist(name, type, :path => path, :tee_copies => tee_copies) do
|
129
|
+
clear_info
|
130
|
+
input_names = (task.respond_to?(:inputs) && task.inputs) ? task.inputs.collect{|name,_| name} : []
|
131
|
+
merge_info :status => :start, :start => Time.now,
|
132
|
+
:pid => Process.pid, :pid_hostname => Misc.hostname,
|
133
|
+
:inputs => MetaExtension.purge(inputs), :input_names => input_names, :type => type,
|
134
|
+
:dependencies => dependencies.collect{|d| d.path }
|
135
|
+
|
136
|
+
@exec_result = exec
|
137
|
+
|
138
|
+
if @exec_result.nil? && File.exist?(self.tmp_path) && ! File.exist?(self.path)
|
139
|
+
Open.mv self.tmp_path, self.path
|
140
|
+
else
|
141
|
+
@exec_result = @exec_result.stream if @exec_result.respond_to?(:stream)
|
142
|
+
end
|
144
143
|
|
145
|
-
|
144
|
+
@exec_result
|
146
145
|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
end
|
146
|
+
if (IO === @exec_result || StringIO === @exec_result) && (ENV["SCOUT_NO_STREAM"] == "true" || ! stream)
|
147
|
+
Open.sensible_write(self.path, @exec_result)
|
148
|
+
@exec_result = nil
|
149
|
+
else
|
150
|
+
@exec_result
|
153
151
|
end
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
end
|
152
|
+
end
|
153
|
+
rescue Exception => e
|
154
|
+
merge_info :status => :error, :exception => e, :end => Time.now
|
155
|
+
abort_dependencies
|
156
|
+
raise e
|
157
|
+
ensure
|
158
|
+
if ! (error? || aborted?)
|
159
|
+
if streaming?
|
160
|
+
ConcurrentStream.setup(@result) do
|
161
|
+
merge_info :status => :done, :end => Time.now
|
162
|
+
end
|
164
163
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
end
|
164
|
+
@result.abort_callback = proc do |exception|
|
165
|
+
if exception.nil? || Aborted === exception || Interrupt === exception
|
166
|
+
merge_info :status => :aborted, :end => Time.now
|
167
|
+
else
|
168
|
+
begin
|
169
|
+
merge_info :status => :error, :exception => exception, :end => Time.now
|
170
|
+
rescue Exception
|
171
|
+
Log.exception $!
|
174
172
|
end
|
175
173
|
end
|
176
|
-
|
177
|
-
log :streaming
|
178
|
-
else
|
179
|
-
merge_info :status => :done, :end => Time.now
|
180
174
|
end
|
175
|
+
|
176
|
+
|
177
|
+
log :streaming
|
178
|
+
else
|
179
|
+
merge_info :status => :done, :end => Time.now
|
181
180
|
end
|
182
181
|
end
|
182
|
+
end
|
183
183
|
end
|
184
184
|
|
185
185
|
def fork
|
data/scout-gear.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: scout-gear 10.0
|
5
|
+
# stub: scout-gear 10.1.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "scout-gear".freeze
|
9
|
-
s.version = "10.0
|
9
|
+
s.version = "10.1.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Miguel Vazquez".freeze]
|
14
|
-
s.date = "2023-07-
|
14
|
+
s.date = "2023-07-07"
|
15
15
|
s.description = "Temporary files, logs, path, resources, persistence, workflows, TSV, etc.".freeze
|
16
16
|
s.email = "mikisvaz@gmail.com".freeze
|
17
17
|
s.executables = ["scout".freeze]
|
@@ -60,6 +60,7 @@ Gem::Specification.new do |s|
|
|
60
60
|
"lib/scout/tsv/util/process.rb",
|
61
61
|
"lib/scout/tsv/util/reorder.rb",
|
62
62
|
"lib/scout/tsv/util/select.rb",
|
63
|
+
"lib/scout/tsv/util/sort.rb",
|
63
64
|
"lib/scout/tsv/util/unzip.rb",
|
64
65
|
"lib/scout/work_queue.rb",
|
65
66
|
"lib/scout/work_queue/exceptions.rb",
|
@@ -132,6 +133,7 @@ Gem::Specification.new do |s|
|
|
132
133
|
"test/scout/tsv/util/test_process.rb",
|
133
134
|
"test/scout/tsv/util/test_reorder.rb",
|
134
135
|
"test/scout/tsv/util/test_select.rb",
|
136
|
+
"test/scout/tsv/util/test_sort.rb",
|
135
137
|
"test/scout/tsv/util/test_unzip.rb",
|
136
138
|
"test/scout/work_queue/test_socket.rb",
|
137
139
|
"test/scout/work_queue/test_worker.rb",
|
@@ -155,7 +157,7 @@ Gem::Specification.new do |s|
|
|
155
157
|
]
|
156
158
|
s.homepage = "http://github.com/mikisvaz/scout-gear".freeze
|
157
159
|
s.licenses = ["MIT".freeze]
|
158
|
-
s.rubygems_version = "3.
|
160
|
+
s.rubygems_version = "3.4.13".freeze
|
159
161
|
s.summary = "basic gear for scouts".freeze
|
160
162
|
|
161
163
|
s.specification_version = 4
|
@@ -54,10 +54,10 @@ if help
|
|
54
54
|
exit 0
|
55
55
|
end
|
56
56
|
|
57
|
+
job_inputs = task.get_SOPT
|
58
|
+
|
57
59
|
if load_inputs
|
58
|
-
job_inputs = workflow.tasks[task_name].load_inputs(load_inputs)
|
59
|
-
else
|
60
|
-
job_inputs = task.get_SOPT
|
60
|
+
job_inputs = job_inputs.merge(workflow.tasks[task_name].load_inputs(load_inputs))
|
61
61
|
end
|
62
62
|
|
63
63
|
if override_deps
|
data/test/scout/tsv/test_open.rb
CHANGED
@@ -137,7 +137,7 @@ row2 aa bb cc
|
|
137
137
|
dumper = TSV::Dumper.new :key_field => "Key", :fields => ["Field"], type: :single
|
138
138
|
dumper.init
|
139
139
|
assert_raise ScoutException do
|
140
|
-
Log.with_severity
|
140
|
+
Log.with_severity 7 do
|
141
141
|
i = 0
|
142
142
|
TSV.traverse lines, :into => dumper, cpus: 3 do |l|
|
143
143
|
raise ScoutException if i > 10
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(__FILE__).sub(%r(/test/.*), '/test/test_helper.rb')
|
2
|
+
require File.expand_path(__FILE__).sub(%r(.*/test/), '').sub(/test_(.*)\.rb/,'\1')
|
3
|
+
|
4
|
+
require 'scout/tsv'
|
5
|
+
|
6
|
+
class TestClass < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_sort_by
|
9
|
+
content =<<-EOF
|
10
|
+
#ID ValueA ValueB Comment
|
11
|
+
row1 a B c
|
12
|
+
row2 A b C
|
13
|
+
EOF
|
14
|
+
|
15
|
+
TmpFile.with_file(content) do |filename|
|
16
|
+
tsv = TSV.open(File.open(filename), :type => :list, :sep => /\s/)
|
17
|
+
assert_equal %w(row2 row1), tsv.sort_by("ValueA").collect{|k,v| k}
|
18
|
+
assert_equal %w(row1 row2), tsv.sort_by("ValueB").collect{|k,v| k}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scout-gear
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.0
|
4
|
+
version: 10.1.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: 2023-07-
|
11
|
+
date: 2023-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: scout-essentials
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- lib/scout/tsv/util/process.rb
|
173
173
|
- lib/scout/tsv/util/reorder.rb
|
174
174
|
- lib/scout/tsv/util/select.rb
|
175
|
+
- lib/scout/tsv/util/sort.rb
|
175
176
|
- lib/scout/tsv/util/unzip.rb
|
176
177
|
- lib/scout/work_queue.rb
|
177
178
|
- lib/scout/work_queue/exceptions.rb
|
@@ -244,6 +245,7 @@ files:
|
|
244
245
|
- test/scout/tsv/util/test_process.rb
|
245
246
|
- test/scout/tsv/util/test_reorder.rb
|
246
247
|
- test/scout/tsv/util/test_select.rb
|
248
|
+
- test/scout/tsv/util/test_sort.rb
|
247
249
|
- test/scout/tsv/util/test_unzip.rb
|
248
250
|
- test/scout/work_queue/test_socket.rb
|
249
251
|
- test/scout/work_queue/test_worker.rb
|
@@ -283,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
283
285
|
- !ruby/object:Gem::Version
|
284
286
|
version: '0'
|
285
287
|
requirements: []
|
286
|
-
rubygems_version: 3.
|
288
|
+
rubygems_version: 3.4.13
|
287
289
|
signing_key:
|
288
290
|
specification_version: 4
|
289
291
|
summary: basic gear for scouts
|