openstudio-analysis 1.0.0 → 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.
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