openstudio-ee 0.12.4 → 0.13.0

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
  SHA256:
3
- metadata.gz: 2e611eb3abfa758253b2637c0fbe2a6417af81f616aef789b080d3c59e21a921
4
- data.tar.gz: 738fa87404869c4db7cfa5d3c7d6053b49b5a12e8b8228b1686b4d970367e851
3
+ metadata.gz: d956e2182ed1efed95cf8c325a10d3e6c9ad9a770f9d6e1f7193f283a19ea7f7
4
+ data.tar.gz: f0b1a8a155d152dbb5aed1f4764c749475758e809b7226c2aaf8ca09a2ea2280
5
5
  SHA512:
6
- metadata.gz: b6f8cb5ccf030061a8033acc9f86ea09c3abd6372ef1747fda427f73041a74995d4df2d1c72ebb2f38e8891a9c05c59a2937977244902d976897de77308e115f
7
- data.tar.gz: d497de4e70389ddfff91ba6a64e448b3e39aba2c123479889a2f5e63341ef03679a6bea1644037f80137a4c63d416bf116a0f72697257af7f9d417f5c980683b
6
+ metadata.gz: e3e3b0cde5c02ec2b96bcd9bd0704f1a9f9d632d3b6553871354d327408fbd48a6ec2adfff9448a12c8b6c5572b1f317443dc9e20dca6043437e9f9728c10057
7
+ data.tar.gz: 7d70f591a9403143f11df127876b180de508130dea1b880241001d24c287decbaa4bf80b5b1e7990e96f2d610645ee0b119893cb31044224de49f352e19a8e60
@@ -11,133 +11,101 @@ jobs:
11
11
  DEPLOY_PATH: ${{ github.repository }}/${{ github.ref_name }}/${{ github.run_number }} # Path for S3 deployment
12
12
  S3_BUCKET: ext-gem-dashboard
13
13
 
14
- steps:
15
- - name: Login to Docker Hub
16
- # Authenticate with Docker Hub using repository secrets to access nrel/openstudio:develop
17
- uses: docker/login-action@v3
18
- with:
19
- username: ${{ secrets.DOCKERHUB_USERNAME }} # Ensure this secret exists in your repository or organization settings
20
- password: ${{ secrets.DOCKERHUB_TOKEN }} # Ensure this secret exists in your repository or organization settings
14
+ container: # Define the Docker container for the job. All subsequent steps run inside it.
15
+ image: nrel/openstudio:dev-3.11.0-rc3
16
+ options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally
21
17
 
18
+ steps:
22
19
  - name: Checkout Repository
23
- # Checkout the repository to the runner's workspace
24
- uses: actions/checkout@v4
20
+ # The repository will be checked out inside the 'nrel/openstudio:3.11.0' container
21
+ uses: actions/checkout@v4 # Use v4 for better security and features
25
22
  with:
26
- submodules: true
23
+ submodules: true # Set to true if your repository uses Git submodules
27
24
 
28
- - name: Cache Bundle Dependencies
29
- # Cache gem dependencies to speed up builds and improve reliability
30
- uses: actions/cache@v4
31
- with:
32
- path: vendor/bundle
33
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
34
- restore-keys: |
35
- ${{ runner.os }}-gems-
25
+ - name: Install Node.js and AWS CLI
26
+ # Install required dependencies for AWS actions to work in the OpenStudio container
27
+ shell: bash
28
+ run: |
29
+ echo "Installing Node.js and AWS CLI..."
30
+
31
+ # Update package list
32
+ apt-get update
33
+
34
+ # Install curl and other dependencies
35
+ apt-get install -y curl unzip
36
36
 
37
- - name: Run Tests in OpenStudio Container
38
- # Run all tests inside the OpenStudio develop container with proper authentication
37
+ # Install Node.js (using NodeSource repository for latest LTS)
38
+ curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
39
+ apt-get install -y nodejs
40
+
41
+ # Install AWS CLI v2
42
+ curl --retry 5 --retry-connrefused "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
43
+ unzip awscliv2.zip
44
+ ./aws/install
45
+
46
+ # Verify installations
47
+ echo "Node.js version: $(node --version)"
48
+ echo "npm version: $(npm --version)"
49
+ echo "AWS CLI version: $(aws --version)"
50
+
51
+ # Clean up
52
+ rm -rf awscliv2.zip aws/
53
+
54
+ - name: Verify Environment and Run Measures
55
+ # All 'run' commands in this job now execute inside the specified Docker container.
56
+ shell: bash # Specify the shell if needed, though bash is default for Ubuntu runners
39
57
  run: |
40
- # Pull the develop image now that we're authenticated
41
- docker pull nrel/openstudio:develop
58
+ # Fix git ownership issue in container
59
+ git config --global --add safe.directory /__w/openstudio-ee-gem/openstudio-ee-gem
42
60
 
43
- # Run the container with all our test commands
44
- docker run --rm \
45
- -u root \
46
- -e "LANG=en_US.UTF-8" \
47
- -v "${{ github.workspace }}:/workspace" \
48
- -w /workspace \
49
- nrel/openstudio:develop \
50
- bash -c '
51
- set -e
52
-
53
- echo "Starting OpenStudio EE Gem tests..."
54
- echo "Ruby: $(ruby -v)"
55
- echo "OpenStudio: $(openstudio openstudio_version)"
56
-
57
- # Fix git ownership issue in container
58
- git config --global --add safe.directory "*"
59
-
60
- # Install system dependencies
61
- apt-get update -qq
62
- apt-get install -y -qq curl unzip ca-certificates
63
-
64
- # Install Node.js and AWS CLI (required for some tests)
65
- curl -fsSL https://deb.nodesource.com/setup_20.x | DEBIAN_FRONTEND=noninteractive bash -
66
- DEBIAN_FRONTEND=noninteractive apt-get install -y -qq nodejs
67
-
68
- curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip
69
- unzip -q /tmp/awscliv2.zip -d /tmp/
70
- /tmp/aws/install
71
- rm -rf /tmp/aws /tmp/awscliv2.zip
72
-
73
- # Install gem dependencies
74
- echo "Installing gem dependencies..."
75
-
76
- # Clean up bundler environment
77
- unset BUNDLE_GEMFILE BUNDLE_PATH BUNDLE_BIN_PATH
78
-
79
- # Install bundler and configure
80
- gem install bundler -v 2.4.10 --no-document
81
- bundle config set --local path vendor/bundle
82
- bundle config set --local force_ruby_platform true
83
-
84
- # Install gems
85
- bundle install --retry 3 --jobs 4
86
-
87
- # Run test suite
88
- echo "Running tests..."
89
- bundle exec rake
90
- bundle exec rake openstudio:list_measures
91
- bundle exec rake openstudio:update_measures
92
- bundle exec rake openstudio:test_with_openstudio
93
-
94
- # Archive test results
95
- if [ -d "test" ]; then
96
- mv test test_with_cli_bundler
97
- fi
98
-
99
- dir_name=$(find . -type d -name "test_results" | head -1)
100
- if [ -n "$dir_name" ]; then
101
- mv "$dir_name" test_results_dashboard_cli_bundler
102
- fi
103
-
104
- echo "Tests completed successfully!"
105
- '
61
+ echo "OpenStudio Version: $(openstudio --version)"
62
+ echo "Ruby Version: $(ruby -v)"
63
+ echo "Listing OpenStudio Gems: $(openstudio gem_list)"
64
+
65
+ # Install dependencies before running tests
66
+ echo "Installing gem dependencies..."
67
+ bundle install
68
+
69
+ echo "Running spec tests..."
70
+ rake spec
71
+ echo "Running measures with verbose output:"
72
+ # This command will execute within the container.
73
+ # Ensure that './lib/measures' is the correct path relative to the checkout.
74
+ openstudio --verbose measure -r ./lib/measures
75
+
76
+ # The output for 'test' should now be generated directly into the workspace
77
+ # within the container, which is mounted from the host.
78
+ # No 'docker cp' is needed as the workspace is shared.
79
+ ls -al ./test # Verify the output directory exists and contains files
106
80
 
107
81
  - name: Configure AWS Credentials
108
- # Configure AWS credentials for S3 deployment
109
- uses: aws-actions/configure-aws-credentials@v4
82
+ if: success() || failure()
83
+ # This step is crucial for authenticating with AWS S3
84
+ uses: aws-actions/configure-aws-credentials@v4 # Use v4 for updated features
110
85
  with:
111
86
  aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
112
- aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
113
- aws-region: ${{ secrets.AWS_DEFAULT_REGION }}
87
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} # Assuming this is your secret name
88
+ aws-region: ${{ secrets.AWS_DEFAULT_REGION }} # Replace with your AWS region, e.g., us-east-1
114
89
 
115
90
  - name: Sync files to S3 with branch and build in path
91
+ if: success() || failure()
116
92
  shell: bash
117
93
  run: |
118
94
  echo "Deploying to s3://${{ env.S3_BUCKET }}/${{ env.DEPLOY_PATH }}/"
119
- # Use the renamed test_results directory
120
- dir_name="test_results_dashboard_cli_bundler"
121
- if [ -d "$dir_name" ]; then
122
- echo "TEST_RESULTS_DIR=$dir_name" >> $GITHUB_ENV
123
- if ! aws s3 sync $dir_name s3://${{ env.S3_BUCKET }}/${{ env.DEPLOY_PATH }}/ \
124
- --delete \
125
- --acl public-read \
126
- --cache-control "max-age=0, no-cache, no-store, must-revalidate"; then
127
- echo "::error::Failed to sync results to S3"
128
- exit 1
129
- fi
130
- echo "✅ S3 sync complete."
131
- echo "🌐 Dashboard URL: https://${{ env.S3_BUCKET }}.s3.amazonaws.com/${{ env.DEPLOY_PATH }}/dashboard/index.html"
132
- else
133
- echo "::error::Test results directory $dir_name not found"
134
- echo "::error::Available directories:"
135
- ls -la
136
- exit 1
137
- fi
95
+ # Ensure './test_results' is the correct source directory for the files to upload to S3.
96
+ dir_name=$(find -type d -name "test_results")
97
+ # It must match the output directory from the 'Run Measures' step.
98
+ aws s3 sync $dir_name s3://${{ env.S3_BUCKET }}/${{ env.DEPLOY_PATH }}/ \
99
+ --delete \
100
+ --acl public-read \
101
+ --cache-control "max-age=0, no-cache, no-store, must-revalidate"
102
+ echo "S3 sync complete."
103
+ echo "https://${{ env.S3_BUCKET }}.s3.amazonaws.com/${{ env.DEPLOY_PATH }}/dashboard/index.html"
104
+ echo dir_name=$dir_name >> $GITHUB_ENV # Save the directory name to an environment variable for later use
138
105
 
139
106
  - name: Archive static site as artifact
107
+ if: always()
140
108
  uses: actions/upload-artifact@v4
141
109
  with:
142
110
  name: static-html-artifact
143
- path: test_results_dashboard_cli_bundler
111
+ path: ${{ env.dir_name }} # Path should be relative to the GitHub workspace, which is shared with the container
data/.rubocop.yml CHANGED
@@ -1,20 +1,7 @@
1
- inherit_mode:
2
- merge:
3
- - Exclude
4
-
5
1
  AllCops:
6
- NewCops: enable
7
2
  Exclude:
8
3
  - 'spec/test_measures/**/*'
9
- - 'vendor/**/*' # Standard exclusion for all vendor code
10
- - '.bundle/**/*' # Bundler cache directory
11
- - 'tmp/**/*' # Temporary files
12
- - 'node_modules/**/*' # Node.js dependencies (if applicable)
13
- # Standard RuboCop behavior - these settings are actually defaults
14
- DisabledByDefault: false
15
4
 
16
- require:
17
- - rubocop-performance
18
- - rubocop-rake
5
+ require: rubocop-performance
19
6
  inherit_from:
20
- - http://s3.amazonaws.com/openstudio-resources/styles/rubocop_v6.yml
7
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop_v4.yml
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # OpenStudio(R) EE Gem
2
2
 
3
+ ## Version 0.13.0
4
+ - Updated dependency (openstudio-extension gem 0.9.3 to 0.9.7)
5
+ - Updated dependency (openstudio-standards gem 0.8.2 to 0.8.5)
6
+
7
+ ## Version 0.12.5
8
+ * Removing error from measure.xml of window enhancement measure
9
+
3
10
  ## Version 0.12.4
4
11
  * Adding first version of window enhancement measure. This is python measure that has extra dependencies, and also requires an EC3 API key. It looks up content on EC3, stores embodied carbon data in the OpenStudio model and updates the window performance. You can not use it to only update window performance without using the EC3 database.
5
12
 
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
- # OpenStudio(R) EE Measures
1
+ # OpenStudio(R) EE Measures
2
2
 
3
3
  EE measures used by OpenStudio(R). This contains general use energy efficiency measures. Some measures here may also be suitable for calibration or model articulation. Similarly, some measures in other measure gem repos may also be suitable for energy efficiency usage.
4
4
 
5
-
6
5
  ## Installation
7
6
 
8
7
  Add this line to your application's Gemfile:
@@ -23,6 +22,8 @@ Or install it yourself as:
23
22
 
24
23
  |OpenStudio EE Gem|OpenStudio|Ruby|
25
24
  |:--------------:|:----------:|:--------:|
25
+ | 0.13.0 | 3.11 | 3.2.2 |
26
+ | 0.12.5 | 3.10 | 3.2.2 |
26
27
  | 0.12.4 | 3.10 | 3.2.2 |
27
28
  | 0.12.3 | 3.10 | 3.2.2 |
28
29
  | 0.12.2 | 3.10 | 3.2.2 |
@@ -341,7 +341,7 @@ class NzeHvac < OpenStudio::Measure::ModelMeasure
341
341
  # remove existing hvac system from model
342
342
  if remove_existing_hvac
343
343
  runner.registerInfo('Removing existing HVAC systems from the model')
344
- std.remove_hvac(model)
344
+ OpenstudioStandards::HVAC.remove_hvac(model)
345
345
  end
346
346
 
347
347
  # exclude plenum zones, zones without thermostats, and zones with no floor area
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.1</schema_version>
4
4
  <name>nze_hvac</name>
5
5
  <uid>f060dff2-b28d-4194-a6af-e66d88ddb33c</uid>
6
- <version_id>9ef6d0b1-beec-4b75-a119-476f2fa9d4dc</version_id>
7
- <version_modified>2025-09-25T16:10:25Z</version_modified>
6
+ <version_id>dc683602-6101-43a8-86b7-3da2063658a8</version_id>
7
+ <version_modified>2026-06-08T03:32:17Z</version_modified>
8
8
  <xml_checksum>0E5E4776</xml_checksum>
9
9
  <class_name>NzeHvac</class_name>
10
10
  <display_name>NZEHVAC</display_name>
@@ -253,12 +253,12 @@
253
253
  <version>
254
254
  <software_program>OpenStudio</software_program>
255
255
  <identifier>3.8.0</identifier>
256
- <min_compatible>3.8.0</min_compatible>
256
+ <min_compatible>3.11.0</min_compatible>
257
257
  </version>
258
258
  <filename>measure.rb</filename>
259
259
  <filetype>rb</filetype>
260
260
  <usage_type>script</usage_type>
261
- <checksum>59C247DF</checksum>
261
+ <checksum>3A279C6D</checksum>
262
262
  </file>
263
263
  <file>
264
264
  <filename>NZEHVAC_Test.rb</filename>
@@ -62,7 +62,7 @@ class WindowEnhancement(openstudio.measure.ModelMeasure):
62
62
  for option in self.igu_options():
63
63
  igu_options_chs.append(option)
64
64
  igu_option = openstudio.measure.OSArgument.makeChoiceArgument("igu_option", igu_options_chs, True)
65
- igu_option.setDisplayName("IGU option")
65
+ igu_option.setDisplayName("IGU option")
66
66
  igu_option.setDescription("Type of insulating glazing unit")
67
67
  args.append(igu_option)
68
68
 
@@ -80,12 +80,12 @@ class WindowEnhancement(openstudio.measure.ModelMeasure):
80
80
  wf_lifetime.setDefaultValue(15)
81
81
  args.append(wf_lifetime)
82
82
 
83
- #make an argument for window frame options for filtering EPDs
83
+ #make an argument for window frame options for filtering EPDs
84
84
  wf_options_chs = openstudio.StringVector()
85
85
  for option in self.wf_options():
86
86
  wf_options_chs.append(option)
87
87
  wf_option = openstudio.measure.OSArgument.makeChoiceArgument("wf_option",wf_options_chs, True)
88
- wf_option.setDisplayName("Window frame option")
88
+ wf_option.setDisplayName("Window frame option")
89
89
  wf_option.setDescription("Type of aluminum extrusion")
90
90
  args.append(wf_option)
91
91
 
@@ -1,21 +1,170 @@
1
1
  <?xml version="1.0"?>
2
2
  <measure>
3
3
  <schema_version>3.1</schema_version>
4
- <error>Failed to infer measure name from '/workspace/lib/measures/window_enhancement/measure.py'</error>
5
- <name>window_enhancment</name>
4
+ <name>window_enhancement</name>
6
5
  <uid>0ad8e761-8624-4d9d-a7d6-ebf30cce243b</uid>
7
6
  <version_id>6e806249-5eab-444e-b724-f00dd42c13fb</version_id>
8
7
  <version_modified>2025-09-25T04:50:20Z</version_modified>
9
8
  <xml_checksum>7DADF7C5</xml_checksum>
10
- <class_name>WindowEnhancment</class_name>
11
- <display_name>Window Enhancment</display_name>
9
+ <class_name>WindowEnhancement</class_name>
10
+ <display_name>Window Enhancement</display_name>
12
11
  <description>Make existing window better by adding film, storm window, or something else.</description>
13
- <modeler_description>I'm going to use layred construction and not simple glazing to do this. We have to think about how to address simple glazing with this.</modeler_description>
12
+ <modeler_description>Using layered construction and not simple glazing to do this. We have to think about how to address simple glazing with this.</modeler_description>
14
13
  <arguments>
15
14
  <argument>
16
- <name>space_name</name>
17
- <display_name>New space name</display_name>
18
- <description>This name will be used as the name of the new space.</description>
15
+ <name>analysis_period</name>
16
+ <display_name>Analysis Period</display_name>
17
+ <description>Analysis period of embodied carbon of building/building assembly</description>
18
+ <type>Integer</type>
19
+ <required>true</required>
20
+ <model_dependent>false</model_dependent>
21
+ <default_value>30</default_value>
22
+ </argument>
23
+ <argument>
24
+ <name>igu_option</name>
25
+ <display_name>IGU Option</display_name>
26
+ <description>Type of insulating glazing unit</description>
27
+ <type>Choice</type>
28
+ <required>true</required>
29
+ <model_dependent>false</model_dependent>
30
+ <choices>
31
+ <choice>
32
+ <value>electrochromic</value>
33
+ <display_name>electrochromic</display_name>
34
+ </choice>
35
+ <choice>
36
+ <value>fire_resistant</value>
37
+ <display_name>fire_resistant</display_name>
38
+ </choice>
39
+ <choice>
40
+ <value>laminated</value>
41
+ <display_name>laminated</display_name>
42
+ </choice>
43
+ <choice>
44
+ <value>low_emissivity</value>
45
+ <display_name>low_emissivity</display_name>
46
+ </choice>
47
+ <choice>
48
+ <value>tempered</value>
49
+ <display_name>tempered</display_name>
50
+ </choice>
51
+ </choices>
52
+ </argument>
53
+ <argument>
54
+ <name>igu_lifetime</name>
55
+ <display_name>IGU Lifetime</display_name>
56
+ <description>Lifetime of the insulating glazing unit</description>
57
+ <type>Integer</type>
58
+ <required>true</required>
59
+ <model_dependent>false</model_dependent>
60
+ <default_value>15</default_value>
61
+ </argument>
62
+ <argument>
63
+ <name>wf_lifetime</name>
64
+ <display_name>Product Lifetime of Window Frame</display_name>
65
+ <description>Life expectancy of window frame</description>
66
+ <type>Integer</type>
67
+ <required>true</required>
68
+ <model_dependent>false</model_dependent>
69
+ <default_value>15</default_value>
70
+ </argument>
71
+ <argument>
72
+ <name>wf_option</name>
73
+ <display_name>Window frame option</display_name>
74
+ <description>Type of aluminum extrusion</description>
75
+ <type>Choice</type>
76
+ <required>true</required>
77
+ <model_dependent>false</model_dependent>
78
+ <choices>
79
+ <choice>
80
+ <value>anodized</value>
81
+ <display_name>anodized</display_name>
82
+ </choice>
83
+ <choice>
84
+ <value>painted</value>
85
+ <display_name>painted</display_name>
86
+ </choice>
87
+ <choice>
88
+ <value>thermally_improved</value>
89
+ <display_name>thermally_improved</display_name>
90
+ </choice>
91
+ </choices>
92
+ </argument>
93
+ <argument>
94
+ <name>frame_cross_section_area</name>
95
+ <display_name>Frame Cross Section Area (m²)</display_name>
96
+ <description>Cross-sectional area of the IGU frame in square meters.</description>
97
+ <type>Double</type>
98
+ <required>true</required>
99
+ <model_dependent>false</model_dependent>
100
+ <default_value>0.0025</default_value>
101
+ </argument>
102
+ <argument>
103
+ <name>epd_type</name>
104
+ <display_name>EPD Type</display_name>
105
+ <description>Type of EPD for searching GWP values, Product EPDs refer to specific products from a manufacturer, while industrial EPDs represent average data across an entire industry sector.</description>
106
+ <type>Choice</type>
107
+ <required>true</required>
108
+ <model_dependent>false</model_dependent>
109
+ <choices>
110
+ <choice>
111
+ <value>Product</value>
112
+ <display_name>Product</display_name>
113
+ </choice>
114
+ <choice>
115
+ <value>Industry</value>
116
+ <display_name>Industry</display_name>
117
+ </choice>
118
+ </choices>
119
+ </argument>
120
+ <argument>
121
+ <name>gwp_statistic</name>
122
+ <display_name>GWP Statistic</display_name>
123
+ <description>Type of GWP statistic for searching GWP values, Product GWP statistics refer to specific products from a manufacturer, while industrial GWP statistics represent average data across an entire industry sector.</description>
124
+ <type>Choice</type>
125
+ <required>true</required>
126
+ <model_dependent>false</model_dependent>
127
+ <choices>
128
+ <choice>
129
+ <value>minimum</value>
130
+ <display_name>minimum</display_name>
131
+ </choice>
132
+ <choice>
133
+ <value>maximum</value>
134
+ <display_name>maximum</display_name>
135
+ </choice>
136
+ <choice>
137
+ <value>mean</value>
138
+ <display_name>mean</display_name>
139
+ </choice>
140
+ <choice>
141
+ <value>median</value>
142
+ <display_name>median</display_name>
143
+ </choice>
144
+ </choices>
145
+ </argument>
146
+ <argument>
147
+ <name>total_embodied_carbon</name>
148
+ <display_name>Total Embodied Carbon (kgCO2e)</display_name>
149
+ <description>Total embodied carbon of the window frame in kilograms of CO2 equivalent.</description>
150
+ <type>Double</type>
151
+ <required>true</required>
152
+ <model_dependent>false</model_dependent>
153
+ <default_value>0.0</default_value>
154
+ </argument>
155
+ <argument>
156
+ <name>total_embodied_carbon</name>
157
+ <display_name>Total Embodied Carbon (kgCO2e)</display_name>
158
+ <description>Total embodied carbon of the window frame in kilograms of CO2 equivalent.</description>
159
+ <type>Double</type>
160
+ <required>true</required>
161
+ <model_dependent>false</model_dependent>
162
+ <default_value>0.0</default_value>
163
+ </argument>
164
+ <argument>
165
+ <name>api_key</name>
166
+ <display_name>API Key</display_name>
167
+ <description>API key for accessing external services.</description>
19
168
  <type>String</type>
20
169
  <required>true</required>
21
170
  <model_dependent>false</model_dependent>
@@ -71,12 +220,6 @@
71
220
  <usage_type>readme</usage_type>
72
221
  <checksum>DE9B0464</checksum>
73
222
  </file>
74
- <file>
75
- <filename>.gitkeep</filename>
76
- <filetype>gitkeep</filetype>
77
- <usage_type>doc</usage_type>
78
- <checksum>00000000</checksum>
79
- </file>
80
223
  <file>
81
224
  <version>
82
225
  <software_program>OpenStudio</software_program>
@@ -7,6 +7,6 @@
7
7
 
8
8
  module OpenStudio
9
9
  module EeMeasures
10
- VERSION = '0.12.4'
10
+ VERSION = '0.13.0'
11
11
  end
12
12
  end
@@ -29,9 +29,12 @@ Gem::Specification.new do |spec|
29
29
  spec.required_ruby_version = '~> 3.2.2'
30
30
 
31
31
  spec.add_dependency 'bundler', '~> 2.4.10'
32
+ spec.add_dependency 'openstudio-extension', '~> 0.9.7'
33
+ spec.add_dependency 'openstudio-standards', '0.8.5'
34
+
35
+ # if we need the following dependencies pinned,
36
+ # let's set them in extension-gem for next release
32
37
  spec.add_dependency 'multipart-post', '2.4.0'
33
- spec.add_dependency 'openstudio-extension', '~> 0.9.3'
34
- spec.add_dependency 'openstudio-standards', '0.8.2'
35
38
 
36
39
  spec.add_development_dependency 'octokit', '4.18.0' # for change logs
37
40
  spec.add_development_dependency 'rake', '~> 13.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-ee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.4
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Goldwasser
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-09-25 00:00:00.000000000 Z
12
+ date: 2026-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -26,47 +26,47 @@ dependencies:
26
26
  - !ruby/object:Gem::Version
27
27
  version: 2.4.10
28
28
  - !ruby/object:Gem::Dependency
29
- name: multipart-post
29
+ name: openstudio-extension
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '='
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 2.4.0
34
+ version: 0.9.7
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '='
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 2.4.0
41
+ version: 0.9.7
42
42
  - !ruby/object:Gem::Dependency
43
- name: openstudio-extension
43
+ name: openstudio-standards
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: 0.9.3
48
+ version: 0.8.5
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 0.9.3
55
+ version: 0.8.5
56
56
  - !ruby/object:Gem::Dependency
57
- name: openstudio-standards
57
+ name: multipart-post
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 0.8.2
62
+ version: 2.4.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - '='
68
68
  - !ruby/object:Gem::Version
69
- version: 0.8.2
69
+ version: 2.4.0
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: octokit
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -362,7 +362,7 @@ licenses: []
362
362
  metadata:
363
363
  bug_tracker_uri: https://github.com/NREL/openstudio-ee-gem/issues
364
364
  changelog_uri: https://github.com/NREL/openstudio-ee-gem/blob/develop/CHANGELOG.md
365
- source_code_uri: https://github.com/NREL/openstudio-ee-gem/tree/v0.12.4
365
+ source_code_uri: https://github.com/NREL/openstudio-ee-gem/tree/v0.13.0
366
366
  rubygems_mfa_required: 'true'
367
367
  post_install_message:
368
368
  rdoc_options: []