Version history
tomato-v2.2
Section author: Peter Kraus
Developed at the ConCat lab at TU Berlin.
Changes from tomato-2.1 include:
Fixes many bugs due to the
cmp_measure()function race condition with running tasks.Introduces the “lazy pirate” pattern in
tomato-jobprocesses, which should make jobs more reliable.A new
Payload-2.2, where thesettings.snapshot.snapshot_intervalreplacessettings.snapshot.frequency. As a consequence, thesnapshot_intervalcan be provided asstr, which will be converted to the number of seconds usingpint.
Code author: Peter Kraus
tomato-v2.1
Section author: Peter Kraus
Developed at the ConCat lab at TU Berlin.
Changes from tomato-2.0 include:
Driver processess are now better at logging errors. All
Exceptionsraised by theDriverInterfaceshould should now be caught and logged; as functionality of the components should only be accessed via theDriverInterface, this should catch all cases.The
cmp_measure()of each component can now be periodically called by the driver process, if a task is not running. The interval (in seconds) can be configured by the user in the driver section of the settings file (underdriver.<driver_name>.idle_measurement_interval) or provided by the driver developer (underDriverInterface.idle_measurement_interval); it falls back toNonewhich means no periodic measurement will be done.Functions in the
tomato.passatamodule that change the component state now check whether the component has a running task. If a component is running, a change of state (viareset()orset_attr()) can be forced by settingforce=True.A new
tomato.passata.register()function (and CLI invocationpassata register <component>), in order to retry component registration.A new
DriverInterface-2.1, with the following changes:Attrnow acceptsoptions, which is thesetof values this attribute can be set to.The decorators are now in
tomato.driverinterface_2_1.decorators.A new decorator,
coerce_val(), is provided to allow simpler type conversion and boundary checking.Better error handling in
tomato-driverprocesses; the following guidelines should be followed:ValueErrororAttributeErrorshould be raised by the component methods when wrong vals or attrs are supplied/queried (get_attr(),set_attr()); those exception types will be caught, logged, and thetomato-driverwon’t crashRuntimeErrorshould be raised by the component__init__()during component registration; this exception type will be caught, logged, and re-registration will be attempted at most 3 x in total by thetomato-daemon
A new
Payload-2.1, with the following changes toTaskspecification inPayload.method:component_tagis renamed tocomponent_roletask_nameentry added, can be used to name tasks across a payload to trigger the below actionsstart_with_task_nameentry added; when specified, the parent task will wait until the task with a matchingtask_nameis startedstop_with_task_nameentry added; when specified, the parent task will stop execution once a task with a matchingtask_nameis startedmax_durationandsample_intervalcan be provided asstr, which will be converted to the number of seconds usingpint
Code author: Peter Kraus
tomato-v2.0
Section author: Peter Kraus
Developed at the ConCat lab at TU Berlin.
Changes from tomato-1.0 include:
Jobs are now tracked in a queue stored in a
sqlite3database instead of on thetomato.daemon.The
logdircan now be set in settings file, with the default value configurable usingtomato init.The
tomato statuscommand now supports further arguments:pipelines,drivers,devices, andcomponentscan be used to query status of subsets of the running tomato.A new
passatacommand andtomato.passatamodule for interacting with components over CLI and API.A new
DriverInterface-2.0, with the following changes: -cmp_constants(): an accessor forModelDevice.constantsandModelInterface.constants, which are containers for the driver and component-specific metadata, -cmp_last_data(): an accessor forModelDevice.last_data, which should contain the last timestamped datapoint, -cmp_measure(): a passthrough function to launchModelDevice.measure(), which will trigger a one-shot measurement to populateModelDevice.last_data-DeviceFactory(): a factory function that creates an appropriateModelDeviceinstance. - Deprecation ofdev_*()in favour ofcmp_*(). -task_validate(): a validation function which verifies the providedTaskcontainstask_paramsthat are compatible with theAttrsspecified on the component.
Code author: Peter Kraus
tomato-v1.0
Section author: Peter Kraus
Developed at the ConCat lab at TU Berlin.
The code has been restructured and the interprocess communication is now using zmq instead of sqlite. The dependency on yadg has also been removed.
The driver library is now separate from tomato. A ModelInterface class is provided to facilitate new driver development.
Code author: Peter Kraus
tomato-v0.2
Section author: Peter Kraus
Developed in the Materials for Energy Conversion lab at Empa, in Dübendorf, with contributions from the THEOS lab at EPFL, in Lausanne.
First public release, corresponding to the code developed for the BIG-MAP Stakeholder Initiative Aurora, Deliverable D2. Includes:
driver for BioLogic devices;
a dummy driver for testing;
basic scheduling/queueing functionality;
data snapshotting and parsing.
This project has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 957189. The project is part of BATTERY 2030+, the large-scale European research initiative for inventing the sustainable batteries of the future.
Code author: Peter Kraus, Loris Ercole.