openstudio-workflow 0.2.0 → 1.0.0.pat0

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
  SHA1:
3
- metadata.gz: 859f53e5f54c14eee213cff7b0bdd7a6bc9d4c98
4
- data.tar.gz: b58de6c2993630809e26a27bf735fcac371280cc
3
+ metadata.gz: 8358ab81f9a6e7ba628d2d890aa6b072e855fa7c
4
+ data.tar.gz: 775d5d17b2d109c175d3bba6037edd9b577f20a6
5
5
  SHA512:
6
- metadata.gz: dcb4afd15fa0d9eecb08ee60835a87310c4dc4f8e7c3cc97d87919f6127c6c706df7074315200c054280c2cf6c84a0ce4baacebeefcc6fcdeded08a28dafdeff
7
- data.tar.gz: 9fd2d0449335fb0998b936851e042f1f1957817a55e0654bf37d3168420bf5def9bdab975b180ccc381cb66f80e963f9e54b38347d93db7804ea7036f6eddce4
6
+ metadata.gz: e2a92837bef82dc5f6fd3cbc07bcf01d50c865c6a6ed5ac26922836c20741eb903743946836489a671e643f4cd2412d1178f440b7d9908a77304b991f2cb6813
7
+ data.tar.gz: de3843c61ab7cb9c575579347800196c46f822a0a2009f803e5c1c415217d92530c320f3b90584f1b2517dc7fb56a8cbb9a20ccf80c6e6ada5a3e02a4dbf6333
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # OpenStudio::Workflow
2
- [![Circle CI](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/EnergyPlus-8.3.0.svg?style=svg)](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/EnergyPlus-8.3.0)
3
- [![Coverage Status](https://coveralls.io/repos/NREL/OpenStudio-workflow-gem/badge.svg?branch=EnergyPlus-8.3.0&service=github)](https://coveralls.io/github/NREL/OpenStudio-workflow-gem?branch=EnergyPlus-8.3.0)
2
+ [![Circle CI](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/develop.svg?style=svg)](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/develop)
3
+ [![Coverage Status](https://coveralls.io/repos/NREL/OpenStudio-workflow-gem/badge.svg?branch=develop&service=github)](https://coveralls.io/github/NREL/OpenStudio-workflow-gem?branch=develop)
4
4
  [![Dependency Status](https://www.versioneye.com/user/projects/5531fb7b10e714121100102e/badge.svg?style=flat)](https://www.versioneye.com/user/projects/5531fb7b10e714121100102e)
5
5
 
6
6
  Run an EnergyPlus simulation using a file-based workflow that is read from a Local or MongoDB adapter.
@@ -24,10 +24,6 @@ Add this line to your application's Gemfile:
24
24
 
25
25
  gem 'OpenStudio-workflow'
26
26
 
27
- Use this line if you want the bleeding edge:
28
-
29
- gem 'OpenStudio-workflow', github: 'NREL/OpenStudio-workflow-gem', branch: 'EnergyPlus-8.2.0'
30
-
31
27
  And then execute:
32
28
 
33
29
  Mac/Linux:
@@ -62,6 +62,8 @@ module OpenStudio
62
62
  def load(adapter_name, run_directory, options = {})
63
63
  defaults = { adapter_options: {} }
64
64
  options = defaults.merge(options)
65
+ # We don't have deep merge so just check for the rails_env
66
+ options[:adapter_options][:rails_env] = :development unless options[:adapter_options][:rails_env]
65
67
 
66
68
  # Convert various paths to absolute paths
67
69
  if options[:adapter_options] && options[:adapter_options][:mongoid_path] &&
@@ -3,15 +3,26 @@ class ExtendedRunner < OpenStudio::Ruleset::OSRunner
3
3
  # Allow former arguments to be set and read
4
4
  # TODO: Consider having the former arguments passed in in initialization, and define as attr_reader
5
5
  attr_accessor :former_workflow_arguments
6
+ attr_accessor :past_results
6
7
  attr_reader :workflow_arguments
7
8
 
8
9
  # Add in @workflow_arguments
9
- def initialize(multi_logger)
10
+ def initialize(multi_logger, analysis_hash, datapoint_hash)
10
11
  @multi_logger = multi_logger
12
+ @analysis = analysis_hash
13
+ @datapoint = datapoint_hash
11
14
  @workflow_arguments = nil
12
15
  super()
13
16
  end
14
17
 
18
+ def analysis
19
+ return @analysis
20
+ end
21
+
22
+ def datapoint
23
+ return @datapoint
24
+ end
25
+
15
26
  # Take the OS Argument type and map it correctly to the argument value.
16
27
  # OPENSTUDIO_ENUM( OSArgumentType,
17
28
  # ((Boolean)(Bool)(0))
@@ -41,7 +41,7 @@ module OpenStudio
41
41
 
42
42
  # how do we log within this file?
43
43
  if File.exist? "#{directory}/#{options[:datapoint_filename]}"
44
- ::MultiJson.load(File.read("#{directory}/#{options[:datapoint_filename]}"), symbolize_names: true)
44
+ ::JSON.parse(File.read("#{directory}/#{options[:datapoint_filename]}"), symbolize_names: true)
45
45
  else
46
46
  fail "Data point file does not exist for #{directory}/#{options[:datapoint_filename]}"
47
47
  end
@@ -54,7 +54,7 @@ module OpenStudio
54
54
  options = defaults.merge(options)
55
55
 
56
56
  if File.exist? "#{directory}/#{options[:problem_filename]}"
57
- ::MultiJson.load(File.read("#{directory}/#{options[:problem_filename]}"), symbolize_names: true)
57
+ ::JSON.parse(File.read("#{directory}/#{options[:problem_filename]}"), symbolize_names: true)
58
58
  else
59
59
  fail "Problem file does not exist for #{directory}/#{options[:problem_filename]}"
60
60
  end
@@ -46,7 +46,7 @@ module OpenStudio
46
46
  base_path = @options[:mongoid_path] ? @options[:mongoid_path] : "#{File.dirname(__FILE__)}/mongo"
47
47
 
48
48
  Dir["#{base_path}/models/*.rb"].each { |f| require f }
49
- Mongoid.load!("#{base_path}/mongoid.yml", :development)
49
+ Mongoid.load!("#{base_path}/mongoid.yml", @options[:rails_env])
50
50
  end
51
51
 
52
52
  # Tell the system that the process has started
@@ -126,8 +126,9 @@ module OpenStudio
126
126
  begin
127
127
  require measure_file_path
128
128
  measure = Object.const_get(measure_name).new
129
- runner = ExtendedRunner.new @logger
129
+ runner = ExtendedRunner.new(@logger, @analysis_json, @datapoint_json)
130
130
  runner.former_workflow_arguments = @workflow_arguments
131
+ runner.past_results = @past_results
131
132
  rescue => e
132
133
  log_message = "Error requiring measure #{__FILE__}. Failed with #{e.message}, #{e.backtrace.join("\n")}"
133
134
  raise log_message
@@ -190,6 +191,8 @@ module OpenStudio
190
191
  end
191
192
  @workflow_arguments[workflow_item[:name].to_sym] = runner.workflow_arguments
192
193
  @logger.info "Finished measure.run for '#{workflow_item[:name]}'"
194
+
195
+ # run garbage collector after every measure to help address race conditions
193
196
  GC.start
194
197
  rescue => e
195
198
  log_message = "Runner error #{__FILE__} failed with #{e.message}, #{e.backtrace.join("\n")}"
@@ -209,6 +212,11 @@ module OpenStudio
209
212
  begin
210
213
  measure_attributes = JSON.parse(OpenStudio.toJSON(result.attributes), symbolize_names: true)
211
214
  @output_attributes[workflow_item[:name].to_sym] = measure_attributes[:attributes]
215
+ @past_results[workflow_item[:name].to_sym] = measure_attributes[:attributes]
216
+
217
+ # add an applicability flag to all the measure results
218
+ @output_attributes[workflow_item[:name].to_sym][:applicable] = result.value.value != -1
219
+ @past_results[workflow_item[:name].to_sym][:applicable] = result.value.value != -1
212
220
  rescue => e
213
221
  log_message = "#{__FILE__} failed with #{e.message}, #{e.backtrace.join("\n")}"
214
222
  @logger.error log_message
@@ -24,7 +24,7 @@ class RunEnergyplus
24
24
  # Initialize
25
25
  # param directory: base directory where the simulation files are prepared
26
26
  # param logger: logger object in which to write log messages
27
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
27
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
28
28
  @logger = logger
29
29
 
30
30
  energyplus_path = find_energyplus
@@ -39,6 +39,7 @@ class RunEnergyplus
39
39
  @adapter = adapter
40
40
  @time_logger = time_logger
41
41
  @workflow_arguments = workflow_arguments
42
+ @past_results = past_results
42
43
  @results = {}
43
44
 
44
45
  # container for storing the energyplus files there were copied into the local directory. These will be
@@ -258,12 +259,6 @@ class RunEnergyplus
258
259
  new_objects = []
259
260
  needs_monthlyoutput = false
260
261
 
261
- # this is a workaround for OpenStudio issue #1699
262
- needs_detailedvariable = false
263
- needs_hourlyvariable = false
264
- needs_dailyvariable = false
265
- needs_runperiodvariable = false
266
-
267
262
  idf = OpenStudio::IdfFile.load(idf_filename).get
268
263
  # save the pre-preprocess file
269
264
  File.open("#{File.dirname(idf_filename)}/pre-preprocess.idf", 'w') { |f| f << idf.to_s }
@@ -275,43 +270,11 @@ class RunEnergyplus
275
270
  idf.getObjectsByName('Building Energy Performance - District Heating').empty? ||
276
271
  idf.getObjectsByName('Building Energy Performance - District Cooling').empty?
277
272
 
278
- # this is a workaround for issue #1699 -- get all the meter requests
279
- meters = []
280
- meters += idf.getObjectsByType('Output:Meter'.to_IddObjectType) unless idf.getObjectsByType('Output:Meter'.to_IddObjectType).empty?
281
- meters += idf.getObjectsByType('Output:Meter:MeterFileOnly'.to_IddObjectType) unless idf.getObjectsByType('Output:Meter:MeterFileOnly'.to_IddObjectType).empty?
282
- meters += idf.getObjectsByType('Output:Meter:Cumulative'.to_IddObjectType) unless idf.getObjectsByType('Output:Meter:Cumulative'.to_IddObjectType).empty?
283
- meters += idf.getObjectsByType('Output:Meter:Cumulative:MeterFileOnly'.to_IddObjectType) unless idf.getObjectsByType('Output:Meter:Cumulative:MeterFileOnly'.to_IddObjectType).empty?
284
-
285
- # go through each meter and check the reporting frequency
286
- meters.each do |meter|
287
- reporting_frequency = meter.getString(1, true)
288
- if reporting_frequency =~ /detailed/i
289
- needs_detailedvariable = true
290
- elsif reporting_frequency =~ /hourly/i
291
- needs_hourlyvariable = true
292
- elsif reporting_frequency =~ /daily/i
293
- needs_dailyvariable = true
294
- elsif reporting_frequency =~ /monthly/i
295
- needs_monthlyvariable = true
296
- elsif reporting_frequency =~ /runperiod|environment|annual/i
297
- needs_runperiodvariable = true
298
- end
299
- end
300
-
301
- # turn off the requests if the meter is already a variable
302
- variables = idf.getObjectsByType('Output:Variable'.to_IddObjectType)
303
- variables.each do |variable|
304
- reporting_frequency = variable.getString(2, true)
305
- if reporting_frequency =~ /detailed/i
306
- needs_detailedvariable = false
307
- elsif reporting_frequency =~ /hourly/i
308
- needs_hourlyvariable = false
309
- elsif reporting_frequency =~ /daily/i
310
- needs_dailyvariable = false
311
- elsif reporting_frequency =~ /runperiod|environment|annual/i
312
- needs_runperiodvariable = false
313
- end
314
- end
273
+ # this is a workaround for issue #1699 -- remove when 1699 is closed.
274
+ new_objects << 'Output:Variable,*,Zone Air Temperature,Hourly;'
275
+ new_objects << 'Output:Variable,*,Zone Air Relative Humidity,Daily;'
276
+ new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Monthly;'
277
+ new_objects << 'Output:Variable,*,Site Outdoor Air Wetbulb Temperature,Timestep;'
315
278
 
316
279
  if needs_sqlobj
317
280
  @logger.info 'Adding SQL Output to IDF'
@@ -323,24 +286,14 @@ class RunEnergyplus
323
286
 
324
287
  if needs_monthlyoutput
325
288
  monthly_report_idf = File.join(File.dirname(__FILE__), 'monthly_report.idf')
326
-
327
289
  idf_file = OpenStudio::IdfFile.load(File.read(monthly_report_idf), 'EnergyPlus'.to_IddFileType).get
328
290
  idf.addObjects(idf_file.objects)
329
291
  end
330
292
 
331
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Detailed;' if needs_detailedvariable
332
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Hourly;' if needs_hourlyvariable
333
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Daily;' if needs_dailyvariable
334
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,RunPeriod;' if needs_runperiodvariable
335
-
336
293
  # These are supposedly needed for the calibration report
337
294
  new_objects << 'Output:Meter:MeterFileOnly,Gas:Facility,Daily;'
338
295
  new_objects << 'Output:Meter:MeterFileOnly,Electricity:Facility,Timestep;'
339
296
  new_objects << 'Output:Meter:MeterFileOnly,Electricity:Facility,Daily;'
340
- new_objects << 'Output:Variable,*,Zone Air Temperature,Hourly;'
341
- new_objects << 'Output:Variable,*,Zone Air Relative Humidity,Hourly;'
342
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Monthly;'
343
- new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Timestep;'
344
297
 
345
298
  # Always add in the timestep facility meters
346
299
  new_objects << 'Output:Meter,Electricity:Facility,Timestep;'
@@ -24,8 +24,8 @@ class RunOpenstudio
24
24
  # Initialize
25
25
  # param directory: base directory where the simulation files are prepared
26
26
  # param logger: logger object in which to write log messages
27
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
28
- defaults = { format: 'hash', use_monthly_reports: false, analysis_root_path: '.' }
27
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
28
+ defaults = { format: 'hash', analysis_root_path: '.' }
29
29
  warn 'Option of use_monthly_reports is deprecated. Monthly reports are always generated.' if options[:use_monthly_reports]
30
30
 
31
31
  @options = defaults.merge(options)
@@ -37,6 +37,7 @@ class RunOpenstudio
37
37
  @logger = logger
38
38
  @time_logger = time_logger
39
39
  @workflow_arguments = workflow_arguments
40
+ @past_results = past_results
40
41
  @logger.info "#{self.class} passed the following options #{@options}"
41
42
 
42
43
  # initialize instance variables that are needed in the perform section
@@ -27,7 +27,7 @@ class RunPostprocess
27
27
  # Mixin the MeasureApplication module to apply measures
28
28
  include OpenStudio::Workflow::ApplyMeasures
29
29
 
30
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
30
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
31
31
  defaults = {}
32
32
  @options = defaults.merge(options)
33
33
  @directory = directory
@@ -36,6 +36,7 @@ class RunPostprocess
36
36
  @logger = logger
37
37
  @time_logger = time_logger
38
38
  @workflow_arguments = workflow_arguments
39
+ @past_results = past_results
39
40
  @results = {}
40
41
  @output_attributes = {}
41
42
 
@@ -19,7 +19,7 @@
19
19
 
20
20
  # Run Prelight job to prepare the directory for simulations.
21
21
  class RunPreflight
22
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
22
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
23
23
  defaults = {}
24
24
  @options = defaults.merge(options)
25
25
  @directory = directory
@@ -27,6 +27,7 @@ class RunPreflight
27
27
  @logger = logger
28
28
  @time_logger = time_logger
29
29
  @workflow_arguments = workflow_arguments
30
+ @past_results = past_results
30
31
  @results = {}
31
32
  end
32
33
 
@@ -25,7 +25,7 @@ class RunReportingMeasures
25
25
  # Mixin the MeasureApplication module to apply measures
26
26
  include OpenStudio::Workflow::ApplyMeasures
27
27
 
28
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
28
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
29
29
  defaults = {}
30
30
  @options = defaults.merge(options)
31
31
  @directory = directory
@@ -34,6 +34,7 @@ class RunReportingMeasures
34
34
  @logger = logger
35
35
  @time_logger = time_logger
36
36
  @workflow_arguments = workflow_arguments
37
+ @past_results = past_results
37
38
  @results = {}
38
39
  @output_attributes = {}
39
40
 
@@ -139,7 +140,9 @@ class RunReportingMeasures
139
140
  # TODO: move this to cleaner logic. Use ostruct?
140
141
  if variable[:name].include? '.'
141
142
  k, v = variable[:name].split('.')
142
- if @results.key?(k.to_sym) && @results[k.to_sym][v.to_sym]
143
+
144
+ # look for the objective function key and make sure that it is not nil. False is an okay obj function.
145
+ if @results.key?(k.to_sym) && !@results[k.to_sym][v.to_sym].nil?
143
146
  @objective_functions["objective_function_#{variable[:objective_function_index] + 1}"] = @results[k.to_sym][v.to_sym]
144
147
  if variable[:objective_function_target]
145
148
  @logger.info "Found objective function target for #{variable[:name]}"
@@ -229,17 +232,24 @@ class RunReportingMeasures
229
232
  name: 'standard_reports'
230
233
  }
231
234
  @logger.info 'Running packaged Standard Reports measures'
232
- apply_measure(workflow_item)
235
+ begin
236
+ apply_measure(workflow_item)
237
+ rescue => e
238
+ @logger.warn "Error applying Standard Reports measure. Failed with #{e.message}, #{e.backtrace.join("\n")} \n Continuing."
239
+ end
233
240
 
234
- workflow_item = {
235
- display_name: 'Calibration Reports',
236
- measure_definition_directory: File.expand_path(File.join(OpenStudio::BCLMeasure.calibrationReportMeasure.directory.to_s, 'measure.rb')),
237
- measure_definition_class_name: 'CalibrationReports',
238
- measure_type: 'CalibrationReports',
239
- name: 'calibration_reports'
240
- }
241
- @logger.info 'Running packaged Calibration Reports measures'
242
- apply_measure(workflow_item)
241
+ @logger.info "Found #{@model.getUtilityBills.length} utility bills"
242
+ if @model.getUtilityBills.length > 0
243
+ workflow_item = {
244
+ display_name: 'Calibration Reports',
245
+ measure_definition_directory: File.expand_path(File.join(OpenStudio::BCLMeasure.calibrationReportMeasure.directory.to_s, 'measure.rb')),
246
+ measure_definition_class_name: 'CalibrationReports',
247
+ measure_type: 'CalibrationReports',
248
+ name: 'calibration_reports'
249
+ }
250
+ @logger.info 'Running packaged Calibration Reports measures'
251
+ apply_measure(workflow_item)
252
+ end
243
253
 
244
254
  @logger.info 'Finished Running Packaged Measures'
245
255
  end
@@ -27,7 +27,7 @@ class RunRunmanager
27
27
  # Initialize
28
28
  # param directory: base directory where the simulation files are prepared
29
29
  # param logger: logger object in which to write log messages
30
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
30
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
31
31
  @logger = logger
32
32
 
33
33
  energyplus_path = find_energyplus
@@ -46,6 +46,7 @@ class RunRunmanager
46
46
  @logger.info "#{self.class} passed the following options #{@options}"
47
47
  @time_logger = time_logger
48
48
  @workflow_arguments = workflow_arguments
49
+ @past_results = past_results
49
50
 
50
51
  # initialize instance variables that are needed in the perform section
51
52
  @model = nil
@@ -22,7 +22,7 @@ require 'libxml'
22
22
  # This actually belongs as another class that gets added as a state dynamically
23
23
  class RunXml
24
24
  # RunXml
25
- def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
25
+ def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
26
26
  defaults = { analysis_root_path: '.', xml_library_file: 'xml_runner.rb' }
27
27
  @options = defaults.merge(options)
28
28
  @directory = directory
@@ -33,6 +33,7 @@ class RunXml
33
33
  @logger = logger
34
34
  @time_logger = time_logger
35
35
  @workflow_arguments = workflow_arguments
36
+ @past_results = past_results
36
37
  @logger.info "#{self.class} passed the following options #{@options}"
37
38
 
38
39
  # initialize instance variables that are needed in the perform section
@@ -95,6 +95,7 @@ module OpenStudio
95
95
  @directory = directory
96
96
  @time_logger = TimeLogger.new
97
97
  @workflow_arguments = {}
98
+ @past_results = {}
98
99
  # TODO: run directory is a convention right now. Move to a configuration item
99
100
  @run_directory = "#{@directory}/run"
100
101
 
@@ -310,7 +311,7 @@ module OpenStudio
310
311
  require_relative "jobs/#{from_method}/#{from_method}"
311
312
  klass_name = from_method.to_s.split('_').map(&:capitalize) * ''
312
313
  @logger.info "Getting method for state transition '#{from_method}'"
313
- klass = Object.const_get(klass_name).new(@directory, @logger, @time_logger, @adapter, @workflow_arguments, get_job_options)
314
+ klass = Object.const_get(klass_name).new(@directory, @logger, @time_logger, @adapter, @workflow_arguments, @past_results, get_job_options)
314
315
  klass
315
316
  end
316
317
  end
@@ -19,6 +19,6 @@
19
19
 
20
20
  module OpenStudio
21
21
  module Workflow
22
- VERSION = '0.2.0'
22
+ VERSION = '1.0.0.pat0'
23
23
  end
24
24
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 1.0.0.pat0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Long
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-09 00:00:00.000000000 Z
11
+ date: 2016-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: 1.1.7
103
+ version: 1.2.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: 1.1.7
110
+ version: 1.2.0
111
111
  description: Run OpenStudio based simulations using EnergyPlus
112
112
  email:
113
113
  - nicholas.long@nrel.gov
@@ -115,6 +115,10 @@ executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
+ - CHANGELOG.md
119
+ - README.md
120
+ - Rakefile
121
+ - lib/openstudio-workflow.rb
118
122
  - lib/openstudio/extended_runner.rb
119
123
  - lib/openstudio/workflow/adapter.rb
120
124
  - lib/openstudio/workflow/adapters/local.rb
@@ -132,10 +136,6 @@ files:
132
136
  - lib/openstudio/workflow/run.rb
133
137
  - lib/openstudio/workflow/time_logger.rb
134
138
  - lib/openstudio/workflow/version.rb
135
- - lib/openstudio-workflow.rb
136
- - README.md
137
- - CHANGELOG.md
138
- - Rakefile
139
139
  homepage: https://github.com/NREL/OpenStudio-workflow-gem
140
140
  licenses:
141
141
  - LGPL
@@ -151,12 +151,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
151
  version: 1.9.3
152
152
  required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  requirements:
154
- - - '>='
154
+ - - '>'
155
155
  - !ruby/object:Gem::Version
156
- version: '0'
156
+ version: 1.3.1
157
157
  requirements: []
158
158
  rubyforge_project:
159
- rubygems_version: 2.0.14.1
159
+ rubygems_version: 2.6.6
160
160
  signing_key:
161
161
  specification_version: 4
162
162
  summary: Workflow Manager