Changelog¶
1.6.8 (2024-10-19)¶
(Fixed) Incorrect visualisation with PlantUML due to a backward incompatible change in their viewer.
1.6.7 (2024-10-18)¶
(Fixed) Minimal version of Python, and related installation instructions.
1.6.6 (2023-10-30)¶
(Fixed) Backward incompatible change in
ruamel.yaml.
1.6.5 (2023-05-08)¶
(Fixed) Dropped support for Python 3.5 and 3.6 since they are no longer supported by
ruamel.yamlused internally.
1.6.4 (2023-03-03)¶
(Fixed) Invalid output of
export_to_plantumlifstatechart_preambleis enabled, with plantuml-1.2022.12 (#119).
1.6.3 (2021-08-05)¶
(Fixed)
Statechart.remove_stateno longer resets all initial states and all history states (#110, Rigó Ernő).
1.6.2 (2020-12-29)¶
(Added) Support for Python 3.9.
(Fixed) Remove deprecated import from
collections(#101).(Fixed) Remove deprecated
threading.isAliveused insismic.runner.AsyncRunner.
1.6.1 (2020-07-10)¶
(Fixed) Remove dependency to
typingsince it is no longer required for Python 3.5 and prevents the installation of Sismic.
1.6.0 (2020-03-28)¶
1.5.0 (2020-03-09)¶
(Added) A
sismic-plantumlcommand-line utility to accesssismic.io.export_to_plantuml.
1.4.2 (2019-07-19)¶
(Fixed) Transitions are no longer duplicated when calling
copy_from_statechart(#91).
1.4.1 (2019-01-15)¶
The internals required to expose time and event-related predicates in a PythonEvaluator are moved
to the Interpreter instead of being handled by context providers. This eases the implementation by other
code evaluators of uniform semantics for these predicates. This change does not affect Sismic public API.
(Deprecated) Internal module
sismic.code.context.
1.4.0 (2018-10-21)¶
This new release contains many internal changes. While the public API is stable and/or backwards compatible, expect some breaking changes if you relied on Sismic internal API.
A new binding/monitoring system has been deployed on Interpreter, allowing listeners to be notified about
meta-events. Listeners are simply callables that accept meta-events instances.
(Added) An
Interpreter.attachmethod that accepts any callable. Meta-events raised by the interpreter are propagated to attached listeners.(Added) An
Interpreter.detachmethod to detach a previously attached listener.(Added) Module
sismic.interpreter.listenerwith two convenient listeners for the newly introducedInterpreter.attachmethod. TheInternalEventListeneridentifies sent events and propagates them as external events. ThePropertyStatechartListenerpropagates meta-events, executes and checks property statecharts.(Changed)
Interpreter.bindis built on top ofattachandInternalEventListener.(Changed)
Interpreter.bind_property_statechartis built on top ofattachandPropertyStatechartListener.(Changed) Meta-Event step started has a
timeattribute.(Changed) Property statecharts are checked for each meta-events, not only at the end of the step.
(Changed) Meta-events step started and step ended are sent even if no step can be processed.
(Deprecated) Passing an interpreter to
bind_property_statechartis deprecated, useinterpreter_klassinstead.
Time and event related predicates were extracted from PythonEvaluator to ease their reuse.
They can be found in TimeContextProvider and EventContextProvider of sismic.code.context and
rely on the new monitoring system:
(Added)
TimeContextProviderandEventContextProviderinsismic.code.contextthat exposes most of the predicates that are used inPythonEvaluator.(Added) A
setdefaultfunction that can be used in the preamble and actions of a statechart to assign a default value to a variable.(Changed) Most predicates exposed by
PythonEvaluatorare implemented by context providers.(Deprecated)
on_step_startsmethod of anEvaluator.
We also refactored how events are passed and processed by the interpreter. The main visible consequences are:
(Added) Event parameters can be directly passed to
Interpreter.queue.(Fixed) Internal events are processed before external ones (regression introduced in 1.3.0).
(Fixed) Optional transition for
testing.transition_is_processed, as promised by its documentation but not implemented.(Removed) Internal module
sismic.interpreter.queue.(Deprecated)
DelayedEvent, useEventwith adelayparameter instead.(Deprecated) BDD step delayed event sent, use event sent instead.
And some other small changes:
(Added) Documentation about concurrently running multiple statecharts.
(Changed) State invariants are checked even if no step can be processed.
(Fixed) Hook-errors reported by
sismic-bddCLI are a little bit more verbose (#81).
1.3.0 (2018-07-06)¶
Priority can be defined on transitions, allowing to simulate default transitions and to break non-deterministic situations when many transitions are triggered for a single source state:
(Added) Priority can be set for transitions (using low, high or any integer in yaml). Transitions are selected according to their priorities (still following eventless and inner-first/source state semantics).
(Added) Interpreter’s
_select_transitionsgets two new parameters,eventless_firstandinner_first. Both default toTrueand can be used in subclasses to change the default semantics of the interpreter.
The current time of an interpreter is now clock-based driven, thanks to the Clock base class and its implementations.
(Added) A
sismic.clockmodule with aClockbase class and three direct implementations, namelySimulatedClock,UtcClockandSynchronizedClock. ASimulatedClockallows to manually or automatically change the time, while aUtcClockas the expected behaviour of a wall-clock and aSynchronizedClockis a clock that synchronizes with another interpreter.Clockinstances are used by the interpreter to get the current time during execution. See documentation for more information.(Added) An
Interpreter.clockattribute that stores an instance of the newly addedClockclass.(Changed)
interpreter.timerepresents the time of the last executed step, not the current time. Useinterpreter.clock.timeinstead.(Deprecated) Setting
Interpreter.timeis deprecated, set time withInterpreter.clock.timeinstead.
Queued events can be delayed when they are added to the interpreter event queue.
(Added) Delayed events are supported through
DelayedEventandDelayedInternalEvent. If a delayed event with delay d is queued or sent by an interpreter at time t, it will not be processed unless execute or execute_once is called after the current clock exceeds t + d.(Added) Property statecharts receive a delayed event sent meta-event when a delayed event is sent by a statechart.
(Added) Delayed events can be sent from within a statechart by specifying a
delayparameter to thesentfunction.(Added) An
EventQueueclass (insismic.interpreter.queue) that controls how (delayed) events are handled by an interpreter.
A new interpreter runner that benefit from the clock-based handling of time and delayed events:
(Added) An
AsyncRunnerin the newly addedrunnermodule to asynchronously run an interpreter at regular interval.(Changed)
helpers.run_in_backgroundno longer synchronizes the interpreter clock. Use thestart()method ofinterpreter.clockor anUtcClockinstance instead.(Deprecated)
helpers.run_in_backgroundis deprecated, userunner.AsyncRunnerinstead.
And other small changes:
(Added) A
sismic.testingmodule containing some testing primitives to ease the writing of unit tests.(Changed)
Interpreter.queuedoes not longer acceptInternalEvent.(Fixed) State on entry time (used for
idleandafter) is set after the on entry action is executed, making the two predicates more accurate when long-running actions are executed when a state is entered. Similarly,idleis reset after the action of a transition is performed, not before.(Changed) Drop official support for Python 3.4.
1.2.2 (2018-06-21)¶
(Fixed) Event shouldn’t be exposed when guards of eventless transitions are evaluated (regression introduced in version 1.2.1).
(Changed) Improve performances when selecting transitions that could/will be triggered.
1.2.1 (2018-06-19)¶
(Fixed) Transitions are evaluated according to their event (eventless ones first) and inner-first/source state semantics, allowing to bypass many useless guard evaluations.
1.2.0 (2018-06-11)¶
(Added) A
notifyfunction that can be used in the action code fragments of a statechart to send user-defined meta-events to the bound property statecharts (#67).
1.1.2 (2018-05-09)¶
(Fixed) Interpreter instances can be serialized using
pickle(#66).
1.1.1 (2018-04-26)¶
(Fixed) Whitespaces in event parameters used in BDD steps are stripped before they are evaluated.
1.1.0 (2018-04-23)¶
(Added)
Interpreter._select_eventaccepts an additional parameterconsumethat can be used to select an event without consuming it.(Added) Documentation for extensions, and two (not included in Sismic!) extensions providing import/export with AMOLA, and new semantics for the interpreter.
(Fixed) Final states remain in the active configuration unless they are all children of the root state. In this case, statechart execution is stopped. Previously, if all leaf states of the active configuration were final states, the execution stopped even if these final states were nested in an orthogonal or compound state. The corrected behavior strictly adheres to SCXML 1.0 semantics. This could be a backward incompatible change if you explicitly relied on the previously wrong behaviour.
1.0.1 (2018-04-18)¶
(Fixed) BDD steps that involve a state raise a
StatechartErrorif state does not exist. This prevents state X is active (and its variants) to fail, e.g., because X is misspelled.
1.0.0 (2018-04-11)¶
After more than two years of development, Sismic is stable enough to be released in version 1.0.0. Consequently, Sismic will adhere to semantic versioning (see semver.org), meaning that breaking changes will only occur in major releases, backward compatible changes in minor releases, and bug fixes in patches.
0.26.9 (2018-04-03)¶
(Fixed)
based_onforexport_to_plantumlcorrectly takes into account states whose name contains whitespaces.(Fixed)
export_to_plantumlproperly exports transition with no event, no guard and no action.(Changed)
export_to_yamldoes not add quotes by default.
0.26.8 (2018-03-23)¶
(Added)
import_from_yamlaccepts afilepathargument.(Added)
based_onandbased_on_filepathparameters forexport_to_plantumlso a previously generated PlantUML file can be used as a basis for a new one (including its modifications related to the direction and length of transitions).
0.26.7 (2018-03-21)¶
(Removed) Nested context (ie. nested variable scopes) for the Python code evaluator.
(Fixed) BDD step expression {expression} holds.
0.26.6 (2018-03-17)¶
(Changed) Export to PlantUML uses short arrows by default.
(Changed) Many improvements related to the transitions when using
export_to_plantuml.
0.26.4 (2018-03-16)¶
(Added)
sismic.bdd.execute_bddcan be used to execute BDD tests programmatically.(Added)
sismic.bdd.__main__is the CLI interface forsismic-behaveand can now be executed usingpython -m sismic.bddtoo if sismic is available but not installed.(Added) Many tests for BDD steps.
(Changed)
Statechart.copy_from_statecharthas only its first argument that can be provided by position. The remaining ones (esp.sourceandreplace) should be provided by name.(Fixed) Sismic requires behave >= 1.6.0.
(Fixed) Older versions of typing do not contain
Deque.(Removed)
sismic.bdd.cli.execute_behave, subsumed bysismic.bdd.execute_bdd.
0.26.3 (2018-03-15)¶
(Added)
sismic.bddexposessismic.bdd.cli.execute_behavefunction to programmatically usesismic-bdd.(Changed)
execute_behavefunction has only two required parameters, and the remaining ones (that have default values) can only be set by name, not by position.(Changed)
action_aliasandassertion_aliasof modulesismic.bdd.stepsare renamed tomap_actionandmap_assertionand are directly available fromsismic.bdd.
0.26.2 (2018-03-15)¶
(Fixed) Step Given/when I repeat “{step}” {repeat} times requires step to be provided with no Gherkin keyword. The current keyword (either given or when) is automatically used.
(Fixed) Escape expression in then expression “{expression}” holds and its negative counterpart.
0.26.0 (2018-03-15)¶
Sismic support for BDD was completely rewritten. The CLI is now sismic-bdd, pointing to the cli submodule of
the newly created sismic.bdd module. All steps that are related to Sismic internals were removed, and only
steps that manipulate the statechart are kept. Check the documentation and sismic.bdd.steps for more information.
Execution semantics have slightly changed but shouldn’t have any impact when running BDD tests.
Predefined steps can be easily extended thanks to the action_alias and assertion_alias helpers.
See documentation for more details.
(Changed)
sismic-behaveCLI is nowsismic-bdd.(Removed)
--coverageoption fromsismic-behaveCLI.(Changed) Rename
sismic.testingtosismic.bdd, andsismic.testing.behavetosismic.bdd.cli.(Changed) A new list of predefined steps, available in
sismic.bdd.steps, see documentation.(Changed) A “when” step is now required before any “then” step. The “then” steps assert on what happens during the “when” steps, and not on the whole execution or the last step as before.
(Added)
sismic.bdd.stepsprovidesaction_aliasandassertion_aliasto make defining new steps easy.(Changed) BDD tests are directly executed by
pytest(instead of being triggered by Travis-CI).
Other changes:
(Changed)
Interpreter.bind_propertybecomesInterpreter.bind_property_statechart.(Changed)
helpers.coverage_from_tracereturns a dict with “entered states”, “exited states” and “processed transitions”.(Removed) Unused
io.text.
0.25.3 (2018-03-13)¶
(Fixed)
export_to_dict(and by extension,export_to_yaml) didn’t export transition contracts.(Changed) All the tests are now written using
pytestinstead ofunittest.
0.25.2 (2018-03-11)¶
(Added) Make
Event,InternalEventandMetaEventavailable frominterpreteras well.(Changed) Move
helpersfromsismic.interpreter.helperstosismic.helpers.(Removed) Remove module
stories, not really required anymore.
0.25.1 (2018-03-09)¶
(Added) Full equality comparison (
__eq__) for states and transitions (including all relevant attributes).(Added)
Interpreter.queuealso accepts an event name in addition to anEventinstance.(Added)
Interpreter.queueaccepts more than one event (or name) at once.(Changed)
Evaluator.execute_onentryandexecute_onexitbecomeexecute_on_entryandexecute_on_exit.(Changed) Many type annotations were added or fixed.
(Changed)
Interpreter.bindcan no longer be chained.
0.25.0 (2018-03-09)¶
Property statecharts do not require anymore the use of an ExecutionWatcher and are now directly supported
by the interpreter. The documentation contains a new page, Monitoring properties, that explains how to monitor
properties at runtime and provides some examples of property statecharts.
(Added) Property statechart can be bound to an interpreter with
interpreter.bound_propertymethod, that accepts either aStatechartor anInterpreterinstance.(Added) A
PropertyStatechartErrorthat is raised when a property statechart reaches a final state.(Added) A
MetaEventclass to represent meta-events sent by the interpreter for property statechart checking.(Added)
Interpreter._notify_property(event_name, **kwargs)andInterpreter._check_properties(macro_step)that are used internally to respectively send meta-events to bound properties, and to check these properties.(Changed)
Interpreter.raise_eventis nowInterpreter._raise_eventas it’s not supposed to be part of the public API.(Removed)
sismic.testingmodule was removed (including theExecutionWatcherandTestStoryFromTrace).(Removed) BDD steps related to the execution watcher, in
sismic.testing.steps.(Fixed)
Interpreter.timecannot be set to a lower value than the current one (ie. time is monotonic).(Fixed) A statechart preamble cannot be used to send events.
0.24.3 (2018-03-08)¶
(Fixed)
ExecutionWatcher.stop()was not called at the end of the execution whensismic-behavewas called with--properties.(Removed) Unused dependency on
pyparsing.
0.24.2 (2018-02-27)¶
(Added)
sismic.iocontains anexport_to_plantumlfunction to export a statechart to PlantUML.(Added)
sismic-behaveaccepts a--propertiesargument, pointing to a list of YAML files containing property statecharts that will be checked during execution (in a fail fast mode).(Changed)
sismic.io.export_to_yamlaccepts an additionalfilepathargument.(Fixed) Whitespaces in strings are trimmed when using
import_from_dict(and hence, usingimport_from_yaml).
0.23.1 (2018-02-20)¶
(Fixed) An exited state is removed from the current configuration before its postconditions are checked.
(Removed) Sequential conditions that were introduced in 0.22.0.
0.22.11 (2017-01-12)¶
(Fixed) Path error when using
sismic-behaveon Windows.
0.22.10 (2016-11-25)¶
(Added) A
--debug-on-errorparameter forsismic-behave.
0.22.9 (2016-11-25)¶
(Fixed) Behave step “Event x should be fired” now checks that the event was fired during the last execution.
0.22.8 (2016-10-19)¶
(Fixed) YAML values like “1”, “1.0”, “yes”, “True” are converted to strings, not to int, float and bool respectively.
(Changed)
ruamel.yamlreplacespyyamlas supported YAML parser.(Changed) Use
schemainstead ofpykwalify(which unfortunately freezes its dependencies versions) to validate (the structure of) YAML files.(Changed)
import_from_yamlraisesStatechartErrorinstead ofSchemaErrorif it cannot validate given YAML against the predefined schema.
0.22.7 (2016-08-19)¶
(Added) A new helper
coverage_from_tracethat returns coverage information (in absolute numbers) from a trace.(Added) Parameter
fails_fast(default isFalse, behavior preserved) forExecutionWatcher.watch_withmethods. This parameter allows the watcher to raise anAssertionErroras soon as the added watcher reaches a final configuration.(Changed)
StateMixin,TransitionandEvent’s__eq__method returns aNotImplementedobject if the other object involved in the comparison is not an instance of the same class, meaning thatEvent('a') == 1now raises aNotImplementedErrorinstead of beingFalse.
0.22.6 (2016-08-03)¶
(Changed)
Event,MacroStep,MicroStep,StateMixin,Transition,StatechartandInterpreter’s__repr__returns a valid Python expression.(Changed) The context returned by a
PythonEvaluator(and thus by the defaultInterpreter) exhibits nested variables (the ones that are not defined in the preamble of a statechart). Those variables are prefixed by the name of the state in which they are declared, to avoid name clashing.(Changed) Context variables are sorted in exceptions’
.__str__methods.
0.22.4 (2016-07-08)¶
(Added)
sismic-behaveCLI now accepts a--stepsparameter, which is a list of file paths containing the steps implementation.(Added)
sismic-behaveCLI now accepts a--show-stepsparameter, which list the steps (equivalent to Behave’s overriden--stepsparameter).(Added)
sismic-behavenow returns an appropriate exit code.(Changed) Reorganisation of
docs/examples.(Fixed) Coverage data for
sismic-behavetakes the initialization step into account (regression introduced in 0.21.0).
0.22.3 (2016-07-06)¶
(Added)
sentandreceivedare also available in preconditions and postconditions.
0.22.2 (2016-07-01)¶
(Added)
model.Eventis now correctly pickled, meaning that Sismic can be used in a multiprocessing environment.
0.22.1 (2016-06-29)¶
(Added) A event {event_name} should not be fired steps for BDD.
(Added) Both
MicroStepandMacroStephave a listsent_eventsof events that were sent during the step.(Added) Property statecharts receive a
event sentevent when an event is sent by the statechart under test.(Changed) Events fired from within the statechart are now collected and sent at the end of the current micro step, instead of being immediately sent.
(Changed) Invariants and sequential contracts are now evaluated ordered by their state’s depth
0.22.0 (2016-06-13)¶
(Added) Support for sequential conditions in contracts (see documentation for more information).
(Added) Python code evaluator: after and idle are now available in postconditions and invariants.
(Added) Python code evaluator: received and sent are available in invariants.
(Added) An
Evaluatorhas now aon_step_startsmethod which is called at the beginning of each step, with the current event (if any) being processed.(Added)
Interpreter.raise_eventto send events from within the statechart.(Added) A
copy_from_statechartmethod for aStatechartinstance that allows to copy (part of) a statechart into a state.(Added) Microwave controller example (see docs/examples/microwave.[yaml|py]).
(Changed) Events sent by a code evaluator are now returned by the
execute_*methods instead of being automatically added to the interpreter’s queue.(Changed) Moved
run_in_backgroundandlog_tracefromsismic.interpreterto the newly addedsismic.interpreter.helpers.(Changed) Internal API changes: rename
self.__xtoself._xto avoid (mostly) useless name mangling.
0.21.0 (2016-04-22)¶
Changes for interpreter.Interpreter class:
(Removed)
_select_eventless_transitionwhich is a special case of_select_transition.(Added)
_select_event, extracted fromexecute_once.(Added)
_filter_transitions, extracted from_select_transition.(Changed)
_execute_stepis now_apply_step.(Changed)
_compute_stabilization_stepis now_create_stabilization_stepand accepts a list of state names(Changed)
_compute_transitions_stepis now_create_steps.(Changed) Except for the
statechartparameter, all the parameters forInterpreter’s constructor can now be only provided by name.(Fixed) Contracts on a transition are checked (if not explicitly disabled) even if the transition has no action.
(Fixed)
Evaluator.execute_actionis called even if the transition has no action.(Fixed) States are added/removed from the active configuration as soon as they are entered/exited. Previously, the configuration was only updated at the end of the step (and could possibly lead to inaccurate results when using
active(name)in aPythonEvaluator).
The default PythonEvaluator class has been completely rewritten:
(Changed) Code contained in states and/or transitions is now executed with a local context instead of a global one. The local context of a state is built upon the local context of its parent, and so one until the local context of the statechart is reached. This should facilitate the use of dummy variables in nested states and transitions.
(Changed) The code is now compiled (once) before is evaluation/execution. This should increase performance.
(Changed) The frozen context of a state (ie.
__old__) is now computed only if contracts are checked, and only if at least one invariant or one postcondition exists.(Changed) The
initial_contextparameter ofEvaluator’s constructor can now only be provided by name.(Changed) The
additional_contextparameter ofEvaluator._evaluate_codeandEvaluator._execute_codecan now only be provided by name.
Miscellaneous:
(Fixed) Step I load the statechart now executes (once) the statechart in order to put it into a stable initial configuration (regression introduced in 0.20.0).
0.20.5 (2016-04-14)¶
(Added) Type hinting (see PEP484 and mypy-lang project)
0.20.4 (2016-03-25)¶
(Changed) Statechart testers are now called property statechart.
(Changed) Property statechart can describe desirable and undesirable properties.
0.20.3 (2016-03-22)¶
(Changed) Step Event x should be fired now checks sent events from the beginning of the test, not only for the last executed step.
(Fixed) Internal events that are sequentially sent are now sequentially consumed (and not anymore in reverse order).
0.20.2 (2016-02-24)¶
(Fixed)
interpreter.log_tracedoes not anymore log empty macro step.
0.20.1 (2016-02-19)¶
(Added) A step ended event at the end of each step in a tester story.
(Changed) The name of the events and attributes that are exposed in a tester story has changed. Consult the documentation for more information.
0.20.0 (2016-02-17)¶
(Added) Module
interpreterprovides alog_tracefunction that takes an interpreter instance and returns a (dynamic) list of executed macro steps.(Added) Module
testingexposes anExecutionWatcherclass that can be used to check statechart properties with tester statecharts at runtime.(Changed)
Interpreter.__init__does not anymore stabilize the statechart. Stabilization is done during the first call ofexecute_once.(Changed)
Story.tellreturns a list ofMacroStep(the trace) instead of anInterpreterinstance.(Changed) The name of some attributes of an event in a tester story changes (e.g. event becomes consumed_event, state becomes entered_state or exited_state or source_state or target_state).
(Removed)
Interpreter.trace, as it can be easily obtained fromexecute_onceor usinglog_trace.(Removed)
Interpreter.__init__does not accept aninitial_timeparameter.(Fixed) Parallel state without children does not any more result into an infinite loop.
0.19.0 (2016-02-10)¶
(Added) BDD can now output coverage data using
--coveragecommand-line argument.(Changed) The YAML definition of a statechart must use root state: instead of initial state:.
(Changed) When a contract is evaluated by a
PythonEvaluator,__old__.xraises anAttributeErrorinstead of aKeyErrorifxdoes not exist.(Changed) Behave is now called from Python instead of using a subprocess and thus allows debugging.
0.18.1 (2016-02-03)¶
(Added) Support for behavior-driven-development using Behave.
0.17.3 (2016-01-29)¶
(Added) An
io.text.export_to_treethat returns a textual representation of the states.(Changed)
Statechart.rename_todoes not anymore raiseKeyErrorbutexceptions.StatechartError.(Changed) Wheel build should work on Windows
0.17.1 (2016-01-25)¶
Many backward incompatible changes in this update, especially if you used to work with model.
The YAML format of a statechart also changed, look carefully at the changelog and the documentation.
(Added) YAML: an history state can declare on entry and on exit.
(Added) Statechart: new methods to manipulate transitions:
transitions_from,transitions_to,transitions_with,remove_transitionandrotate_transition.(Added) Statechart: new methods to manipulate states:
remove_state,rename_state,move_state,state_for,parent_for,children_for.(Added) Steps:
__eq__forMacroStepandMicroStep.(Added) Stories:
tell_by_stepmethod for aStory.(Added) Testing:
teststory_from_tracegenerates a step event at the beginning of each step.(Added) Module: a new exceptions hierarchy (see
exceptionsmodule). The new exceptions are used in place of the old ones (Warning,AssertionErrorandValueError).(Changed) YAML: uppermost states: should be replaced by initial state: and can contain at most one state.
(Changed) YAML: uppermost on entry: should be replaced by preamble:.
(Changed) YAML: initial memory of an history state should be specified using memory instead of initial.
(Changed) YAML: contracts for a statechart must be declared on its root state.
(Changed) Statechart: rename
StateCharttoStatechart.(Changed) Statechart: rename
eventstoevents_for.(Changed) Statechart:
statesattribute is nowStatechart.state_formethod.(Changed) Statechart:
register_stateis nowadd_state.(Changed) Statechart:
register_transitionis nowadd_transition.(Changed) Statechart: now defines a root state.
(Changed) Statechart: checks done in
validate.(Changed) Transition:
.eventis a string instead of anEventinstance.(Changed) Transition: attributes
from_stateandto_stateare renamed intosourceandtarget.(Changed) Event:
__eq__takesdataattribute into account.(Changed) Event:
event.fooraises anAttributeErrorinstead of aKeyErroriffoois not defined.(Changed) State:
StateMixin.nameis now read-only (useStatechart.rename_state).(Changed) State: split
HistoryStateinto a mixinHistoryStateMixinand two concrete subclasses, namelyShallowHistoryStateandDeepHistoryState.(Changed) IO: Complete rewrite of
io.import_from_yamlto load states before transitions. Parameter names have changed.(Changed) Module: adapt module hierarchy (no visible API change).
(Changed) Module: expose module content through
__all__.(Removed) Transition:
transitionsattribute onTransitionStateMixin, useStatechart.transitions_forinstead.(Removed) State:
CompositeStateMixin.children, useStatechart.children_forinstead.
0.16.0 (2016-01-15)¶
(Added) An
InternalEventsubclass formodel.Event.(Added)
Interpreternow exposes itsstatechart.(Added)
Statechart.validatechecks that a targeted compound state declares an initial state.(Changed)
Interpreter.queuedoes not accept anymore aninternalparameter. Use an instance ofInternalEventinstead (#20).(Fixed)
Story.story_from_tracenow ignores internal events (#19).(Fixed) Condition C3 in
Statechart.validate.
0.15.0 (2016-01-12)¶
(Changed) Rename
Interpreter.sendtoInterpreter.queue(#18).(Changed) Rename
evaluatormodule tocode.
0.14.3 (2016-01-12)¶
(Added) Changelog.
(Fixed) Missing files in MANIFEST.in