marty 2.5.2 → 2.5.4

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.
Files changed (181) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +11 -589
  5. data/Gemfile +9 -9
  6. data/Gemfile.lock +1 -1
  7. data/Rakefile +1 -3
  8. data/app/components/marty/api_auth_view.rb +3 -3
  9. data/app/components/marty/api_config_view.rb +8 -8
  10. data/app/components/marty/api_log_view.rb +16 -20
  11. data/app/components/marty/auth_app.rb +6 -6
  12. data/app/components/marty/base_rule_view.rb +27 -19
  13. data/app/components/marty/config_view.rb +12 -9
  14. data/app/components/marty/data_grid_view.rb +26 -26
  15. data/app/components/marty/delorean_rule_view.rb +0 -1
  16. data/app/components/marty/event_view.rb +27 -27
  17. data/app/components/marty/extras/layout.rb +26 -26
  18. data/app/components/marty/extras/misc.rb +2 -2
  19. data/app/components/marty/grid.rb +13 -13
  20. data/app/components/marty/grid_append_only.rb +0 -1
  21. data/app/components/marty/import_type_view.rb +13 -13
  22. data/app/components/marty/import_view.rb +17 -16
  23. data/app/components/marty/log_view.rb +16 -14
  24. data/app/components/marty/main_auth_app.rb +59 -59
  25. data/app/components/marty/main_auth_app/client/main_auth_app.js +3 -3
  26. data/app/components/marty/mcfly_grid_panel.rb +10 -10
  27. data/app/components/marty/new_posting_form.rb +11 -11
  28. data/app/components/marty/new_posting_window.rb +0 -1
  29. data/app/components/marty/posting_grid.rb +12 -13
  30. data/app/components/marty/promise_view.rb +6 -6
  31. data/app/components/marty/report_form.rb +50 -53
  32. data/app/components/marty/report_select.rb +27 -27
  33. data/app/components/marty/reporting.rb +4 -4
  34. data/app/components/marty/script_form.rb +40 -42
  35. data/app/components/marty/script_grid.rb +24 -24
  36. data/app/components/marty/script_tester.rb +40 -42
  37. data/app/components/marty/scripting.rb +25 -27
  38. data/app/components/marty/simple_app.rb +24 -9
  39. data/app/components/marty/tag_grid.rb +12 -13
  40. data/app/components/marty/user_view.rb +35 -35
  41. data/app/controllers/marty/application_controller.rb +3 -4
  42. data/app/controllers/marty/components_controller.rb +1 -1
  43. data/app/controllers/marty/delayed_job_controller.rb +1 -0
  44. data/app/controllers/marty/diagnostic/controller.rb +4 -6
  45. data/app/controllers/marty/job_controller.rb +6 -6
  46. data/app/controllers/marty/report_controller.rb +11 -11
  47. data/app/controllers/marty/rpc_controller.rb +15 -16
  48. data/app/helpers/marty/script_set.rb +4 -4
  49. data/app/models/marty/api_auth.rb +4 -5
  50. data/app/models/marty/api_config.rb +1 -1
  51. data/app/models/marty/base.rb +9 -8
  52. data/app/models/marty/base_rule.rb +18 -13
  53. data/app/models/marty/config.rb +4 -5
  54. data/app/models/marty/data_grid.rb +157 -181
  55. data/app/models/marty/delorean_rule.rb +63 -62
  56. data/app/models/marty/enum.rb +1 -1
  57. data/app/models/marty/event.rb +56 -59
  58. data/app/models/marty/helper.rb +38 -6
  59. data/app/models/marty/import_type.rb +6 -6
  60. data/app/models/marty/log.rb +3 -2
  61. data/app/models/marty/name_validator.rb +3 -2
  62. data/app/models/marty/pg_enum.rb +3 -4
  63. data/app/models/marty/posting.rb +20 -24
  64. data/app/models/marty/promise.rb +28 -30
  65. data/app/models/marty/script.rb +30 -28
  66. data/app/models/marty/tag.rb +8 -8
  67. data/app/models/marty/token.rb +2 -2
  68. data/app/models/marty/user.rb +24 -23
  69. data/app/models/marty/vw_promise.rb +10 -11
  70. data/config/routes.rb +2 -2
  71. data/delorean/blame_report.dl +268 -0
  72. data/{spec/dummy/delorean/fields.dl → delorean/marty_fields.dl} +8 -0
  73. data/delorean/table_report.dl +34 -0
  74. data/docker-compose.dummy.yml +2 -3
  75. data/lib/marty/aws/base.rb +8 -8
  76. data/lib/marty/aws/request.rb +4 -4
  77. data/lib/marty/cache_adapters/mcfly_ruby_cache.rb +1 -0
  78. data/lib/marty/content_handler.rb +25 -25
  79. data/lib/marty/data_change.rb +49 -71
  80. data/lib/marty/data_conversion.rb +20 -28
  81. data/lib/marty/data_exporter.rb +25 -28
  82. data/lib/marty/data_importer.rb +25 -27
  83. data/lib/marty/engine.rb +1 -2
  84. data/lib/marty/json_schema.rb +22 -24
  85. data/lib/marty/logger.rb +6 -9
  86. data/lib/marty/mcfly_model.rb +20 -24
  87. data/lib/marty/migrations.rb +37 -35
  88. data/lib/marty/monkey.rb +33 -33
  89. data/lib/marty/permissions.rb +18 -18
  90. data/lib/marty/promise_job.rb +17 -17
  91. data/lib/marty/promise_proxy.rb +6 -6
  92. data/lib/marty/relation.rb +6 -7
  93. data/lib/marty/rpc_call.rb +13 -12
  94. data/lib/marty/rule_script_set.rb +32 -28
  95. data/lib/marty/schema_helper.rb +37 -51
  96. data/lib/marty/util.rb +25 -24
  97. data/lib/marty/version.rb +1 -1
  98. data/lib/marty/xl.rb +121 -115
  99. data/make-dummy.mk +3 -0
  100. data/marty.gemspec +21 -21
  101. data/other/marty/api/base.rb +34 -35
  102. data/other/marty/diagnostic/aws/ec2_instance.rb +8 -8
  103. data/other/marty/diagnostic/base.rb +13 -14
  104. data/other/marty/diagnostic/collection.rb +2 -1
  105. data/other/marty/diagnostic/connections.rb +8 -6
  106. data/other/marty/diagnostic/database.rb +1 -0
  107. data/other/marty/diagnostic/delayed_job_version.rb +7 -9
  108. data/other/marty/diagnostic/delayed_job_worker_total_count.rb +1 -1
  109. data/other/marty/diagnostic/delayed_job_workers.rb +1 -1
  110. data/other/marty/diagnostic/environment_variables.rb +17 -15
  111. data/other/marty/diagnostic/fatal.rb +1 -1
  112. data/other/marty/diagnostic/node.rb +5 -9
  113. data/other/marty/diagnostic/nodes.rb +7 -5
  114. data/other/marty/diagnostic/packer.rb +7 -7
  115. data/other/marty/diagnostic/reporter.rb +24 -27
  116. data/other/marty/diagnostic/version.rb +3 -5
  117. data/script/rails +2 -1
  118. data/spec/controllers/application_controller_spec.rb +6 -6
  119. data/spec/controllers/delayed_job_controller_spec.rb +4 -4
  120. data/spec/controllers/diagnostic/controller_spec.rb +59 -60
  121. data/spec/controllers/job_controller_spec.rb +68 -69
  122. data/spec/controllers/rpc_controller_spec.rb +353 -359
  123. data/spec/controllers/rpc_import_spec.rb +15 -16
  124. data/spec/dummy/delorean/blame_report.dl +110 -15
  125. data/spec/dummy/delorean/data_report.dl +4 -4
  126. data/spec/dummy/delorean/marty_fields.dl +63 -0
  127. data/spec/dummy/delorean/table_report.dl +34 -0
  128. data/spec/features/auth_app_spec.rb +1 -2
  129. data/spec/features/data_import_spec.rb +2 -3
  130. data/spec/features/enum_spec.rb +42 -46
  131. data/spec/features/jobs_dashboard_spec.rb +14 -8
  132. data/spec/features/log_view_spec.rb +40 -43
  133. data/spec/features/reporting_spec.rb +15 -15
  134. data/spec/features/rule_spec.rb +195 -190
  135. data/spec/features/scripting_spec.rb +17 -20
  136. data/spec/features/scripting_test_spec.rb +32 -33
  137. data/spec/features/user_view_spec.rb +15 -17
  138. data/spec/job_helper.rb +11 -11
  139. data/spec/lib/data_blame_spec.rb +82 -0
  140. data/spec/lib/data_exporter_spec.rb +31 -32
  141. data/spec/lib/data_importer_spec.rb +382 -395
  142. data/spec/lib/delorean_query_spec.rb +117 -119
  143. data/spec/lib/json_schema_spec.rb +382 -392
  144. data/spec/lib/logger_spec.rb +23 -24
  145. data/spec/lib/mcfly_model_spec.rb +112 -109
  146. data/spec/lib/migrations_spec.rb +10 -10
  147. data/spec/lib/struct_compare_spec.rb +6 -6
  148. data/spec/lib/table_report_spec.rb +90 -0
  149. data/spec/lib/xl_spec.rb +63 -65
  150. data/spec/lib/xl_styles_spec.rb +16 -19
  151. data/spec/models/api_auth_spec.rb +30 -30
  152. data/spec/models/config_spec.rb +32 -32
  153. data/spec/models/data_grid_spec.rb +642 -655
  154. data/spec/models/event_spec.rb +96 -88
  155. data/spec/models/import_type_spec.rb +20 -20
  156. data/spec/models/posting_spec.rb +35 -35
  157. data/spec/models/promise_spec.rb +5 -5
  158. data/spec/models/rule_spec.rb +280 -269
  159. data/spec/models/script_spec.rb +27 -18
  160. data/spec/models/user_spec.rb +9 -9
  161. data/spec/other/diagnostic/base_spec.rb +20 -19
  162. data/spec/other/diagnostic/collection_spec.rb +6 -5
  163. data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
  164. data/spec/other/diagnostic/delayed_job_workers_spec.rb +8 -8
  165. data/spec/other/diagnostic/reporter_spec.rb +31 -33
  166. data/spec/spec_helper.rb +5 -5
  167. data/spec/support/chromedriver.rb +3 -5
  168. data/spec/support/components/netzke_combobox.rb +1 -1
  169. data/spec/support/components/netzke_grid.rb +17 -17
  170. data/spec/support/custom_matchers.rb +2 -2
  171. data/spec/support/download_helper.rb +1 -1
  172. data/spec/support/helper.rb +1 -2
  173. data/spec/support/netzke.rb +31 -31
  174. data/spec/support/performance_helper.rb +8 -8
  175. data/spec/support/post_run_logger.rb +1 -2
  176. data/spec/support/setup.rb +1 -4
  177. data/spec/support/shared_connection.rb +2 -2
  178. data/spec/support/structure_compare.rb +21 -22
  179. data/spec/support/suite.rb +1 -2
  180. data/spec/support/users.rb +5 -6
  181. metadata +32 -26
@@ -20,12 +20,12 @@ module Marty; module RSpec; module SharedConnection
20
20
  def self.connection
21
21
  EXCL_LAMBDA.call.include?(model_name) ? orig_connection :
22
22
  @@shared_connection ||
23
- ConnectionPool::Wrapper.new(:size => 1) {retrieve_connection}
23
+ ConnectionPool::Wrapper.new(:size => 1) { retrieve_connection }
24
24
  end
25
25
 
26
26
  def self.reset_shared_connection
27
27
  @@shared_connection = ConnectionPool::Wrapper.
28
- new(:size => 1) {retrieve_connection}
28
+ new(:size => 1) { retrieve_connection }
29
29
  end
30
30
  end
31
31
  end end end
@@ -1,27 +1,29 @@
1
1
  module Marty::RSpec::StructureCompare
2
- def self.struct_compare_all(v1raw, v2raw, key=nil, cmp_opts={}, path=[], errs=[])
2
+ def self.struct_compare_all(v1raw, v2raw, key = nil, cmp_opts = {}, path = [], errs = [])
3
3
  pathstr = path.map(&:to_s).join
4
- v1,v2 = [v1raw, v2raw].map { |v| v.class == ActiveSupport::TimeWithZone ?
5
- DateTime.parse(v.to_s) : v }
4
+ v1, v2 = [v1raw, v2raw].map do |v|
5
+ v.class == ActiveSupport::TimeWithZone ?
6
+ DateTime.parse(v.to_s) : v
7
+ end
6
8
 
7
- return errs + [v1["error"]] if
8
- v1.class != v2.class && v1.class == Hash && v1["error"]
9
+ return errs + [v1['error']] if
10
+ v1.class != v2.class && v1.class == Hash && v1['error']
9
11
 
10
- return errs + [v2["error"]] if
11
- v1.class != v2.class && v2.class == Hash && v2["error"]
12
+ return errs + [v2['error']] if
13
+ v1.class != v2.class && v2.class == Hash && v2['error']
12
14
 
13
15
  return errs + ["path=#{pathstr} class mismatch #{v1.class} #{v2.class}"] unless
14
16
  v1.class == v2.class ||
15
- (!cmp_opts["float_int_nomatch"] &&
16
- [v1,v2].map(&:class).to_set == Set.new([Integer, Float]))
17
+ (!cmp_opts['float_int_nomatch'] &&
18
+ [v1, v2].map(&:class).to_set == Set.new([Integer, Float]))
17
19
 
18
- override = (cmp_opts["ignore"]||[]).include?(key)
20
+ override = (cmp_opts['ignore'] || []).include?(key)
19
21
  case v1
20
22
  when String
21
23
  return errs + ["path=#{pathstr} #{v1} != #{v2}"] unless
22
24
  v1 == v2 ||
23
- Regexp.new('\A'+v1+'\z').match(v2) ||
24
- Regexp.new('\A'+v2+'\z').match(v1) ||
25
+ Regexp.new('\A' + v1 + '\z').match(v2) ||
26
+ Regexp.new('\A' + v2 + '\z').match(v1) ||
25
27
  override
26
28
  when Integer, DateTime, TrueClass, FalseClass, NilClass
27
29
  return errs + ["path=#{pathstr} #{v1} != #{v2}"] if v1 != v2 && !override
@@ -29,7 +31,7 @@ module Marty::RSpec::StructureCompare
29
31
  return errs + ["path=#{pathstr} #{v1} != #{v2}"] if
30
32
  v1.round(6) != v2.round(6) && !override
31
33
  when Hash
32
- v1_v2, v2_v1 = v1.keys-v2.keys, v2.keys-v1.keys
34
+ v1_v2, v2_v1 = v1.keys - v2.keys, v2.keys - v1.keys
33
35
 
34
36
  errs.append("path=#{pathstr} hash extra keys #{v1_v2}") unless v1_v2.empty?
35
37
  errs.append("path=#{pathstr} hash extra keys #{v2_v1}") unless v2_v1.empty?
@@ -42,7 +44,7 @@ module Marty::RSpec::StructureCompare
42
44
  errs.append(
43
45
  "path=#{pathstr} array size mismatch #{v1.size} != #{v2.size}") if
44
46
  v1.size != v2.size
45
- return errs + v1.each_with_index.map do |childval,index|
47
+ return errs + v1.each_with_index.map do |childval, index|
46
48
  struct_compare_all(childval, v2[index], nil, cmp_opts, path + [[index]],
47
49
  [])
48
50
  end.flatten
@@ -53,19 +55,16 @@ module Marty::RSpec::StructureCompare
53
55
  end
54
56
  end
55
57
 
56
- def struct_compare(v1raw, v2raw, cmp_opts={})
57
- begin
58
+ def struct_compare(v1raw, v2raw, cmp_opts = {})
58
59
  res = Marty::RSpec::StructureCompare.struct_compare_all(v1raw, v2raw, nil,
59
60
  cmp_opts).first
60
- rescue => e
61
+ rescue StandardError => e
61
62
  e.message
62
- end
63
63
  end
64
- def struct_compare_all(v1raw, v2raw, cmp_opts={})
65
- begin
64
+
65
+ def struct_compare_all(v1raw, v2raw, cmp_opts = {})
66
66
  Marty::RSpec::StructureCompare.struct_compare_all(v1raw, v2raw, nil,
67
67
  cmp_opts)
68
- rescue => e
68
+ rescue StandardError => e
69
69
  e.message
70
- end
71
70
  end
@@ -12,8 +12,7 @@ relative = Pathname.new(__FILE__).parent.to_s
12
12
  'performance_helper',
13
13
  'structure_compare',
14
14
  'custom_matchers',
15
- 'custom_selectors',
16
- ].each {|f| require (relative + '/' + f)}
15
+ 'custom_selectors',].each { |f| require (relative + '/' + f) }
17
16
 
18
17
  module Marty; module RSpec; module Suite
19
18
  include Marty::RSpec::Setup
@@ -1,7 +1,7 @@
1
1
  module Marty; module RSpec; module Users
2
2
  def populate_test_users
3
- (1..2).each { |i|
4
- Rails.configuration.marty.roles.each { |role_name|
3
+ (1..2).each do |i|
4
+ Rails.configuration.marty.roles.each do |role_name|
5
5
  username = "#{role_name}#{i}"
6
6
  next if Marty::User.find_by_login(username)
7
7
 
@@ -19,12 +19,12 @@ module Marty; module RSpec; module Users
19
19
  user_role.user = user
20
20
  user_role.role = role
21
21
  user_role.save!
22
- }
23
- }
22
+ end
23
+ end
24
24
 
25
25
  # also create an anon user
26
26
  user = Marty::User.new
27
- user.login = user.firstname = user.lastname = "anon"
27
+ user.login = user.firstname = user.lastname = 'anon'
28
28
  user.active = true
29
29
  user.save
30
30
  end
@@ -38,6 +38,5 @@ module Marty; module RSpec; module Users
38
38
  firstname: name,
39
39
  lastname: 'test',
40
40
  active: true)
41
-
42
41
  end
43
42
  end end end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.2
4
+ version: 2.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-01-25 00:00:00.000000000 Z
17
+ date: 2019-02-08 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg
@@ -101,35 +101,35 @@ dependencies:
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  - !ruby/object:Gem::Dependency
104
- name: net-ldap
104
+ name: json-schema
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - "~>"
107
+ - - ">="
108
108
  - !ruby/object:Gem::Version
109
- version: 0.16.1
109
+ version: '0'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: 0.16.1
116
+ version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
- name: rubyzip
118
+ name: net-ldap
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">="
121
+ - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0'
123
+ version: 0.16.1
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - ">="
128
+ - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: 0.16.1
131
131
  - !ruby/object:Gem::Dependency
132
- name: sqlite3
132
+ name: rubyzip
133
133
  requirement: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - ">="
@@ -143,7 +143,7 @@ dependencies:
143
143
  - !ruby/object:Gem::Version
144
144
  version: '0'
145
145
  - !ruby/object:Gem::Dependency
146
- name: json-schema
146
+ name: sqlite3
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ">="
@@ -177,33 +177,33 @@ dependencies:
177
177
  - !ruby/object:Gem::Version
178
178
  version: 1.0.2
179
179
  - !ruby/object:Gem::Dependency
180
- name: delayed_job_active_record
180
+ name: daemons
181
181
  requirement: !ruby/object:Gem::Requirement
182
182
  requirements:
183
- - - ">="
183
+ - - "~>"
184
184
  - !ruby/object:Gem::Version
185
- version: '0'
185
+ version: 1.3.1
186
186
  type: :runtime
187
187
  prerelease: false
188
188
  version_requirements: !ruby/object:Gem::Requirement
189
189
  requirements:
190
- - - ">="
190
+ - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: '0'
192
+ version: 1.3.1
193
193
  - !ruby/object:Gem::Dependency
194
- name: daemons
194
+ name: delayed_job_active_record
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - "~>"
197
+ - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: 1.3.1
199
+ version: '0'
200
200
  type: :runtime
201
201
  prerelease: false
202
202
  version_requirements: !ruby/object:Gem::Requirement
203
203
  requirements:
204
- - - "~>"
204
+ - - ">="
205
205
  - !ruby/object:Gem::Version
206
- version: 1.3.1
206
+ version: '0'
207
207
  description: Marty is a framework for viewing and reporting on versioned data.
208
208
  email:
209
209
  - arman.bostani@pnmac.com
@@ -380,8 +380,11 @@ files:
380
380
  - db/migrate/411_create_vw_promises.rb
381
381
  - db/migrate/500_add_api_class_to_marty_api_config.rb
382
382
  - db/seeds.rb
383
+ - delorean/blame_report.dl
383
384
  - delorean/diagnostics.dl
385
+ - delorean/marty_fields.dl
384
386
  - delorean/script_report.dl
387
+ - delorean/table_report.dl
385
388
  - docker-compose.dummy.yml
386
389
  - gemini_deprecations.md
387
390
  - lib/marty.rb
@@ -520,8 +523,9 @@ files:
520
523
  - spec/dummy/delorean/base_code.dl
521
524
  - spec/dummy/delorean/blame_report.dl
522
525
  - spec/dummy/delorean/data_report.dl
523
- - spec/dummy/delorean/fields.dl
526
+ - spec/dummy/delorean/marty_fields.dl
524
527
  - spec/dummy/delorean/styles.dl
528
+ - spec/dummy/delorean/table_report.dl
525
529
  - spec/dummy/lib/assets/.gitkeep
526
530
  - spec/dummy/lib/class_list.rb
527
531
  - spec/dummy/lib/gemini/my_rule_script_set.rb
@@ -1557,6 +1561,7 @@ files:
1557
1561
  - spec/fixtures/scripts/load_tests/script1.dl
1558
1562
  - spec/fixtures/scripts/load_tests/script2.dl
1559
1563
  - spec/job_helper.rb
1564
+ - spec/lib/data_blame_spec.rb
1560
1565
  - spec/lib/data_exporter_spec.rb
1561
1566
  - spec/lib/data_importer_spec.rb
1562
1567
  - spec/lib/delorean_query_spec.rb
@@ -1566,6 +1571,7 @@ files:
1566
1571
  - spec/lib/migrations/vw_marty_postings.sql.expected
1567
1572
  - spec/lib/migrations_spec.rb
1568
1573
  - spec/lib/struct_compare_spec.rb
1574
+ - spec/lib/table_report_spec.rb
1569
1575
  - spec/lib/xl_spec.rb
1570
1576
  - spec/lib/xl_styles_spec.rb
1571
1577
  - spec/models/api_auth_spec.rb
@@ -1624,7 +1630,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1624
1630
  version: '0'
1625
1631
  requirements: []
1626
1632
  rubyforge_project:
1627
- rubygems_version: 2.7.8
1633
+ rubygems_version: 2.6.14
1628
1634
  signing_key:
1629
1635
  specification_version: 4
1630
1636
  summary: A framework for working with versioned data