dry-effects 0.3.1 → 0.4.1

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
2
  SHA256:
3
- metadata.gz: abc06cbff85f6545a5b05ebeb778737a316fadf9222c9e98c015e05a91e16cdf
4
- data.tar.gz: 7023b7bc8b4807c957f561706f9cd8215cc181cf37de06ae218ec48fac48f9da
3
+ metadata.gz: '019d3a5a4ceac14c0bf1fc045315034746b2076f82e17c8cd43d1e4d15453a73'
4
+ data.tar.gz: 7c6bc85d0688ff60a98152a50f0bd27e2ee7cbd45379a33be51584bfad456c3e
5
5
  SHA512:
6
- metadata.gz: f240e7f7cf989b27dc384bf2ec84f6a2b021c8f9b76694167a493140d4beb0dfed96fcad700681154362b2cb8569051baf07e849993d8744b91ec24443ba32af
7
- data.tar.gz: 60185bafd1a5f68a771c9bcd971412ca09e4cf5b81da8ea659706b713b1a55a67989ae4f59d8ae1c57adbf006731416a3f9e4c78254637a73e7a24ccd03c7203
6
+ metadata.gz: 8a900139589cf38dcdacb469021826ade7e435a9229243ae9392b76fc0cfcca6762ef48373e5a2d7b4a16f7ae51cb769c7f1de1559c92c14d8bdd3725def5932
7
+ data.tar.gz: 91d5e392c86b9a91b5bef272914d4a647790606716de5722d4cccd555584bdfb33e7cdaa6fb653ffa870b33f21481fa4a057babf85131077d9a85cca65b25c6d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  <!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
2
2
 
3
+ ## 0.4.1
4
+
5
+
6
+ ### Changed
7
+
8
+ - Workaround for a clash with Object#with (@tallica + @flash-gordon)
9
+
10
+ [Compare v0.4.0...main](https://github.com/dry-rb/dry-effects/compare/v0.4.0...main)
11
+
12
+ ## 0.4.0
13
+
14
+
15
+ ### Changed
16
+
17
+ - This version is compatible with recently released dry-rb dependencies (@flash-gordon)
18
+
19
+ [Compare v0.3.1...main](https://github.com/dry-rb/dry-effects/compare/v0.3.1...main)
20
+
3
21
  ## 0.3.1 2022-10-17
4
22
 
5
23
 
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015-2022 dry-rb team
3
+ Copyright (c) 2015-2023 dry-rb team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -1,29 +1,21 @@
1
1
  <!--- this file is synced from dry-rb/template-gem project -->
2
2
  [gem]: https://rubygems.org/gems/dry-effects
3
3
  [actions]: https://github.com/dry-rb/dry-effects/actions
4
- [codacy]: https://www.codacy.com/gh/dry-rb/dry-effects
5
- [chat]: https://dry-rb.zulipchat.com
6
- [inchpages]: http://inch-ci.org/github/dry-rb/dry-effects
7
4
 
8
- # dry-effects [![Join the chat at https://dry-rb.zulipchat.com](https://img.shields.io/badge/dry--rb-join%20chat-%23346b7a.svg)][chat]
9
-
10
- [![Gem Version](https://badge.fury.io/rb/dry-effects.svg)][gem]
11
- [![CI Status](https://github.com/dry-rb/dry-effects/workflows/ci/badge.svg)][actions]
12
- [![Codacy Badge](https://api.codacy.com/project/badge/Grade/158a8a584a3845eba4a67a71ad540210)][codacy]
13
- [![Codacy Badge](https://api.codacy.com/project/badge/Coverage/158a8a584a3845eba4a67a71ad540210)][codacy]
14
- [![Inline docs](http://inch-ci.org/github/dry-rb/dry-effects.svg?branch=main)][inchpages]
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]
15
6
 
16
7
  ## Links
17
8
 
18
9
  * [User documentation](https://dry-rb.org/gems/dry-effects)
19
10
  * [API documentation](http://rubydoc.info/gems/dry-effects)
11
+ * [Forum](https://discourse.dry-rb.org)
20
12
 
21
13
  ## Supported Ruby versions
22
14
 
23
15
  This library officially supports the following Ruby versions:
24
16
 
25
- * MRI `>= 2.7.0`
26
- * jruby `>= 9.3` (postponed until 2.7 is supported)
17
+ * MRI `>= 3.0.0`
18
+ * jruby `>= 9.4` (not tested on CI)
27
19
 
28
20
  ## License
29
21
 
data/dry-effects.gemspec CHANGED
@@ -26,14 +26,14 @@ Gem::Specification.new do |spec|
26
26
  spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-effects"
27
27
  spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-effects/issues"
28
28
 
29
- spec.required_ruby_version = ">= 2.7.0"
29
+ spec.required_ruby_version = ">= 3.0.0"
30
30
 
31
31
  # to update dependencies edit project.yml
32
32
  spec.add_runtime_dependency "concurrent-ruby", "~> 1.0"
33
- spec.add_runtime_dependency "dry-container", "~> 0.7", ">= 0.7.2"
34
- spec.add_runtime_dependency "dry-core", "~> 0.9", ">= 0.9"
35
- spec.add_runtime_dependency "dry-inflector", "~> 0.1", ">= 0.1.2"
33
+ spec.add_runtime_dependency "dry-core", "~> 1.0"
34
+ spec.add_runtime_dependency "dry-inflector", "~> 1.0"
36
35
  spec.add_runtime_dependency "dry-initializer", "~> 3.0"
36
+ spec.add_runtime_dependency "zeitwerk", "~> 2.6"
37
37
 
38
38
  spec.add_development_dependency "bundler"
39
39
  spec.add_development_dependency "rake"
@@ -3,8 +3,6 @@
3
3
  module Dry
4
4
  module Effects
5
5
  module Constructors
6
- extend self
7
-
8
6
  # @api public
9
7
  def CurrentTime(**kwargs)
10
8
  if kwargs.empty?
@@ -33,6 +31,8 @@ module Dry
33
31
  def Write(scope, value)
34
32
  Effects::State::State.new(type: :state, name: :write, scope: scope, payload: [value])
35
33
  end
34
+
35
+ instance_methods(false).each { module_function(_1) }
36
36
  end
37
37
  end
38
38
  end
@@ -3,7 +3,7 @@
3
3
  module Dry
4
4
  module Effects
5
5
  class Container
6
- include ::Dry::Container::Mixin
6
+ include Core::Container::Mixin
7
7
  end
8
8
  end
9
9
  end
@@ -6,7 +6,7 @@ module Dry
6
6
  class Resolve < ::Module
7
7
  DependencyNameInvalid = ::Class.new(StandardError)
8
8
 
9
- VALID_NAME = /([a-z_][a-zA-Z_0-9]*)$/.freeze
9
+ VALID_NAME = /([a-z_][a-zA-Z_0-9]*)$/
10
10
 
11
11
  Resolve = Effect.new(type: :resolve)
12
12
 
@@ -19,7 +19,7 @@ module Dry
19
19
 
20
20
  super(
21
21
  Undefined.default(message) {
22
- "Effect #{effect.inspect} not handled. "\
22
+ "Effect #{effect.inspect} not handled. " \
23
23
  "Effects must be wrapped with corresponding handlers"
24
24
  }
25
25
  )
@@ -31,7 +31,7 @@ module Dry
31
31
  # @api private
32
32
  class MissingStateError < UnhandledEffectError
33
33
  def initialize(effect)
34
- message = "Value of +#{effect.scope}+ is not set, "\
34
+ message = "Value of +#{effect.scope}+ is not set, " \
35
35
  "you need to provide value with an effect handler"
36
36
 
37
37
  super(effect, message)
@@ -45,8 +45,8 @@ module Dry
45
45
  include Error
46
46
 
47
47
  def initialize(effect)
48
- message = "+#{effect.scope}+ is not defined, you need to assign it first "\
49
- "by using a writer, passing initial value to the handler, or "\
48
+ message = "+#{effect.scope}+ is not defined, you need to assign it first " \
49
+ "by using a writer, passing initial value to the handler, or " \
50
50
  "providing a fallback value"
51
51
 
52
52
  super(message)
@@ -2,12 +2,18 @@
2
2
 
3
3
  require "active_support/tagged_logging"
4
4
 
5
- ActiveSupport::TaggedLogging::Formatter.prepend(Module.new {
6
- def current_tags
7
- thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{object_id}"
8
- unless Thread.current.thread_variable_get(thread_key)
9
- Thread.current.thread_variable_set(thread_key, [])
5
+ begin
6
+ require "active_support/isolated_execution_state"
7
+
8
+ # it's not needed when state is already isolated
9
+ rescue LoadError
10
+ ActiveSupport::TaggedLogging::Formatter.prepend(Module.new {
11
+ def current_tags
12
+ thread_key = @thread_key ||= "activesupport_tagged_logging_tags:#{object_id}"
13
+ unless Thread.current.thread_variable_get(thread_key)
14
+ Thread.current.thread_variable_set(thread_key, [])
15
+ end
16
+ Thread.current.thread_variable_get(thread_key)
10
17
  end
11
- Thread.current.thread_variable_get(thread_key)
12
- end
13
- })
18
+ })
19
+ end
@@ -1,12 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "concurrent/map"
4
- require "dry/auto_inject/strategies/constructor"
4
+ require "dry/auto_inject"
5
+ require "dry/auto_inject/version"
6
+
7
+ if Gem::Version.new(Dry::AutoInject::VERSION) < Gem::Version.new("0.10.0")
8
+ raise "dry-effects requires dry-auto_inject >= 0.10.0"
9
+ end
5
10
 
6
11
  module Dry
7
12
  module Effects
8
13
  class DryAutoEffectsStrategies
9
- extend ::Dry::Container::Mixin
14
+ extend Core::Container::Mixin
10
15
 
11
16
  class Base < AutoInject::Strategies::Constructor
12
17
  private
@@ -64,9 +64,15 @@ module Dry
64
64
 
65
65
  # @api private
66
66
  def self.extended(base)
67
- base.extend(::Dry::Initializer)
68
- base.extend(DefineWithHook)
69
- base.include(InstanceMethods)
67
+ base.module_eval do
68
+ if method_defined?(:with)
69
+ undef_method(:with)
70
+ end
71
+
72
+ extend(::Dry::Initializer)
73
+ extend(DefineWithHook)
74
+ include(InstanceMethods)
75
+ end
70
76
  end
71
77
 
72
78
  # @api private
@@ -7,7 +7,7 @@ module Dry
7
7
  DEFAULT_RANDOM = ::Random
8
8
  DEFAULT = -> _ { DEFAULT_RANDOM.rand }
9
9
 
10
- DEFAULT_RANGE = (0.0...1.0).freeze
10
+ DEFAULT_RANGE = (0.0...1.0)
11
11
 
12
12
  def rand(range_or_limit = nil)
13
13
  range_or_limit ||= DEFAULT_RANGE
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Effects
5
- VERSION = "0.3.1"
5
+ VERSION = "0.4.1"
6
6
  end
7
7
  end
data/lib/dry/effects.rb CHANGED
@@ -4,7 +4,6 @@ require "zeitwerk"
4
4
  require "concurrent/map"
5
5
 
6
6
  require "dry/core"
7
- require "dry/container"
8
7
  require "dry/inflector"
9
8
  require "dry/initializer"
10
9
 
@@ -35,7 +34,7 @@ module Dry
35
34
  loader.ignore(
36
35
  "#{root}/dry-effects.rb",
37
36
  "#{root}/dry/effects/{all,error,extensions,inflector,initializer,version}.rb",
38
- "#{root}/dry/effects/extensions/**/*.rb",
37
+ "#{root}/dry/effects/extensions/**/*.rb"
39
38
  )
40
39
  end
41
40
  end
data/lib/dry-effects.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "dry/effects"
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.3.1
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikita Shilnikov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-17 00:00:00.000000000 Z
11
+ date: 2024-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -25,79 +25,61 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: dry-container
28
+ name: dry-core
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.7'
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: 0.7.2
33
+ version: '1.0'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - "~>"
42
39
  - !ruby/object:Gem::Version
43
- version: '0.7'
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 0.7.2
40
+ version: '1.0'
47
41
  - !ruby/object:Gem::Dependency
48
- name: dry-core
42
+ name: dry-inflector
49
43
  requirement: !ruby/object:Gem::Requirement
50
44
  requirements:
51
45
  - - "~>"
52
46
  - !ruby/object:Gem::Version
53
- version: '0.9'
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: '0.9'
47
+ version: '1.0'
57
48
  type: :runtime
58
49
  prerelease: false
59
50
  version_requirements: !ruby/object:Gem::Requirement
60
51
  requirements:
61
52
  - - "~>"
62
53
  - !ruby/object:Gem::Version
63
- version: '0.9'
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: '0.9'
54
+ version: '1.0'
67
55
  - !ruby/object:Gem::Dependency
68
- name: dry-inflector
56
+ name: dry-initializer
69
57
  requirement: !ruby/object:Gem::Requirement
70
58
  requirements:
71
59
  - - "~>"
72
60
  - !ruby/object:Gem::Version
73
- version: '0.1'
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 0.1.2
61
+ version: '3.0'
77
62
  type: :runtime
78
63
  prerelease: false
79
64
  version_requirements: !ruby/object:Gem::Requirement
80
65
  requirements:
81
66
  - - "~>"
82
67
  - !ruby/object:Gem::Version
83
- version: '0.1'
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 0.1.2
68
+ version: '3.0'
87
69
  - !ruby/object:Gem::Dependency
88
- name: dry-initializer
70
+ name: zeitwerk
89
71
  requirement: !ruby/object:Gem::Requirement
90
72
  requirements:
91
73
  - - "~>"
92
74
  - !ruby/object:Gem::Version
93
- version: '3.0'
75
+ version: '2.6'
94
76
  type: :runtime
95
77
  prerelease: false
96
78
  version_requirements: !ruby/object:Gem::Requirement
97
79
  requirements:
98
80
  - - "~>"
99
81
  - !ruby/object:Gem::Version
100
- version: '3.0'
82
+ version: '2.6'
101
83
  - !ruby/object:Gem::Dependency
102
84
  name: bundler
103
85
  requirement: !ruby/object:Gem::Requirement
@@ -229,14 +211,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
229
211
  requirements:
230
212
  - - ">="
231
213
  - !ruby/object:Gem::Version
232
- version: 2.7.0
214
+ version: 3.0.0
233
215
  required_rubygems_version: !ruby/object:Gem::Requirement
234
216
  requirements:
235
217
  - - ">="
236
218
  - !ruby/object:Gem::Version
237
219
  version: '0'
238
220
  requirements: []
239
- rubygems_version: 3.1.6
221
+ rubygems_version: 3.3.26
240
222
  signing_key:
241
223
  specification_version: 4
242
224
  summary: Algebraic effects