tqdm 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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.