milemarker 1.0.0 → 1.0.2

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: 1cc6c3aa16cc1d24991354663de1ceea5859d82a025e83d2683b9fa3b49d5f9e
4
- data.tar.gz: 924edbc92d18fd924d4934f188a88e9c36ed8bbbae443a7815462b4d40388fe0
3
+ metadata.gz: 650f11afa03ba842418cd343cf81b0355e1c827299efa42b5a538e9f269babb9
4
+ data.tar.gz: 36705399cfe48604b955d3906a9190990a305fe624aaf64f45e98cff49bc0828
5
5
  SHA512:
6
- metadata.gz: 7841d99693517311d47206ca49890278386643130dd934b6ca6f93fa0b0032c5e6f8aaaf038f8c0336ff2e967744d0e86a86c7dcb9b34e8030cdcecaf97a5773
7
- data.tar.gz: 033d5566f4d893668c03f358f40a8ee2d0bd26610010e05ca11871225b94c2288f3bd252c1e9fc05f75034f200ba43d28520be5eba5d715e6f63766f8b19e765
6
+ metadata.gz: e73efc0e49af4e0ea25b68af7f158c38e01db35993ead87367d32306e485ac504d022c0dba7b5ad6b4deb4179151037aa5db25e73c5bd920747e589dd0ddf350
7
+ data.tar.gz: 21df5eb7752f0b5f70d3225682d2cf4fc1692cca9b0b94b8571246dd551fc71cc0df0f4f9883359d4f2a38f60a81ed8d66240d7e65bbd501ed31f550ae74da2c
@@ -0,0 +1,27 @@
1
+ name: Run Tests
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ env:
10
+ # See https://github.com/jruby/jruby/issues/5509
11
+ JAVA_OPTS: "--add-opens java.xml/com.sun.org.apache.xerces.internal.impl=org.jruby.dist"
12
+
13
+ jobs:
14
+ tests:
15
+ runs-on: ubuntu-latest
16
+ strategy:
17
+ matrix:
18
+ ruby: [3.2, 3.3, 3.4, jruby]
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ - name: Set up Ruby
22
+ uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby }}
25
+ bundler-cache: true
26
+ - name: Run tests
27
+ run: bundle exec rake
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ Gemfile.lock
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## [1.0.2] - 2023-10-23
2
+
3
+ - Add logger to gemfile, since it's no longer in stdlib
4
+
1
5
  ## [1.0.0] - 2021-11-29
2
6
 
3
7
  First public release
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2021 Bill Dueber
3
+ Copyright (c) 2021 The Regents of the University of Michigan
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -27,12 +27,12 @@ class Milemarker
27
27
  when Hash
28
28
  msg
29
29
  when String
30
- { msg: msg }
30
+ {msg: msg}
31
31
  when Exception
32
32
  exception_message_hash(msg)
33
33
  else
34
34
  other_message_hash(msg)
35
- end.merge({ level: severity, time: datetime }).to_json
35
+ end.merge({level: severity, time: datetime}).to_json
36
36
  end
37
37
  self
38
38
  end
@@ -50,7 +50,7 @@ class Milemarker
50
50
  }
51
51
  end
52
52
 
53
- alias batch_data batch_line
53
+ alias_method :batch_data, :batch_line
54
54
 
55
55
  # @return [Hash] hash with information about the last batch
56
56
  def final_line
@@ -63,17 +63,17 @@ class Milemarker
63
63
  }
64
64
  end
65
65
 
66
- alias final_data final_line
66
+ alias_method :final_data, :final_line
67
67
 
68
68
  def exception_message_hash(msg)
69
- { msg: msg.message, error: msg.class, at: msg.backtrace&.first, hostname: Socket.gethostname }
69
+ {msg: msg.message, error: msg.class, at: msg.backtrace&.first, hostname: Socket.gethostname}
70
70
  end
71
71
 
72
72
  def other_message_hash(msg)
73
73
  if msg.respond_to? :to_h
74
74
  msg.to_h
75
75
  else
76
- { msg: msg.inspect }
76
+ {msg: msg.inspect}
77
77
  end
78
78
  end
79
79
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Milemarker
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.2"
5
5
  end
data/lib/milemarker.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "ppnum"
4
- require 'logger'
5
- require 'socket'
6
- require 'json'
7
- require 'milemarker/structured'
4
+ require "logger"
5
+ require "socket"
6
+ require "json"
7
+ require "milemarker/structured"
8
8
 
9
9
  # milemarker class, to keep track of progress over time for long-running
10
10
  # iterating processes
@@ -51,18 +51,18 @@ class Milemarker
51
51
  # @param [Logger, #info, #warn] Optional logger that responds to the normal #info, #warn, etc.
52
52
  def initialize(batch_size: 1000, name: nil, logger: nil)
53
53
  @batch_size = batch_size
54
- @name = name
55
- @logger = logger
54
+ @name = name
55
+ @logger = logger
56
56
 
57
57
  @batch_number = 0
58
- @last_batch_size = 0
58
+ @last_batch_size = 0
59
59
  @last_batch_seconds = 0
60
60
 
61
- @start_time = Time.now
61
+ @start_time = Time.now
62
62
  @batch_start_time = @start_time
63
- @batch_end_time = @start_time
63
+ @batch_end_time = @start_time
64
64
 
65
- @count = 0
65
+ @count = 0
66
66
  @prev_count = 0
67
67
  end
68
68
 
@@ -84,7 +84,7 @@ class Milemarker
84
84
  self
85
85
  end
86
86
 
87
- alias increment incr
87
+ alias_method :increment, :incr
88
88
 
89
89
  # Create a logger for use in logging milemaker information
90
90
  # @example mm.create_logger!(STDOUT)
@@ -108,7 +108,7 @@ class Milemarker
108
108
  incr.on_batch(&blk)
109
109
  end
110
110
 
111
- alias increment_and_on_batch _increment_and_on_batch
111
+ alias_method :increment_and_on_batch, :_increment_and_on_batch
112
112
 
113
113
  # Threadsafe version of #increment_and_on_batch, doing the whole thing as a single atomic action
114
114
  def threadsafe_increment_and_on_batch(&blk)
@@ -154,7 +154,7 @@ class Milemarker
154
154
  count - prev_count
155
155
  end
156
156
 
157
- alias batch_count_so_far final_batch_size
157
+ alias_method :batch_count_so_far, :final_batch_size
158
158
 
159
159
  # A line describing the entire run, suitable for logging, of the form
160
160
  # load records.ndj FINISHED. 27_138_118 total records in 00h 12m 39s. Overall 35_718 r/s.
@@ -208,8 +208,8 @@ class Milemarker
208
208
  # Set/reset all the internal state. Called by #on_batch when necessary;
209
209
  # should probably not be called manually
210
210
  def set_milemarker!
211
- @batch_end_time = Time.now
212
- @last_batch_size = @count - @prev_count
211
+ @batch_end_time = Time.now
212
+ @last_batch_size = @count - @prev_count
213
213
  @last_batch_seconds = @batch_end_time - @batch_start_time
214
214
 
215
215
  reset_for_next_batch!
@@ -218,8 +218,8 @@ class Milemarker
218
218
  # Reset the internal counters/timers at the end of a batch. Taken care of
219
219
  # by #on_batch; should probably not be called manually.
220
220
  def reset_for_next_batch!
221
- @batch_start_time = batch_end_time
222
- @prev_count = count
221
+ @batch_start_time = batch_end_time
222
+ @prev_count = count
223
223
  @batch_number = batch_divisor
224
224
  end
225
225
 
@@ -242,7 +242,7 @@ class Milemarker
242
242
 
243
243
  def seconds_to_time_string(sec)
244
244
  hours, leftover = sec.divmod(3600)
245
- minutes, secs = leftover.divmod(60)
245
+ minutes, secs = leftover.divmod(60)
246
246
  format("%02dh %02dm %02ds", hours, minutes, secs)
247
247
  end
248
248
  end
data/lib/ppnum.rb CHANGED
@@ -20,15 +20,15 @@
20
20
  def ppnum(num, width = 0, decimals = 0)
21
21
  num = num.round(decimals)
22
22
  dec_str = if decimals.zero?
23
- ""
24
- else
25
- ".#{format("%.#{decimals}f", num).split(".").last}"
26
- end
23
+ ""
24
+ else
25
+ ".#{format("%.#{decimals}f", num).split(".").last}"
26
+ end
27
27
  numstr = num.floor.to_s.reverse.split(/(...)/)
28
- .reject(&:empty?)
29
- .map(&:reverse)
30
- .reverse
31
- .join("_") + dec_str
28
+ .reject(&:empty?)
29
+ .map(&:reverse)
30
+ .reverse
31
+ .join("_") + dec_str
32
32
  if width.zero?
33
33
  numstr
34
34
  else
data/milemarker.gemspec CHANGED
@@ -3,39 +3,39 @@
3
3
  require_relative "lib/milemarker/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "milemarker"
7
- spec.version = Milemarker::VERSION
8
- spec.authors = ["Bill Dueber"]
9
- spec.email = ["bill@dueber.com"]
10
-
11
- spec.summary = "Track and produce loglines for batch processing progress."
12
- spec.homepage = "https://github.com/billdueber/milemarker"
13
- spec.license = "MIT"
6
+ spec.name = "milemarker"
7
+ spec.version = Milemarker::VERSION
8
+ spec.authors = ["Bill Dueber"]
9
+ spec.email = ["bill@dueber.com"]
10
+
11
+ spec.summary = "Track and produce loglines for batch processing progress."
12
+ spec.homepage = "https://github.com/billdueber/milemarker"
13
+ spec.license = "MIT"
14
14
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
- spec.metadata["changelog_uri"] = spec.homepage + '/CHANGELOG.md'
18
+ spec.metadata["changelog_uri"] = spec.homepage + "/CHANGELOG.md"
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
22
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
23
23
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
24
24
  end
25
- spec.bindir = "exe"
26
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  # Uncomment to register a new dependency of your gem
30
- # spec.add_dependency "example-gem", "~> 1.0"
30
+ spec.add_dependency "logger"
31
31
 
32
32
  # For more information and examples about making a new gem, checkout our
33
33
  # guide at: https://bundler.io/guides/creating_gem.html
34
34
  #
35
35
 
36
- spec.add_development_dependency 'bundler', '~>2.0'
37
- spec.add_development_dependency 'pry'
38
- spec.add_development_dependency 'rake', '~>13.0'
39
- spec.add_development_dependency 'rspec', '~> 3.0'
40
- spec.add_development_dependency 'rubocop', '~> 1.7'
36
+ spec.add_development_dependency "bundler"
37
+ spec.add_development_dependency "pry"
38
+ spec.add_development_dependency "rake"
39
+ spec.add_development_dependency "rspec"
40
+ spec.add_development_dependency "standardrb"
41
41
  end
metadata CHANGED
@@ -1,29 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: milemarker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bill Dueber
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2021-11-29 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: logger
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
13
26
  - !ruby/object:Gem::Dependency
14
27
  name: bundler
15
28
  requirement: !ruby/object:Gem::Requirement
16
29
  requirements:
17
- - - "~>"
30
+ - - ">="
18
31
  - !ruby/object:Gem::Version
19
- version: '2.0'
32
+ version: '0'
20
33
  type: :development
21
34
  prerelease: false
22
35
  version_requirements: !ruby/object:Gem::Requirement
23
36
  requirements:
24
- - - "~>"
37
+ - - ">="
25
38
  - !ruby/object:Gem::Version
26
- version: '2.0'
39
+ version: '0'
27
40
  - !ruby/object:Gem::Dependency
28
41
  name: pry
29
42
  requirement: !ruby/object:Gem::Requirement
@@ -42,52 +55,51 @@ dependencies:
42
55
  name: rake
43
56
  requirement: !ruby/object:Gem::Requirement
44
57
  requirements:
45
- - - "~>"
58
+ - - ">="
46
59
  - !ruby/object:Gem::Version
47
- version: '13.0'
60
+ version: '0'
48
61
  type: :development
49
62
  prerelease: false
50
63
  version_requirements: !ruby/object:Gem::Requirement
51
64
  requirements:
52
- - - "~>"
65
+ - - ">="
53
66
  - !ruby/object:Gem::Version
54
- version: '13.0'
67
+ version: '0'
55
68
  - !ruby/object:Gem::Dependency
56
69
  name: rspec
57
70
  requirement: !ruby/object:Gem::Requirement
58
71
  requirements:
59
- - - "~>"
72
+ - - ">="
60
73
  - !ruby/object:Gem::Version
61
- version: '3.0'
74
+ version: '0'
62
75
  type: :development
63
76
  prerelease: false
64
77
  version_requirements: !ruby/object:Gem::Requirement
65
78
  requirements:
66
- - - "~>"
79
+ - - ">="
67
80
  - !ruby/object:Gem::Version
68
- version: '3.0'
81
+ version: '0'
69
82
  - !ruby/object:Gem::Dependency
70
- name: rubocop
83
+ name: standardrb
71
84
  requirement: !ruby/object:Gem::Requirement
72
85
  requirements:
73
- - - "~>"
86
+ - - ">="
74
87
  - !ruby/object:Gem::Version
75
- version: '1.7'
88
+ version: '0'
76
89
  type: :development
77
90
  prerelease: false
78
91
  version_requirements: !ruby/object:Gem::Requirement
79
92
  requirements:
80
- - - "~>"
93
+ - - ">="
81
94
  - !ruby/object:Gem::Version
82
- version: '1.7'
83
- description:
95
+ version: '0'
84
96
  email:
85
97
  - bill@dueber.com
86
98
  executables: []
87
99
  extensions: []
88
100
  extra_rdoc_files: []
89
101
  files:
90
- - ".github/workflows/main.yml"
102
+ - ".github/workflows/tests.yml"
91
103
  - ".gitignore"
92
104
  - ".rspec"
93
105
  - ".rubocop.yml"
@@ -110,7 +122,6 @@ metadata:
110
122
  homepage_uri: https://github.com/billdueber/milemarker
111
123
  source_code_uri: https://github.com/billdueber/milemarker
112
124
  changelog_uri: https://github.com/billdueber/milemarker/CHANGELOG.md
113
- post_install_message:
114
125
  rdoc_options: []
115
126
  require_paths:
116
127
  - lib
@@ -125,8 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
136
  - !ruby/object:Gem::Version
126
137
  version: '0'
127
138
  requirements: []
128
- rubygems_version: 3.2.32
129
- signing_key:
139
+ rubygems_version: 3.6.9
130
140
  specification_version: 4
131
141
  summary: Track and produce loglines for batch processing progress.
132
142
  test_files: []
@@ -1,16 +0,0 @@
1
- name: Ruby
2
-
3
- on: [push,pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - uses: actions/checkout@v2
10
- - name: Set up Ruby
11
- uses: ruby/setup-ruby@v1
12
- with:
13
- ruby-version: 2.6.6
14
- bundler-cache: true
15
- - name: Run the default task
16
- run: bundle exec rake