judges 0.53.8 → 0.54.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: c75fa1f015fb78647c5f976812eb3a93032c12643c41c5d2b008c7048bba3825
4
- data.tar.gz: 1ddcb544a2593bee9a516a2301e81d67f223b112e48c31c2beda96e6356123df
3
+ metadata.gz: 362db1ae173a36a6d70359dcb5302f0e9256399471857f45dfca0c8b56e74e72
4
+ data.tar.gz: 383960c78930d7475d6750a994f83cfe514169c052090e7b2e7613119376cf77
5
5
  SHA512:
6
- metadata.gz: 6d786a711fafe73654f96b7f0d3abc36ebe78f542d0f631d7d14afc7b883e893db641aad061e7ca266eab62905de9e87eacd326b05a40590e76f536f9acacf13
7
- data.tar.gz: 54d21760d04b90f45a82ecd672b60f228fbc308a16c5b3998751feedfc9830a2dafc7d23d3fb090f68c10bb213e6106fac9343c0898f340c2a2c51b93e28d2ec
6
+ metadata.gz: 5e9e77e4a0f716c8efec912ba87aa5243617eed5a90c21f6402b6596f17ee888b8741956111f8e6cd6b426b34b32681c6f8dc9a6b2fc6f02de5077b921b55d5a
7
+ data.tar.gz: ed95c04645d0c0521d1908a31c7ddad0481780faf31d709f8807340500b5ef8badbee8f9994816549a4213e43b6f472e6e3c57af2ac4a0c093a9fe3dde6afd1a
data/Gemfile.lock CHANGED
@@ -3,18 +3,18 @@ PATH
3
3
  specs:
4
4
  judges (0.0.0)
5
5
  backtrace (~> 0.4)
6
- baza.rb (~> 0.5)
6
+ baza.rb (~> 0.10)
7
7
  concurrent-ruby (~> 1.2)
8
- elapsed (~> 0.0)
9
- factbase (~> 0.11)
8
+ elapsed (~> 0.2)
9
+ factbase (~> 0.16)
10
10
  gli (~> 2.21)
11
11
  iri (~> 0.11)
12
12
  loog (~> 0.6)
13
13
  moments (~> 0.3)
14
14
  nokogiri (~> 1.10)
15
- others (~> 0.0)
15
+ others (~> 0.1)
16
16
  retries (~> 0.0)
17
- tago (~> 0.1)
17
+ tago (~> 0.2)
18
18
  timeout (~> 0.4)
19
19
  total (~> 0.4)
20
20
  typhoeus (~> 1.3)
@@ -80,7 +80,7 @@ GEM
80
80
  ellipsized (0.3.0)
81
81
  ethon (0.17.0)
82
82
  ffi (>= 1.15.0)
83
- factbase (0.16.4)
83
+ factbase (0.16.7)
84
84
  backtrace (~> 0.4)
85
85
  decoor (~> 0.1)
86
86
  ellipsized (~> 0.3)
@@ -137,23 +137,23 @@ GEM
137
137
  multipart-post (2.4.1)
138
138
  net-http (0.6.0)
139
139
  uri
140
- nokogiri (1.18.9-aarch64-linux-gnu)
140
+ nokogiri (1.18.10-aarch64-linux-gnu)
141
141
  racc (~> 1.4)
142
- nokogiri (1.18.9-aarch64-linux-musl)
142
+ nokogiri (1.18.10-aarch64-linux-musl)
143
143
  racc (~> 1.4)
144
- nokogiri (1.18.9-arm-linux-gnu)
144
+ nokogiri (1.18.10-arm-linux-gnu)
145
145
  racc (~> 1.4)
146
- nokogiri (1.18.9-arm-linux-musl)
146
+ nokogiri (1.18.10-arm-linux-musl)
147
147
  racc (~> 1.4)
148
- nokogiri (1.18.9-arm64-darwin)
148
+ nokogiri (1.18.10-arm64-darwin)
149
149
  racc (~> 1.4)
150
- nokogiri (1.18.9-x64-mingw-ucrt)
150
+ nokogiri (1.18.10-x64-mingw-ucrt)
151
151
  racc (~> 1.4)
152
- nokogiri (1.18.9-x86_64-darwin)
152
+ nokogiri (1.18.10-x86_64-darwin)
153
153
  racc (~> 1.4)
154
- nokogiri (1.18.9-x86_64-linux-gnu)
154
+ nokogiri (1.18.10-x86_64-linux-gnu)
155
155
  racc (~> 1.4)
156
- nokogiri (1.18.9-x86_64-linux-musl)
156
+ nokogiri (1.18.10-x86_64-linux-musl)
157
157
  racc (~> 1.4)
158
158
  online (0.1.0)
159
159
  timeout (~> 0.4)
@@ -164,7 +164,7 @@ GEM
164
164
  parser (3.3.9.0)
165
165
  ast (~> 2.4.1)
166
166
  racc
167
- prism (1.4.0)
167
+ prism (1.5.1)
168
168
  public_suffix (6.0.2)
169
169
  qbash (0.4.5)
170
170
  backtrace (> 0)
@@ -176,7 +176,7 @@ GEM
176
176
  rake (13.3.0)
177
177
  random-port (0.7.5)
178
178
  tago (> 0)
179
- regexp_parser (2.11.2)
179
+ regexp_parser (2.11.3)
180
180
  retries (0.0.5)
181
181
  rexml (3.4.4)
182
182
  rubocop (1.80.2)
data/README.md CHANGED
@@ -31,7 +31,8 @@ global variables available to it:
31
31
  a judge is finished;
32
32
  * `$global` — a hash map that is never cleaned up;
33
33
  * `$judge` — the basename of the directory, where the `.rb` script is located.
34
- * `$start` — the time moment when plugin was started
34
+ * `$epoch` — the time moment when plugin was started
35
+ * `$kickoff` — the time moment when a judge was started
35
36
 
36
37
  Every `.yml` file must be formatted as such:
37
38
 
@@ -16,9 +16,9 @@ Feature: Test
16
16
  And Exit code is zero
17
17
 
18
18
  Scenario: Factbase version can be set
19
- When I run bin/judges with "--factbase 0.16.4 --verbose test --judge guess ./fixtures"
19
+ When I run bin/judges with "--factbase 0.16.7 --verbose test --judge guess ./fixtures"
20
20
  Then Exit code is zero
21
- And Stdout contains "Factbase version to be used: '0.16.4'"
21
+ And Stdout contains "Factbase version to be used: '0.16.7'"
22
22
 
23
23
  Scenario: Simple test of no judges
24
24
  Given I run bin/judges with "test --judge absent_for_sure ./fixtures"
@@ -94,7 +94,7 @@ Feature: Update
94
94
  Then I run bin/judges with "--verbose update --timeout 1 --quiet . foo.fb"
95
95
  Then Stdout contains "execution expired"
96
96
  Then Stdout contains "1 judge(s) processed"
97
- Then Stdout contains "Update completed in 1 cycle(s), did 0i/0d/0a"
97
+ Then Stdout contains "Update completed in 1 cycle(s), did nothing"
98
98
  And Exit code is zero
99
99
 
100
100
  Scenario: Simple run of a few judges, with a lib
data/judges.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
10
10
  s.required_ruby_version = '>=3.2'
11
11
  s.name = 'judges'
12
- s.version = '0.53.8'
12
+ s.version = '0.54.0'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
@@ -26,18 +26,18 @@ Gem::Specification.new do |s|
26
26
  s.rdoc_options = ['--charset=UTF-8']
27
27
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
28
28
  s.add_dependency 'backtrace', '~>0.4'
29
- s.add_dependency 'baza.rb', '~>0.5'
29
+ s.add_dependency 'baza.rb', '~>0.10'
30
30
  s.add_dependency 'concurrent-ruby', '~>1.2'
31
- s.add_dependency 'elapsed', '~>0.0'
32
- s.add_dependency 'factbase', '~>0.11'
31
+ s.add_dependency 'elapsed', '~>0.2'
32
+ s.add_dependency 'factbase', '~>0.16'
33
33
  s.add_dependency 'gli', '~>2.21'
34
34
  s.add_dependency 'iri', '~>0.11'
35
35
  s.add_dependency 'loog', '~>0.6'
36
36
  s.add_dependency 'moments', '~>0.3'
37
37
  s.add_dependency 'nokogiri', '~>1.10'
38
- s.add_dependency 'others', '~>0.0'
38
+ s.add_dependency 'others', '~>0.1'
39
39
  s.add_dependency 'retries', '~>0.0'
40
- s.add_dependency 'tago', '~>0.1'
40
+ s.add_dependency 'tago', '~>0.2'
41
41
  s.add_dependency 'timeout', '~>0.4'
42
42
  s.add_dependency 'total', '~>0.4'
43
43
  s.add_dependency 'typhoeus', '~>1.3'
@@ -66,7 +66,7 @@ class Judges::Update
66
66
  end
67
67
  judges = Judges::Judges.new(
68
68
  dir, opts['lib'], @loog,
69
- start: @start, shuffle: opts['shuffle'], boost: opts['boost'],
69
+ epoch: @epoch, shuffle: opts['shuffle'], boost: opts['boost'],
70
70
  demote: opts['demote']
71
71
  )
72
72
  begin
@@ -74,6 +74,7 @@ class Judges::Update
74
74
  loop_them(impex, judges, fb, opts, options)
75
75
  end
76
76
  rescue Timeout::Error, Timeout::ExitException => e
77
+ @loog.error("Terminated due to --lifetime=#{opts['lifetime']}")
77
78
  raise e unless opts['quiet']
78
79
  @loog.info("Had to stop due to the --lifetime=#{opts['lifetime']}")
79
80
  ensure
@@ -238,6 +239,7 @@ class Judges::Update
238
239
  judge.run(fb, global, local, options)
239
240
  end
240
241
  rescue Timeout::Error, Timeout::ExitException => e
242
+ @loog.error("Terminated due to --timeout=#{opts['timeout']}")
241
243
  errors << "Judge #{judge.name} stopped by timeout after #{start.ago}: #{e.message}"
242
244
  end
243
245
  fb.churn
data/lib/judges/judge.rb CHANGED
@@ -21,11 +21,11 @@ class Judges::Judge
21
21
  # @param [String] dir The directory with the judge
22
22
  # @param [String] lib The directory with the lib/
23
23
  # @param [Loog] loog The logging facility
24
- def initialize(dir, lib, loog, start: Time.now)
24
+ def initialize(dir, lib, loog, epoch: Time.now)
25
25
  @dir = dir
26
26
  @lib = lib
27
27
  @loog = loog
28
- @start = start
28
+ @epoch = epoch
29
29
  end
30
30
 
31
31
  # Returns the string representation of the judge.
@@ -40,7 +40,7 @@ class Judges::Judge
40
40
  # @param [Loog] loog New log
41
41
  # @return [Judges::Judge] Similar judge, but log is different
42
42
  def with_loog(loog)
43
- Judges::Judge.new(@dir, @lib, loog, start: @start)
43
+ Judges::Judge.new(@dir, @lib, loog, epoch: @epoch)
44
44
  end
45
45
 
46
46
  # Executes the judge script with the provided factbase and configuration.
@@ -63,7 +63,8 @@ class Judges::Judge
63
63
  $global = global
64
64
  $global.delete(:fb) # to make sure Tallied is always actual
65
65
  $local = local
66
- $start = @start
66
+ $epoch = @epoch
67
+ $kickoff = Time.now
67
68
  options.to_h.each { |k, v| ENV.store(k.to_s, v.to_s) }
68
69
  unless @lib.nil?
69
70
  raise "Lib dir #{@lib.to_rel} is absent" unless File.exist?(@lib)
@@ -85,7 +86,7 @@ class Judges::Judge
85
86
  raise e if e.is_a?(Timeout::ExitException)
86
87
  raise "#{e.message} (#{e.class.name})"
87
88
  ensure
88
- $fb = $judge = $options = $loog = nil
89
+ $fb = $judge = $options = $loog = $epoch = $kickoff = nil
89
90
  end
90
91
  end
91
92
 
data/lib/judges/judges.rb CHANGED
@@ -30,15 +30,15 @@ class Judges::Judges
30
30
  # @param [String] dir Directory containing judges
31
31
  # @param [String] lib Library directory
32
32
  # @param [Loog] loog Logging facility
33
- # @param [Time] start Start time
33
+ # @param [Time] epoch Start time
34
34
  # @param [String] shuffle Prefix for names of judges to shuffle
35
35
  # @param [Array<String>] boost Names of judges to boost in priority
36
36
  # @param [Array<String>] demote Names of judges to demote in priority
37
- def initialize(dir, lib, loog, start: Time.now, shuffle: '', boost: [], demote: [])
37
+ def initialize(dir, lib, loog, epoch: Time.now, shuffle: '', boost: [], demote: [])
38
38
  @dir = dir
39
39
  @lib = lib
40
40
  @loog = loog
41
- @start = start
41
+ @epoch = epoch
42
42
  @shuffle = shuffle || ''
43
43
  @boost = boost
44
44
  @demote = demote
@@ -54,7 +54,7 @@ class Judges::Judges
54
54
  def get(name)
55
55
  d = File.absolute_path(File.join(@dir, name))
56
56
  raise "Judge #{name} doesn't exist in #{@dir}" unless File.exist?(d)
57
- Judges::Judge.new(d, @lib, @loog, start: @start)
57
+ Judges::Judge.new(d, @lib, @loog, epoch: @epoch)
58
58
  end
59
59
 
60
60
  # Iterates over all valid judges in the directory.
data/lib/judges.rb CHANGED
@@ -8,5 +8,5 @@
8
8
  # Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
9
9
  # License:: MIT
10
10
  module Judges
11
- VERSION = '0.53.8' unless const_defined?(:VERSION)
11
+ VERSION = '0.54.0' unless const_defined?(:VERSION)
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: judges
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.53.8
4
+ version: 0.54.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.5'
32
+ version: '0.10'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.5'
39
+ version: '0.10'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: concurrent-ruby
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -57,28 +57,28 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.0'
60
+ version: '0.2'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.0'
67
+ version: '0.2'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: factbase
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.11'
74
+ version: '0.16'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.11'
81
+ version: '0.16'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: gli
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -155,14 +155,14 @@ dependencies:
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '0.0'
158
+ version: '0.1'
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '0.0'
165
+ version: '0.1'
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: retries
168
168
  requirement: !ruby/object:Gem::Requirement
@@ -183,14 +183,14 @@ dependencies:
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: '0.1'
186
+ version: '0.2'
187
187
  type: :runtime
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: '0.1'
193
+ version: '0.2'
194
194
  - !ruby/object:Gem::Dependency
195
195
  name: timeout
196
196
  requirement: !ruby/object:Gem::Requirement