-
Notifications
You must be signed in to change notification settings - Fork 235
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.
- 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