openstudio-analysis 1.0.4 → 1.0.5
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 +8 -1
- data/lib/openstudio-analysis.rb +1 -0
- data/lib/openstudio/analysis/translator/datapoints.rb +23 -37
- data/lib/openstudio/analysis/translator/workflow.rb +1 -1
- data/lib/openstudio/analysis/version.rb +1 -1
- data/lib/openstudio/analysis/workflow.rb +8 -17
- data/lib/openstudio/analysis/workflow_step.rb +4 -7
- data/lib/openstudio/helpers/utils.rb +67 -0
- data/openstudio-analysis.gemspec +2 -3
- metadata +9 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76642f1d452e8e46218af9c36e388da0033e43469ec2063d6c61f4e4cd9b99fd
|
4
|
+
data.tar.gz: 40b243f4b0375a79e726bf4105913f75fc3ce65d09134aa27e5a927c36984b57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a9bbb7d5567cf1a7ecb6b243490e4eb3c50b0dd28cdad09fec821eaece6803fb45a3cb554ad975cca257e84644b8fe28630a5243ec4c62c4fc371583c01f638
|
7
|
+
data.tar.gz: 5a245e5b8c151fe7f079cc26af188115da571e420fc7a8df0b02a2c859bbd72ca2b91bff0aacac675677e86c7cf0d553463980ecf75ddc78e926221471f3b418
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
OpenStudio Analysis Gem Change Log
|
2
2
|
==================================
|
3
3
|
|
4
|
+
Version 1.0.5
|
5
|
+
-------------
|
6
|
+
* Upgrade to latest BCL (0.6.1)
|
7
|
+
* Remove the need for the measure.json (which has been deprecated in BCL gem). Now parses the measure.xml.
|
8
|
+
* Upgrade Faraday (1.0.1)
|
9
|
+
* Remove dependency on Nokogiri.
|
10
|
+
|
4
11
|
Version 1.0.4
|
5
12
|
-------------
|
6
|
-
* Update dependency
|
13
|
+
* Update dependency Nokogiri
|
7
14
|
|
8
15
|
Version 1.0.3
|
9
16
|
-------------
|
data/lib/openstudio-analysis.rb
CHANGED
@@ -58,7 +58,7 @@ module OpenStudio
|
|
58
58
|
attr_accessor :name
|
59
59
|
attr_reader :analysis_name
|
60
60
|
|
61
|
-
require '
|
61
|
+
require 'rexml/document'
|
62
62
|
|
63
63
|
# Pass in the filename to read
|
64
64
|
def initialize(csv_filename)
|
@@ -368,16 +368,16 @@ module OpenStudio
|
|
368
368
|
data = []
|
369
369
|
measures.each_with_index do |measure, measure_index|
|
370
370
|
data[measure_index] = {}
|
371
|
-
|
371
|
+
measure_parsed = find_measure(measure.to_s)
|
372
372
|
|
373
|
-
raise "Could not find measure #{measure} xml in measure_paths: '#{@measure_paths.join("\n")}'" unless
|
373
|
+
raise "Could not find measure #{measure} xml in measure_paths: '#{@measure_paths.join("\n")}'" unless measure_parsed
|
374
374
|
measure_data = {}
|
375
|
-
measure_data[:classname] =
|
376
|
-
measure_data[:name] =
|
377
|
-
measure_data[:display_name] =
|
378
|
-
measure_data[:measure_type] = measure_type
|
379
|
-
measure_data[:uid] =
|
380
|
-
measure_data[:version_id] =
|
375
|
+
measure_data[:classname] = measure_parsed[:classname]
|
376
|
+
measure_data[:name] = measure_parsed[:name]
|
377
|
+
measure_data[:display_name] = measure_parsed[:display_name]
|
378
|
+
measure_data[:measure_type] = measure_parsed[:measure_type]
|
379
|
+
measure_data[:uid] = measure_parsed[:uid]
|
380
|
+
measure_data[:version_id] = measure_parsed[:version_id]
|
381
381
|
data[measure_index][:measure_data] = measure_data
|
382
382
|
data[measure_index][:vars] = []
|
383
383
|
vars = measure_map[measure]
|
@@ -389,8 +389,8 @@ module OpenStudio
|
|
389
389
|
next if var.to_s == 'None'
|
390
390
|
var_hash = {}
|
391
391
|
found_arg = nil
|
392
|
-
|
393
|
-
if var.to_s == '__SKIP__' || arg
|
392
|
+
measure_parsed[:arguments].each do |arg|
|
393
|
+
if var.to_s == '__SKIP__' || arg[:name] == var.to_s
|
394
394
|
found_arg = arg
|
395
395
|
break
|
396
396
|
end
|
@@ -404,8 +404,8 @@ module OpenStudio
|
|
404
404
|
var_type = 'boolean'
|
405
405
|
var_units = ''
|
406
406
|
else
|
407
|
-
var_type = found_arg.
|
408
|
-
var_units = found_arg
|
407
|
+
var_type = found_arg[:variable_type].downcase
|
408
|
+
var_units = found_arg[:units]
|
409
409
|
end
|
410
410
|
|
411
411
|
var_hash[:name] = var.to_s
|
@@ -437,7 +437,8 @@ module OpenStudio
|
|
437
437
|
var_hash[:distribution][:type] = 'discrete'
|
438
438
|
var_hash[:distribution][:units] = var_hash[:units]
|
439
439
|
if var_hash[:type] == 'choice'
|
440
|
-
var_hash[:distribution][:enumerations] = found_arg.xpath('choices/choice').map { |s| s.xpath('value').text }
|
440
|
+
# var_hash[:distribution][:enumerations] = found_arg.xpath('choices/choice').map { |s| s.xpath('value').text }
|
441
|
+
# This would need to be updated if we want to do this again... sorry.
|
441
442
|
elsif var_hash[:type] == 'bool'
|
442
443
|
var_hash[:distribution][:enumerations] = []
|
443
444
|
var_hash[:distribution][:enumerations] << true
|
@@ -447,13 +448,13 @@ module OpenStudio
|
|
447
448
|
end
|
448
449
|
data[measure_index][:args] = []
|
449
450
|
|
450
|
-
|
451
|
+
measure_parsed[:arguments].each do |arg_xml|
|
451
452
|
arg = {}
|
452
|
-
arg[:value_type] = arg_xml
|
453
|
-
arg[:name] = arg_xml
|
454
|
-
arg[:display_name] = arg_xml
|
453
|
+
arg[:value_type] = arg_xml[:variable_type]
|
454
|
+
arg[:name] = arg_xml[:name]
|
455
|
+
arg[:display_name] = arg_xml[:display_name].downcase
|
455
456
|
arg[:display_name_short] = arg[:display_name]
|
456
|
-
arg[:default_value] = arg_xml
|
457
|
+
arg[:default_value] = arg_xml[:default_value].downcase
|
457
458
|
arg[:value] = arg[:default_value]
|
458
459
|
data[measure_index][:args] << arg
|
459
460
|
end
|
@@ -470,27 +471,12 @@ module OpenStudio
|
|
470
471
|
measure_xml = File.join(mp, measure_name, 'measure.xml')
|
471
472
|
measure_rb = File.join(mp, measure_name, 'measure.rb')
|
472
473
|
if File.exist?(measure_xml) && File.exist?(measure_rb)
|
473
|
-
|
474
|
+
measure_parsed = parse_measure_xml(measure_xml)
|
475
|
+
return measure_parsed
|
474
476
|
end
|
475
477
|
end
|
476
478
|
|
477
|
-
return nil
|
478
|
-
end
|
479
|
-
|
480
|
-
def parse_measure_type(measure_filename)
|
481
|
-
measure_string = File.read(measure_filename)
|
482
|
-
|
483
|
-
if measure_string =~ /OpenStudio::Ruleset::WorkspaceUserScript/
|
484
|
-
return 'EnergyPlusMeasure'
|
485
|
-
elsif measure_string =~ /OpenStudio::Ruleset::ModelUserScript/
|
486
|
-
return 'RubyMeasure'
|
487
|
-
elsif measure_string =~ /OpenStudio::Ruleset::ReportingUserScript/
|
488
|
-
return 'ReportingMeasure'
|
489
|
-
elsif measure_string =~ /OpenStudio::Ruleset::UtilityUserScript/
|
490
|
-
return 'UtilityUserScript'
|
491
|
-
else
|
492
|
-
raise "measure type is unknown with an inherited class in #{measure_filename}"
|
493
|
-
end
|
479
|
+
return nil
|
494
480
|
end
|
495
481
|
end
|
496
482
|
end
|
@@ -96,7 +96,7 @@ module OpenStudio
|
|
96
96
|
step_hash[:modeler_description] = step[:modeler_description] if step[:modeler_description]
|
97
97
|
step_hash[:taxonomy] = step[:taxonomy] if step[:taxonomy]
|
98
98
|
step_hash[:measure_type] = step[:measure_type]
|
99
|
-
step_hash[:measure_type] = 'ModelMeasure'
|
99
|
+
step_hash[:measure_type] = 'ModelMeasure'
|
100
100
|
@steps << step_hash
|
101
101
|
end
|
102
102
|
end
|
@@ -53,8 +53,7 @@ module OpenStudio
|
|
53
53
|
@items.clear
|
54
54
|
end
|
55
55
|
|
56
|
-
# Add a measure to the workflow from a path.
|
57
|
-
# if not, the BCL gem is used to create the measure.json file.
|
56
|
+
# Add a measure to the workflow from a path. This will parse the measure.xml which must exist.
|
58
57
|
#
|
59
58
|
# @params instance_name [String] The name of the instance. This allows for multiple measures to be added to the workflow with uni que names
|
60
59
|
# @params instance_display_name [String] The display name of the instance. This allows for multiple measures to be added to the workflow with unique names
|
@@ -69,19 +68,11 @@ module OpenStudio
|
|
69
68
|
end
|
70
69
|
|
71
70
|
if Dir.exist?(local_path_to_measure) && File.directory?(local_path_to_measure)
|
72
|
-
# Watch out for namespace conflicts (use ::BCL)
|
73
|
-
b = ::BCL::ComponentMethods.new
|
74
71
|
measure_hash = nil
|
75
|
-
|
76
|
-
measure_hash =
|
77
|
-
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
if measure_hash.nil? && File.exist?(File.join(local_path_to_measure, 'measure.json'))
|
82
|
-
measure_hash = JSON.parse(File.read(File.join(local_path_to_measure, 'measure.json')), symbolize_names: true)
|
83
|
-
elsif measure_hash.nil?
|
84
|
-
raise 'measure.json was not found and was not automatically created'
|
72
|
+
if File.exist?(File.join(local_path_to_measure, 'measure.xml'))
|
73
|
+
measure_hash = parse_measure_xml(File.join(local_path_to_measure, 'measure.xml'))
|
74
|
+
else
|
75
|
+
raise "Could not find measure.xml"
|
85
76
|
end
|
86
77
|
|
87
78
|
add_measure(instance_name, instance_display_name, local_path_to_measure, measure_hash)
|
@@ -92,12 +83,12 @@ module OpenStudio
|
|
92
83
|
@items.last
|
93
84
|
end
|
94
85
|
|
95
|
-
# Add a measure from the custom hash format without reading the measure.rb or measure.
|
86
|
+
# Add a measure from the custom hash format without reading the measure.rb or measure.xml file
|
96
87
|
#
|
97
88
|
# @params instance_name [String] The name of the instance. This allows for multiple measures to be added to the workflow with unique names
|
98
89
|
# @params instance_display_name [String] The display name of the instance. This allows for multiple measures to be added to the workflow with unique names
|
99
90
|
# @param local_path_to_measure [String] This is the local path to the measure directory, relative or absolute. It is used when zipping up all the measures.
|
100
|
-
# @param measure_metadata [Hash] Format of the measure.
|
91
|
+
# @param measure_metadata [Hash] Format of the measure.xml in JSON format
|
101
92
|
# @return [Object] Returns the measure that was added as an OpenStudio::AnalysisWorkflowStep object
|
102
93
|
def add_measure(instance_name, instance_display_name, local_path_to_measure, measure_metadata)
|
103
94
|
@items << OpenStudio::Analysis::WorkflowStep.from_measure_hash(instance_name, instance_display_name, local_path_to_measure, measure_metadata)
|
@@ -110,7 +101,7 @@ module OpenStudio
|
|
110
101
|
# @params instance_name [String] The name of the instance. This allows for multiple measures to be added to the workflow with unique names
|
111
102
|
# @params instance_display_name [String] The display name of the instance. This allows for multiple measures to be added to the workflow with unique names
|
112
103
|
# @param local_path_to_measure [String] This is the local path to the measure directory, relative or absolute. It is used when zipping up all the measures.
|
113
|
-
# @param measure_metadata [Hash] Format of the measure.
|
104
|
+
# @param measure_metadata [Hash] Format of the measure.xml in JSON format
|
114
105
|
# @return [Object] Returns the measure that was added as an OpenStudio::AnalysisWorkflowStep object
|
115
106
|
def add_measure_from_analysis_hash(instance_name, instance_display_name, local_path_to_measure, measure_metadata)
|
116
107
|
@items << OpenStudio::Analysis::WorkflowStep.from_analysis_hash(instance_name, instance_display_name, local_path_to_measure, measure_metadata)
|
@@ -60,7 +60,7 @@ module OpenStudio
|
|
60
60
|
@name = ''
|
61
61
|
@display_name = ''
|
62
62
|
|
63
|
-
# The type of item being added (
|
63
|
+
# The type of item being added (ModelMeasure, EnergyPlusMeasure, ...)
|
64
64
|
@type = nil
|
65
65
|
|
66
66
|
@measure_definition_class_name = nil
|
@@ -267,15 +267,12 @@ module OpenStudio
|
|
267
267
|
#
|
268
268
|
# @param instance_name [String] Machine name of the instance
|
269
269
|
# @param instance_display_name [String] Display name of the instance
|
270
|
-
# @param path_to_measure [String] This is the local path to the measure
|
271
|
-
# @param hash [Hash] Measure hash in the format of
|
270
|
+
# @param path_to_measure [String] This is the local path to the measure directory, relative or absolute. It is used when zipping up all the measures.
|
271
|
+
# @param hash [Hash] Measure hash in the format of a converted measure.xml hash (from the Analysis Spreadsheet project)
|
272
272
|
# @param options [Hash] Optional arguments
|
273
273
|
# @option options [Boolean] :ignore_not_found Do not raise an exception if the measure could not be found on the machine
|
274
274
|
# @return [Object] Returns the OpenStudio::Analysis::WorkflowStep
|
275
275
|
def self.from_measure_hash(instance_name, instance_display_name, path_to_measure, hash, options = {})
|
276
|
-
# TODO: Validate the hash
|
277
|
-
# TODO: validate that the measure exists?
|
278
|
-
|
279
276
|
if File.directory? path_to_measure
|
280
277
|
path_to_measure = File.join(path_to_measure, 'measure.rb')
|
281
278
|
end
|
@@ -352,7 +349,7 @@ module OpenStudio
|
|
352
349
|
# @param instance_name [String] Machine name of the instance
|
353
350
|
# @param instance_display_name [String] Display name of the instance
|
354
351
|
# @param path_to_measure [String] This is the local path to the measure directroy, relative or absolute. It is used when zipping up all the measures.
|
355
|
-
# @param hash [Hash] Measure hash in the format of the measure.
|
352
|
+
# @param hash [Hash] Measure hash in the format of the measure.xml converted to JSON (from the Analysis Spreadsheet project)
|
356
353
|
# @param options [Hash] Optional arguments
|
357
354
|
# @option options [Boolean] :ignore_not_found Do not raise an exception if the measure could not be found on the machine
|
358
355
|
# @return [Object] Returns the OpenStudio::Analysis::WorkflowStep
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
|
+
# All rights reserved.
|
4
|
+
# Redistribution and use in source and binary forms, with or without
|
5
|
+
# modification, are permitted provided that the following conditions are met:
|
6
|
+
#
|
7
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
8
|
+
# this list of conditions and the following disclaimer.
|
9
|
+
#
|
10
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
# this list of conditions and the following disclaimer in the documentation
|
12
|
+
# and/or other materials provided with the distribution.
|
13
|
+
#
|
14
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
15
|
+
# may be used to endorse or promote products derived from this software without
|
16
|
+
# specific prior written permission from the respective party.
|
17
|
+
#
|
18
|
+
# (4) Other than as required in clauses (1) and (2), distributions in any form
|
19
|
+
# of modifications or other derivative works may not use the "OpenStudio"
|
20
|
+
# trademark, "OS", "os", or any other confusingly similar designation without
|
21
|
+
# specific prior written permission from Alliance for Sustainable Energy, LLC.
|
22
|
+
#
|
23
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
24
|
+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
25
|
+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
26
|
+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
|
27
|
+
# GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
28
|
+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
29
|
+
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
30
|
+
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
31
|
+
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
32
|
+
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
33
|
+
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
34
|
+
# *******************************************************************************
|
35
|
+
|
36
|
+
require 'rexml/document'
|
37
|
+
|
38
|
+
def parse_measure_xml(measure_xml_filename)
|
39
|
+
measure_hash = {}
|
40
|
+
xml_to_parse = File.open(measure_xml_filename)
|
41
|
+
xml_root = REXML::Document.new(xml_to_parse).root
|
42
|
+
|
43
|
+
# pull out some information
|
44
|
+
measure_hash[:classname] = xml_root.elements['//measure/class_name'].text
|
45
|
+
measure_hash[:name] = xml_root.elements['//measure/name'].text
|
46
|
+
measure_hash[:display_name] = xml_root.elements['//measure/display_name'].text
|
47
|
+
measure_hash[:display_name_titleized] = measure_hash[:name].titleize
|
48
|
+
measure_hash[:measure_type] = xml_root.elements['//measure/attributes/attribute[name="Measure Type"]/value'].text
|
49
|
+
measure_hash[:description] = xml_root.elements['//measure/description'].text
|
50
|
+
measure_hash[:modeler_description] = xml_root.elements['//measure/modeler_description'].text
|
51
|
+
measure_hash[:uid] = xml_root.elements['//measure/uid'].text
|
52
|
+
measure_hash[:version_id] = xml_root.elements['//measure/version_id'].text
|
53
|
+
measure_hash[:arguments] = []
|
54
|
+
|
55
|
+
REXML::XPath.each(xml_root, '//measure/arguments/argument' ) do |arg|
|
56
|
+
|
57
|
+
measure_hash[:arguments] << {
|
58
|
+
name: arg.elements['name'].text,
|
59
|
+
display_name: arg.elements['display_name'].text,
|
60
|
+
variable_type: arg.elements['type'].text.downcase,
|
61
|
+
default_value: arg.elements['default_value'].text,
|
62
|
+
units: arg.elements['units'] ? arg.elements['units'].text : ''
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
measure_hash
|
67
|
+
end
|
data/openstudio-analysis.gemspec
CHANGED
@@ -23,10 +23,9 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.required_ruby_version = '~> 2.5.0'
|
25
25
|
|
26
|
-
s.add_dependency 'bcl', '
|
26
|
+
s.add_dependency 'bcl', '~> 0.6.1'
|
27
27
|
s.add_dependency 'dencity', '~> 0.1.0'
|
28
|
-
s.add_dependency 'faraday', '~> 0.
|
29
|
-
s.add_dependency 'nokogiri', '~> 1.10.8'
|
28
|
+
s.add_dependency 'faraday', '~> 1.0.1'
|
30
29
|
s.add_dependency 'roo', '~> 2.8.3'
|
31
30
|
s.add_dependency 'rubyzip', '~> 2.3.0'
|
32
31
|
s.add_dependency 'semantic', '~> 1.4'
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio-analysis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Long
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-07-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcl
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.6.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.6.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dencity
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,28 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.14'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: nokogiri
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.10.8
|
47
|
+
version: 1.0.1
|
62
48
|
type: :runtime
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
52
|
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
54
|
+
version: 1.0.1
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: roo
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -194,6 +180,7 @@ files:
|
|
194
180
|
- lib/openstudio/analysis/workflow_step.rb
|
195
181
|
- lib/openstudio/helpers/hash.rb
|
196
182
|
- lib/openstudio/helpers/string.rb
|
183
|
+
- lib/openstudio/helpers/utils.rb
|
197
184
|
- lib/openstudio/weather/epw.rb
|
198
185
|
- openstudio-analysis.gemspec
|
199
186
|
- update_license.rb
|