eco-helpers 2.4.8 → 2.4.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: facf3e640f8af36beba49a9da6eb7c72cb70b4a07ef93602ee70898cce31c356
4
- data.tar.gz: 304bb16fdefd0db6ad63b524a654aed990375a24630565d59cfb6fa4470e94da
3
+ metadata.gz: 5f4b841b95f31b7f25c9b5fd33c949bedbc46f2850c0c68b863818f3c75105b1
4
+ data.tar.gz: 4ec1d5c2859303fa6943974d19d07c7a4391f4d76fe2a01682510a26e9f92016
5
5
  SHA512:
6
- metadata.gz: 6d4b1882f5c042ceeeee46bfb6e1604204092a108409c882df2f82e125259cd11551ce90e48c40cf5c7cdf50286eda42b624c9cd24d9e1ea13d4a8bb3203d9b2
7
- data.tar.gz: 91061e3b0d8caafc59fbd77ca726cf84c83d459eb1bad420932ad3482842d57acd1a38a35373a82078638b6c7e41e570a6c7f2adb84a319a38c61509555d2bc9
6
+ metadata.gz: 84a0e4e6191ec10cf37088afce2fff53f9450b4d14f5d8c6206b152d4a0b4758127e5b8df0e3807c99c7dc99263de434fa92787baa778de9322ef56704ea9acd
7
+ data.tar.gz: 26b7d8b4e627c8638dd2b392063a25f4f7a633ea13ee3fe6f71bfccff81a3160cee957abc905d1f07e9f6c9e029a507e85b2f256120729fe5096fb2ea83c5018
data/CHANGELOG.md CHANGED
@@ -1,12 +1,32 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
- ## [2.4.9] - 2023-04-xx
4
+ ## [2.4.10] - 2023-04-xx
5
5
 
6
6
  ### Added
7
7
  ### Changed
8
8
  ### Fixed
9
9
 
10
+ ## [2.4.9] - 2023-04-17
11
+
12
+ ### Added
13
+ - `Eco::API::UseCases#source_object` to retrieve the original use case definition object
14
+ - This allows the `Eco::API::UseCases::UseCase` object to access the object that defined the usecase and initialize `@session`.
15
+ - It now can know what `type` of use case created the `@callback`
16
+ - Next steps with this may be play a bit with the `aritity` of the `@callback` block, allow parsers to skip the serializer definition (so the default one runs), etc.
17
+ - `Eco::API::Common::Loaders::Base` the above feature allowed to initialize the `@options`, and therefore...
18
+ - `#options` method **added** (based on `@options` instance var)
19
+
20
+ ### Changed
21
+ - `Eco::API::Common::Loaders::Base`
22
+ - `#session` method is based on `@session` instance var, which allows to override without having to redefine `session` (`attr_reader :session` is no longer necessary)
23
+ - Softened max version of **gem** dependencies
24
+ - Upgraded self-managed **gem** dependencies
25
+
26
+ ### Fixed
27
+ - `Eco::API::Common::ClassAutoLoader::autoload_children`
28
+ - Skip `singleton_classes`
29
+
10
30
  ## [2.4.8] - 2023-04-03
11
31
 
12
32
  ### Added
data/eco-helpers.gemspec CHANGED
@@ -24,24 +24,24 @@ Gem::Specification.new do |spec|
24
24
  #spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_development_dependency "bundler", ">= 2.4.8", "< 2.5"
28
- spec.add_development_dependency "rspec", ">= 3.10.0", "< 3.11"
29
- spec.add_development_dependency "rake", ">= 13.0.3", "< 13.1"
30
- spec.add_development_dependency "yard", ">= 0.9.26", "< 0.10"
31
- spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
27
+ spec.add_development_dependency "bundler", ">= 2.4.8", "< 3"
28
+ spec.add_development_dependency "rspec", ">= 3.10.0", "< 4"
29
+ spec.add_development_dependency "rake", ">= 13.0.3", "< 14"
30
+ spec.add_development_dependency "yard", ">= 0.9.26", "< 1"
31
+ spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 4"
32
32
 
33
- spec.add_dependency 'ecoportal-api', '>= 0.9.3', '< 0.10'
34
- spec.add_dependency 'ecoportal-api-v2', '>= 1.1.1', '< 1.2'
35
- spec.add_dependency 'ecoportal-api-graphql', '>= 0.3.5', '< 0.4'
33
+ spec.add_dependency 'ecoportal-api', '>= 0.9.4', '< 0.10'
34
+ spec.add_dependency 'ecoportal-api-v2', '>= 1.1.2', '< 1.2'
35
+ spec.add_dependency 'ecoportal-api-graphql', '>= 0.3.6', '< 0.4'
36
36
  spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
37
37
  spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
38
- spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
39
- spec.add_dependency 'net-sftp', '>= 3.0.0', '< 3.1'
40
- spec.add_dependency 'hashdiff', '>= 1.0.1', '< 1.1'
41
- spec.add_dependency 'fuzzy_match', '>= 2.1.0', '< 2.2'
42
- spec.add_dependency 'amatch', '>= 0.4.0', '< 0.5'
43
- spec.add_dependency 'jaro_winkler', '>= 1.5.4', '< 1.6'
44
- spec.add_dependency 'roo', '>= 2.8.3', '< 2.9'
45
- spec.add_dependency 'roo-xls', '>= 1.2.0', '< 1.3'
46
- spec.add_dependency 'docx', '>= 0.6.2', '< 0.7'
38
+ spec.add_dependency 'dotenv', '>= 2.7.6', '< 3'
39
+ spec.add_dependency 'net-sftp', '>= 3.0.0', '< 4'
40
+ spec.add_dependency 'hashdiff', '>= 1.0.1', '< 1.1'
41
+ spec.add_dependency 'fuzzy_match', '>= 2.1.0', '< 2.2'
42
+ spec.add_dependency 'amatch', '>= 0.4.0', '< 0.5'
43
+ spec.add_dependency 'jaro_winkler', '>= 1.5.4', '< 1.6'
44
+ spec.add_dependency 'roo', '>= 2.8.3', '< 2.9'
45
+ spec.add_dependency 'roo-xls', '>= 1.2.0', '< 1.3'
46
+ spec.add_dependency 'docx', '>= 0.6.2', '< 0.7'
47
47
  end
@@ -80,8 +80,14 @@ module Eco
80
80
  return false if pending_children.empty?
81
81
  @loading_children = true
82
82
  pending_children.each do |klass|
83
- @child = klass.new(object)
84
- autoloaded_children.push(klass)
83
+ begin
84
+ @child = klass.new(object)
85
+ rescue TypeError => e
86
+ # Can't create from this class (must be the singleton class)
87
+ # Just ignore
88
+ ensure
89
+ autoloaded_children.push(klass)
90
+ end
85
91
  end
86
92
  @loading_children = false
87
93
  true
@@ -102,7 +108,6 @@ module Eco
102
108
  def new_classes
103
109
  ObjectSpace.each_object(::Class).to_a - known_classes
104
110
  end
105
-
106
111
  end
107
112
  end
108
113
  end
@@ -36,7 +36,11 @@ module Eco
36
36
  private
37
37
 
38
38
  def session
39
- ASSETS.session
39
+ @session ||= ASSETS.session
40
+ end
41
+
42
+ def options
43
+ @options ||= {}
40
44
  end
41
45
 
42
46
  def config
@@ -11,7 +11,7 @@ module Eco
11
11
  # @return [RequiredAttrs]
12
12
  def required_attrs
13
13
  @required_attrs ||= @dependencies[:required_attrs]
14
- #@required_attrs ||= RequiredAttrs.new(attr, :unkown, [attr])
14
+ #@required_attrs ||= RequiredAttrs.new(attr, :unknown, [attr])
15
15
  end
16
16
 
17
17
  # @see Eco::Language::Models::ParserSerializer#def_parser
@@ -174,7 +174,7 @@ module Eco
174
174
 
175
175
  # Helper to define and associate a parser/serializer to a type or attribute.
176
176
  # @raise [Exception] if trying to define a parser/serializer for:
177
- # - an unkown attribute (`String`)
177
+ # - an unknown attribute (`String`)
178
178
  # - an unrecognized type or format (`Symbol`)
179
179
  # @param attr [String] type (`Symbol`) or attribute (`String`) to define the parser/serializer to.
180
180
  # @param dependencies [Hash] dependencies to be used when calling the parser/serializer.
@@ -57,8 +57,8 @@ module Eco
57
57
  return log(:fatal, *args, &block)
58
58
  end
59
59
 
60
- def unkown(msg, &block)
61
- return log(:unkown, *args, &block)
60
+ def unknown(msg, &block)
61
+ return log(:unknown, *args, &block)
62
62
  end
63
63
 
64
64
  def << (msg)
data/lib/eco/api/error.rb CHANGED
@@ -4,7 +4,7 @@ module Eco
4
4
  class Error < StandardError
5
5
  class UnknownErrorClass < StandardError
6
6
  def initialize(msg = nil, klass:)
7
- msg ||= "Unkown api error class #{klass}"
7
+ msg ||= "Unknown api error class #{klass}"
8
8
  super(msg)
9
9
  end
10
10
  end
@@ -60,19 +60,19 @@ module Eco
60
60
  @str_err = "Invalid ObjectId."
61
61
  @match = /'(.*?)' is an invalid ObjectId./
62
62
  end
63
- class UnkownField < Eco::API::Error
63
+ class UnknownField < Eco::API::Error
64
64
  @str_err = "Unknown field."
65
65
  @match = /(.+?) is an unknown field/
66
66
 
67
- class UnkownCoreField < UnkownField
67
+ class UnknownCoreField < UnknownField
68
68
  @str_err = "Unknown core field."
69
69
  @match = /(.+?) is an unknown field/
70
70
  end
71
- class UnkownAccountField < UnkownField
71
+ class UnknownAccountField < UnknownField
72
72
  @str_err = "Unknown account field."
73
73
  @match = /account \> (.+?) is an unknown field/
74
74
  end
75
- class UnkownDetailsField < UnkownField
75
+ class UnknownDetailsField < UnknownField
76
76
  @str_err = "Unknown details field."
77
77
  @match = /details \> (.+?) is an unknown field/
78
78
  end
@@ -17,6 +17,11 @@ module Eco
17
17
  @times_launched = 0
18
18
  end
19
19
 
20
+ def source_object
21
+ return nil unless callback_from_loader?
22
+ callback_self
23
+ end
24
+
20
25
  def chainer
21
26
  # TODO: root is a Eco::API::UseCases that will not point to this new case.
22
27
  # => Moreover, the name and type will be the same as self
@@ -42,6 +47,7 @@ module Eco
42
47
  UseCaseIO.new(**kargs).tap do |uio|
43
48
  @options = uio.options
44
49
  uio.session.logger.debug("#{self.class}: going to process '#{name}'")
50
+ set_session_n_options(session: uio.session, options: uio.options) if callback_from_loader?
45
51
  uio.output = @callback.call(*uio.params)
46
52
  @times_launched += 1
47
53
  end
@@ -53,8 +59,28 @@ module Eco
53
59
  @callback
54
60
  end
55
61
 
56
- end
62
+ def callback_self
63
+ eval("self", @callback.binding)
64
+ end
57
65
 
66
+ def callback_from_loader?
67
+ callback_self.is_a?(Eco::API::Common::Loaders::Base)
68
+ end
69
+
70
+ # Set the instance variables `@session` and `@options`
71
+ # in the use case definition
72
+ # @note this only works when the use case was defined
73
+ # via an children class of `Eco::API::Common::Loaders::Base`
74
+ def set_session_n_options(session:, options: @options)
75
+ return false unless callback_from_loader?
76
+ callback_self.instance_eval do
77
+ # `self` is the use case itself (when used the Loader)
78
+ @session = session
79
+ @options = options
80
+ end
81
+ true
82
+ end
83
+ end
58
84
  end
59
85
  end
60
86
  end
@@ -2,9 +2,9 @@ module Eco
2
2
  module API
3
3
  class UseCases
4
4
 
5
- class UnkownCase < StandardError
5
+ class UnknownCase < StandardError
6
6
  def initialize(msg = nil, case_name: nil, type: nil)
7
- msg ||= "Unkown case"
7
+ msg ||= "Unknown case"
8
8
  msg += ". Case name '#{case_name}'" if case_name
9
9
  msg += ". Case type '#{type}'" if type
10
10
  super(msg)
@@ -112,9 +112,9 @@ module Eco
112
112
  if type && target_case = to_h[key(name, type)]
113
113
  return target_case
114
114
  elsif type
115
- raise UseCases::UnkownCase.new(case_name: name, type: type)
115
+ raise UseCases::UnknownCase.new(case_name: name, type: type)
116
116
  end
117
- raise UseCases::UnkownCase.new(case_name: name, type: type) unless cases = by_name[name]
117
+ raise UseCases::UnknownCase.new(case_name: name, type: type) unless cases = by_name[name]
118
118
  raise UseCases::AmbiguousCaseReference.new(case_name: name) if cases.length > 1
119
119
  cases.first
120
120
  end
@@ -46,7 +46,7 @@ module Eco
46
46
  end
47
47
  end
48
48
 
49
- def any_unkown?(exclude: [])
49
+ def any_unknown?(exclude: [])
50
50
  unknown(exclude: exclude).length > 0
51
51
  end
52
52
 
data/lib/eco/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eco
2
- VERSION = "2.4.8"
2
+ VERSION = "2.4.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eco-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.8
4
+ version: 2.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Segura
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: 2.4.8
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '2.5'
22
+ version: '3'
23
23
  type: :development
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: 2.4.8
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '2.5'
32
+ version: '3'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: 3.10.0
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '3.11'
42
+ version: '4'
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: 3.10.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '3.11'
52
+ version: '4'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 13.0.3
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '13.1'
62
+ version: '14'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: 13.0.3
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '13.1'
72
+ version: '14'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: yard
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +79,7 @@ dependencies:
79
79
  version: 0.9.26
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.10'
82
+ version: '1'
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: 0.9.26
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: '0.10'
92
+ version: '1'
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: redcarpet
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: 3.5.1
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: '3.6'
102
+ version: '4'
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -109,14 +109,14 @@ dependencies:
109
109
  version: 3.5.1
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '3.6'
112
+ version: '4'
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: ecoportal-api
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
118
118
  - !ruby/object:Gem::Version
119
- version: 0.9.3
119
+ version: 0.9.4
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0.10'
@@ -126,7 +126,7 @@ dependencies:
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- version: 0.9.3
129
+ version: 0.9.4
130
130
  - - "<"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0.10'
@@ -136,7 +136,7 @@ dependencies:
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 1.1.1
139
+ version: 1.1.2
140
140
  - - "<"
141
141
  - !ruby/object:Gem::Version
142
142
  version: '1.2'
@@ -146,7 +146,7 @@ dependencies:
146
146
  requirements:
147
147
  - - ">="
148
148
  - !ruby/object:Gem::Version
149
- version: 1.1.1
149
+ version: 1.1.2
150
150
  - - "<"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '1.2'
@@ -156,7 +156,7 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: 0.3.5
159
+ version: 0.3.6
160
160
  - - "<"
161
161
  - !ruby/object:Gem::Version
162
162
  version: '0.4'
@@ -166,7 +166,7 @@ dependencies:
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: 0.3.5
169
+ version: 0.3.6
170
170
  - - "<"
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0.4'
@@ -219,7 +219,7 @@ dependencies:
219
219
  version: 2.7.6
220
220
  - - "<"
221
221
  - !ruby/object:Gem::Version
222
- version: '2.8'
222
+ version: '3'
223
223
  type: :runtime
224
224
  prerelease: false
225
225
  version_requirements: !ruby/object:Gem::Requirement
@@ -229,7 +229,7 @@ dependencies:
229
229
  version: 2.7.6
230
230
  - - "<"
231
231
  - !ruby/object:Gem::Version
232
- version: '2.8'
232
+ version: '3'
233
233
  - !ruby/object:Gem::Dependency
234
234
  name: net-sftp
235
235
  requirement: !ruby/object:Gem::Requirement
@@ -239,7 +239,7 @@ dependencies:
239
239
  version: 3.0.0
240
240
  - - "<"
241
241
  - !ruby/object:Gem::Version
242
- version: '3.1'
242
+ version: '4'
243
243
  type: :runtime
244
244
  prerelease: false
245
245
  version_requirements: !ruby/object:Gem::Requirement
@@ -249,7 +249,7 @@ dependencies:
249
249
  version: 3.0.0
250
250
  - - "<"
251
251
  - !ruby/object:Gem::Version
252
- version: '3.1'
252
+ version: '4'
253
253
  - !ruby/object:Gem::Dependency
254
254
  name: hashdiff
255
255
  requirement: !ruby/object:Gem::Requirement