ONGOING 6.0
---------------------

 * Alarm Qualities will change to reflect alarm life cycle instead of severity.
 * Alarm may be declared in its own class/free property; instead of using Alarm* device properties.
 * Alarm collections will be used to manage different sets of alarms in GUI>

Package refactored to build valid system/PIP/rpm packages

PyAlarm:
Alarm actions will be executed before mail and snapshot.
Added replacement of $DESCRIPTION,$ALARM in actions
All panic times are now seconds, added deprecated message for pollings in milliseconds

API:
Logging added to AlarmAPI
Added self.disabled flag
to_dict and ping() methods for Alarms and AlarmDS objects
get_active_alarms() method added to AlarmDS
AlarmDS.Enable/Disable methods now can enable both Devices and individual Alarms
Added export_to_csv and export_to_dict API methods



Release 5.4 - 2015/12
---------------------

Changes in API and device server to solve several multi-host evaluation issues.
Small patches required by SKA project.

Release 5.2 - New evaluate() from API/GUI, added user admins for alarms
-------------------------------------------------------------------------------
evaluate() method adapted to be usable by GUI and test evaluation on a remote PyAlarm device
Bug solved on SentEmails recording.

Release 5.1 - May 2015
-------------------------------------------------------------------------------
PyAlarm: added try/except to update_locals() method
API: get_admins_for_alarm() method added to enable some minimal access control.

Release 5.0 - May 2015
-------------------------------------------------------------------------------
NOTE: Requires Fandango update, to use NaN values and new TangoEval macros

API: Improved group macro to use only cached values for evaluation
API: Improved caselessness on API
Eval: Added EvalTimes dictionary to keep the time needed on each EvaluateFormula() call.
Eval: Added DEVICE, ALARMS, PANIC objects to locals()
Eval: Added own Attribute values to Eval cache to avoid deadlocks when evaluating itself
Enabled property, converted from string to DevVarStringArray to allow time and formulas
Attributes: Removed locks from read methods (UI was locking the evaluation trend), lock is needed only on write/update actions
Solved bug that didn't send VALUES on State/Attribute exception
RethrowAttribute, from boolean to string to allow choosing False/0/NaN/None
Emails: solved problems string arrays and '\r' and '"' characters
Traces: shortened strings



Release 4.20
-------------------------------------------------------------------------------
@pending: solve threads and UseProcess issues
MaxAlarmsPerDay property removed (was unused)
Added new GROUP macro to formula evaluation.
SnapContext: Using modify instead of create context when this already exists
Added methods to taurus-like get_model from alarms
Email report refactored to show values in rows and parse state values.
Added methods do import/export alarm configurations from .csv files
EvaluateFormula converted in a Tango command callable by clients
Solved bugs using SNAP as receiver.
Snap: Using newest context when several match the alarm name
Eval cache reduced to AlarmThreshold+1 to adjust .delta to AlarmThreshold
Solved bug in SMS sending when source contains non-alpha characters

Release 4.19
@pending: solve threads and UseProcess issues
Solved bugs in alarm parsing, loading .csv and loading alarms from device
Added AlarmValueLabel widget

Release 4.18
Disable screen in launch script, replaced by Tango logging
Added DDebug device for debugging threads
AlarmsAPI.load() time consumption reduced to avoid timeouts
RethrowState=False and RethrowAttribute=False will disable exception propagation from TangoEval, it allows to manage exceptions as None in the alarm formulas.
Added IgnoreExceptions property
Using polling period instead of timeout as keeptime on TangoEval
Renamed method get_attribute_values to get_last_values

In AlarmAPI:

Added filter_alarms, export_to_csv, modify methods
get/filter* methods modified to allow custom alarm lists
Bugs solved in load_from_csv
getCurrent will return last API instance used

Added IgnoreExceptions property
children() replaced by get_basic_alarms method
parse_variables replaced by parse_attributes and evaluate()


Release 4.17 2013/09/09

Added VersionNumber attribute
Added methods Status/dev_status to remove automatic messages on qualities.
Added self.update_locals() for a better update of alarm values, periods and conditions reviewed.
fandango.threads.WorkerProcess has been optimized, PyAlarm modified to use new pause method
Methods returning sorted lists


Release 4.16

References to taurus removed if UseTaurus property is False (default)
Minimum polling reduced to 250 ms
Using panic.PyAlarmDefaultProperties to have consitency between api/gui/device
Solved bug that caused timeouts on alarm exception (time wait before finally clause)
Disable method is now capable to disable alarms only for TIMEOUT argument
If Enabled property is an integer, alarm changes will be ignored for INT seconds at startup; it should allow to restart devices w/out resending all active alarms; a ResetAll() can be used to rethrow all messages if wanted.
CheckDisabled will manage alarm reactivation after timeout

The Panic module has been renamed to panic; several bugs have been solved and methods for enabling/disabling alarms have been added.


4.15 September 2012
Disabled LogFile by default
BETA: Cache added to TangoEval to try alarm on transition.

4.14, September 2012
Added StartupDelay property
Bugs solved in Snap context creation.
Added user message to alarm RESET emails.
 
