openstudio-analysis 1.0.0 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +2 -1
  3. data/.rubocop.yml +1 -1
  4. data/.travis.yml +2 -2
  5. data/CHANGELOG.md +28 -1
  6. data/Gemfile +1 -5
  7. data/LICENSE.md +28 -0
  8. data/README.md +1 -1
  9. data/Rakefile +1 -1
  10. data/lib/openstudio-analysis.rb +2 -1
  11. data/lib/openstudio/analysis.rb +23 -27
  12. data/lib/openstudio/analysis/algorithm_attributes.rb +1 -1
  13. data/lib/openstudio/analysis/formulation.rb +1 -1
  14. data/lib/openstudio/analysis/server_api.rb +8 -14
  15. data/lib/openstudio/analysis/support_files.rb +1 -1
  16. data/lib/openstudio/analysis/translator/datapoints.rb +24 -38
  17. data/lib/openstudio/analysis/translator/excel.rb +2 -2
  18. data/lib/openstudio/analysis/translator/workflow.rb +9 -13
  19. data/lib/openstudio/analysis/version.rb +2 -2
  20. data/lib/openstudio/analysis/workflow.rb +9 -18
  21. data/lib/openstudio/analysis/workflow_step.rb +67 -78
  22. data/lib/openstudio/helpers/hash.rb +1 -1
  23. data/lib/openstudio/helpers/string.rb +1 -1
  24. data/{spec/openstudio/support_files_spec.rb → lib/openstudio/helpers/utils.rb} +26 -48
  25. data/lib/openstudio/weather/epw.rb +2 -2
  26. data/openstudio-analysis.gemspec +18 -16
  27. data/update_license.rb +5 -4
  28. metadata +48 -200
  29. data/LGPL-2.1.txt +0 -502
  30. data/LICENSE.txt +0 -65
  31. data/spec/files/0_1_09_no_variables.xlsx +0 -0
  32. data/spec/files/0_1_09_outputvars.xlsx +0 -0
  33. data/spec/files/0_1_09_setup_version_2.xlsx +0 -0
  34. data/spec/files/0_1_09_small_list.xlsx +0 -0
  35. data/spec/files/0_1_09_small_list_incomplete.xlsx +0 -0
  36. data/spec/files/0_1_09_small_list_repeat_vars.xlsx +0 -0
  37. data/spec/files/0_1_09_small_list_validation_errors.xlsx +0 -0
  38. data/spec/files/0_1_10_proxy.xlsx +0 -0
  39. data/spec/files/0_1_10_proxy_user.xlsx +0 -0
  40. data/spec/files/0_1_10_template_input.xlsx +0 -0
  41. data/spec/files/0_1_11_discrete_variables.xlsx +0 -0
  42. data/spec/files/0_1_12_discrete_dynamic_columns.xlsx +0 -0
  43. data/spec/files/0_2_0_template.xlsx +0 -0
  44. data/spec/files/0_2_0_template_simpletest.xlsx +0 -0
  45. data/spec/files/0_3_0_dynamic_uuids.xlsx +0 -0
  46. data/spec/files/0_3_0_measure_existence.xlsx +0 -0
  47. data/spec/files/0_3_0_outputs.xlsx +0 -0
  48. data/spec/files/0_3_3_short_names.xlsx +0 -0
  49. data/spec/files/0_3_5_multiple_measure_paths.xlsx +0 -0
  50. data/spec/files/0_3_7_unique_measure_names.xlsx +0 -0
  51. data/spec/files/0_3_7_worker_init_final.xlsx +0 -0
  52. data/spec/files/0_4_0_lhs_discrete_continuous.xlsx +0 -0
  53. data/spec/files/0_4_0_multiple_seeds.xlsx +0 -0
  54. data/spec/files/0_4_0_pivot_test.xlsx +0 -0
  55. data/spec/files/analysis/examples/discrete_lhs_example.json +0 -809
  56. data/spec/files/analysis/examples/medium_office_example.json +0 -1674
  57. data/spec/files/analysis/examples/medium_office_workflow.json +0 -1298
  58. data/spec/files/measures/ActualMeasureNoJson/measure.rb +0 -80
  59. data/spec/files/measures/ActualMeasureNoJson/measure.xml +0 -2
  60. data/spec/files/measures/ExampleMeasure/measure.json +0 -3
  61. data/spec/files/measures/ExampleMeasure/measure.rb +0 -5
  62. data/spec/files/measures/ExampleMeasure/measure.xml +0 -1
  63. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.json +0 -36
  64. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.rb +0 -22
  65. data/spec/files/measures/IncreaseInsulationRValueForRoofs/measure.xml +0 -5
  66. data/spec/files/measures/NoMeasureRbFile/.gitkeep +0 -0
  67. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.json +0 -3
  68. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.rb +0 -5
  69. data/spec/files/measures/ReduceLightingLoadsByPercentage/measure.xml +0 -1
  70. data/spec/files/measures/SetThermostatSchedules/measure.json +0 -63
  71. data/spec/files/measures/SetThermostatSchedules/measure.rb +0 -254
  72. data/spec/files/measures/SetThermostatSchedules/measure.xml +0 -2
  73. data/spec/files/measures/example_measure_auto_directory_name/measure.json +0 -3
  74. data/spec/files/measures/example_measure_auto_directory_name/measure.rb +0 -5
  75. data/spec/files/measures/example_measure_auto_directory_name/measure.xml +0 -1
  76. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.json +0 -3
  77. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.rb +0 -5
  78. data/spec/files/measures/reduce_lighting_loads_by_percentage/measure.xml +0 -1
  79. data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.rb +0 -5
  80. data/spec/files/measures/reduce_space_infiltration_by_percentage/measure.xml +0 -1
  81. data/spec/files/measures/rotate_building/measure.rb +0 -5
  82. data/spec/files/measures/rotate_building/measure.xml +0 -1
  83. data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.rb +0 -5
  84. data/spec/files/measures/set_window_to_wall_ratio_by_facade/measure.xml +0 -1
  85. data/spec/files/measures_second_path/measure_in_another_dir/measure.json +0 -3
  86. data/spec/files/measures_second_path/measure_in_another_dir/measure.rb +0 -5
  87. data/spec/files/measures_second_path/measure_in_another_dir/measure.xml +0 -1
  88. data/spec/files/partial_weather.epw +0 -32
  89. data/spec/files/partial_weather_2.epw +0 -32
  90. data/spec/files/small_seed.osm +0 -4622
  91. data/spec/files/worker_init/first_file.rb +0 -15
  92. data/spec/files/worker_init/second_file.sh +0 -4
  93. data/spec/files/workflow/analysis.osa +0 -1334
  94. data/spec/files/workflow/datapoint_0.osd +0 -65
  95. data/spec/files/workflow/datapoint_1.osd +0 -65
  96. data/spec/files/workflow/datapoint_2.osd +0 -65
  97. data/spec/files/workflow/datapoint_wrong_osa_id.osd +0 -65
  98. data/spec/integration/server_api_spec.rb +0 -83
  99. data/spec/openstudio/excel_spec.rb +0 -606
  100. data/spec/openstudio/formulation_spec.rb +0 -200
  101. data/spec/openstudio/hash_spec.rb +0 -56
  102. data/spec/openstudio/osw_spec.rb +0 -129
  103. data/spec/openstudio/server_api_spec.rb +0 -68
  104. data/spec/openstudio/string_spec.rb +0 -34
  105. data/spec/openstudio/weather_spec.rb +0 -80
  106. data/spec/openstudio/workflow_spec.rb +0 -126
  107. data/spec/openstudio/workflow_step_spec.rb +0 -158
  108. data/spec/schema/osa.json +0 -613
  109. data/spec/schema/osa.png +0 -0
  110. data/spec/schema/osd.json +0 -110
  111. data/spec/schema/osd.png +0 -0
  112. data/spec/spec_helper.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 06d3c96c3060a4b3c38b3a71ce868bdd77e81de8
4
- data.tar.gz: ac9f3cb8d26c95d533be4f3bffe3fddc58d5f0fd
2
+ SHA256:
3
+ metadata.gz: 76642f1d452e8e46218af9c36e388da0033e43469ec2063d6c61f4e4cd9b99fd
4
+ data.tar.gz: 40b243f4b0375a79e726bf4105913f75fc3ce65d09134aa27e5a927c36984b57
5
5
  SHA512:
6
- metadata.gz: b7e98970c92beb469d3b4e3d6198cb79bc2ce63e20c7d13c1541a5afa78cb2ee1873fb43d5776703fa43be8f9ec6f763c2c82b2a5b67575b0ba6f6f2ccc412ed
7
- data.tar.gz: 074efcb873df6e3233dd80129260d5b0007c871732e983bf780e2b35e6ef66e4cac8969f55cb742512ba6b440b0c3c59483d98299339ac55ed515d41ddbc4200
6
+ metadata.gz: 5a9bbb7d5567cf1a7ecb6b243490e4eb3c50b0dd28cdad09fec821eaece6803fb45a3cb554ad975cca257e84644b8fe28630a5243ec4c62c4fc371583c01f638
7
+ data.tar.gz: 5a245e5b8c151fe7f079cc26af188115da571e420fc7a8df0b02a2c859bbd72ca2b91bff0aacac675677e86c7cf0d553463980ecf75ddc78e926221471f3b418
data/.gitignore CHANGED
@@ -5,7 +5,7 @@
5
5
  *.swp
6
6
  *.gem
7
7
  ~$*
8
- .rubocop-https*
8
+ .rubocop-http*
9
9
  tmp/*
10
10
  .yardoc
11
11
  doc/
@@ -18,3 +18,4 @@ Gemfile.lock
18
18
  spec/files/measures/ActualMeasureNoJson/measure.json
19
19
  rubocop-results.xml
20
20
  coverage
21
+ /gems
@@ -5,4 +5,4 @@ AllCops:
5
5
  - 'spec/files/worker_init/*'
6
6
 
7
7
  inherit_from:
8
- - https://raw.githubusercontent.com/NREL/OpenStudio-resources/develop/styles/rubocop.yml
8
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop_v3.yml
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.4
4
- - 2.4.2
3
+ - 2.5.1
4
+ before_install: gem install bundler -v 2.1
@@ -1,10 +1,37 @@
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
+
11
+ Version 1.0.4
12
+ -------------
13
+ * Update dependency Nokogiri
14
+
15
+ Version 1.0.3
16
+ -------------
17
+ * Update dependencies roo and rubyzip
18
+
19
+ Version 1.0.2
20
+ -------------
21
+ * Updates required for OpenStudio 3x
22
+ * Require Ruby ~> 2.5.1
23
+ * Update to Nokogiri ~> 1.8.2 (required for Ruby 2.5 on Windows)
24
+
25
+ Version 1.0.1
26
+ -------------
27
+ * Add support for Ruby 2.5.1 (keeping support for 2.2)
28
+ * Lock version of Roo to older version
29
+ * Updated copyright dates and remove old LGPL license. License is not LGPL but a BSD-style license.
30
+
4
31
  Version 1.0.0
5
32
  -------------
6
33
  This is the first official release in quite some time. This includes many changes which unfortunately have not been
7
- catelogued. The changes from 0.4.5 include:
34
+ cataloged. The changes from 0.4.5 include:
8
35
 
9
36
  * Requires ruby > 2.1.
10
37
  * Default path to ServerApi logfile to ~/os_server_api.log. This can be overridden by setting the log_path options key in the initializer.
data/Gemfile CHANGED
@@ -3,8 +3,7 @@ source 'http://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'colored', '~> 1.2'
6
- gem 'dencity'
7
- gem 'openstudio-aws', '0.4.2'
6
+ gem 'openstudio-aws', '~> 0.4.2'
8
7
 
9
8
  group :test do
10
9
  # Don't install coveralls on window because requires devkit for json
@@ -12,7 +11,4 @@ group :test do
12
11
  gem 'coveralls', require: false
13
12
  end
14
13
  gem 'ci_reporter_rspec'
15
- gem 'rspec', '~> 3.4'
16
- gem 'rubocop'
17
- gem 'rubocop-checkstyle_formatter'
18
14
  end
@@ -0,0 +1,28 @@
1
+ OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided
4
+ that the following conditions are met:
5
+
6
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions and
7
+ the following disclaimer.
8
+
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
10
+ the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+
12
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or
13
+ promote products derived from this software without specific prior written permission from the respective
14
+ party.
15
+
16
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
+ derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
+ designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED
23
+ STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY
24
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
+ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
28
+ DAMAGE.
data/README.md CHANGED
@@ -30,7 +30,7 @@ There are two ways to create an OpenStudio Analysis description:
30
30
 
31
31
  # add measures to the workflow
32
32
  wf = analysis.workflow
33
- def add_measure_from_path(instance_name, instance_display_name, local_path_to_measure)
33
+ # def add_measure_from_path(instance_name, instance_display_name, local_path_to_measure)
34
34
  wf.add_measure_from_path('instance_name', 'Display name', 'path_to_measure')
35
35
  wf.add_measure_from_path('instance_name_2', 'Display name two', 'path_to_measure_2')
36
36
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -70,6 +70,7 @@ require 'openstudio/analysis/translator/workflow'
70
70
  # helpers / core_ext
71
71
  require 'openstudio/helpers/string'
72
72
  require 'openstudio/helpers/hash'
73
+ require 'openstudio/helpers/utils'
73
74
 
74
75
  # weather file parsing
75
76
  require 'openstudio/weather/epw'
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -130,35 +130,31 @@ module OpenStudio
130
130
  new_wfi[:description] = wf[:description] if wf[:description]
131
131
  new_wfi[:arguments] = []
132
132
 
133
- if wf[:arguments]
134
- wf[:arguments].each do |arg|
135
- wfi_arg = {}
136
- wfi_arg[:display_name] = arg[:display_name] if arg[:display_name]
137
- wfi_arg[:display_name_short] = arg[:display_name_short] if arg[:display_name_short]
138
- wfi_arg[:name] = arg[:name] if arg[:name]
139
- wfi_arg[:data_type] = arg[:value_type] if arg[:value_type]
140
- wfi_arg[:default_value] = nil
141
- wfi_arg[:description] = ''
142
- wfi_arg[:display_units] = '' # should be haystack compatible unit strings
143
- wfi_arg[:units] = '' # should be haystack compatible unit strings
133
+ wf[:arguments]&.each do |arg|
134
+ wfi_arg = {}
135
+ wfi_arg[:display_name] = arg[:display_name] if arg[:display_name]
136
+ wfi_arg[:display_name_short] = arg[:display_name_short] if arg[:display_name_short]
137
+ wfi_arg[:name] = arg[:name] if arg[:name]
138
+ wfi_arg[:data_type] = arg[:value_type] if arg[:value_type]
139
+ wfi_arg[:default_value] = nil
140
+ wfi_arg[:description] = ''
141
+ wfi_arg[:display_units] = '' # should be haystack compatible unit strings
142
+ wfi_arg[:units] = '' # should be haystack compatible unit strings
144
143
 
145
- new_wfi[:arguments] << wfi_arg
146
- end
144
+ new_wfi[:arguments] << wfi_arg
147
145
  end
148
146
 
149
- if wf[:variables]
150
- wf[:variables].each do |arg|
151
- wfi_var = {}
152
- wfi_var[:display_name] = arg[:argument][:display_name] if arg[:argument][:display_name]
153
- wfi_var[:display_name_short] = arg[:argument][:display_name_short] if arg[:argument][:display_name_short]
154
- wfi_var[:name] = arg[:argument][:name] if arg[:argument][:name]
155
- wfi_var[:default_value] = nil
156
- wfi_var[:data_type] = arg[:argument][:value_type] if arg[:argument][:value_type]
157
- wfi_var[:description] = ''
158
- wfi_var[:display_units] = arg[:units] if arg[:units]
159
- wfi_var[:units] = '' # should be haystack compatible unit strings
160
- new_wfi[:arguments] << wfi_var
161
- end
147
+ wf[:variables]&.each do |arg|
148
+ wfi_var = {}
149
+ wfi_var[:display_name] = arg[:argument][:display_name] if arg[:argument][:display_name]
150
+ wfi_var[:display_name_short] = arg[:argument][:display_name_short] if arg[:argument][:display_name_short]
151
+ wfi_var[:name] = arg[:argument][:name] if arg[:argument][:name]
152
+ wfi_var[:default_value] = nil
153
+ wfi_var[:data_type] = arg[:argument][:value_type] if arg[:argument][:value_type]
154
+ wfi_var[:description] = ''
155
+ wfi_var[:display_units] = arg[:units] if arg[:units]
156
+ wfi_var[:units] = '' # should be haystack compatible unit strings
157
+ new_wfi[:arguments] << wfi_var
162
158
  end
163
159
 
164
160
  measure_metadata << new_wfi
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -152,10 +152,8 @@ module OpenStudio
152
152
  response = @conn.get "/projects/#{project_id}.json"
153
153
  if response.status == 200
154
154
  analyses = JSON.parse(response.body, symbolize_names: true, max_nesting: false)
155
- if analyses[:analyses]
156
- analyses[:analyses].each do |analysis|
157
- analysis_ids << analysis[:_id]
158
- end
155
+ analyses[:analyses]&.each do |analysis|
156
+ analysis_ids << analysis[:_id]
159
157
  end
160
158
  end
161
159
 
@@ -467,16 +465,12 @@ module OpenStudio
467
465
 
468
466
  formulation_json[:analysis][:problem][:workflow].each do |wf|
469
467
  wf[:uuid] = SecureRandom.uuid
470
- if wf[:arguments]
471
- wf[:arguments].each do |arg|
472
- arg[:uuid] = SecureRandom.uuid
473
- end
468
+ wf[:arguments]&.each do |arg|
469
+ arg[:uuid] = SecureRandom.uuid
474
470
  end
475
- if wf[:variables]
476
- wf[:variables].each do |var|
477
- var[:uuid] = SecureRandom.uuid
478
- var[:argument][:uuid] = SecureRandom.uuid if var[:argument]
479
- end
471
+ wf[:variables]&.each do |var|
472
+ var[:uuid] = SecureRandom.uuid
473
+ var[:argument][:uuid] = SecureRandom.uuid if var[:argument]
480
474
  end
481
475
  end
482
476
  else
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -58,7 +58,7 @@ module OpenStudio
58
58
  attr_accessor :name
59
59
  attr_reader :analysis_name
60
60
 
61
- require 'nokogiri'
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
- measure_xml, measure_type = find_measure(measure.to_s)
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 measure_xml
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] = measure_xml.xpath('/measure/class_name').text
376
- measure_data[:name] = measure_xml.xpath('/measure/name').text
377
- measure_data[:display_name] = measure_xml.xpath('/measure/display_name').text
378
- measure_data[:measure_type] = measure_type
379
- measure_data[:uid] = measure_xml.xpath('/measure/uid').text
380
- measure_data[:version_id] = measure_xml.xpath('/measure/version_id').text
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
- measure_xml.xpath('/measure/arguments/argument').each do |arg|
393
- if var.to_s == '__SKIP__' || arg.xpath('name').text == var.to_s
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.xpath('type').text.downcase
408
- var_units = found_arg.xpath('units')
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
- measure_xml.xpath('/measure/arguments/argument').each do |arg_xml|
451
+ measure_parsed[:arguments].each do |arg_xml|
451
452
  arg = {}
452
- arg[:value_type] = arg_xml.xpath('type').text.downcase
453
- arg[:name] = arg_xml.xpath('name').text.downcase
454
- arg[:display_name] = arg_xml.xpath('display_name').text.downcase
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.xpath('default_value').text.downcase
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
- return Nokogiri::XML File.read(measure_xml), parse_measure_type(measure_rb)
474
+ measure_parsed = parse_measure_xml(measure_xml)
475
+ return measure_parsed
474
476
  end
475
477
  end
476
478
 
477
- return nil, 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
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -536,7 +536,7 @@ module OpenStudio
536
536
  tmp_m_name = SecureRandom.uuid
537
537
  end
538
538
  # Only add models if the row is flagged
539
- if row[0] && row[0].casecmp('model').zero?
539
+ if row[0]&.casecmp('model')&.zero?
540
540
  model_path = row[3]
541
541
  unless (Pathname.new model_path).absolute?
542
542
  model_path = File.expand_path(File.join(@root_path, model_path))
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -80,11 +80,9 @@ module OpenStudio
80
80
  step_hash[:measure_dir_name] = File.basename(step[:measure_definition_directory])
81
81
  step_hash[:arguments] = {}
82
82
  # Measures can have no arguments -- make sure to catch it
83
- if @osa[:problem][:workflow][i][:arguments]
84
- @osa[:problem][:workflow][i][:arguments].each do |arg|
85
- next if arg[:value].nil?
86
- step_hash[:arguments][arg[:name].to_sym] = arg[:value]
87
- end
83
+ @osa[:problem][:workflow][i][:arguments]&.each do |arg|
84
+ next if arg[:value].nil?
85
+ step_hash[:arguments][arg[:name].to_sym] = arg[:value]
88
86
  end
89
87
  step_hash[:name] = step[:name] if step[:name]
90
88
  step_hash[:description] = step[:description] if step[:description]
@@ -98,7 +96,7 @@ module OpenStudio
98
96
  step_hash[:modeler_description] = step[:modeler_description] if step[:modeler_description]
99
97
  step_hash[:taxonomy] = step[:taxonomy] if step[:taxonomy]
100
98
  step_hash[:measure_type] = step[:measure_type]
101
- step_hash[:measure_type] = 'ModelMeasure' if step_hash[:measure_type] == 'RubyMeasure'
99
+ step_hash[:measure_type] = 'ModelMeasure'
102
100
  @steps << step_hash
103
101
  end
104
102
  end
@@ -160,12 +158,10 @@ module OpenStudio
160
158
  def process_datapoints(osd_filename_array)
161
159
  r = []
162
160
  osd_filename_array.each do |osd_file|
163
- begin
164
- r << process_datapoint(osd_file)
165
- rescue StandardError => e
166
- r << nil
167
- puts "Warning: Failed to process datapoint #{osd_file} with error #{e.message} in #{e.backtrace.join('\n')}"
168
- end
161
+ r << process_datapoint(osd_file)
162
+ rescue StandardError => e
163
+ r << nil
164
+ puts "Warning: Failed to process datapoint #{osd_file} with error #{e.message} in #{e.backtrace.join('\n')}"
169
165
  end
170
166
 
171
167
  r