Releases: nasa/fmdtools
V2.3.0
The v2.4.0 release incorporates a new example model--the airspacelib Airspace Resilience Modelling Library. This new example has three major components:
base: a library of base constructs for airspace modelling.wildfireresponse: a model of multiple drones fighting a wildfire from a set of base(s).contingencymanagement: a model of a drone that must fly in a shared airspace with places where it can and cannot land
This demonstrates the ability to extend fmdtools simulation classes to build your own domain-specific modelling and simulation libraries, as well as the ability to use fmdtools for agent-based-modelling-type activities of complex Systems of Systems.
In addition to this model, fmdtools now also ships with improved ability to perform network analysis on graph architectures and can interface with (i.e., export to) draw.io diagrams. See:
- Add centrality metrics and graph summary methods by @zainkhatri in #32
Thank you:
Thank you to @ydoccr and Seydou Mbaye for your contributions to the airspacelib models
Thank you to @zainkhatri for improvements to graphing capabilities.
Full Changelog: v2.2.3...v2.3.0
Release Checklist
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | Merged in change from main |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | ||
| 7a | "Toggle CodeFactor so it updates" | x | 22 issues to 37 issues |
| 7b | "Check upload to PyPi" | x |
V2.2.3
Version 2.2.3 is a bug fix release that improves MutliFlow and related classes (CommsFlow, Environment) copying behavior, which was preventing fault simulation (where copying occurs) in some use-cases.
Full Changelog: v2.2.2...v2.2.3
Release checklist:
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | x |
| 2 | Update version numbers in appropriate files | x | x |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | x |
| 2b | "Run a repository-wide search for the version number" | x | x |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | x |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | x |
| 5 | Create a release in GitHub | x | x |
| 5a | "incorporate a narrative summary of features and changes" | x | x |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | N/A |
| 6 | "Update project plan" | x | x |
| 6a | "Include any changed dependencies" | x | x |
| 6b | "Include version in schedule" | x | x |
| 6c | "Identify and include additional changes/activities" | x | x |
| 7 | Update/check external CI resources as needed | x | No new issues |
| 7a | "Toggle CodeFactor so it updates" | x | x |
| 7b | "Check upload to PyPi" | x |
v2.2.2
Summary
This release is a refinement of the 2.2 version, with some minor improvements to library behavior and examples, including:
- fmdtools Container classes now enforce correct types on assignment, ensuring that int/float/string values are converted int/float/string values when assigned.
- fmdtools examples now use numpy types for floats and ints in most cases
- fmdtools examples now use static_behavior and dynamic_behavior for Component classes when possible, to exemplify its use in a ComponentArchitecture (as opposed to calling behavior from the containing object/class)
- Simulation tables now have improved representations in tabulate.py by @ydoccr in #29
Full Changelog: v2.2.1...v2.2.2
Release Checklist:
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | x |
| 2 | Update version numbers in appropriate files | x | Changed to 2.2.2, updated slide pdfs |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | Fixed test setup issues |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | Still has old pdf for tutorial from 2.2.0 |
| 5 | Create a release in GitHub | x | |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | Minor syntax issues added: https://www.codefactor.io/repository/github/nasa/fmdtools/commit/bee08104884f8a490478e3956b3d6caf87753914/main |
| 7b | "Check upload to PyPi" | x |
v2.2.1
Version 2.2.1 has no major updates other than an update the fmdtools tutorial slides to better explain object-oriented programming concepts.
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | Only docs build run since only docs changed |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | Mainly just an update to tutorial |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | N/A | |
| 7b | "Check upload to PyPi" | x |
v2.2.0
fmdtools v2.2.0 brings a bunch of new features as well as improved, more maintainable back-end classes for modeling and simulation.
As a major release, this comes with some breaking changes which may require updated to both syntaxes and dependencies on the users end. Particularly, the project has made the move to more recent versions of Python and numpy and has changed syntaxes related to Simulable classes (e.g., Function, FunctionArchitecture) as well as keyword arguments to propagate.
This release has also come with some major improvements to fmdtools usage, including the ability to readily simulate all Blocks/Architectures directly (without using a propagate) method, transparent and consistent console representations for all modelling classes, Simulation time objects that are more useful for defining behavior, removing the requirement to give classes slots, and (in general) more consistent behavior throughout.
See a full list of what has changed below:
What's Changed
- All Simulables and Containers now have a uniform, consistent text-based representation in the console that can be used to verify state/attribute information. This was the case for certain classes (Function, FunctionArchitectures, Flow, etc), but not for others and there was no standard way to display this information. See: https://babelfish.arc.nasa.gov/jira/browse/RAD-523
- Removal of the time argument to behavior methods. Instead, the internal Time object is updated consistently such that this argument is not needed. See: https://babelfish.arc.nasa.gov/jira/browse/RAD-514, https://babelfish.arc.nasa.gov/jira/browse/RAD-522
- All Simulables (blocks, architectures, and their subclasses) can now be simulated using the call method, as in:
mdl = ModelClass() mdl(time=5.0)
will instantiate the model and simulate it until time t=5.0. see: https://babelfish.arc.nasa.gov/jira/browse/RAD-513 - All simulables now may be simulated in both dynamic and static configurations with
dynamic_behaviorandstatic_behaviormethods, see: https://babelfish.arc.nasa.gov/jira/browse/RAD-524 - Addition of doctests for all simulables (Components, Actions, etc and their architectures) using the above syntax
- Refactoring of the propagate module to use a class-based architecture for simulations. This gives us more flexibility for sampling faults in the future, since it gives us better underlying interfaces (Simulation objects as opposed to helper methods) that have defined doctests describing their behavior. We also now have more control/traceability of simulation arguments/settings used by the module. See: https://babelfish.arc.nasa.gov/jira/browse/RAD-525, https://babelfish.arc.nasa.gov/jira/browse/RAD-477
*Auto-generation of the slots attribute of fmdtools classes, making it so the user does not need to define these slots themselves, which was a confusing syntax. See: https://babelfish.arc.nasa.gov/jira/browse/RAD-528 - Incorporation of feature, state, point, and collection definition into the Coords class as opposed to the CoordsParam. This came in conjunction with the cleanup and unification of the BaseObject backend, which removed "roledict" attributes (which were attributes defined in an external parameter). The result is that Coords can be more readily defined with less syntax, often not needing an external parameter to be defined fully. Note that this may break some usages that may need to be adapted or re-icorporated into Coords. See: https://babelfish.arc.nasa.gov/jira/browse/RAD-529
- The desired_result argument has been renamed to to_return
*The find_result method is now called classify and optionally takes the nominal history (rather than the full history) and the scenario as input. The full history is no longer provide since the faulty/current history is already a part of the Simulable object at mdl.h and because the history input to this method previously had inconsistent behavior (sometimes just the nominal history, sometimes both the nominal and current history) that made it difficult to work with. - Ability to export graphs as draw.io diagrams by @zainkhatri in #25
- fmdtools 2.2.0 now depends on more recent packages and versions of Python (3.11-3.13) and packages (numpy >2.0 and recordclass==0.23.1). Future point releases will improve the integration with numpy 2.0+
See the main issue for more description: https://babelfish.arc.nasa.gov/jira/browse/RAD-519
Full Changelog: v2.1.3...v2.2.0
Release Checklist
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | Synced in zain's contributions |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | Updated required depencencies also (numpy>2.0, recordclass=0.23.1) |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | Tests pass |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | 36 issues->19 issues (5 new) |
| 7b | "Check upload to PyPi" | x |
fmdtools v2.1.3
This release brings two main changes to fmdtools:
-
The ability to have GeomArchitectures with Geometries that change position and shape. This is now enabled by having State values that can define properties of Geoms, rather than just Parameters.
-
More documentation of FRDL, including the incorporation of a tutorial and step-by-step run-throughs of the circuit and bread making examples
Release Notes - Resilience Analysis and Design - Version fmdtools 2.1.3
Sub-Task
Release Checklist
<style> </style>| Step | Description | Complete? |
|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x |
| 2 | Update version numbers in appropriate files | x |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x |
| 2b | "Run a repository-wide search for the version number" | x |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x |
| 5 | Create a release in GitHub | x |
| 5a | "incorporate a narrative summary of features and changes" | x |
| 5b | "incorporate the auto-generated bitbucket release notes." | x |
| 6 | "Update project plan" | x |
| 6a | "Include any changed dependencies" | x |
| 6b | "Include version in schedule" | x |
| 6c | "Identify and include additional changes/activities" | x |
| 7 | Update/check external CI resources as needed | x |
| 7a | "Toggle CodeFactor so it updates" | (from 38 to 36 issues) |
| 7b | "Check upload to PyPi" | x |
fmdtools v2.1.2
The fmdtools v.2.1.2 version includes minimal changes to the library itself, but comes with the incorporation of the Functional Reasoning Design Language (FRDL) specification as a part of the documentation repository.
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | N/A, no changes to code |
| 7b | "Check upload to PyPi" | x |
fmdtools v2.1.1
Summary
fmdtools version 2.1.1 provides some minor changes to fmdtools 2.1.0, including:
- A variety of bugfixes to
Coords, which use used for environmental modelling - Added the ability to parametrically define and sample fault modes as a part of
FaultDomain. TheFlexibleModeclass was deprecated in favor of this new workflow, and the rover model (which previously relied onFlexibleModenow usesFaultDomaininstead. Overall, this workflow make models easier to define and reuse, makes the methodology easier to use and adapt, and is more computationally efficient (because the modes are only created when required for sampling, rather than at model instantiation).
Detailed changes (from commit log)
- Added publication list and updated/added publications to list
- Fixed hierarchical test such that it now sets sub_faults property on fault injection and hierarchical tests now use correct syntaxes for test
, resolving: RAD-495 - Fixed Coords.in_area to now check arrays of points correctly, resolving RAD-490
- Fixed collection label display bug so that collection labels can now be set to true (prop label) or a custom label, resolving RAD-489
- Fixed issue with collections freezing Coords.show so that they can now plot collections without first plotting properties (no longer freezes in the process), resolving: RAD-488
- Updated coords.py so that default label for
showis 'prop' rather than True - Fixed issue with shared multiflow creation so that ultiple functions can now instantiate and use the same local flow, enabling better individual/joint simulation, resolving: RAD-485
- Added ability to parameterize fault samples so that one can now define non-default values for faults in faultdomains to sample in faultsamples. These values can be used for optional disturbances or other aspects of the faults (rates, phases, etc)
see: RAD-491 - Added demo of parameterized fault samples in rover and tests. See RAD-491
- Replaced FlexibleMode with FaultDomain.add_fault_space method and added basic test to add_fault_space. See: RAD-496
- Adapted rover example to not use FlexibleMode so that instead of FlexibleMode, Rover now uses custom modes which are sampled with FaultDomain. Adapted rover mode notebook to match this. See: RAD-496
Release Checklist
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | fixed command to delete public/dev |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | had to re-run to reflect new version numbers |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | 36 issues to 38 issues |
| 7b | "Check upload to PyPi" | x |
fmdtools v2.1.0
Summary
fmdtools 2.1 is the first major point-release of fmdtools 2. As a major (breaking) release, it was primarily developed to better streamline how users work with fmdtools models based on our experience working with the library. The major changes are:
- RAD-466: A revamp of the syntax for used to define Modes. Modes are now defined in a much more intuitive syntax (adding a variable
fault_modename = (mode parameters)) rather than the obtusefm_args = {'modename': (mode parameters)}syntax used previously. This change in mode syntax (planned in the 2.0 development process) has resulted in a significant improvement in model performance--up to a 1.75x speedup--because dictionaries of fault modes are no longer created at model instantiation from the fm_args dictionary. Instead, these modes are created and accessed when needed (e.g., to build FaultDomains, determine the set of potential faults in a function, etc.). - RAD-459: A change to the syntax of
Problemclasses in search. Instead of instantiating and extendingProblemobjects, the user is now expected to define a subclass ofProblem. The advantage of this approach is that new problems can be instantiated and sent to different algorithms and can be run with different parameters with different results and iteration histories. It also enables these problems to be more readily defined in model files and imported elsewhere (scripts, tests, etc).
While these changes should break external models, it is our intent to keep these "breaking" changes like this relatively predictable by following our major/minor release process. Both of these major changes have come with a host of adaptations to our example models (as well as bugfixes), which can be used to help determine how to migrate any dependent models you might have to the new syntaxes.
Full Changelog: v2.0.7...v2.1.0
Release Notes - Resilience Analysis and Design - Version fmdtools 2.1
Sub-Task
- [RAD-466] - Revise Mode to be quicker, take less memory, be more intuitive, and use dict less
Story
- [RAD-95] - Create Model Docs Views
- [RAD-472] - Update Python Setup for fmdtools 2.1
- [RAD-473] - New features for fmdtools 2.1
Release Checklist
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | |
| 2 | Update version numbers in appropriate files | x | |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | Some fixes were required for HumanModes which have now been implemented |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | ||
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | Relected in Rev Q |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | 46 issues -> 49 issues |
| 7b | "Check upload to PyPi" | x |
fmdtools v2.0.7
This release brings a number of simplifications, improvements, and bugfixes, focusing on:
- Providing better functionality from Coords for representing and visualizing environments. This has been desired by internal modelling and simulation focusing on Systems-of-Systems models
- Improving overall code quality and testing coverage from Result, Rand, Coords, and FunctionArchitecture by implementing doctests in classes and methods that otherwise had no test.
This is the last point-release expected from the 2.0 series before beginning the 2.1 development, which is expected to bring a variety of changes, including incrementing Python version compatibility, along with a range of higher-impact (i.e., potentially breaking) features and improvements.
Release Notes - Resilience Analysis and Design - Version fmdtools 2.0.7
Sub-Task
- [RAD-450] - Coords collections - add way of specifying more complex collections
- [RAD-456] - Provide multiplot version of Coords.show_from
- [RAD-458] - Coords.show: enable hatching (?)
Story
- [RAD-462] - Improve calculation of metrics for Result/Tabulate
- [RAD-463] - Improve Rand
- [RAD-464] - Improve Coords
Task
- [RAD-336] - Enable hierarchical modelling - with provided test
Release Checklist
<style> </style>| Step | Description | Complete? | Comment |
|---|---|---|---|
| 1 | Sync appropriate branches into release branch using git sync-into-dev |
x | |
| 2 | Update version numbers in appropriate files | x | Coverate now at 87.6% from 86.2%. 356 tests from 320 |
| 2a | "Check files conf.py LICENSE.py README.py Intro_to_fmdtools.md pyproject.toml init.py" | x | |
| 2b | "Run a repository-wide search for the version number" | x | |
| 3 | Allow (or force) Bamboo CI to build tests and docs | x | Test found errors to fix in optimization notebooks |
| 4 | "Release to GitHub/remotes using git release v2.x.x ''Version 2.x.x'' " |
x | |
| 5 | Create a release in GitHub | x | Problem with Python upload - update upload-artifact to v4 |
| 5a | "incorporate a narrative summary of features and changes" | x | |
| 5b | "incorporate the auto-generated bitbucket release notes." | x | |
| 6 | "Update project plan" | x | |
| 6a | "Include any changed dependencies" | x | |
| 6b | "Include version in schedule" | x | |
| 6c | "Identify and include additional changes/activities" | x | |
| 7 | Update/check external CI resources as needed | x | |
| 7a | "Toggle CodeFactor so it updates" | x | Went from 42 to 46 issues. |
| 7b | "Check upload to PyPi" | x |