urbanopt-core 0.10.0 → 1.0.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: '0109646e0976bbe44dd2058f9df4de72caf8e7fd48af527539dde9f66aeccb32'
4
- data.tar.gz: d5df588b0c061bfbbc09c220d1d9dfae89c739a0b8f1ddab29d6b547946d2594
3
+ metadata.gz: 5cd161e310c17d98c30e9dc46f2cec0f84f4f52d42f198e70187a141fe7302c7
4
+ data.tar.gz: 2e51a5becf77145b0f5da82a8af0258d2d4c8ea57c20c6db18a1db7dfcc5e6ff
5
5
  SHA512:
6
- metadata.gz: baf9fce97f0ccd376d6ca0f97f543b16d7bf21a53905a48c12ba8ebefca184a36d389d0f77742f371c462bf655ac0907e6c341cd1e6c4efd90cf79c6cce7bd7a
7
- data.tar.gz: 5713603d6916c4203536b277c317d3f3690c89274b8675e039a2e980ee6fe71d5db3bf2f1175ed37d22a08329309199a01b8db16867b0e793d232f04f02f9f26
6
+ metadata.gz: d6d3ff0d274f36e4f70e749d05a826a655b8b99197c0cd3848e3c14180588d4a5837c095775e096c2d4998bd2b865f1d9423681d35b3025a0f6862a8455fc049
7
+ data.tar.gz: 11919cbdbf0f303672c574757a95dd76a52ce5187226f77838fbdad036e56f114d56adc8526d43b2774723caa78ff1d7a37258f7de32e2d572223ad3e4952a54
@@ -0,0 +1,26 @@
1
+ # https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuration-options
2
+
3
+ changelog:
4
+ exclude:
5
+ labels:
6
+ - ignore-for-release
7
+ - DO NOT MERGE
8
+ - invalid
9
+ - dependencies
10
+ - tests
11
+ authors:
12
+ - octocat
13
+ - dependabot
14
+ categories:
15
+ - title: Breaking Changes 🛠
16
+ labels:
17
+ - Semver-Major
18
+ - breaking-change
19
+ - title: Exciting New Features 🎉
20
+ labels:
21
+ - Semver-Minor
22
+ - enhancement
23
+ - Feature
24
+ - title: Other Changes
25
+ labels:
26
+ - "*"
@@ -1,11 +1,12 @@
1
- name: nightly_build
1
+ name: Core-gem CI
2
2
 
3
3
  on:
4
- # push:
4
+ push:
5
+ workflow_dispatch:
5
6
  schedule:
6
7
  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
7
8
  # 5 am UTC (11pm MDT the day before) every weekday night in MDT
8
- - cron: '25 5 * * 2-6'
9
+ - cron: "25 5 * * 2-6"
9
10
 
10
11
  env:
11
12
  # This env var should enforce develop branch of all dependencies
@@ -14,15 +15,15 @@ env:
14
15
 
15
16
  jobs:
16
17
  weeknight-tests:
17
- # ubuntu-latest works since https://github.com/rbenv/ruby-build/releases/tag/v20220710 (July 10, 2022)
18
- # https://github.com/rbenv/ruby-build/discussions/1940
19
18
  runs-on: ubuntu-latest
20
19
  container:
21
- image: docker://nrel/openstudio:3.6.1
20
+ image: docker://nrel/openstudio:3.9.0
22
21
  steps:
23
- - uses: actions/checkout@v3
22
+ - uses: actions/checkout@v4
24
23
  - name: Update gems
25
- run: bundle update
24
+ run: |
25
+ bundle install
26
+ bundle update
26
27
  - name: Run Rspec
27
28
  run: bundle exec rspec
28
29
  # coveralls action docs: https://github.com/marketplace/actions/coveralls-github-action
data/.gitignore CHANGED
@@ -5,6 +5,7 @@ Gemfile.lock
5
5
  /gems
6
6
  /_yardoc/
7
7
  /coverage/
8
+ .coverage
8
9
  /doc/
9
10
  /pkg/
10
11
  /spec/reports/
@@ -21,3 +22,6 @@ Gemfile.lock
21
22
 
22
23
  # Ignore IDE files
23
24
  /.idea
25
+
26
+ # Mac OS X
27
+ *.DS_Store
data/CHANGELOG.md CHANGED
@@ -1,31 +1,66 @@
1
1
  # URBANopt Core Gem
2
2
 
3
+ ## Version 1.0.0
4
+
5
+ ## Exciting New Features 🎉
6
+
7
+ * Use openstudio 3.9.0 by @vtnate in https://github.com/urbanopt/urbanopt-core-gem/pull/60
8
+
9
+ ### Other Changes
10
+
11
+ * Used the pinned version of regex-parser in openstudio-extension. by @wenyikuang in https://github.com/urbanopt/urbanopt-core-gem/pull/61
12
+
13
+ ## New Contributors
14
+
15
+ * @wenyikuang made their first contribution in https://github.com/urbanopt/urbanopt-core-gem/pull/61
16
+
17
+ **Full Changelog**: https://github.com/urbanopt/urbanopt-core-gem/compare/v0.11.0...v1.0.0
18
+
19
+ ## Version 0.11.0
20
+
21
+ ### Exciting New Features 🎉
22
+
23
+ * More tests by @vtnate in https://github.com/urbanopt/urbanopt-core-gem/pull/55
24
+ * Os37 by @vtnate in https://github.com/urbanopt/urbanopt-core-gem/pull/56
25
+
26
+ ### Other Changes
27
+
28
+ * remove Jenkinsfile by @vtnate in https://github.com/urbanopt/urbanopt-core-gem/pull/53
29
+ * also run CI when a PR gets a review request by @vtnate in https://github.com/urbanopt/urbanopt-core-gem/pull/54
30
+
31
+ **Full Changelog**: https://github.com/urbanopt/urbanopt-core-gem/compare/v0.10.0...v0.11.0
32
+
3
33
  ## Version 0.10.0
34
+
4
35
  Date Range: 12/12/22 - 07/19/23
5
36
 
6
- - Update dependencies for OpenStudio 3.6.0
7
- - Update license and references to the license file
8
- - Remove outdated Travis CI config file
37
+ * Update dependencies for OpenStudio 3.6.0
38
+ * Update license and references to the license file
39
+ * Remove outdated Travis CI config file
9
40
 
10
41
  ## Version 0.9.0
42
+
11
43
  Date Range: 04/22/22 - 12/12/22
12
44
 
13
- - Update dependencies for OpenStudio 3.5.0
45
+ * Update dependencies for OpenStudio 3.5.0
14
46
 
15
47
  ## Version 0.8.0
48
+
16
49
  Date Range: 11/23/21 - 04/21/22
17
50
 
18
- - Fixed [#41]( https://github.com/urbanopt/urbanopt-core-gem/pull/41 ), Update licenses
51
+ * Fixed [#41]( https://github.com/urbanopt/urbanopt-core-gem/pull/41 ), Update licenses
19
52
 
20
53
  ## Version 0.7.0
54
+
21
55
  Date Range: 07/02/21 - 11/22/21
22
56
 
23
- - Updated dependencies for OpenStudio 3.3.0
57
+ * Updated dependencies for OpenStudio 3.3.0
24
58
 
25
59
  ## Version 0.6.1
60
+
26
61
  Date Range: 04/27/21 - 07/01/21
27
62
 
28
- - Fixed [#37]( https://github.com/urbanopt/urbanopt-core-gem/pull/37 ), update rubocop configs to v4
63
+ * Fixed [#37]( https://github.com/urbanopt/urbanopt-core-gem/pull/37 ), update rubocop configs to v4
29
64
 
30
65
  ## Version 0.6.0
31
66
 
@@ -37,8 +72,8 @@ Updated dependencies for OpenStudio 3.2.0 (Ruby 2.7)
37
72
 
38
73
  Date Range: 11/26/20 - 12/08/20
39
74
 
40
- - Fixed [#15]( https://github.com/urbanopt/urbanopt-core-gem/issues/15 ), Updated urbanopt-reopt-example-project to simulate and generate results for multiple PVs
41
- - Fixed [#30]( https://github.com/urbanopt/urbanopt-core-gem/issues/30 ), Update extension-gem dependency
75
+ * Fixed [#15]( https://github.com/urbanopt/urbanopt-core-gem/issues/15 ), Updated urbanopt-reopt-example-project to simulate and generate results for multiple PVs
76
+ * Fixed [#30]( https://github.com/urbanopt/urbanopt-core-gem/issues/30 ), Update extension-gem dependency
42
77
 
43
78
  ## Version 0.5.0
44
79
 
@@ -50,16 +85,15 @@ Updated dependencies for OpenStudio 3.1.0
50
85
 
51
86
  Date Range: 06/05/20 - 09/17/20
52
87
 
53
- - Fixed [#7]( https://github.com/urbanopt/urbanopt-core-gem/issues/7 ), Remove travis in favor of Jenkins
54
- - Fixed [#24]( https://github.com/urbanopt/urbanopt-core-gem/issues/24 ), Chore: Add TM to first mention URBANopt on LICENSE file and LICENSE section
55
-
88
+ * Fixed [#7]( https://github.com/urbanopt/urbanopt-core-gem/issues/7 ), Remove travis in favor of Jenkins
89
+ * Fixed [#24]( https://github.com/urbanopt/urbanopt-core-gem/issues/24 ), Chore: Add TM to first mention URBANopt on LICENSE file and LICENSE section
56
90
 
57
91
  ## Version 0.3.0
58
92
 
59
93
  Date Range: 03/31/20 - 06/04/20
60
94
 
61
- - Updated dependencies for ruby 2.5.x and OpenStudio 3.x
62
- - Remove old changelog script functionality in favor of new extension-gem functionality (can be run via rake task)
95
+ * Updated dependencies for ruby 2.5.x and OpenStudio 3.x
96
+ * Remove old changelog script functionality in favor of new extension-gem functionality (can be run via rake task)
63
97
 
64
98
  ## Version 0.2.0
65
99
 
@@ -68,9 +102,10 @@ URBANopt Core Gem version 0.2.0 include minor updates to dependencies and update
68
102
  Date Range: 12/27/19 - 03/31/20
69
103
 
70
104
  Closed Issues and Features
71
- - Fixed [#11]( https://github.com/urbanopt/urbanopt-core-gem/pull/11 ), Use URBANopt standard contributing guidelines
72
- - Fixed [#13]( https://github.com/urbanopt/urbanopt-core-gem/pull/13 ), updating copyrights
73
- - Fixed [#14]( https://github.com/urbanopt/urbanopt-core-gem/pull/14 ), set ruby and extension gem versions
105
+
106
+ * Fixed [#11]( https://github.com/urbanopt/urbanopt-core-gem/pull/11 ), Use URBANopt standard contributing guidelines
107
+ * Fixed [#13]( https://github.com/urbanopt/urbanopt-core-gem/pull/13 ), updating copyrights
108
+ * Fixed [#14]( https://github.com/urbanopt/urbanopt-core-gem/pull/14 ), set ruby and extension gem versions
74
109
 
75
110
  ## Version 0.1.1 (unreleased)
76
111
 
data/CONTRIBUTING.md CHANGED
@@ -8,7 +8,7 @@ The contribution process for URBANopt is composed of three steps:
8
8
 
9
9
  ## 1. Send consent email
10
10
 
11
- In order for us to distribute your code as part of URBANopt under the URBANopt SDK [license](https://github.com/urbanopt/urbanopt-scenario-gem/blob/develop/LICENSE.md), we’ll need your consent. An email acknowledging your understanding of these terms and agreeing to them is all that will be asked of any contributor. Send an email to the URBANopt project manager ([see below](#documentation) for the address) including the following text and a list of co-contributors (if any):
11
+ In order for us to distribute your code as part of URBANopt under the URBANopt SDK [license](https://github.com/urbanopt/urbanopt-core-gem/blob/develop/LICENSE.md), we’ll need your consent. An email acknowledging your understanding of these terms and agreeing to them is all that will be asked of any contributor. Send an email to the URBANopt project manager ([see below](#documentation) for the address) including the following text and a list of co-contributors (if any):
12
12
 
13
13
  *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Sustainable Energy, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
14
14
 
@@ -16,7 +16,7 @@ Once we have your consent on file, you’ll only need to redo it if conditions c
16
16
 
17
17
  ## 2. Scope agreement and timeline commitment
18
18
 
19
- If your contribution is small (e.g. a bug fix), simply submit your contribution via GitHub. If you find a bug, first make sure it is not an already known issue, then report it in the GitHub [issue tracker](https://github.com/urbanopt/urbanopt-scenario-gem/issues) for this repository. If your contribution is larger (e.g. a new feature or new functionality/capability), we’ll need to evaluate your proposed contribution first. We may ask you to revise your materials and make changes to it, which we will then re-review.
19
+ If your contribution is small (e.g. a bug fix), simply submit your contribution via GitHub. If you find a bug, first make sure it is not an already known issue, then report it in the GitHub [issue tracker](https://github.com/urbanopt/urbanopt-core-gem/issues) for this repository. If your contribution is larger (e.g. a new feature or new functionality/capability), we’ll need to evaluate your proposed contribution first. We may ask you to revise your materials and make changes to it, which we will then re-review.
20
20
 
21
21
  ## 3. Technical contribution process
22
22
 
data/Gemfile CHANGED
@@ -11,11 +11,6 @@ gemspec
11
11
  # checkout the latest version (develop) from github.
12
12
  allow_local = ENV['FAVOR_LOCAL_GEMS']
13
13
 
14
- # pin this dependency to avoid unicode_normalize error
15
- gem 'addressable', '2.8.1'
16
- # pin this dependency to avoid using racc dependency (which has native extensions)
17
- gem 'parser', '3.2.2.2'
18
-
19
14
  # if allow_local && File.exist?('../OpenStudio-extension-gem')
20
15
  # gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
21
16
  # elsif allow_local
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
data/README.md CHANGED
@@ -13,19 +13,23 @@ Add this line to your application's Gemfile:
13
13
  gem 'urbanopt-core'
14
14
  ```
15
15
 
16
- And then execute:
16
+ And then in the terminal, execute:
17
17
 
18
- $ bundle
18
+ ```terminal
19
+ bundle
20
+ ```
19
21
 
20
22
  Or install it yourself as:
21
23
 
22
- $ gem install 'urbanopt-core'
24
+ ```terminal
25
+ gem install 'urbanopt-core'
26
+ ```
23
27
 
24
28
  ## Usage
25
29
 
26
30
  This Extension Gem stores the base information needed for all derivative URBANopt extension gems.
27
31
 
28
- # Releasing
32
+ ## Releasing
29
33
 
30
34
  * Update CHANGELOG.md
31
35
  * Run `rake rubocop:auto_correct`
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  # *********************************************************************************
3
- # URBANopt (tm), Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
+ # URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
4
4
  # contributors. All rights reserved.
5
5
 
6
6
  # Redistribution and use in source and binary forms, with or without modification,
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ Exclude:
3
+ - 'spec/test_measures/**/*'
4
+ require: rubocop-performance
5
+ inherit_from:
6
+ - http://s3.amazonaws.com/openstudio-resources/styles/rubocop_v4.yml
@@ -0,0 +1,42 @@
1
+ URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
2
+ contributors. All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ Redistributions of source code must retain the above copyright notice, this list
8
+ of conditions and the following disclaimer.
9
+
10
+ Redistributions in binary form must reproduce the above copyright notice, this
11
+ list of conditions and the following disclaimer in the documentation and/or other
12
+ materials provided with the distribution.
13
+
14
+ Neither the name of the copyright holder nor the names of its contributors may be
15
+ used to endorse or promote products derived from this software without specific
16
+ prior written permission.
17
+
18
+ Redistribution of this software, without modification, must refer to the software
19
+ by the same designation. Redistribution of a modified version of this software
20
+ (i) may not refer to the modified version by the same designation, or by any
21
+ confusingly similar designation, and (ii) must refer to the underlying software
22
+ originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
23
+ the term “URBANopt”, or any confusingly similar designation may not be used to
24
+ refer to any modified version of this software or any modified version of the
25
+ underlying software originally provided by Alliance without the prior written
26
+ consent of Alliance.
27
+
28
+ The name of the copyright holder(s), any contributors, the United States Government,
29
+ the United States Department of Energy, or any of their employees may not be used to
30
+ endorse or promote products derived from this software without specific prior written
31
+ permission from the respective party.
32
+
33
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND
34
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
35
+ OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
36
+ THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED STATES
37
+ DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT,
38
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
39
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
40
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
41
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
42
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,40 @@
1
+
2
+
3
+ ###### (Automatically generated documentation)
4
+
5
+ # URBANopt Core Test Measure
6
+
7
+ ## Description
8
+ This measure is just a test of Urbanopt Core measure. it adds a meter at the requested reporting frequency.
9
+
10
+ ## Modeler Description
11
+ The measure just passes in the string and does not validate that it is a proper meter name. It is up to the user to know this or to look at the .mdd file from a previous simulation run.
12
+
13
+ ## Measure Type
14
+ ModelMeasure
15
+
16
+ ## Taxonomy
17
+
18
+
19
+ ## Arguments
20
+
21
+
22
+ ### Enter Meter Name
23
+
24
+ **Name:** meter_name,
25
+ **Type:** String,
26
+ **Units:** ,
27
+ **Required:** true,
28
+ **Model Dependent:** false
29
+
30
+ ### Reporting Frequency
31
+
32
+ **Name:** reporting_frequency,
33
+ **Type:** Choice,
34
+ **Units:** ,
35
+ **Required:** true,
36
+ **Model Dependent:** false
37
+
38
+
39
+
40
+
@@ -0,0 +1,42 @@
1
+ <%#= README.md.erb is used to auto-generate README.md. %>
2
+ <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
+ ###### (Automatically generated documentation)
4
+
5
+ # <%= name %>
6
+
7
+ ## Description
8
+ <%= description %>
9
+
10
+ ## Modeler Description
11
+ <%= modelerDescription %>
12
+
13
+ ## Measure Type
14
+ <%= measureType %>
15
+
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
+
19
+ ## Arguments
20
+
21
+ <% arguments.each do |argument| %>
22
+ ### <%= argument[:display_name] %>
23
+ <%= argument[:description] %>
24
+ **Name:** <%= argument[:name] %>,
25
+ **Type:** <%= argument[:type] %>,
26
+ **Units:** <%= argument[:units] %>,
27
+ **Required:** <%= argument[:required] %>,
28
+ **Model Dependent:** <%= argument[:model_dependent] %>
29
+ <% end %>
30
+
31
+ <% if arguments.size == 0 %>
32
+ <%= "This measure does not have any user arguments" %>
33
+ <% end %>
34
+
35
+ <% if outputs.size > 0 %>
36
+ ## Outputs
37
+ <% output_names = [] %>
38
+ <% outputs.each do |output| %>
39
+ <% output_names << output[:display_name] %>
40
+ <% end %>
41
+ <%= output_names.join(", ") %>
42
+ <% end %>
@@ -0,0 +1,109 @@
1
+ # *********************************************************************************
2
+ # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://github.com/urbanopt/urbanopt-core-gem/blob/develop/LICENSE.md
4
+ # *********************************************************************************
5
+
6
+ # see the URL below for information on how to write OpenStudio measures
7
+ # http://openstudio.nrel.gov/openstudio-measure-writing-guide
8
+
9
+ # see the URL below for access to C++ documentation on mondel objects (click on "model" in the main window to view model objects)
10
+ # http://openstudio.nrel.gov/sites/openstudio.nrel.gov/files/nv_data/cpp_documentation_it/model/html/namespaces.html
11
+
12
+ # start the measure
13
+ class UrbanoptCoreTestMeasure < OpenStudio::Measure::ModelMeasure
14
+ # define the name that a user will see, this method may be deprecated as
15
+ # the display name in PAT comes from the name field in measure.xml
16
+ def name
17
+ return 'URBANopt Core Test Measure'
18
+ end
19
+
20
+ # human readable description
21
+ def description
22
+ return 'This measure is just a test of Urbanopt Core measure. it adds a meter at the requested reporting frequency.'
23
+ end
24
+
25
+ # human readable description of modeling approach
26
+ def modeler_description
27
+ return 'The measure just passes in the string and does not validate that it is a proper meter name. It is up to the user to know this or to look at the .mdd file from a previous simulation run.'
28
+ end
29
+
30
+ # define the arguments that the user will input
31
+ def arguments(model)
32
+ args = OpenStudio::Measure::OSArgumentVector.new
33
+
34
+ # make an argument for the meter name
35
+ meter_name = OpenStudio::Measure::OSArgument.makeStringArgument('meter_name', true)
36
+ meter_name.setDisplayName('Enter Meter Name')
37
+ meter_name.setDefaultValue('Electricity:Facility')
38
+ args << meter_name
39
+
40
+ # make an argument for the electric tariff
41
+ reporting_frequency_chs = OpenStudio::StringVector.new
42
+ reporting_frequency_chs << 'detailed'
43
+ reporting_frequency_chs << 'timestep'
44
+ reporting_frequency_chs << 'hourly'
45
+ reporting_frequency_chs << 'daily'
46
+ reporting_frequency_chs << 'monthly'
47
+ reporting_frequency = OpenStudio::Measure::OSArgument.makeChoiceArgument('reporting_frequency', reporting_frequency_chs, true)
48
+ reporting_frequency.setDisplayName('Reporting Frequency')
49
+ reporting_frequency.setDefaultValue('hourly')
50
+ args << reporting_frequency
51
+
52
+ return args
53
+ end
54
+
55
+ # define what happens when the measure is run
56
+ def run(model, runner, user_arguments)
57
+ super(model, runner, user_arguments)
58
+
59
+ # use the built-in error checking
60
+ if !runner.validateUserArguments(arguments(model), user_arguments)
61
+ return false
62
+ end
63
+
64
+ # assign the user inputs to variables
65
+ meter_name = runner.getStringArgumentValue('meter_name', user_arguments)
66
+ reporting_frequency = runner.getStringArgumentValue('reporting_frequency', user_arguments)
67
+
68
+ # check the user_name for reasonableness
69
+ if meter_name == ''
70
+ runner.registerError('No meter name was entered.')
71
+ return false
72
+ end
73
+
74
+ meters = model.getOutputMeters
75
+ # reporting initial condition of model
76
+ runner.registerInitialCondition("The model started with #{meters.size} meter objects.")
77
+
78
+ # flag to add meter
79
+ add_flag = true
80
+
81
+ # OpenStudio doesn't seemt to like two meters of the same name, even if they have different reporting frequencies.
82
+ meters.each do |meter|
83
+ if meter.name == meter_name
84
+ runner.registerWarning("A meter named #{meter_name} already exists. One will not be added to the model.")
85
+ if meter.reportingFrequency != reporting_frequency
86
+ meter.setReportingFrequency(reporting_frequency)
87
+ runner.registerInfo("Changing reporting frequency of existing meter to #{reporting_frequency}.")
88
+ end
89
+ add_flag = false
90
+ end
91
+ end
92
+
93
+ if add_flag
94
+ meter = OpenStudio::Model::OutputMeter.new(model)
95
+ meter.setName(meter_name)
96
+ meter.setReportingFrequency(reporting_frequency)
97
+ runner.registerInfo("Adding meter for #{meter.name} reporting #{reporting_frequency}")
98
+ end
99
+
100
+ meters = model.getOutputMeters
101
+ # reporting final condition of model
102
+ runner.registerFinalCondition("The model finished with #{meters.size} meter objects.")
103
+
104
+ return true
105
+ end
106
+ end
107
+
108
+ # this allows the measure to be use by the application
109
+ UrbanoptCoreTestMeasure.new.registerWithApplication
@@ -0,0 +1,117 @@
1
+ <?xml version="1.0"?>
2
+ <measure>
3
+ <schema_version>3.1</schema_version>
4
+ <name>urbanopt_core_test_measure</name>
5
+ <uid>3e11f20d-88a8-44eb-a951-4f8cf8a09ccd</uid>
6
+ <version_id>a8297a21-bb02-432c-910e-69222d8fa0f6</version_id>
7
+ <version_modified>2024-11-08T17:31:22Z</version_modified>
8
+ <xml_checksum>0CA4D54C</xml_checksum>
9
+ <class_name>UrbanoptCoreTestMeasure</class_name>
10
+ <display_name>URBANopt Core Test Measure</display_name>
11
+ <description>This measure is just a test of Urbanopt Core measure. it adds a meter at the requested reporting frequency.</description>
12
+ <modeler_description>The measure just passes in the string and does not validate that it is a proper meter name. It is up to the user to know this or to look at the .mdd file from a previous simulation run.</modeler_description>
13
+ <arguments>
14
+ <argument>
15
+ <name>meter_name</name>
16
+ <display_name>Enter Meter Name</display_name>
17
+ <type>String</type>
18
+ <required>true</required>
19
+ <model_dependent>false</model_dependent>
20
+ <default_value>Electricity:Facility</default_value>
21
+ </argument>
22
+ <argument>
23
+ <name>reporting_frequency</name>
24
+ <display_name>Reporting Frequency</display_name>
25
+ <type>Choice</type>
26
+ <required>true</required>
27
+ <model_dependent>false</model_dependent>
28
+ <default_value>hourly</default_value>
29
+ <choices>
30
+ <choice>
31
+ <value>detailed</value>
32
+ <display_name>detailed</display_name>
33
+ </choice>
34
+ <choice>
35
+ <value>timestep</value>
36
+ <display_name>timestep</display_name>
37
+ </choice>
38
+ <choice>
39
+ <value>hourly</value>
40
+ <display_name>hourly</display_name>
41
+ </choice>
42
+ <choice>
43
+ <value>daily</value>
44
+ <display_name>daily</display_name>
45
+ </choice>
46
+ <choice>
47
+ <value>monthly</value>
48
+ <display_name>monthly</display_name>
49
+ </choice>
50
+ </choices>
51
+ </argument>
52
+ </arguments>
53
+ <outputs />
54
+ <provenances />
55
+ <tags>
56
+ <tag>Reporting.QAQC</tag>
57
+ </tags>
58
+ <attributes>
59
+ <attribute>
60
+ <name>Measure Type</name>
61
+ <value>ModelMeasure</value>
62
+ <datatype>string</datatype>
63
+ </attribute>
64
+ <attribute>
65
+ <name>Measure Function</name>
66
+ <value>Measure</value>
67
+ <datatype>string</datatype>
68
+ </attribute>
69
+ <attribute>
70
+ <name>Requires EnergyPlus Results</name>
71
+ <value>false</value>
72
+ <datatype>boolean</datatype>
73
+ </attribute>
74
+ <attribute>
75
+ <name>Uses SketchUp API</name>
76
+ <value>false</value>
77
+ <datatype>boolean</datatype>
78
+ </attribute>
79
+ </attributes>
80
+ <files>
81
+ <file>
82
+ <filename>LICENSE.md</filename>
83
+ <filetype>md</filetype>
84
+ <usage_type>license</usage_type>
85
+ <checksum>D2F2365A</checksum>
86
+ </file>
87
+ <file>
88
+ <filename>README.md</filename>
89
+ <filetype>md</filetype>
90
+ <usage_type>readme</usage_type>
91
+ <checksum>0EA09A41</checksum>
92
+ </file>
93
+ <file>
94
+ <filename>README.md.erb</filename>
95
+ <filetype>erb</filetype>
96
+ <usage_type>readmeerb</usage_type>
97
+ <checksum>703C9964</checksum>
98
+ </file>
99
+ <file>
100
+ <version>
101
+ <software_program>OpenStudio</software_program>
102
+ <identifier>2.0.0</identifier>
103
+ <min_compatible>2.0.0</min_compatible>
104
+ </version>
105
+ <filename>measure.rb</filename>
106
+ <filetype>rb</filetype>
107
+ <usage_type>script</usage_type>
108
+ <checksum>7C4E6482</checksum>
109
+ </file>
110
+ <file>
111
+ <filename>urbanopt_core_test_measure_test.rb</filename>
112
+ <filetype>rb</filetype>
113
+ <usage_type>test</usage_type>
114
+ <checksum>FC45981D</checksum>
115
+ </file>
116
+ </files>
117
+ </measure>
@@ -0,0 +1,83 @@
1
+ # *********************************************************************************
2
+ # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://github.com/urbanopt/urbanopt-core-gem/blob/develop/LICENSE.md
4
+ # *********************************************************************************
5
+
6
+ require 'openstudio'
7
+ require 'openstudio/measure/ShowRunnerOutput'
8
+ require 'fileutils'
9
+
10
+ require_relative '../measure'
11
+ require 'minitest/autorun'
12
+
13
+ class UrbanoptCoreTestMeasureTest < Minitest::Test
14
+ def test_urbanopt_core_test_measure_bad_input
15
+ # create an instance of the measure
16
+ measure = UrbanoptCoreTestMeasure.new
17
+
18
+ # create an instance of a runner
19
+ runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
20
+
21
+ # make an empty model
22
+ model = OpenStudio::Model::Model.new
23
+
24
+ # get arguments and test that they are what we are expecting
25
+ arguments = measure.arguments(model)
26
+ assert_equal(2, arguments.size)
27
+ assert_equal('meter_name', arguments[0].name)
28
+ assert_equal('reporting_frequency', arguments[1].name)
29
+
30
+ # set argument values to bad values and run the measure
31
+ argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
32
+ meter_name = arguments[0].clone
33
+ assert(meter_name.setValue(''))
34
+ argument_map['meter_name'] = meter_name
35
+ measure.run(model, runner, argument_map)
36
+ result = runner.result
37
+ assert(result.value.valueName == 'Fail')
38
+ end
39
+
40
+ def test_urbanopt_core_test_measure_good_input
41
+ # create an instance of the measure
42
+ measure = UrbanoptCoreTestMeasure.new
43
+
44
+ # create an instance of a runner
45
+ runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
46
+
47
+ # make an empty model
48
+ model = OpenStudio::Model::Model.new
49
+
50
+ # get arguments and test that they are what we are expecting
51
+ arguments = measure.arguments(model)
52
+
53
+ # set argument values to good values and run the measure on model with spaces
54
+ argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
55
+ meter_name = arguments[0].clone
56
+ assert(meter_name.setValue('JustATest'))
57
+ argument_map['meter_name'] = meter_name
58
+ reporting_frequency = arguments[1].clone
59
+ assert(reporting_frequency.setValue('hourly'))
60
+ argument_map['reporting_frequency'] = reporting_frequency
61
+ measure.run(model, runner, argument_map)
62
+ result = runner.result
63
+ show_output(result)
64
+ assert(result.value.valueName == 'Success')
65
+ assert(result.warnings.empty?)
66
+ assert(result.info.size == 1)
67
+
68
+ # attempt to add a second meter
69
+ # create an instance of the measure
70
+ measure = UrbanoptCoreTestMeasure.new
71
+
72
+ # create an instance of a runner
73
+ runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
74
+
75
+ measure.run(model, runner, argument_map)
76
+
77
+ result = runner.result
78
+ show_output(result)
79
+ assert(result.value.valueName == 'Success')
80
+ assert(result.warnings.size == 1)
81
+ assert(result.info.empty?)
82
+ end
83
+ end
@@ -5,6 +5,6 @@
5
5
 
6
6
  module URBANopt
7
7
  module Core
8
- VERSION = '0.10.0'.freeze
8
+ VERSION = '1.0.0'.freeze
9
9
  end
10
10
  end
@@ -19,13 +19,13 @@ Gem::Specification.new do |spec|
19
19
  spec.bindir = 'exe'
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
- spec.required_ruby_version = '~> 2.7.0'
22
+ # We support exactly Ruby v3.2.2 because os-extension requires bundler==2.4.10 and that requires Ruby 3.2.2: https://stdgems.org/bundler/
23
+ # It would be nice to be able to use newer patches of Ruby 3.2, which would require os-extension to relax its dependency on bundler.
24
+ spec.required_ruby_version = '3.2.2'
23
25
 
24
- spec.add_development_dependency 'bundler', '~> 2.1'
25
- spec.add_development_dependency 'rake', '~> 13.0'
26
- spec.add_development_dependency 'rspec', '~> 3.9'
27
- spec.add_development_dependency 'simplecov', '~> 0.18.2'
28
- spec.add_development_dependency 'simplecov-lcov', '~> 0.8.0'
26
+ spec.add_development_dependency 'rspec', '~> 3.13'
27
+ spec.add_development_dependency 'simplecov', '0.22.0'
28
+ spec.add_development_dependency 'simplecov-lcov', '0.8.0'
29
29
 
30
- spec.add_dependency 'openstudio-extension', '~> 0.6.1'
30
+ spec.add_dependency 'openstudio-extension', '~> 0.8.3'
31
31
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanopt-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Macumber
@@ -9,76 +9,48 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-07-20 00:00:00.000000000 Z
12
+ date: 2025-01-22 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '2.1'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '2.1'
28
- - !ruby/object:Gem::Dependency
29
- name: rake
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '13.0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '13.0'
42
14
  - !ruby/object:Gem::Dependency
43
15
  name: rspec
44
16
  requirement: !ruby/object:Gem::Requirement
45
17
  requirements:
46
18
  - - "~>"
47
19
  - !ruby/object:Gem::Version
48
- version: '3.9'
20
+ version: '3.13'
49
21
  type: :development
50
22
  prerelease: false
51
23
  version_requirements: !ruby/object:Gem::Requirement
52
24
  requirements:
53
25
  - - "~>"
54
26
  - !ruby/object:Gem::Version
55
- version: '3.9'
27
+ version: '3.13'
56
28
  - !ruby/object:Gem::Dependency
57
29
  name: simplecov
58
30
  requirement: !ruby/object:Gem::Requirement
59
31
  requirements:
60
- - - "~>"
32
+ - - '='
61
33
  - !ruby/object:Gem::Version
62
- version: 0.18.2
34
+ version: 0.22.0
63
35
  type: :development
64
36
  prerelease: false
65
37
  version_requirements: !ruby/object:Gem::Requirement
66
38
  requirements:
67
- - - "~>"
39
+ - - '='
68
40
  - !ruby/object:Gem::Version
69
- version: 0.18.2
41
+ version: 0.22.0
70
42
  - !ruby/object:Gem::Dependency
71
43
  name: simplecov-lcov
72
44
  requirement: !ruby/object:Gem::Requirement
73
45
  requirements:
74
- - - "~>"
46
+ - - '='
75
47
  - !ruby/object:Gem::Version
76
48
  version: 0.8.0
77
49
  type: :development
78
50
  prerelease: false
79
51
  version_requirements: !ruby/object:Gem::Requirement
80
52
  requirements:
81
- - - "~>"
53
+ - - '='
82
54
  - !ruby/object:Gem::Version
83
55
  version: 0.8.0
84
56
  - !ruby/object:Gem::Dependency
@@ -87,14 +59,14 @@ dependencies:
87
59
  requirements:
88
60
  - - "~>"
89
61
  - !ruby/object:Gem::Version
90
- version: 0.6.1
62
+ version: 0.8.3
91
63
  type: :runtime
92
64
  prerelease: false
93
65
  version_requirements: !ruby/object:Gem::Requirement
94
66
  requirements:
95
67
  - - "~>"
96
68
  - !ruby/object:Gem::Version
97
- version: 0.6.1
69
+ version: 0.8.3
98
70
  description: URBANopt core library and measures
99
71
  email:
100
72
  - nicholas.long@nrel.gov
@@ -102,6 +74,7 @@ executables: []
102
74
  extensions: []
103
75
  extra_rdoc_files: []
104
76
  files:
77
+ - ".github/release.yml"
105
78
  - ".github/workflows/nightly_build.yml"
106
79
  - ".gitignore"
107
80
  - ".rspec"
@@ -109,7 +82,6 @@ files:
109
82
  - CHANGELOG.md
110
83
  - CONTRIBUTING.md
111
84
  - Gemfile
112
- - Jenkinsfile
113
85
  - LICENSE.md
114
86
  - README.md
115
87
  - Rakefile
@@ -119,6 +91,13 @@ files:
119
91
  - doc_templates/copyright_js.txt
120
92
  - doc_templates/copyright_ruby.txt
121
93
  - lib/measures/.gitkeep
94
+ - lib/measures/.rubocop.yml
95
+ - lib/measures/urbanopt-core-test-measure/LICENSE.md
96
+ - lib/measures/urbanopt-core-test-measure/README.md
97
+ - lib/measures/urbanopt-core-test-measure/README.md.erb
98
+ - lib/measures/urbanopt-core-test-measure/measure.rb
99
+ - lib/measures/urbanopt-core-test-measure/measure.xml
100
+ - lib/measures/urbanopt-core-test-measure/tests/urbanopt_core_test_measure_test.rb
122
101
  - lib/urbanopt/core.rb
123
102
  - lib/urbanopt/core/extension.rb
124
103
  - lib/urbanopt/core/feature.rb
@@ -134,16 +113,16 @@ require_paths:
134
113
  - lib
135
114
  required_ruby_version: !ruby/object:Gem::Requirement
136
115
  requirements:
137
- - - "~>"
116
+ - - '='
138
117
  - !ruby/object:Gem::Version
139
- version: 2.7.0
118
+ version: 3.2.2
140
119
  required_rubygems_version: !ruby/object:Gem::Requirement
141
120
  requirements:
142
121
  - - ">="
143
122
  - !ruby/object:Gem::Version
144
123
  version: '0'
145
124
  requirements: []
146
- rubygems_version: 3.1.4
125
+ rubygems_version: 3.4.10
147
126
  signing_key:
148
127
  specification_version: 4
149
128
  summary: URBANopt core library and measures
data/Jenkinsfile DELETED
@@ -1,10 +0,0 @@
1
- //Jenkins pipelines are stored in shared libraries. Please see: https://github.com/NREL/cbci_jenkins_libs
2
-
3
- @Library('cbci_shared_libs') _
4
-
5
- // Build for PR to develop branch only.
6
- if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
7
-
8
- openstudio_urbanopt_extension_gems()
9
-
10
- }