dry-effects 0.1.5 → 0.2.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 +4 -4
- data/CHANGELOG.md +24 -0
- data/LICENSE +1 -1
- data/README.md +5 -4
- data/dry-effects.gemspec +15 -15
- data/lib/dry/effects/all.rb +3 -3
- data/lib/dry/effects/container.rb +1 -1
- data/lib/dry/effects/effect.rb +2 -2
- data/lib/dry/effects/effects/async.rb +3 -1
- data/lib/dry/effects/effects/cache.rb +13 -9
- data/lib/dry/effects/effects/cmp.rb +3 -1
- data/lib/dry/effects/effects/current_time.rb +4 -2
- data/lib/dry/effects/effects/defer.rb +3 -1
- data/lib/dry/effects/effects/env.rb +3 -1
- data/lib/dry/effects/effects/fork.rb +3 -1
- data/lib/dry/effects/effects/implicit.rb +3 -1
- data/lib/dry/effects/effects/interrupt.rb +3 -1
- data/lib/dry/effects/effects/lock.rb +3 -1
- data/lib/dry/effects/effects/parallel.rb +3 -1
- data/lib/dry/effects/effects/random.rb +3 -1
- data/lib/dry/effects/effects/reader.rb +1 -1
- data/lib/dry/effects/effects/resolve.rb +23 -3
- data/lib/dry/effects/effects/retry.rb +4 -2
- data/lib/dry/effects/effects/state.rb +4 -2
- data/lib/dry/effects/effects/timeout.rb +3 -1
- data/lib/dry/effects/effects/timestamp.rb +3 -1
- data/lib/dry/effects/errors.rb +4 -4
- data/lib/dry/effects/extensions/active_support/tagged_logging.rb +1 -1
- data/lib/dry/effects/extensions/auto_inject.rb +5 -5
- data/lib/dry/effects/extensions/system.rb +8 -7
- data/lib/dry/effects/extensions.rb +5 -5
- data/lib/dry/effects/frame.rb +30 -9
- data/lib/dry/effects/halt.rb +3 -3
- data/lib/dry/effects/handler.rb +1 -1
- data/lib/dry/effects/inflector.rb +1 -1
- data/lib/dry/effects/initializer.rb +16 -16
- data/lib/dry/effects/instruction.rb +1 -1
- data/lib/dry/effects/instructions/execute.rb +2 -1
- data/lib/dry/effects/instructions/raise.rb +2 -1
- data/lib/dry/effects/provider/class_interface.rb +2 -2
- data/lib/dry/effects/provider.rb +2 -2
- data/lib/dry/effects/providers/async.rb +2 -2
- data/lib/dry/effects/providers/cache.rb +2 -2
- data/lib/dry/effects/providers/cmp.rb +1 -1
- data/lib/dry/effects/providers/current_time/time_generators.rb +1 -1
- data/lib/dry/effects/providers/current_time.rb +5 -5
- data/lib/dry/effects/providers/defer.rb +6 -6
- data/lib/dry/effects/providers/env.rb +2 -2
- data/lib/dry/effects/providers/fork.rb +2 -2
- data/lib/dry/effects/providers/implicit.rb +1 -1
- data/lib/dry/effects/providers/interrupt.rb +3 -3
- data/lib/dry/effects/providers/lock.rb +6 -8
- data/lib/dry/effects/providers/parallel.rb +3 -3
- data/lib/dry/effects/providers/random.rb +5 -4
- data/lib/dry/effects/providers/reader.rb +1 -1
- data/lib/dry/effects/providers/resolve.rb +8 -7
- data/lib/dry/effects/providers/retry.rb +5 -7
- data/lib/dry/effects/providers/state.rb +2 -2
- data/lib/dry/effects/providers/timeout.rb +2 -2
- data/lib/dry/effects/providers/timestamp.rb +2 -2
- data/lib/dry/effects/stack.rb +6 -6
- data/lib/dry/effects/version.rb +1 -1
- data/lib/dry/effects.rb +7 -7
- metadata +8 -28
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "time"
|
4
|
+
require "dry/effects/provider"
|
5
|
+
require "dry/effects/providers/current_time/time_generators"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -55,12 +55,12 @@ module Dry
|
|
55
55
|
def represent
|
56
56
|
if fixed?
|
57
57
|
if generator.nil?
|
58
|
-
|
58
|
+
"current_time[fixed=true]"
|
59
59
|
else
|
60
60
|
"current_time[fixed=#{generator.().iso8601(6)}]"
|
61
61
|
end
|
62
62
|
else
|
63
|
-
|
63
|
+
"current_time[fixed=false]"
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "concurrent/promise"
|
4
|
+
require "dry/effects/provider"
|
5
|
+
require "dry/effects/frame"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -51,7 +51,7 @@ module Dry
|
|
51
51
|
# Yield the block with the handler installed
|
52
52
|
#
|
53
53
|
# @api private
|
54
|
-
def call(options = {
|
54
|
+
def call(options = {executor: Undefined})
|
55
55
|
unless Undefined.equal?(options[:executor])
|
56
56
|
@executor = options[:executor]
|
57
57
|
end
|
@@ -79,9 +79,9 @@ module Dry
|
|
79
79
|
info << "call_later=#{later_calls.size}" if later_calls.any?
|
80
80
|
|
81
81
|
if info.empty?
|
82
|
-
|
82
|
+
"defer"
|
83
83
|
else
|
84
|
-
"defer[#{info.join(
|
84
|
+
"defer[#{info.join(" ")}]"
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
|
+
require "dry/effects/instructions/raise"
|
5
|
+
require "dry/effects/halt"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry/core/equalizer"
|
4
|
+
require "dry/effects/provider"
|
5
|
+
require "dry/effects/initializer"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -96,11 +96,9 @@ module Dry
|
|
96
96
|
end
|
97
97
|
|
98
98
|
with_backend(backend_replace) do
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
owned.each { |handle| unlock(handle) }
|
103
|
-
end
|
99
|
+
yield
|
100
|
+
ensure
|
101
|
+
owned.each { |handle| unlock(handle) }
|
104
102
|
end
|
105
103
|
end
|
106
104
|
|
@@ -1,14 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
4
|
|
5
5
|
module Dry
|
6
6
|
module Effects
|
7
7
|
module Providers
|
8
8
|
class Random < Provider[:random]
|
9
|
-
|
9
|
+
DEFAULT_RANDOM = ::Random
|
10
|
+
DEFAULT = -> _ { DEFAULT_RANDOM.rand }
|
10
11
|
|
11
|
-
DEFAULT_RANGE = 0.0...1.0
|
12
|
+
DEFAULT_RANGE = (0.0...1.0).freeze
|
12
13
|
|
13
14
|
def rand(range_or_limit = nil)
|
14
15
|
range_or_limit ||= DEFAULT_RANGE
|
@@ -66,7 +67,7 @@ module Dry
|
|
66
67
|
if options.key?(:seed)
|
67
68
|
random = ::Random.new(options[:seed])
|
68
69
|
else
|
69
|
-
random =
|
70
|
+
random = DEFAULT_RANDOM
|
70
71
|
end
|
71
72
|
|
72
73
|
-> _ { random.rand }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
|
+
require "dry/effects/instructions/raise"
|
5
5
|
|
6
6
|
module Dry
|
7
7
|
module Effects
|
@@ -84,16 +84,17 @@ module Dry
|
|
84
84
|
# @return [String]
|
85
85
|
# @api public
|
86
86
|
def represent
|
87
|
-
containers = [represent_container(static), represent_container(dynamic)].compact.join(
|
88
|
-
"resolve[#{containers.empty? ?
|
87
|
+
containers = [represent_container(static), represent_container(dynamic)].compact.join("+")
|
88
|
+
"resolve[#{containers.empty? ? "empty" : containers}]"
|
89
89
|
end
|
90
90
|
|
91
91
|
# @return [String]
|
92
92
|
# @api private
|
93
93
|
def represent_container(container)
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
case container
|
95
|
+
when ::Hash
|
96
|
+
container.empty? ? nil : "hash"
|
97
|
+
when ::Class
|
97
98
|
container.name || container.to_s
|
98
99
|
else
|
99
100
|
container.to_s
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
|
+
require "dry/effects/halt"
|
5
5
|
|
6
6
|
module Dry
|
7
7
|
module Effects
|
@@ -18,15 +18,13 @@ module Dry
|
|
18
18
|
# Yield the block with the handler installed
|
19
19
|
#
|
20
20
|
# @api private
|
21
|
-
def call(limit)
|
21
|
+
def call(limit, &block)
|
22
22
|
@limit = limit
|
23
23
|
@attempts = 0
|
24
24
|
|
25
25
|
loop do
|
26
|
-
|
27
|
-
|
28
|
-
rescue halt
|
29
|
-
end
|
26
|
+
return attempt(&block)
|
27
|
+
rescue halt # rubocop:disable Lint/SuppressedException
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "dry/effects/provider"
|
4
4
|
|
5
5
|
module Dry
|
6
6
|
module Effects
|
7
7
|
module Providers
|
8
8
|
class Timeout < Provider[:timeout]
|
9
|
-
def self.handle_method(
|
9
|
+
def self.handle_method(_scope, as: Undefined, **)
|
10
10
|
Undefined.default(as) { :with_timeout }
|
11
11
|
end
|
12
12
|
|
data/lib/dry/effects/stack.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
3
|
+
require "dry/effects/initializer"
|
4
|
+
require "dry/effects/effect"
|
5
|
+
require "dry/effects/instructions/raise"
|
6
6
|
|
7
7
|
module Dry
|
8
8
|
module Effects
|
@@ -23,7 +23,7 @@ module Dry
|
|
23
23
|
else
|
24
24
|
yield
|
25
25
|
end
|
26
|
-
rescue ::Exception => e
|
26
|
+
rescue ::Exception => e # rubocop:disable Lint/RescueException
|
27
27
|
Instructions::Raise.new(e)
|
28
28
|
end
|
29
29
|
|
@@ -56,9 +56,9 @@ module Dry
|
|
56
56
|
|
57
57
|
def to_s
|
58
58
|
if empty?
|
59
|
-
|
59
|
+
"#<Dry::Effects::Stack>"
|
60
60
|
else
|
61
|
-
stack = map(&:represent).reverse.join(
|
61
|
+
stack = map(&:represent).reverse.join("->")
|
62
62
|
|
63
63
|
"#<Dry::Effects::Stack #{stack}>"
|
64
64
|
end
|
data/lib/dry/effects/version.rb
CHANGED
data/lib/dry/effects.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require "dry/core/constants"
|
4
|
+
require "dry/effects/version"
|
5
|
+
require "dry/effects/container"
|
6
|
+
require "dry/effects/errors"
|
7
|
+
require "dry/effects/instructions/raise"
|
8
8
|
|
9
9
|
module Dry
|
10
10
|
module Effects
|
@@ -69,5 +69,5 @@ module Dry
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
require
|
73
|
-
require
|
72
|
+
require "dry/effects/all"
|
73
|
+
require "dry/effects/extensions"
|
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.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shilnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-09-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -50,40 +50,20 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
53
|
+
version: '0.5'
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 0.
|
56
|
+
version: '0.5'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '0.
|
63
|
+
version: '0.5'
|
64
64
|
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 0.
|
67
|
-
- !ruby/object:Gem::Dependency
|
68
|
-
name: dry-equalizer
|
69
|
-
requirement: !ruby/object:Gem::Requirement
|
70
|
-
requirements:
|
71
|
-
- - "~>"
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.2'
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 0.2.2
|
77
|
-
type: :runtime
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.2'
|
84
|
-
- - ">="
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 0.2.2
|
66
|
+
version: '0.5'
|
87
67
|
- !ruby/object:Gem::Dependency
|
88
68
|
name: dry-inflector
|
89
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -247,14 +227,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
247
227
|
requirements:
|
248
228
|
- - ">="
|
249
229
|
- !ruby/object:Gem::Version
|
250
|
-
version: 2.
|
230
|
+
version: 2.6.0
|
251
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
252
232
|
requirements:
|
253
233
|
- - ">="
|
254
234
|
- !ruby/object:Gem::Version
|
255
235
|
version: '0'
|
256
236
|
requirements: []
|
257
|
-
rubygems_version: 3.
|
237
|
+
rubygems_version: 3.1.6
|
258
238
|
signing_key:
|
259
239
|
specification_version: 4
|
260
240
|
summary: Algebraic effects
|