computable 1.1.2 → 1.1.3
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
- checksums.yaml.gz.sig +0 -0
- data/computable.gemspec +1 -1
- data/lib/computable/version.rb +1 -1
- data/lib/computable.rb +11 -7
- data/test/test_backtrace.rb +9 -6
- data/test/test_input_value.rb +5 -0
- data.tar.gz.sig +3 -4
- metadata +27 -26
- metadata.gz.sig +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 36fc11ccdc0bcfd191eae39d35bae6fc896b338b52a63a2b6693b33c865bfeaf
|
|
4
|
+
data.tar.gz: f7db8ba67c28d1983569d73b4ab1ebb269ed82e0476d8aab39b72e5a93d65f13
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b742c59611981f23814e9b88b62c8b2aa1be6d61b8c3584d19724e40615fc5295381ef2d9e8302c6fd5ff24f6837f085582a4cfe02f4ef0a7febf71fb0d86e67
|
|
7
|
+
data.tar.gz: d076c6eb9329ae9848a5779205192be33936d1f2ca149366eb48a7998367d0236de9644e93d032e6cc1ed9015040b4d7b259723ee92eb22ca5125e4320d58559
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/computable.gemspec
CHANGED
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
20
20
|
spec.require_paths = ["lib"]
|
|
21
21
|
|
|
22
|
-
spec.add_development_dependency "bundler", ">= 1.4", "<
|
|
22
|
+
spec.add_development_dependency "bundler", ">= 1.4", "< 4.0"
|
|
23
23
|
spec.add_development_dependency "rake"
|
|
24
24
|
spec.add_development_dependency "minitest", "~> 5.6"
|
|
25
25
|
end
|
data/lib/computable/version.rb
CHANGED
data/lib/computable.rb
CHANGED
|
@@ -27,21 +27,25 @@ class Computable
|
|
|
27
27
|
@expired_from = {}
|
|
28
28
|
@count = 0
|
|
29
29
|
@value = Unknown
|
|
30
|
+
@value_calced = nil
|
|
30
31
|
@in_process = false
|
|
31
32
|
@recalc_error = nil
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
def inspect
|
|
35
36
|
has = @recalc_error ? "error!" : "value:#{Unknown!=value}"
|
|
36
|
-
"<Variable #{name} used_for:#{used_for.keys} expired_from:#{expired_from.keys} has #{has} value_calced:#{value_calced
|
|
37
|
+
"<Variable #{name} used_for:#{used_for.keys} expired_from:#{expired_from.keys} has #{has} value_calced:#{case value_calced when NilClass then :no when 1 then :yes when 2 then :exception end}>"
|
|
37
38
|
end
|
|
38
39
|
|
|
39
40
|
def calc!
|
|
40
41
|
self.count += 1
|
|
41
|
-
self.value_calced =
|
|
42
|
+
self.value_calced = 1
|
|
42
43
|
@mutex.unlock
|
|
43
44
|
begin
|
|
44
45
|
calc_method.call(self)
|
|
46
|
+
rescue
|
|
47
|
+
self.value_calced = 2
|
|
48
|
+
raise
|
|
45
49
|
ensure
|
|
46
50
|
@mutex.lock
|
|
47
51
|
end
|
|
@@ -162,7 +166,7 @@ class Computable
|
|
|
162
166
|
end
|
|
163
167
|
node.in_process = true
|
|
164
168
|
node.count += 1
|
|
165
|
-
node.value_calced =
|
|
169
|
+
node.value_calced = 1
|
|
166
170
|
num_working += 1
|
|
167
171
|
to_workers.push(node)
|
|
168
172
|
end
|
|
@@ -189,14 +193,14 @@ class Computable
|
|
|
189
193
|
used_for.clear
|
|
190
194
|
self.value = value
|
|
191
195
|
end
|
|
192
|
-
self.value_calced =
|
|
196
|
+
self.value_calced = nil
|
|
193
197
|
end
|
|
194
198
|
|
|
195
199
|
def query_value(kaller)
|
|
196
200
|
if kaller
|
|
197
201
|
v2 = used_for[kaller.name]
|
|
198
202
|
if v2
|
|
199
|
-
if Unknown==value && Unknown==v2.value && value_calced && v2.value_calced
|
|
203
|
+
if Unknown==value && Unknown==v2.value && value_calced == 1 && v2.value_calced
|
|
200
204
|
raise RecursionDetected, "#{v2.name} depends on #{name}, but #{name} could not be computed without #{v2.name}"
|
|
201
205
|
end
|
|
202
206
|
else
|
|
@@ -279,8 +283,8 @@ class Computable
|
|
|
279
283
|
fpath, lineno = block.source_location
|
|
280
284
|
bt = err.backtrace
|
|
281
285
|
myloc = err.backtrace_locations.find.with_index do |loc, i|
|
|
282
|
-
(loc.path == recalc_location_fpath && loc.lineno == recalc_location_lineno + 5 && !bt[i].include?("#")) ||
|
|
283
|
-
(loc.path == fpath && loc.lineno >= lineno && !bt[i].include?("#") && !bt[i].include?("#"))
|
|
286
|
+
(loc.path == recalc_location_fpath && loc.lineno == recalc_location_lineno + 5 && !bt[i].include?(" #")) ||
|
|
287
|
+
(loc.path == fpath && loc.lineno >= lineno && !bt[i].include?(" #") && !bt[i].include?(" #"))
|
|
284
288
|
end
|
|
285
289
|
idx = err.backtrace_locations.index(myloc)
|
|
286
290
|
bt[idx] += " ##{text}" if idx
|
data/test/test_backtrace.rb
CHANGED
|
@@ -6,10 +6,13 @@ class TestBacktrace < Minitest::Test
|
|
|
6
6
|
c
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
def self.make_c
|
|
10
|
+
calc_value :c do
|
|
11
|
+
raise "my error" if enable
|
|
12
|
+
:x
|
|
13
|
+
end
|
|
12
14
|
end
|
|
15
|
+
make_c
|
|
13
16
|
|
|
14
17
|
calc_value :a do
|
|
15
18
|
b
|
|
@@ -30,7 +33,7 @@ class TestBacktrace < Minitest::Test
|
|
|
30
33
|
err = assert_raises(StandardError){ @b.b }
|
|
31
34
|
bt = err.backtrace.join("\n")
|
|
32
35
|
assert_match(/my error/, err.to_s)
|
|
33
|
-
assert_match(/test_backtrace.rb:
|
|
36
|
+
assert_match(/test_backtrace.rb:11:.* #c$/, bt)
|
|
34
37
|
assert_match(/test_backtrace.rb:6:.* #b$/, bt)
|
|
35
38
|
end
|
|
36
39
|
|
|
@@ -42,7 +45,7 @@ class TestBacktrace < Minitest::Test
|
|
|
42
45
|
err = assert_raises(StandardError){ @b.b }
|
|
43
46
|
bt = err.backtrace.join("\n")
|
|
44
47
|
assert_match(/my error/, err.to_s)
|
|
45
|
-
assert_match(/test_backtrace.rb:
|
|
48
|
+
assert_match(/test_backtrace.rb:11:.* #c$/, bt)
|
|
46
49
|
assert_match(/block in recalc_value' #b$/, bt) unless @b.computable_max_threads
|
|
47
50
|
end
|
|
48
51
|
|
|
@@ -54,7 +57,7 @@ class TestBacktrace < Minitest::Test
|
|
|
54
57
|
err = assert_raises(StandardError){ @b.a }
|
|
55
58
|
bt = err.backtrace.join("\n")
|
|
56
59
|
assert_match(/my error/, err.to_s)
|
|
57
|
-
assert_match(/test_backtrace.rb:
|
|
60
|
+
assert_match(/test_backtrace.rb:11:.* #c$/, bt)
|
|
58
61
|
assert_match(/block in recalc_value' #b.*block in recalc_value' #a$/m, bt) unless @b.computable_max_threads
|
|
59
62
|
end
|
|
60
63
|
end
|
data/test/test_input_value.rb
CHANGED
|
@@ -17,6 +17,11 @@ class TestInputValue < Minitest::Test
|
|
|
17
17
|
# @b.computable_display_dot
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def test_undefined_input_twice
|
|
21
|
+
assert_raises(Computable::UndefinedValue){ @b.o }
|
|
22
|
+
assert_raises(Computable::UndefinedValue){ @b.o }
|
|
23
|
+
end
|
|
24
|
+
|
|
20
25
|
def test_undefined_input
|
|
21
26
|
assert_raises(Computable::UndefinedValue){ @b.i }
|
|
22
27
|
assert_raises(Computable::UndefinedValue){ @b.o }
|
data.tar.gz.sig
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
��
|
|
3
|
-
|
|
4
|
-
q��a꿙�%B뻪�5��C�['���`e�/�ZB���z�
|
|
1
|
+
D��u�G��#��p���r[{tB���[����'CU�x��C K���RT��݈����R�ŅҲ�vIݧa����#�B���(o�=�uc��=����a��*w^1��Ti
|
|
2
|
+
n�/C6�`j�8(���w߯�܄ٷ���u���,u��N�0��P6�C�4/��`�f-�TmZ/�E>RlZ�U��
|
|
3
|
+
�{�D�Xn���k��Q��f.��K@��-��ܬ��]�rm���[*�s�d��|�~8�Q��`��s�\ ?S�{�$+ N�Q�k]iі�p�l f�p��vE��p�O��lBpڌ(�i�EQb�Iڽك�����%U��
|
metadata
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: computable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lars Kanis
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain:
|
|
11
10
|
- |
|
|
12
11
|
-----BEGIN CERTIFICATE-----
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
12
|
+
MIIEBDCCAmygAwIBAgIBAzANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
|
|
13
|
+
L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yNDEyMjkxOTU2NTZaFw0yNTEy
|
|
14
|
+
MjkxOTU2NTZaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
|
|
15
|
+
PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
|
|
16
|
+
mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
|
|
17
|
+
eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
|
|
18
|
+
8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
|
|
19
|
+
SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
|
|
20
|
+
JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
|
|
21
|
+
eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
|
|
22
|
+
chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
|
|
23
|
+
9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjOTA3MAkG
|
|
24
|
+
A1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQ4h1tIyvdUWtMI739xMzTR
|
|
25
|
+
7EfMFzANBgkqhkiG9w0BAQsFAAOCAYEAoZZWzNV2XXaoSmvyamSSN+Wt/Ia+DNrU
|
|
26
|
+
2pc3kMEqykH6l1WiVPszr6HavQ//2I2UcSRSS5AGDdiSXcfyFmHtMBdtJHhTPcn7
|
|
27
|
+
4DLliB0szpvwG+ltGD8PI8eWkLaTQeFzs+0QCTavgKV+Zw56Q0J5zZvHHUMrLkUD
|
|
28
|
+
qhwKjdTdkrRTn9Sqi0BrIRRZGTUDdrt8qoWm35aES5arKZzytgrRD/kXfFW2LCg0
|
|
29
|
+
FzgTKibR4/3g8ph94kQLg/D2SMlVPkQ3ECi036mZxDC2n8V6u3rDkG5923wmrRZB
|
|
30
|
+
J6cqz475Q8HYORQCB68OPzkWMfC7mBo3vpSsIqRoNs1FE4FJu4FGwZG8fBSrDC4H
|
|
31
|
+
bZe+GtyS3e2SMjgT65zp35gLO9I7MquzYN9P6V2u1iBpTycchk5z9R1ghxzZSBT8
|
|
32
|
+
DrkJ9tVlPQtJB0LqT0tvBap4upnwT1xYq721b5dwH6AF4Pi6iz/dc5vnq1/MH8bV
|
|
33
|
+
8VbbBzzeE7MsvgkP3sHlLmY8PtuyViJ8
|
|
31
34
|
-----END CERTIFICATE-----
|
|
32
|
-
date:
|
|
35
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
33
36
|
dependencies:
|
|
34
37
|
- !ruby/object:Gem::Dependency
|
|
35
38
|
name: bundler
|
|
@@ -40,7 +43,7 @@ dependencies:
|
|
|
40
43
|
version: '1.4'
|
|
41
44
|
- - "<"
|
|
42
45
|
- !ruby/object:Gem::Version
|
|
43
|
-
version: '
|
|
46
|
+
version: '4.0'
|
|
44
47
|
type: :development
|
|
45
48
|
prerelease: false
|
|
46
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -50,7 +53,7 @@ dependencies:
|
|
|
50
53
|
version: '1.4'
|
|
51
54
|
- - "<"
|
|
52
55
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: '
|
|
56
|
+
version: '4.0'
|
|
54
57
|
- !ruby/object:Gem::Dependency
|
|
55
58
|
name: rake
|
|
56
59
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -112,7 +115,6 @@ homepage: https://github.com/larskanis/computable
|
|
|
112
115
|
licenses:
|
|
113
116
|
- MIT
|
|
114
117
|
metadata: {}
|
|
115
|
-
post_install_message:
|
|
116
118
|
rdoc_options: []
|
|
117
119
|
require_paths:
|
|
118
120
|
- lib
|
|
@@ -127,8 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
127
129
|
- !ruby/object:Gem::Version
|
|
128
130
|
version: '0'
|
|
129
131
|
requirements: []
|
|
130
|
-
rubygems_version: 3.
|
|
131
|
-
signing_key:
|
|
132
|
+
rubygems_version: 3.6.9
|
|
132
133
|
specification_version: 4
|
|
133
134
|
summary: Define computation tasks with automatic caching and dependency tracking.
|
|
134
135
|
test_files:
|
metadata.gz.sig
CHANGED
|
@@ -1 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
[@� v�XƨP��.!@��.��=I�Ш?��&�Žj�ګ�Xֺ!&�&&���5��Se��-⍵k-�����o�ɍ��^S�����Z/�|ݡ��:g�V�KB��n�
|
|
2
|
+
�7k%�1�|�Ղ�o7g(������T��uB���Չ��*//����JE�L��X�x�Ǹ�T�
|
|
3
|
+
�鎃�V8g�kB:ܔXk�=�T�J>���;3��Z�8&�<���L�����4O����ة���D��;�4KJ��Y`�Ò}^<cS�f��x�V�r5�q�V�x���$kվ���"a�J��𒿠ʰ`�����}
|