dry-effects 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -4
- data/README.md +2 -2
- data/dry-effects.gemspec +13 -15
- data/lib/dry/effects/all.rb +3 -4
- data/lib/dry/effects/constructors.rb +2 -6
- data/lib/dry/effects/effects/timeout.rb +1 -3
- data/lib/dry/effects/extensions/active_support/tagged_logging.rb +1 -1
- data/lib/dry/effects/extensions/auto_inject.rb +1 -3
- data/lib/dry/effects/extensions/rspec.rb +2 -6
- data/lib/dry/effects/extensions/system.rb +1 -1
- data/lib/dry/effects/frame.rb +0 -2
- data/lib/dry/effects/initializer.rb +2 -4
- data/lib/dry/effects/instructions/execute.rb +1 -3
- data/lib/dry/effects/instructions/raise.rb +1 -3
- data/lib/dry/effects/providers/cache.rb +1 -3
- data/lib/dry/effects/providers/cmp.rb +3 -9
- data/lib/dry/effects/providers/current_time.rb +1 -3
- data/lib/dry/effects/providers/env.rb +2 -6
- data/lib/dry/effects/providers/implicit.rb +1 -3
- data/lib/dry/effects/providers/interrupt.rb +4 -12
- data/lib/dry/effects/providers/lock.rb +5 -15
- data/lib/dry/effects/providers/parallel.rb +1 -3
- data/lib/dry/effects/providers/reader.rb +1 -3
- data/lib/dry/effects/providers/resolve.rb +1 -3
- data/lib/dry/effects/providers/retry.rb +4 -12
- data/lib/dry/effects/providers/timeout.rb +1 -3
- data/lib/dry/effects/providers/timestamp.rb +1 -3
- data/lib/dry/effects/stack.rb +2 -2
- data/lib/dry/effects/version.rb +1 -1
- metadata +14 -55
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 626d4bdc56d537a84bf03b5dc0dc41064884a332d963927e8ea4a67146f02798
|
4
|
+
data.tar.gz: 5f2ddb0d5d4ef7be1bd6f74df8705004b0a56f777620eba2e07a5d092fd38961
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 252fd40556632c8e54f5c4946c829c2992a37d786e14a8566dfd29ae821043f4245d85c5b4ac7c0fd611c68bd6bfb6ddcc326cb7c9025a751db965ad56464020
|
7
|
+
data.tar.gz: 3277ddb76eb1c387f840a380d9d66de4654ead45eae4fbf4b7e3708082ce7768a58740544344e1e8b9661b464d76563d72dfd24e469dbe9a7c3b1c2fdf38e692
|
data/CHANGELOG.md
CHANGED
@@ -1,22 +1,31 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
-
## 0.
|
3
|
+
## 0.5.0 2025-01-07
|
4
|
+
|
5
|
+
|
6
|
+
### Changed
|
7
|
+
|
8
|
+
- Set minimum Ruby version to 3.1 (@flash-gordon)
|
9
|
+
|
10
|
+
[Compare v0.4.1...v0.5.0](https://github.com/dry-rb/dry-effects/compare/v0.4.1...v0.5.0)
|
11
|
+
|
12
|
+
## 0.4.1 2024-03-15
|
4
13
|
|
5
14
|
|
6
15
|
### Changed
|
7
16
|
|
8
17
|
- Workaround for a clash with Object#with (@tallica + @flash-gordon)
|
9
18
|
|
10
|
-
[Compare v0.4.0...
|
19
|
+
[Compare v0.4.0...v0.4.1](https://github.com/dry-rb/dry-effects/compare/v0.4.0...v0.4.1)
|
11
20
|
|
12
|
-
## 0.4.0
|
21
|
+
## 0.4.0 2022-11-07
|
13
22
|
|
14
23
|
|
15
24
|
### Changed
|
16
25
|
|
17
26
|
- This version is compatible with recently released dry-rb dependencies (@flash-gordon)
|
18
27
|
|
19
|
-
[Compare v0.3.1...
|
28
|
+
[Compare v0.3.1...v0.4.0](https://github.com/dry-rb/dry-effects/compare/v0.3.1...v0.4.0)
|
20
29
|
|
21
30
|
## 0.3.1 2022-10-17
|
22
31
|
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
[gem]: https://rubygems.org/gems/dry-effects
|
3
3
|
[actions]: https://github.com/dry-rb/dry-effects/actions
|
4
4
|
|
5
|
-
# dry-effects [![Gem Version](https://badge.fury.io/rb/dry-effects.svg)][gem] [![CI Status](https://github.com/dry-rb/dry-effects/workflows/
|
5
|
+
# dry-effects [![Gem Version](https://badge.fury.io/rb/dry-effects.svg)][gem] [![CI Status](https://github.com/dry-rb/dry-effects/workflows/CI/badge.svg)][actions]
|
6
6
|
|
7
7
|
## Links
|
8
8
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
This library officially supports the following Ruby versions:
|
16
16
|
|
17
|
-
* MRI `>= 3.
|
17
|
+
* MRI `>= 3.1`
|
18
18
|
* jruby `>= 9.4` (not tested on CI)
|
19
19
|
|
20
20
|
## License
|
data/dry-effects.gemspec
CHANGED
@@ -16,26 +16,24 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.summary = "Algebraic effects"
|
17
17
|
spec.description = spec.summary
|
18
18
|
spec.homepage = "https://dry-rb.org/gems/dry-effects"
|
19
|
-
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-effects.gemspec",
|
19
|
+
spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-effects.gemspec",
|
20
|
+
"lib/**/*"]
|
20
21
|
spec.bindir = "bin"
|
21
22
|
spec.executables = []
|
22
23
|
spec.require_paths = ["lib"]
|
23
24
|
|
24
|
-
spec.metadata["allowed_push_host"]
|
25
|
-
spec.metadata["changelog_uri"]
|
26
|
-
spec.metadata["source_code_uri"]
|
27
|
-
spec.metadata["bug_tracker_uri"]
|
25
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
26
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-effects/blob/main/CHANGELOG.md"
|
27
|
+
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-effects"
|
28
|
+
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-effects/issues"
|
29
|
+
spec.metadata["rubygems_mfa_required"] = "true"
|
28
30
|
|
29
|
-
spec.required_ruby_version = ">= 3.
|
31
|
+
spec.required_ruby_version = ">= 3.1"
|
30
32
|
|
31
33
|
# to update dependencies edit project.yml
|
32
|
-
spec.
|
33
|
-
spec.
|
34
|
-
spec.
|
35
|
-
spec.
|
36
|
-
spec.
|
37
|
-
|
38
|
-
spec.add_development_dependency "bundler"
|
39
|
-
spec.add_development_dependency "rake"
|
40
|
-
spec.add_development_dependency "rspec"
|
34
|
+
spec.add_dependency "concurrent-ruby", "~> 1.0"
|
35
|
+
spec.add_dependency "dry-core", "~> 1.1"
|
36
|
+
spec.add_dependency "dry-inflector", "~> 1.1"
|
37
|
+
spec.add_dependency "dry-initializer", "~> 3.2"
|
38
|
+
spec.add_dependency "zeitwerk", "~> 2.6"
|
41
39
|
end
|
data/lib/dry/effects/all.rb
CHANGED
@@ -21,12 +21,11 @@ module Dry
|
|
21
21
|
end
|
22
22
|
|
23
23
|
singleton_class.class_eval do
|
24
|
-
define_method(class_name) do |*args|
|
25
|
-
effect_modules.fetch_or_store([key, args]) do
|
26
|
-
::Dry::Effects.effects[key].new(*args).freeze
|
24
|
+
define_method(class_name) do |*args, **kwargs|
|
25
|
+
effect_modules.fetch_or_store([key, args, kwargs]) do
|
26
|
+
::Dry::Effects.effects[key].new(*args, **kwargs).freeze
|
27
27
|
end
|
28
28
|
end
|
29
|
-
ruby2_keywords(class_name) if respond_to?(:ruby2_keywords, true)
|
30
29
|
end
|
31
30
|
end
|
32
31
|
|
@@ -18,14 +18,10 @@ module Dry
|
|
18
18
|
end
|
19
19
|
|
20
20
|
# @api public
|
21
|
-
def Retry(scope)
|
22
|
-
Effects::Retry::Retry.new(type: :retry, scope: scope)
|
23
|
-
end
|
21
|
+
def Retry(scope) = Effects::Retry::Retry.new(type: :retry, scope: scope)
|
24
22
|
|
25
23
|
# @api public
|
26
|
-
def Read(scope)
|
27
|
-
Effects::State::State.new(type: :state, name: :read, scope: scope)
|
28
|
-
end
|
24
|
+
def Read(scope) = Effects::State::State.new(type: :state, name: :read, scope: scope)
|
29
25
|
|
30
26
|
# @api public
|
31
27
|
def Write(scope, value)
|
@@ -9,7 +9,7 @@ begin
|
|
9
9
|
rescue LoadError
|
10
10
|
ActiveSupport::TaggedLogging::Formatter.prepend(Module.new {
|
11
11
|
def current_tags
|
12
|
-
thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{
|
12
|
+
thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{__id__}"
|
13
13
|
unless Thread.current.thread_variable_get(thread_key)
|
14
14
|
Thread.current.thread_variable_set(thread_key, [])
|
15
15
|
end
|
@@ -7,15 +7,11 @@
|
|
7
7
|
RSpec::Support.singleton_class.prepend(Module.new {
|
8
8
|
include Dry::Effects.Reader(:rspec, as: :effect_local_data)
|
9
9
|
|
10
|
-
def thread_local_data
|
11
|
-
effect_local_data { super }
|
12
|
-
end
|
10
|
+
def thread_local_data = effect_local_data { super }
|
13
11
|
})
|
14
12
|
|
15
13
|
RSpec::Core::Runner.prepend(Module.new {
|
16
14
|
include Dry::Effects::Handler.Reader(:rspec, as: :run_with_data)
|
17
15
|
|
18
|
-
def run_specs(*)
|
19
|
-
run_with_data(RSpec::Support.thread_local_data) { super }
|
20
|
-
end
|
16
|
+
def run_specs(*) = run_with_data(RSpec::Support.thread_local_data) { super }
|
21
17
|
})
|
data/lib/dry/effects/frame.rb
CHANGED
@@ -6,22 +6,20 @@ module Dry
|
|
6
6
|
# @api private
|
7
7
|
module DefineWithHook
|
8
8
|
# @api private
|
9
|
-
def param(
|
9
|
+
def param(...)
|
10
10
|
super.tap do
|
11
11
|
@params_arity = nil
|
12
12
|
__define_with__
|
13
13
|
end
|
14
14
|
end
|
15
|
-
ruby2_keywords(:param) if respond_to?(:ruby2_keywords, true)
|
16
15
|
|
17
16
|
# @api private
|
18
|
-
def option(
|
17
|
+
def option(...)
|
19
18
|
super.tap do
|
20
19
|
__define_with__ unless method_defined?(:with)
|
21
20
|
@has_options = true
|
22
21
|
end
|
23
22
|
end
|
24
|
-
ruby2_keywords(:option) if respond_to?(:ruby2_keywords, true)
|
25
23
|
|
26
24
|
# @api private
|
27
25
|
def params_arity
|
@@ -10,9 +10,7 @@ module Dry
|
|
10
10
|
|
11
11
|
param :id
|
12
12
|
|
13
|
-
def get
|
14
|
-
value
|
15
|
-
end
|
13
|
+
def get = value
|
16
14
|
|
17
15
|
# Yield the block with the handler installed
|
18
16
|
#
|
@@ -33,15 +31,11 @@ module Dry
|
|
33
31
|
# @param [Effect] effect
|
34
32
|
# @return [Boolean]
|
35
33
|
# @api public
|
36
|
-
def provide?(effect)
|
37
|
-
super && id.equal?(effect.id)
|
38
|
-
end
|
34
|
+
def provide?(effect) = super && id.equal?(effect.id)
|
39
35
|
|
40
36
|
# @return [String]
|
41
37
|
# @api public
|
42
|
-
def represent
|
43
|
-
"cmp[#{id}=#{@value}]"
|
44
|
-
end
|
38
|
+
def represent = "cmp[#{id}=#{@value}]"
|
45
39
|
end
|
46
40
|
end
|
47
41
|
end
|
@@ -12,9 +12,7 @@ module Dry
|
|
12
12
|
|
13
13
|
attr_reader :parent
|
14
14
|
|
15
|
-
def read(key)
|
16
|
-
parent.fetch(key) { fetch(key) }
|
17
|
-
end
|
15
|
+
def read(key) = parent.fetch(key) { fetch(key) }
|
18
16
|
|
19
17
|
def fetch(key)
|
20
18
|
values.fetch(key) do
|
@@ -31,9 +29,7 @@ module Dry
|
|
31
29
|
#
|
32
30
|
# @return [Provider]
|
33
31
|
# @api private
|
34
|
-
def locate
|
35
|
-
self
|
36
|
-
end
|
32
|
+
def locate = self
|
37
33
|
|
38
34
|
# Yield the block with the handler installed
|
39
35
|
#
|
@@ -6,9 +6,7 @@ module Dry
|
|
6
6
|
class Interrupt < Provider[:interrupt]
|
7
7
|
param :scope, default: -> { :default }
|
8
8
|
|
9
|
-
def interrupt(*payload)
|
10
|
-
Instructions.Raise(halt.new(payload))
|
11
|
-
end
|
9
|
+
def interrupt(*payload) = Instructions.Raise(halt.new(payload))
|
12
10
|
|
13
11
|
# Yield the block with the handler installed
|
14
12
|
#
|
@@ -19,22 +17,16 @@ module Dry
|
|
19
17
|
[true, e.payload[0]]
|
20
18
|
end
|
21
19
|
|
22
|
-
def halt
|
23
|
-
Halt[scope]
|
24
|
-
end
|
20
|
+
def halt = Halt[scope]
|
25
21
|
|
26
22
|
# @return [String]
|
27
23
|
# @api public
|
28
|
-
def represent
|
29
|
-
"interrupt[#{scope}]"
|
30
|
-
end
|
24
|
+
def represent = "interrupt[#{scope}]"
|
31
25
|
|
32
26
|
# @param [Effect] effect
|
33
27
|
# @return [Boolean]
|
34
28
|
# @api public
|
35
|
-
def provide?(effect)
|
36
|
-
super && scope.equal?(effect.scope)
|
37
|
-
end
|
29
|
+
def provide?(effect) = super && scope.equal?(effect.scope)
|
38
30
|
end
|
39
31
|
end
|
40
32
|
end
|
@@ -31,9 +31,7 @@ module Dry
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
def locked?(key)
|
35
|
-
locks.key?(key)
|
36
|
-
end
|
34
|
+
def locked?(key) = locks.key?(key)
|
37
35
|
|
38
36
|
def unlock(handle)
|
39
37
|
mutex.synchronize do
|
@@ -62,25 +60,17 @@ module Dry
|
|
62
60
|
locked
|
63
61
|
end
|
64
62
|
|
65
|
-
def locked?(key)
|
66
|
-
backend.locked?(key)
|
67
|
-
end
|
63
|
+
def locked?(key) = backend.locked?(key)
|
68
64
|
|
69
|
-
def unlock(handle)
|
70
|
-
backend.unlock(handle)
|
71
|
-
end
|
65
|
+
def unlock(handle) = backend.unlock(handle)
|
72
66
|
|
73
|
-
def meta(key)
|
74
|
-
backend.meta(key)
|
75
|
-
end
|
67
|
+
def meta(key) = backend.meta(key)
|
76
68
|
|
77
69
|
# Locate handler in the stack
|
78
70
|
#
|
79
71
|
# @return [Provider]
|
80
72
|
# @api private
|
81
|
-
def locate
|
82
|
-
self
|
83
|
-
end
|
73
|
+
def locate = self
|
84
74
|
|
85
75
|
# Yield the block with the handler installed
|
86
76
|
#
|
@@ -25,9 +25,7 @@ module Dry
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def retry
|
29
|
-
Instructions.Raise(halt.new)
|
30
|
-
end
|
28
|
+
def retry = Instructions.Raise(halt.new)
|
31
29
|
|
32
30
|
def attempt
|
33
31
|
if attempts_exhausted?
|
@@ -42,19 +40,13 @@ module Dry
|
|
42
40
|
attempts.equal?(limit)
|
43
41
|
end
|
44
42
|
|
45
|
-
def halt
|
46
|
-
Halt[scope]
|
47
|
-
end
|
43
|
+
def halt = Halt[scope]
|
48
44
|
|
49
|
-
def provide?(effect)
|
50
|
-
super && scope.equal?(effect.scope)
|
51
|
-
end
|
45
|
+
def provide?(effect) = super && scope.equal?(effect.scope)
|
52
46
|
|
53
47
|
# @return [String]
|
54
48
|
# @api public
|
55
|
-
def represent
|
56
|
-
"retry[#{scope} #{attempts}/#{limit}]"
|
57
|
-
end
|
49
|
+
def represent = "retry[#{scope} #{attempts}/#{limit}]"
|
58
50
|
end
|
59
51
|
end
|
60
52
|
end
|
data/lib/dry/effects/stack.rb
CHANGED
data/lib/dry/effects/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-effects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shilnikov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -30,42 +30,42 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
33
|
+
version: '1.1'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
40
|
+
version: '1.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: dry-inflector
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: dry-initializer
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '3.
|
61
|
+
version: '3.2'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '3.
|
68
|
+
version: '3.2'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: zeitwerk
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,48 +80,6 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.6'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: bundler
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rake
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rspec
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - ">="
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
83
|
description: Algebraic effects
|
126
84
|
email:
|
127
85
|
- fg@flashgordon.ru
|
@@ -203,7 +161,8 @@ metadata:
|
|
203
161
|
changelog_uri: https://github.com/dry-rb/dry-effects/blob/main/CHANGELOG.md
|
204
162
|
source_code_uri: https://github.com/dry-rb/dry-effects
|
205
163
|
bug_tracker_uri: https://github.com/dry-rb/dry-effects/issues
|
206
|
-
|
164
|
+
rubygems_mfa_required: 'true'
|
165
|
+
post_install_message:
|
207
166
|
rdoc_options: []
|
208
167
|
require_paths:
|
209
168
|
- lib
|
@@ -211,15 +170,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
170
|
requirements:
|
212
171
|
- - ">="
|
213
172
|
- !ruby/object:Gem::Version
|
214
|
-
version: 3.
|
173
|
+
version: '3.1'
|
215
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
175
|
requirements:
|
217
176
|
- - ">="
|
218
177
|
- !ruby/object:Gem::Version
|
219
178
|
version: '0'
|
220
179
|
requirements: []
|
221
|
-
rubygems_version: 3.3.
|
222
|
-
signing_key:
|
180
|
+
rubygems_version: 3.3.27
|
181
|
+
signing_key:
|
223
182
|
specification_version: 4
|
224
183
|
summary: Algebraic effects
|
225
184
|
test_files: []
|