Version history
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
Exceptions
raised by theDriverInterface
should 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 toNone
which means no periodic measurement will be done.Functions in the
tomato.passata
module 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:Attr
now acceptsoptions
, which is theset
of 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-driver
processes; the following guidelines should be followed:ValueError
orAttributeError
should 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-driver
won’t crashRuntimeError
should 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 toTask
specification inPayload.method
:component_tag
is renamed tocomponent_role
task_name
entry added, can be used to name tasks across a payload to trigger the below actionsstart_with_task_name
entry added; when specified, the parent task will wait until the task with a matchingtask_name
is startedstop_with_task_name
entry added; when specified, the parent task will stop execution once a task with a matchingtask_name
is startedmax_duration
andsample_interval
can 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
sqlite3
database instead of on thetomato.daemon
.The
logdir
can now be set in settings file, with the default value configurable usingtomato init
.The
tomato status
command now supports further arguments:pipelines
,drivers
,devices
, andcomponents
can be used to query status of subsets of the running tomato.A new
passata
command andtomato.passata
module for interacting with components over CLI and API.A new
DriverInterface-2.0
, with the following changes: -cmp_constants()
: an accessor forModelDevice.constants
andModelInterface.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 appropriateModelDevice
instance. - Deprecation ofdev_*()
in favour ofcmp_*()
. -task_validate()
: a validation function which verifies the providedTask
containstask_params
that are compatible with theAttrs
specified 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.