- State default and default_factory improvements (#82)
- Only one of the two is allowed
- The factory is run on each initialization of an Actor
- No more deepcopy of a default
- State Recording Functions (#85)
- Custom functions and callable classes add more data when states update
- Dictionary and Dataclass States (#94)
DictionaryStateandDataclassStateadded.- UPSTAGE will record attribute changes in those data types automatically
- No more
actor.record_state(statename)needed for those data types as states.
- Added
MultiStoreState(#96)- Similar to
DictionaryState. Keys map toStoreandContainerresources. - Help for defaults and other settings for the resources.
- Data recording manages
_quantities
- Similar to
- Communications Improvements
- Modes for
CommunicationStoreare not required until instantiation (#97) - Added a Communications manager for network message routing (#99)
- Modes for
- Fixed bug in
NamedUpstageEntitywhere multiple inheritance failed to provide allentity_groups(#101) - Actors can set knowledge on instantiation (#102)
- States can force the default value to be the first value with
no_init=True(#102)
- Added jupyterlite example to documentation
- MultiEvent was given a more informative error
- GeodeticLocationData type was given a latlon() method to match GeodeticLocation
- Generalized data recording function in upstage_des.data_utils.record_data()
- Routines were added, which are a way to re-use more complicated event flows in Tasks.
- Knowledge events are cancelled and cleared from knowledge on interrupt
- Non-recording stores no longer break data collection
Update for critical behavior matching to SimPy in the monitoring stores and containers.
The biggest change is a behavior change that would break any sim written
in the previous version that had the inconsistent behavior. This is bringing
Wait and other UPSTAGE events in line with SimPy behavior for re-yielding.
The rest of the changes are non-breaking improvements to data logging,
error checking, and other features.
Statescan now beNoneby default using parameterallow_none_default#31- Utilities for bulk knowledge changing (get, set, and clear) #32
- Improved
Taskdocumentation and error checking #36 - Data utility improvements (#38 , #43 )
record_state()added to record states that are objects with their own get and set (not just int/str/float, e.g.)- States with key:value attributes (like dict, dataclass, counter) get recorded
in
create_tableby attribute - States that are non-recording can have their last value output to the data table
- SimPy matching behaviors in Wait (#42 )
- Wait, and other events, weren't able to be yielded again and have behavior consistent with SimPy
- Now re-yielding on a Wait will succeed on the original time
- Tailorable
DecisionTaskzero-time behavior and docs (#44 ) - Updated pixi and envs
- States now initialize to their default value on actor creation (#23)
- Fixes a bug in data recording
- Required improvements in
DetectabilityStatemade to avoid earlyMotionManagercall
- Location data object improvements. (#24)
- The
<>LocationDatatypes can now test for equality. Useful for tests in serializing or other data pre-processing to a sim.
- The
- Updating NamedEntity and Monitoring resources to assist data gathering.
- Added data gathering functions.
- Docs for data gathering. Updates for usability and clarity.