tqdm 0.3.0 → 0.4.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
- SHA1:
3
- metadata.gz: a133210c842f8c1c583898dbf792545371bc69fe
4
- data.tar.gz: 5718d34d881d6cf1b00d7fda4fe5386db526537b
2
+ SHA256:
3
+ metadata.gz: 72b63925baf593f87124eff5deaba635425475a900dd4432d07c772026488b45
4
+ data.tar.gz: 036ac2f161ef3fca07351818d0de75ec0a4c932af831f73370d26c318213a5f1
5
5
  SHA512:
6
- metadata.gz: aa94d7a905513ca26e45d712db7b63bf1ddc503915e99f728bda5eef4475b916a99bbf969fae97511bc656d8cfd173664cdd16f9ef95b4a8ecf5fcd0263497ae
7
- data.tar.gz: 491b60be374b5fa7c4ff2fa473f4359c6aa7130942197ea3e43b74c4e301d2f0ed348ffcc271c50b29d0a8334f81a60bc1c04ffa6ce14d4cabc22e1b4bf40ca9
6
+ metadata.gz: ca9b6cec37e773998ab099f6ab57e5c1d16f6fde371d82000d7a8750276ea5b3a018760ec0703a6b02830808d6292c4b387dd2beb733221b3b19f1d20bcd3504
7
+ data.tar.gz: c8e3a86ac26c82998a792b1b361fd040953a6078397a69c7d4a09d95641b45b61a04ea5288768a0662169f8e557ec6adc47f1bdd7fdfb66bc02e0027f7d6fa03
data/.travis.yml CHANGED
@@ -5,4 +5,8 @@ rvm:
5
5
  - "2.0.0"
6
6
  - "2.1.8"
7
7
  - "2.2.4"
8
+ - "2.6.5"
9
+ - "2.7.2"
10
+ - "3.0.5"
11
+ - "3.1.3"
8
12
  - rbx
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016 Theodore Pak
1
+ Copyright (c) 2022 Theodore Pak
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -29,7 +29,7 @@ It works equally well from within irb, [pry](http://pryrepl.org/), and [iRuby no
29
29
 
30
30
  Install it globally from [Rubygems](https://rubygems.org/gems/tqdm):
31
31
 
32
- $ gem install tqdm # (might need sudo on OS X)
32
+ $ gem install tqdm # (might need sudo for a system ruby)
33
33
 
34
34
  *or* add this line to your application's Gemfile:
35
35
 
@@ -44,6 +44,7 @@ module Tqdm
44
44
  @min_iterations = options[:min_iters] || 1
45
45
  @min_interval = options[:min_interval] || 0.5
46
46
  @leave = options[:leave] || false
47
+ @force_refreeze = false
47
48
  end
48
49
 
49
50
  # Starts the textual progress bar.
@@ -87,6 +88,7 @@ module Tqdm
87
88
  # progress bar.
88
89
  def enhance
89
90
  decorate_enumerable_each
91
+ enhanced.freeze if @force_refreeze
90
92
  enhanced
91
93
  end
92
94
 
@@ -96,8 +98,8 @@ module Tqdm
96
98
  tqdm = self
97
99
  enhanced.define_singleton_method(:each) do |*args, &block|
98
100
  tqdm.start!
99
- result = super(*args) do |item|
100
- block.call item if block
101
+ result = super(*args) do |*items|
102
+ block.call *items if block
101
103
  tqdm.increment!
102
104
  end
103
105
  tqdm.finish!
@@ -106,7 +108,20 @@ module Tqdm
106
108
  end
107
109
 
108
110
  def enhanced
109
- @enhanced ||= enumerable.clone
111
+ @enhanced ||= enumerable_unfrozen
112
+ end
113
+
114
+ # Uses progressively more invasive techniques to return an unfrozen copy of @enumerable
115
+ # Significantly, for some classes like Sequel::Dataset, both #clone and #dup re-freeze
116
+ # the object, so we have to drop back to Object#clone
117
+ def enumerable_unfrozen
118
+ unfrozen = enumerable.clone(freeze: false)
119
+ return unfrozen unless unfrozen.frozen?
120
+ unfrozen = enumerable.dup
121
+ return unfrozen unless unfrozen.frozen?
122
+ @force_refreeze = true
123
+ unfrozen = Object.instance_method(:clone).bind(enumerable).call(freeze: false)
124
+ unfrozen
110
125
  end
111
126
 
112
127
  def total!
data/lib/tqdm/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Tqdm
2
2
  # The version of this module and gem by the same name.
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
data/spec/sequel_spec.rb CHANGED
@@ -38,6 +38,16 @@ describe 'When enumerating over a Sequel dataset' do
38
38
  "\r " \
39
39
  "\r"
40
40
  end
41
+
42
+ it 'returns a re-frozen object' do
43
+ enhanced = timecop_loop(database[:items])
44
+ expect(enhanced.frozen?).to be_truthy
45
+ end
46
+
47
+ it 'returns an object inheriting from Sequel::Dataset' do
48
+ enhanced = timecop_loop(database[:items])
49
+ expect(enhanced).to be_kind_of(Sequel::Dataset)
50
+ end
41
51
  end
42
52
 
43
53
  context 'with leave: true' do
data/tqdm.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
21
+ spec.add_development_dependency "bundler"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "sequel"
24
24
  spec.add_development_dependency "sqlite3"
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tqdm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theodore Pak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-21 00:00:00.000000000 Z
11
+ date: 2022-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.3'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.3'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -140,8 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  requirements: []
143
- rubyforge_project:
144
- rubygems_version: 2.2.5
143
+ rubygems_version: 3.1.6
145
144
  signing_key:
146
145
  specification_version: 4
147
146
  summary: Enhances Enumerables to show progress while iterating.