-
Notifications
You must be signed in to change notification settings - Fork 264
Repository Organization
Historically, IDAES has seen a large number of contributions of code developed by internal users for application specific purposes which lacks the necessary level of documentation and testing to be considered fully maintainable by the core IDAES Developer team. Thus, it has become necessary to enforce a repository structure that clearly separates the core IDAES code which is maintained by the core developer team from that which is contributed and maintained by users (either internal or external to the IDAES project). To achieve this, the IDAES repository is organized with a limited number of top-level folders which separate the code based on usage and level of support from the core developer team.
-
core
- this folder contains the core code of the IDAES-IP toolset. -
models
- this folder contains all standard model libraries. -
commands
- this folder contains any code related to the IDAES CLI. This is separate foridaes.core
to reduce import times. -
tests
- this folder contains any top-level tests required by the IDAES CI suite.
-
apps
- this folder contains any tools contributed by users which are not ready for inclusion inidaes.core
-
models_extra
- this folder contains any models contributed by users that are not ready for inclusion inidaes.models
.
Generally, a new contribution by a user will be placed in either apps
(if it is a tool) or models_extra
(if it is a model) unless it clearly demonstrates the following:
- Code must be generally applicable (i.e. if cannot contain anything case specific) and meet all core IDAES standards
- Extensive testing to ensure functionality is maintained
- Full documentation of the code and how to use it
- Sufficient in-line documentation to allow IDAES Core developer team to take over maintenance of code
- Of sufficient general interest to warrant effort from core developer team to maintain (as much as we would like to support everything, we only have so much time and cannot support everything ourselves).
Code from apps
and models_extra
can be promoted at any time if it is improved to meet the above standards.
All code in core
and models
is guaranteed to be fully maintained by the core developer team - i.e. if something breaks it is the core developer teams responsibility to fix it. Thus, in order to be included in these folders, the code must be of sufficient quality for the core developer team to be able to maintain without consulting the original developer, and of sufficient general interest that the core developer team is willing to guarantee that it will be maintained (we ae a small team and can't maintain everything by ourselves).
The responsibility for maintaining code in the apps
and models_extra
folders falls primarily upon the users of that code (either the original contributor or later users of the code). Each piece of code should have one or more assigned "code owners" who take responsibility for maintaining the code and who will be called upon to address any issues which arise. The core developer team will take responsibility for notifying the code owners of any issues that are identified (either through failing tests or posted issues) and may assist with fixing any issues, but primary responsibility will fall upon the code owners. If you are using code found in either apps
or models_extra
, you are strongly encouraged to volunteer to be a code owner in order to ensure that the code you use is fully maintained.
- Set up pre-commit
- Run pytest with coverage report
- Run Pylint locally
- Update the Pyomo version
- Install Pyomo from a local Git clone
- Set up GitHub authentication with GCM
- Handle warnings in pytest
- Set up and run performance tests