dry-core 0.7.1 → 0.9.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 +4 -4
- data/CHANGELOG.md +46 -1
- data/LICENSE +1 -1
- data/README.md +3 -3
- data/dry-core.gemspec +3 -2
- data/lib/dry/core/basic_object.rb +144 -0
- data/lib/dry/core/cache.rb +2 -2
- data/lib/dry/core/class_attributes.rb +2 -4
- data/lib/dry/core/constants.rb +1 -1
- data/lib/dry/core/deprecations.rb +1 -1
- data/lib/dry/core/equalizer.rb +15 -11
- data/lib/dry/core/errors.rb +1 -1
- data/lib/dry/core/memoizable.rb +57 -14
- data/lib/dry/core/version.rb +1 -1
- data/lib/dry/core.rb +34 -0
- metadata +19 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81d1266061bbae6eb6d4c08dba39d2787f29f033ec6b8ed8555830e170cae6fc
|
4
|
+
data.tar.gz: bb44a8177749013af0a3245e5e7e9c168818700c6d93b5dbbcf4d46d05e9e4fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48c5e7b008c7f1b3ec9d23801f020ee67f34199aec9e9690066cd7a4316e7d79e48c77056df180679e22767b367b4988c0f617948c49d931e5d62f3be54a1c4f
|
7
|
+
data.tar.gz: a2eb13da61361ef1d7c2ebb52390df5406f1598d1a9f64c2b11de9fc574d51f28920cc34342dfa3027bb9eb73b13802114b0d0aaafd51e0688cda7b66fd647bc
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,50 @@
|
|
1
1
|
<!--- DO NOT EDIT THIS FILE - IT'S AUTOMATICALLY GENERATED VIA DEVTOOLS --->
|
2
2
|
|
3
|
+
## 0.9.1 2022-10-18
|
4
|
+
|
5
|
+
|
6
|
+
### Changed
|
7
|
+
|
8
|
+
- Correct missing constant for IDENTITY (issue #75 fixed via #76) (@poloka)
|
9
|
+
|
10
|
+
[Compare v0.9.0...v0.9.1](https://github.com/dry-rb/dry-core/compare/v0.9.0...v0.9.1)
|
11
|
+
|
12
|
+
## 0.9.0 2022-10-15
|
13
|
+
|
14
|
+
|
15
|
+
### Changed
|
16
|
+
|
17
|
+
- dry-core now uses zeitwerk for autoloading (@solnic)
|
18
|
+
|
19
|
+
[Compare v0.8.1...v0.9.0](https://github.com/dry-rb/dry-core/compare/v0.8.1...v0.9.0)
|
20
|
+
|
21
|
+
## 0.8.1 2022-07-27
|
22
|
+
|
23
|
+
|
24
|
+
### Fixed
|
25
|
+
|
26
|
+
- [memoizable] plays better with inheritance.
|
27
|
+
There were cases when cached values from base claesses were used, see #70 (@flash-gordon)
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
[Compare v0.8.0...v0.8.1](https://github.com/dry-rb/dry-core/compare/v0.8.0...v0.8.1)
|
32
|
+
|
33
|
+
## 0.8.0 2022-07-15
|
34
|
+
|
35
|
+
|
36
|
+
### Added
|
37
|
+
|
38
|
+
- `Dry::Core::BasicObject` ported from hanami-utils (@jodosha)
|
39
|
+
|
40
|
+
### Changed
|
41
|
+
|
42
|
+
- [BREAKING] [descendants tracker] switch to using `Class#subclasses` on Ruby 3.1+.
|
43
|
+
This changes the order of returned subclasses (immediate subclasses now go first) (@flash-gordon)
|
44
|
+
|
45
|
+
|
46
|
+
[Compare v0.7.1...v0.8.0](https://github.com/dry-rb/dry-core/compare/v0.7.1...v0.8.0)
|
47
|
+
|
3
48
|
## 0.7.1 2021-07-10
|
4
49
|
|
5
50
|
|
@@ -43,7 +88,7 @@ has unnamed params (e.g. happens when the new `...` syntax is used) (@flash-gord
|
|
43
88
|
|
44
89
|
[Compare v0.5.0...v0.6.0](https://github.com/dry-rb/dry-core/compare/v0.5.0...v0.6.0)
|
45
90
|
|
46
|
-
## 0.5.0
|
91
|
+
## 0.5.0 2020-12-12
|
47
92
|
|
48
93
|
|
49
94
|
### Added
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
[][actions]
|
12
12
|
[][codacy]
|
13
13
|
[][codacy]
|
14
|
-
[][inchpages]
|
15
15
|
|
16
16
|
## Links
|
17
17
|
|
@@ -22,8 +22,8 @@
|
|
22
22
|
|
23
23
|
This library officially supports the following Ruby versions:
|
24
24
|
|
25
|
-
* MRI `>= 2.
|
26
|
-
*
|
25
|
+
* MRI `>= 2.7.0`
|
26
|
+
* jruby `>= 9.3` (postponed until 2.7 is supported)
|
27
27
|
|
28
28
|
## License
|
29
29
|
|
data/dry-core.gemspec
CHANGED
@@ -22,14 +22,15 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
25
|
-
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-core/blob/
|
25
|
+
spec.metadata["changelog_uri"] = "https://github.com/dry-rb/dry-core/blob/main/CHANGELOG.md"
|
26
26
|
spec.metadata["source_code_uri"] = "https://github.com/dry-rb/dry-core"
|
27
27
|
spec.metadata["bug_tracker_uri"] = "https://github.com/dry-rb/dry-core/issues"
|
28
28
|
|
29
|
-
spec.required_ruby_version = ">= 2.
|
29
|
+
spec.required_ruby_version = ">= 2.7.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 "zeitwerk", "~> 2.6"
|
33
34
|
|
34
35
|
spec.add_development_dependency "bundler"
|
35
36
|
spec.add_development_dependency "rake"
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This implementation was imported from `hanami-utils` gem.
|
4
|
+
module Dry
|
5
|
+
module Core
|
6
|
+
# BasicObject
|
7
|
+
#
|
8
|
+
# @since 0.8.0
|
9
|
+
class BasicObject < ::BasicObject
|
10
|
+
# Lookups constants at the top-level namespace, if they are missing in the
|
11
|
+
# current context.
|
12
|
+
#
|
13
|
+
# @param name [Symbol] the constant name
|
14
|
+
#
|
15
|
+
# @return [Object, Module] the constant
|
16
|
+
#
|
17
|
+
# @raise [NameError] if the constant cannot be found
|
18
|
+
#
|
19
|
+
# @since 0.8.0
|
20
|
+
# @api private
|
21
|
+
#
|
22
|
+
# @see https://ruby-doc.org/core/Module.html#method-i-const_missing
|
23
|
+
def self.const_missing(name)
|
24
|
+
::Object.const_get(name)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Returns the class for debugging purposes.
|
28
|
+
#
|
29
|
+
# @since 0.8.0
|
30
|
+
#
|
31
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-class
|
32
|
+
def class
|
33
|
+
(class << self; self; end).superclass
|
34
|
+
end
|
35
|
+
|
36
|
+
# Bare minimum inspect for debugging purposes.
|
37
|
+
#
|
38
|
+
# @return [String] the inspect string
|
39
|
+
#
|
40
|
+
# @since 0.8.0
|
41
|
+
#
|
42
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-inspect
|
43
|
+
inspect_method = ::Kernel.instance_method(:inspect)
|
44
|
+
define_method(:inspect) do
|
45
|
+
original = inspect_method.bind_call(self)
|
46
|
+
"#{original[0...-1]}#{__inspect}>"
|
47
|
+
end
|
48
|
+
|
49
|
+
# @!macro [attach] instance_of?(class)
|
50
|
+
#
|
51
|
+
# Determines if self is an instance of given class or module
|
52
|
+
#
|
53
|
+
# @param class [Class,Module] the class of module to verify
|
54
|
+
#
|
55
|
+
# @return [TrueClass,FalseClass] the result of the check
|
56
|
+
#
|
57
|
+
# @raise [TypeError] if the given argument is not of the expected types
|
58
|
+
#
|
59
|
+
# @since 0.8.0
|
60
|
+
#
|
61
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-instance_of-3F
|
62
|
+
define_method :instance_of?, ::Object.instance_method(:instance_of?)
|
63
|
+
|
64
|
+
# @!macro [attach] is_a?(class)
|
65
|
+
#
|
66
|
+
# Determines if self is of the type of the object class or module
|
67
|
+
#
|
68
|
+
# @param class [Class,Module] the class of module to verify
|
69
|
+
#
|
70
|
+
# @return [TrueClass,FalseClass] the result of the check
|
71
|
+
#
|
72
|
+
# @raise [TypeError] if the given argument is not of the expected types
|
73
|
+
#
|
74
|
+
# @since 0.8.0
|
75
|
+
#
|
76
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-is_a-3F
|
77
|
+
define_method :is_a?, ::Object.instance_method(:is_a?)
|
78
|
+
|
79
|
+
# @!macro [attach] kind_of?(class)
|
80
|
+
#
|
81
|
+
# Determines if self is of the kind of the object class or module
|
82
|
+
#
|
83
|
+
# @param class [Class,Module] the class of module to verify
|
84
|
+
#
|
85
|
+
# @return [TrueClass,FalseClass] the result of the check
|
86
|
+
#
|
87
|
+
# @raise [TypeError] if the given argument is not of the expected types
|
88
|
+
#
|
89
|
+
# @since 0.8.0
|
90
|
+
#
|
91
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-kind_of-3F
|
92
|
+
define_method :kind_of?, ::Object.instance_method(:kind_of?)
|
93
|
+
|
94
|
+
# Alias for __id__
|
95
|
+
#
|
96
|
+
# @return [Fixnum] the object id
|
97
|
+
#
|
98
|
+
# @since 0.8.0
|
99
|
+
#
|
100
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-object_id
|
101
|
+
def object_id
|
102
|
+
__id__
|
103
|
+
end
|
104
|
+
|
105
|
+
# Interface for pp
|
106
|
+
#
|
107
|
+
# @param printer [PP] the Pretty Printable printer
|
108
|
+
# @return [String] the pretty-printable inspection of the object
|
109
|
+
#
|
110
|
+
# @since 0.8.0
|
111
|
+
#
|
112
|
+
# @see https://ruby-doc.org/stdlib/libdoc/pp/rdoc/PP.html
|
113
|
+
def pretty_print(printer)
|
114
|
+
printer.text(inspect)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Returns true if responds to the given method.
|
118
|
+
#
|
119
|
+
# @return [TrueClass,FalseClass] the result of the check
|
120
|
+
#
|
121
|
+
# @since 0.8.0
|
122
|
+
#
|
123
|
+
# @see http://ruby-doc.org/core/Object.html#method-i-respond_to-3F
|
124
|
+
def respond_to?(method_name, include_all = false) # rubocop:disable Style/OptionalBooleanParameter
|
125
|
+
respond_to_missing?(method_name, include_all)
|
126
|
+
end
|
127
|
+
|
128
|
+
private
|
129
|
+
|
130
|
+
# Must be overridden by descendants
|
131
|
+
#
|
132
|
+
# @since 0.8.0
|
133
|
+
# @api private
|
134
|
+
def respond_to_missing?(_method_name, _include_all)
|
135
|
+
::Kernel.raise ::NotImplementedError
|
136
|
+
end
|
137
|
+
|
138
|
+
# @since 0.8.0
|
139
|
+
# @api private
|
140
|
+
def __inspect # rubocop:disable Style/EmptyMethod
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
data/lib/dry/core/cache.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "dry/core/constants"
|
4
|
-
require "dry/core/errors"
|
5
4
|
|
6
5
|
module Dry
|
7
6
|
module Core
|
@@ -10,7 +9,6 @@ module Dry
|
|
10
9
|
# @api public
|
11
10
|
module ClassAttributes
|
12
11
|
include Constants
|
13
|
-
|
14
12
|
# Specify what attributes a class will use
|
15
13
|
#
|
16
14
|
# @example
|
@@ -80,13 +78,13 @@ module Dry
|
|
80
78
|
if Undefined.equal?(value)
|
81
79
|
if instance_variable_defined?(ivar)
|
82
80
|
instance_variable_get(ivar)
|
83
|
-
else
|
81
|
+
else
|
84
82
|
nil
|
85
83
|
end
|
86
84
|
elsif type === value # rubocop:disable Style/CaseEquality
|
87
85
|
instance_variable_set(ivar, coerce.call(value))
|
88
86
|
else
|
89
|
-
raise
|
87
|
+
raise InvalidClassAttributeValueError.new(name, value)
|
90
88
|
end
|
91
89
|
end
|
92
90
|
end
|
data/lib/dry/core/constants.rb
CHANGED
data/lib/dry/core/equalizer.rb
CHANGED
@@ -1,17 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Dry
|
4
|
-
# Build an equalizer module for the inclusion in other class
|
5
|
-
#
|
6
|
-
# ## Credits
|
7
|
-
#
|
8
|
-
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
9
|
-
#
|
10
|
-
# @api public
|
11
|
-
def self.Equalizer(*keys, **options)
|
12
|
-
Dry::Core::Equalizer.new(*keys, **options)
|
13
|
-
end
|
14
|
-
|
15
4
|
module Core
|
16
5
|
# Define equality, equivalence and inspection methods
|
17
6
|
class Equalizer < ::Module
|
@@ -149,4 +138,19 @@ module Dry
|
|
149
138
|
end
|
150
139
|
end
|
151
140
|
end
|
141
|
+
|
142
|
+
# Old modules that depend on dry/core/equalizer may miss
|
143
|
+
# this method if dry/core is not required explicitly
|
144
|
+
unless singleton_class.method_defined?(:Equalizer)
|
145
|
+
# Build an equalizer module for the inclusion in other class
|
146
|
+
#
|
147
|
+
# ## Credits
|
148
|
+
#
|
149
|
+
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
150
|
+
#
|
151
|
+
# @api public
|
152
|
+
def self.Equalizer(*keys, **options)
|
153
|
+
Dry::Core::Equalizer.new(*keys, **options)
|
154
|
+
end
|
155
|
+
end
|
152
156
|
end
|
data/lib/dry/core/errors.rb
CHANGED
data/lib/dry/core/memoizable.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "dry/core/deprecations"
|
4
|
-
|
5
3
|
module Dry
|
6
4
|
module Core
|
7
5
|
module Memoizable
|
@@ -13,6 +11,13 @@ module Dry
|
|
13
11
|
def memoize(*names)
|
14
12
|
prepend(Memoizer.new(self, names))
|
15
13
|
end
|
14
|
+
|
15
|
+
def inherited(base)
|
16
|
+
super
|
17
|
+
|
18
|
+
memoizer = base.ancestors.find { _1.is_a?(Memoizer) }
|
19
|
+
base.prepend(memoizer.dup)
|
20
|
+
end
|
16
21
|
end
|
17
22
|
|
18
23
|
module BasicObject
|
@@ -52,6 +57,12 @@ module Dry
|
|
52
57
|
|
53
58
|
# @api private
|
54
59
|
class Memoizer < ::Module
|
60
|
+
KERNEL = {
|
61
|
+
singleton: ::Kernel.instance_method(:singleton_class),
|
62
|
+
ivar_set: ::Kernel.instance_method(:instance_variable_set),
|
63
|
+
frozen: ::Kernel.instance_method(:frozen?)
|
64
|
+
}.freeze
|
65
|
+
|
55
66
|
# @api private
|
56
67
|
def initialize(klass, names)
|
57
68
|
super()
|
@@ -65,20 +76,50 @@ module Dry
|
|
65
76
|
private
|
66
77
|
|
67
78
|
# @api private
|
68
|
-
|
79
|
+
# rubocop:disable Metrics/AbcSize
|
80
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
81
|
+
def define_memoizable(method:)
|
69
82
|
parameters = method.parameters
|
83
|
+
mod = self
|
84
|
+
kernel = KERNEL
|
70
85
|
|
71
86
|
if parameters.empty?
|
72
|
-
key = method.name.hash
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
87
|
+
key = "#{object_id}:#{method.name}".hash.abs
|
88
|
+
|
89
|
+
define_method(method.name) do
|
90
|
+
value = super()
|
91
|
+
|
92
|
+
if kernel[:frozen].bind_call(self)
|
93
|
+
# It's not possible to modify singleton classes
|
94
|
+
# of frozen objects
|
95
|
+
mod.remove_method(method.name)
|
96
|
+
mod.module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
97
|
+
def #{method.name} # def slow_calc
|
98
|
+
cached = @__memoized__[#{key}] # cached = @__memoized__[12345678]
|
99
|
+
#
|
100
|
+
if cached || @__memoized__.key?(#{key}) # if cached || @__memoized__.key?(12345678)
|
101
|
+
cached # cached
|
102
|
+
else # else
|
103
|
+
@__memoized__[#{key}] = super # @__memoized__[12345678] = super
|
104
|
+
end # end
|
105
|
+
end # end
|
106
|
+
RUBY
|
107
|
+
else
|
108
|
+
# We make an attr_reader for computed value.
|
109
|
+
# Readers are "special-cased" in ruby so such
|
110
|
+
# access will be the fastest way, faster than you'd
|
111
|
+
# expect :)
|
112
|
+
attr_name = :"__memozed_#{key}__"
|
113
|
+
ivar_name = :"@#{attr_name}"
|
114
|
+
kernel[:ivar_set].bind_call(self, ivar_name, value)
|
115
|
+
eigenclass = kernel[:singleton].bind_call(self)
|
116
|
+
eigenclass.attr_reader(attr_name)
|
117
|
+
eigenclass.alias_method(method.name, attr_name)
|
118
|
+
eigenclass.remove_method(attr_name)
|
119
|
+
end
|
120
|
+
|
121
|
+
value
|
122
|
+
end
|
82
123
|
else
|
83
124
|
mapping = parameters.to_h { |k, v = nil| [k, v] }
|
84
125
|
params, binds = declaration(parameters, mapping)
|
@@ -95,7 +136,7 @@ module Dry
|
|
95
136
|
|
96
137
|
m = module_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
97
138
|
def #{method.name}(#{params.join(", ")}) # def slow_calc(arg1, arg2, arg3)
|
98
|
-
key = [:"#{method.name}", #{binds.join(", ")}].hash # [:slow_calc, arg1, arg2, arg3].hash
|
139
|
+
key = [:"#{method.name}", #{binds.join(", ")}].hash # key = [:slow_calc, arg1, arg2, arg3].hash
|
99
140
|
#
|
100
141
|
if @__memoized__.key?(key) # if @__memoized__.key?(key)
|
101
142
|
@__memoized__[key] # @__memoized__[key]
|
@@ -112,6 +153,8 @@ module Dry
|
|
112
153
|
m
|
113
154
|
end
|
114
155
|
end
|
156
|
+
# rubocop:enable Metrics/AbcSize
|
157
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
115
158
|
|
116
159
|
# @api private
|
117
160
|
def declaration(definition, lookup)
|
data/lib/dry/core/version.rb
CHANGED
data/lib/dry/core.rb
CHANGED
@@ -1,10 +1,44 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "zeitwerk"
|
4
|
+
|
5
|
+
require "dry/core/constants"
|
6
|
+
require "dry/core/errors"
|
3
7
|
require "dry/core/version"
|
4
8
|
|
5
9
|
# :nodoc:
|
6
10
|
module Dry
|
7
11
|
# :nodoc:
|
8
12
|
module Core
|
13
|
+
include Constants
|
14
|
+
|
15
|
+
def self.loader
|
16
|
+
@loader ||= Zeitwerk::Loader.new.tap do |loader|
|
17
|
+
root = File.expand_path("..", __dir__)
|
18
|
+
loader.tag = "dry-core"
|
19
|
+
loader.inflector = Zeitwerk::GemInflector.new("#{root}/dry-core.rb")
|
20
|
+
loader.push_dir(root)
|
21
|
+
loader.ignore(
|
22
|
+
"#{root}/dry-core.rb",
|
23
|
+
"#{root}/dry/core/{constants,errors,version}.rb"
|
24
|
+
)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
loader.setup
|
29
|
+
end
|
30
|
+
|
31
|
+
# See dry/core/equalizer.rb
|
32
|
+
unless singleton_class.method_defined?(:Equalizer)
|
33
|
+
# Build an equalizer module for the inclusion in other class
|
34
|
+
#
|
35
|
+
# ## Credits
|
36
|
+
#
|
37
|
+
# Equalizer has been originally imported from the equalizer gem created by Dan Kubb
|
38
|
+
#
|
39
|
+
# @api public
|
40
|
+
def self.Equalizer(*keys, **options)
|
41
|
+
Dry::Core::Equalizer.new(*keys, **options)
|
42
|
+
end
|
9
43
|
end
|
10
44
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.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:
|
11
|
+
date: 2022-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: zeitwerk
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -79,6 +93,7 @@ files:
|
|
79
93
|
- dry-core.gemspec
|
80
94
|
- lib/dry-core.rb
|
81
95
|
- lib/dry/core.rb
|
96
|
+
- lib/dry/core/basic_object.rb
|
82
97
|
- lib/dry/core/cache.rb
|
83
98
|
- lib/dry/core/class_attributes.rb
|
84
99
|
- lib/dry/core/class_builder.rb
|
@@ -96,7 +111,7 @@ licenses:
|
|
96
111
|
- MIT
|
97
112
|
metadata:
|
98
113
|
allowed_push_host: https://rubygems.org
|
99
|
-
changelog_uri: https://github.com/dry-rb/dry-core/blob/
|
114
|
+
changelog_uri: https://github.com/dry-rb/dry-core/blob/main/CHANGELOG.md
|
100
115
|
source_code_uri: https://github.com/dry-rb/dry-core
|
101
116
|
bug_tracker_uri: https://github.com/dry-rb/dry-core/issues
|
102
117
|
post_install_message:
|
@@ -107,7 +122,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
107
122
|
requirements:
|
108
123
|
- - ">="
|
109
124
|
- !ruby/object:Gem::Version
|
110
|
-
version: 2.
|
125
|
+
version: 2.7.0
|
111
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
127
|
requirements:
|
113
128
|
- - ">="
|