openstudio-extension 0.2.0 → 0.2.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.
@@ -810,6 +810,7 @@ module OsLib_Reporting
810
810
  summary_types << ['Heating Capacity', 'maxHeatingCapacity', 'W', 1, 'Btu/hr', 1]
811
811
  summary_types << ['Cooling Capacity', 'maxCoolingCapacity', 'W', 1, 'ton', 1]
812
812
  summary_types << ['Water Flow Rate', 'maxWaterFlowRate', 'm^3/s', 4, 'gal/min', 2]
813
+ summary_types << ['Rated Power', 'ratedPower', 'W', 1, 'W', 1]
813
814
  summary_types.each do |s|
814
815
  val_name = s[0]
815
816
  val_method = s[1]
@@ -1212,37 +1213,34 @@ module OsLib_Reporting
1212
1213
  thermal_zones.each do |zone|
1213
1214
  total_loop_floor_area += zone.floorArea
1214
1215
  end
1215
- #julien
1216
+
1216
1217
  source_units = 'm^2'
1217
1218
  if is_ip_units
1218
1219
  target_units = 'ft^2'
1219
1220
  else
1220
1221
  target_units = source_units
1221
1222
  end
1222
- total_loop_floor_area_ip = OpenStudio.convert(total_loop_floor_area, source_units, target_units).get
1223
- total_loop_floor_area_ip_neat = OpenStudio.toNeatString(total_loop_floor_area_ip, 0, true)
1223
+ total_loop_floor_area = OpenStudio.convert(total_loop_floor_area, source_units, target_units).get
1224
+ total_loop_floor_area_neat = OpenStudio.toNeatString(total_loop_floor_area, 0, true)
1224
1225
 
1225
1226
  # output zone and terminal data
1226
- #julien
1227
1227
  if is_ip_units
1228
- output_data_air_loops[:data] << ['Thermal Zones', 'Total Floor Area', "#{total_loop_floor_area_ip_neat} ft^2", '', thermal_zones.size]
1228
+ output_data_air_loops[:data] << ['Thermal Zones', 'Total Floor Area', "#{total_loop_floor_area_neat} ft^2", '', thermal_zones.size]
1229
1229
  else
1230
- output_data_air_loops[:data] << ['Thermal Zones', 'Total Floor Area', "#{total_loop_floor_area_ip_neat} m^2", '', thermal_zones.size]
1230
+ output_data_air_loops[:data] << ['Thermal Zones', 'Total Floor Area', "#{total_loop_floor_area_neat} m^2", '', thermal_zones.size]
1231
+ end
1232
+
1233
+ # heating and cooling temperature range data
1234
+ source_units = 'C'
1235
+ if is_ip_units
1236
+ target_units = 'F'
1237
+ target_units_display = 'F'
1238
+ else
1239
+ target_units = source_units
1240
+ target_units_display = 'C'
1231
1241
  end
1232
1242
  if cooling_temp_ranges.empty?
1233
1243
  cooling_temp_ranges_pretty = "can't inspect schedules"
1234
-
1235
- #julien
1236
- source_units = 'C'
1237
- if is_ip_units
1238
- target_units = 'F'
1239
- target_units_display = "F"
1240
- else
1241
- target_units = source_units
1242
- target_units_display = "C"
1243
- end
1244
-
1245
-
1246
1244
  else
1247
1245
  cooling_temp_ranges_pretty = "#{OpenStudio.convert(cooling_temp_ranges.min, source_units, target_units).get.round(1)} to #{OpenStudio.convert(cooling_temp_ranges.max, source_units, target_units).get.round(1)}"
1248
1246
  end
@@ -1251,17 +1249,6 @@ module OsLib_Reporting
1251
1249
  else
1252
1250
  heating_temps_ranges_pretty = "#{OpenStudio.convert(heating_temps_ranges.min, source_units, target_units).get.round(1)} to #{OpenStudio.convert(heating_temps_ranges.max, source_units, target_units).get.round(1)}"
1253
1251
  end
1254
-
1255
- #julien
1256
- source_units = 'C'
1257
- if is_ip_units
1258
- target_units = 'F'
1259
- target_units_display = "F"
1260
- else
1261
- target_units = source_units
1262
- target_units_display = "C"
1263
- end
1264
- #julien => ok? Tjs dans la boucle?
1265
1252
  output_data_air_loops[:data] << ['Thermal Zones', 'Cooling Setpoint Range', "#{cooling_temp_ranges_pretty} #{target_units_display}", '', '']
1266
1253
  output_data_air_loops[:data] << ['Thermal Zones', 'Heating Setpoint Range', "#{heating_temps_ranges_pretty} #{target_units_display}", '', '']
1267
1254
  output_data_air_loops[:data] << ['Terminal Types Used', terminals.uniq.sort.join(', '), '', '', terminals.size]
@@ -3024,6 +3011,13 @@ module OsLib_Reporting
3024
3011
  ann_env_pd = OsLib_Reporting.ann_env_pd(sqlFile)
3025
3012
  if ann_env_pd
3026
3013
 
3014
+ # store values about humidity fir reguster values
3015
+ zone_max_hours_over_70_rh = 0
3016
+ zone_max_hours_over_55_rh = 0
3017
+ rh_hours_threshold = 10 #hr
3018
+ num_zones_x_hours_over_70 = 0
3019
+ num_zones_x_hours_over_55 = 0
3020
+
3027
3021
  # get keys
3028
3022
  keys = sqlFile.availableKeyValues(ann_env_pd, 'Hourly', 'Zone Air Relative Humidity')
3029
3023
  keys.each do |key|
@@ -3032,6 +3026,10 @@ module OsLib_Reporting
3032
3026
  humidity_bins[k] = 0
3033
3027
  end
3034
3028
 
3029
+ # reset humidity zone flag
3030
+ zone_rh_count_hr_55 = 0.0
3031
+ zone_rh_count_hr_70 = 0.0
3032
+
3035
3033
  # get desired variable
3036
3034
  output_timeseries = sqlFile.timeSeries(ann_env_pd, 'Hourly', 'Zone Air Relative Humidity', key)
3037
3035
  # loop through timeseries and move the data from an OpenStudio timeseries to a normal Ruby array (vector)
@@ -3079,11 +3077,34 @@ module OsLib_Reporting
3079
3077
  else
3080
3078
  row_color << ''
3081
3079
  end
3080
+
3081
+ # populate rh data for register_values
3082
+ # catch greater than 70 and 80 for runner.registerValue
3083
+ if ['55-60','60-65','65-70','70-75','75-80','>= 80'].include?(k)
3084
+ zone_rh_count_hr_55 += v
3085
+ end
3086
+ if ['70-75','75-80','>= 80'].include?(k)
3087
+ zone_rh_count_hr_70 += v
3088
+ end
3089
+
3082
3090
  end
3083
3091
  row_data += ["#{mean.round(1)} (%)"]
3084
3092
  row_color += ['']
3085
3093
  humidity_table[:data] << row_data
3086
3094
  humidity_table[:data_color] << row_color
3095
+
3096
+ # apply rh zones and max hours
3097
+ if zone_rh_count_hr_55 >= rh_hours_threshold then num_zones_x_hours_over_55 += 1 end
3098
+ if zone_rh_count_hr_70 >= rh_hours_threshold then num_zones_x_hours_over_70 += 1 end
3099
+ if zone_max_hours_over_55_rh < zone_rh_count_hr_55 then zone_max_hours_over_55_rh = zone_rh_count_hr_55 end
3100
+ if zone_max_hours_over_70_rh < zone_rh_count_hr_70 then zone_max_hours_over_70_rh = zone_rh_count_hr_70 end
3101
+
3102
+ # add rh runner.registerValues to be used as output in analyses
3103
+ runner.registerValue("zone_max_hours_over_70_rh",zone_max_hours_over_70_rh,"hr")
3104
+ runner.registerValue("zone_max_hours_over_55_rh",zone_max_hours_over_55_rh,"hr")
3105
+ runner.registerValue("num_zones_x_hours_over_70",num_zones_x_hours_over_70,"zones")
3106
+ runner.registerValue("num_zones_x_hours_over_55",num_zones_x_hours_over_55,"zones")
3107
+
3087
3108
  end
3088
3109
  else
3089
3110
  runner.registerWarning('An annual simulation was not run. Cannot get annual timeseries data')
@@ -4649,4 +4670,86 @@ module OsLib_Reporting
4649
4670
 
4650
4671
  return @schedules_overview_section
4651
4672
  end
4652
- end
4673
+
4674
+ # create measure_warning_section (creates tables and runner.registerValues)
4675
+ def self.measure_warning_section(model, sqlFile, runner, name_only = false, is_ip_units = true)
4676
+ # array to hold tables
4677
+ measure_tables = []
4678
+
4679
+ # gather data for section
4680
+ @measure_warnings_section = {}
4681
+ @measure_warnings_section[:title] = 'Measure Warnings'
4682
+ @measure_warnings_section[:tables] = measure_tables
4683
+
4684
+ # stop here if only name is requested this is used to populate display name for arguments
4685
+ if name_only == true
4686
+ return @measure_warnings_section
4687
+ end
4688
+
4689
+ # will be used for registerValues
4690
+ num_measures_with_warnings = 0
4691
+ num_warnings = 0
4692
+ num_measures = 0
4693
+
4694
+ # loop through workflow steps
4695
+ runner.workflow.workflowSteps.each do |step|
4696
+ if step.to_MeasureStep.is_initialized
4697
+ measure_step = step.to_MeasureStep.get
4698
+ measure_name = measure_step.measureDirName
4699
+ num_measures += 1
4700
+ if measure_step.name.is_initialized
4701
+ measure_name = measure_step.name.get # this is instance name in PAT
4702
+ end
4703
+ if measure_step.result.is_initialized
4704
+ result = measure_step.result.get
4705
+ # create and populate table if warnings exist
4706
+ if result.warnings.size > 0
4707
+ measure_table_01 = {}
4708
+ measure_table_01[:title] = measure_name
4709
+ measure_table_01[:header] = ['Warning']
4710
+ measure_table_01[:data] = []
4711
+ num_measures_with_warnings += 1
4712
+
4713
+ # step through warnings
4714
+ start_counter = num_warnings
4715
+ result.warnings.each do |step|
4716
+ # add rows to table and register value
4717
+ num_warnings += 1
4718
+ if num_warnings < start_counter + 25
4719
+ measure_table_01[:data] << [step.logMessage]
4720
+ else
4721
+ measure_table_01[:data] << ["* See OSW file for full list of warnings. This measure has #{result.warnings.size} warnings."]
4722
+ end
4723
+ end
4724
+ # add table to section
4725
+ measure_tables << measure_table_01
4726
+ end
4727
+ else
4728
+ # puts "No result for #{measure_name}"
4729
+ end
4730
+ else
4731
+ # puts "This step is not a measure"
4732
+ end
4733
+ end
4734
+
4735
+ # add summary table (even when there are no warnings)
4736
+ measure_table_summary = {}
4737
+ measure_table_summary[:title] = "Measure Warning Summary"
4738
+ measure_table_summary[:header] = ['Description','Count']
4739
+ measure_table_summary[:data] = []
4740
+
4741
+ # add summary rows
4742
+ measure_table_summary[:data] << ['Number of measures in workflow',num_measures]
4743
+ measure_table_summary[:data] << ['Number of measures with warnings',num_measures_with_warnings]
4744
+ measure_table_summary[:data] << ['Total number of warnings',num_warnings]
4745
+
4746
+ # add table to section
4747
+ measure_tables << measure_table_summary
4748
+
4749
+ runner.registerValue("number_of_measures_with_warnings", num_measures_with_warnings)
4750
+ runner.registerValue("number_warnings", num_warnings)
4751
+
4752
+ return @measure_warnings_section
4753
+ end
4754
+
4755
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *******************************************************************************
2
4
  # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
5
  # All rights reserved.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *******************************************************************************
2
4
  # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
5
  # All rights reserved.
@@ -56,17 +58,18 @@ module OpenStudio
56
58
  ##
57
59
  # @param [String] dirname Directory to run commands in, defaults to Dir.pwd. If directory includes a Gemfile then create a local bundle.
58
60
  # @param bundle_without [Hash] Hash describing the distribution of the variable.
59
- # @param options [Hash] Hash describing options for running the simulation. These are the defaults for all runs unless overriden within the run_* methods.
61
+ # @param options [Hash] Hash describing options for running the simulation. These are the defaults for all runs unless overriden within the run_* methods. Note if options is used, then a local runner.conf file will not be loaded.
60
62
  # @option options [String] :max_datapoints Max number of datapoints to run
61
63
  # @option options [String] :num_parallel Number of simulations to run in parallel at a time
62
64
  # @option options [String] :run_simulations Set to true to run the simulations
63
65
  # @option options [String] :verbose Set to true to receive extra information while running simulations
64
66
  def initialize(dirname = Dir.pwd, bundle_without = [], options = {})
65
67
  # DLM: I am not sure if we want to use the main root directory to create these bundles
66
- # had the idea of passing in a Gemfile name/alias and path to Gemfile, then doing the bundle in ~/OpenStudio/#{alias} or something like that?
68
+ # had the idea of passing in a Gemfile name/alias and path to Gemfile, then doing the bundle
69
+ # in ~/OpenStudio/#{alias} or something like that?
67
70
 
68
71
  # if the dirname contains a runner.conf file, then use the config file to specify the parameters
69
- if File.exist?(File.join(dirname, OpenStudio::Extension::RunnerConfig::FILENAME)) && !options
72
+ if File.exist?(File.join(dirname, OpenStudio::Extension::RunnerConfig::FILENAME)) && options.empty?
70
73
  puts 'Using runner options from runner.conf file'
71
74
  runner_config = OpenStudio::Extension::RunnerConfig.new(dirname)
72
75
  @options = runner_config.options
@@ -562,14 +565,14 @@ module OpenStudio
562
565
  Dir[path[:glob]].each do |file|
563
566
  puts "Updating license in file #{file}"
564
567
  f = File.read(file)
565
- if f =~ path[:regex]
568
+ if f.match?(path[:regex])
566
569
  puts ' License found -- updating'
567
570
  File.open(file, 'w') { |write| write << f.gsub(path[:regex], path[:license]) }
568
571
  elsif f =~ /\(C\)/i || f =~ /\(Copyright\)/i
569
572
  puts ' File already has copyright -- skipping'
570
573
  else
571
574
  puts ' No license found -- adding'
572
- if f =~ /#!/
575
+ if f.match?(/#!/)
573
576
  puts ' CANNOT add license to file automatically, add it manually and it will update automatically in the future'
574
577
  next
575
578
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *******************************************************************************
2
4
  # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
5
  # All rights reserved.
@@ -38,7 +40,7 @@ require 'json'
38
40
  module OpenStudio
39
41
  module Extension
40
42
  class RunnerConfig
41
- FILENAME = 'runner.conf'.freeze
43
+ FILENAME = 'runner.conf'
42
44
 
43
45
  ##
44
46
  # Class to store configuration of the runner options.
@@ -104,6 +106,19 @@ module OpenStudio
104
106
  end
105
107
  end
106
108
 
109
+ ##
110
+ # Update a runner config value
111
+ #
112
+ # @param [String] key, The name of the key to update
113
+ # @param [Variant] new_value, The new value to set the `key` to.
114
+ def update_config(key, new_value)
115
+ if @data.key? key.to_sym
116
+ @data[key.to_sym] = new_value
117
+ else
118
+ raise "Could not find key '#{key}' to update in RunnerConfig."
119
+ end
120
+ end
121
+
107
122
  ##
108
123
  # Return the options as hash
109
124
  def options
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # *******************************************************************************
2
4
  # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
5
  # All rights reserved.
@@ -35,6 +37,6 @@
35
37
 
36
38
  module OpenStudio
37
39
  module Extension
38
- VERSION = '0.2.0'.freeze
40
+ VERSION = '0.2.1'
39
41
  end
40
42
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'openstudio/extension/version'
@@ -13,10 +15,10 @@ Gem::Specification.new do |spec|
13
15
  spec.summary = 'openstudio base gem for creating generic extensions with encapsulated data and measures.'
14
16
  spec.description = 'openstudio base gem for creating generic extensions with encapsulated data and measures.'
15
17
  spec.metadata = {
16
- 'bug_tracker_uri' => 'https://github.com/NREL/openstudio-extension-gem/issues',
17
- 'changelog_uri' => 'https://github.com/NREL/openstudio-extension-gem/blob/develop/CHANGELOG.md',
18
- #'documentation_uri' => 'https://www.rubydoc.info/gems/openstudio-extension-gem/#{gem.version}',
19
- 'source_code_uri' => "https://github.com/NREL/openstudio-extension-gem/tree/v#{spec.version}"
18
+ 'bug_tracker_uri' => 'https://github.com/NREL/openstudio-extension-gem/issues',
19
+ 'changelog_uri' => 'https://github.com/NREL/openstudio-extension-gem/blob/develop/CHANGELOG.md',
20
+ # 'documentation_uri' => 'https://www.rubydoc.info/gems/openstudio-extension-gem/#{gem.version}',
21
+ 'source_code_uri' => "https://github.com/NREL/openstudio-extension-gem/tree/v#{spec.version}"
20
22
  }
21
23
 
22
24
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -29,12 +31,11 @@ Gem::Specification.new do |spec|
29
31
  spec.required_ruby_version = '~> 2.5.0'
30
32
 
31
33
  spec.add_dependency 'bundler', '~> 2.1'
32
- spec.add_dependency 'openstudio-workflow', '~> 1.3.4'
33
- spec.add_dependency 'openstudio_measure_tester', '~> 0.2.0'
34
- spec.add_dependency 'parallel', '~> 1.12.0'
34
+ spec.add_dependency 'openstudio-workflow', '~> 2.0.0'
35
+ spec.add_dependency 'openstudio_measure_tester', '~> 0.2.2'
36
+ spec.add_dependency 'parallel', '~> 1.19.1'
35
37
 
36
38
  spec.add_development_dependency 'github_api', '~> 0.18.0'
37
- spec.add_development_dependency 'rake', '~> 12.3'
38
- spec.add_development_dependency 'rspec', '~> 3.7'
39
- spec.add_development_dependency 'rubocop', '~> 0.54.0'
39
+ spec.add_development_dependency 'rake', '~> 13.0'
40
+ spec.add_development_dependency 'rspec', '~> 3.9'
40
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-extension
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katherine Fleming
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-02-18 00:00:00.000000000 Z
13
+ date: 2020-04-07 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -32,42 +32,42 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 1.3.4
35
+ version: 2.0.0
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 1.3.4
42
+ version: 2.0.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: openstudio_measure_tester
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: 0.2.0
49
+ version: 0.2.2
50
50
  type: :runtime
51
51
  prerelease: false
52
52
  version_requirements: !ruby/object:Gem::Requirement
53
53
  requirements:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
- version: 0.2.0
56
+ version: 0.2.2
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: parallel
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: 1.12.0
63
+ version: 1.19.1
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: 1.12.0
70
+ version: 1.19.1
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: github_api
73
73
  requirement: !ruby/object:Gem::Requirement
@@ -88,42 +88,28 @@ dependencies:
88
88
  requirements:
89
89
  - - "~>"
90
90
  - !ruby/object:Gem::Version
91
- version: '12.3'
91
+ version: '13.0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - "~>"
97
97
  - !ruby/object:Gem::Version
98
- version: '12.3'
98
+ version: '13.0'
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: rspec
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - "~>"
104
104
  - !ruby/object:Gem::Version
105
- version: '3.7'
105
+ version: '3.9'
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
- version: '3.7'
113
- - !ruby/object:Gem::Dependency
114
- name: rubocop
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: 0.54.0
120
- type: :development
121
- prerelease: false
122
- version_requirements: !ruby/object:Gem::Requirement
123
- requirements:
124
- - - "~>"
125
- - !ruby/object:Gem::Version
126
- version: 0.54.0
112
+ version: '3.9'
127
113
  description: openstudio base gem for creating generic extensions with encapsulated
128
114
  data and measures.
129
115
  email:
@@ -198,7 +184,6 @@ files:
198
184
  - lib/openstudio/extension/core/check_weather_files.rb
199
185
  - lib/openstudio/extension/core/deer_vintages.rb
200
186
  - lib/openstudio/extension/core/os_lib_aedg_measures.rb
201
- - lib/openstudio/extension/core/os_lib_cofee.rb
202
187
  - lib/openstudio/extension/core/os_lib_constructions.rb
203
188
  - lib/openstudio/extension/core/os_lib_geometry.rb
204
189
  - lib/openstudio/extension/core/os_lib_helper_methods.rb
@@ -220,7 +205,7 @@ licenses: []
220
205
  metadata:
221
206
  bug_tracker_uri: https://github.com/NREL/openstudio-extension-gem/issues
222
207
  changelog_uri: https://github.com/NREL/openstudio-extension-gem/blob/develop/CHANGELOG.md
223
- source_code_uri: https://github.com/NREL/openstudio-extension-gem/tree/v0.2.0
208
+ source_code_uri: https://github.com/NREL/openstudio-extension-gem/tree/v0.2.1
224
209
  post_install_message:
225
210
  rdoc_options: []
226
211
  require_paths:
@@ -237,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
222
  version: '0'
238
223
  requirements: []
239
224
  rubyforge_project:
240
- rubygems_version: 2.7.6
225
+ rubygems_version: 2.7.6.2
241
226
  signing_key:
242
227
  specification_version: 4
243
228
  summary: openstudio base gem for creating generic extensions with encapsulated data